如何克隆然后使用 git-gulp 正确签出标签 [重复]
Posted
技术标签:
【中文标题】如何克隆然后使用 git-gulp 正确签出标签 [重复]【英文标题】:How do I clone and then check out a tag properly using git-gulp [duplicate] 【发布时间】:2016-07-27 03:07:00 【问题描述】:我正在尝试让脚本滚动:
克隆一个 repo(例如 git clone someClonePath.git),然后 签出一个标签(git checkout tags/someTag)gulp.task('clone', function() git.clone('somepath/cloneDir.git', function (err) if (err) throw err; ); ); gulp.task('checkout',['clone'], function() process.chdir('./cloneDir'); git.checkout('tags/' + argv.tag,function (err) if (err) throw err; ); );
结帐在克隆之前完成(失败)。这里的问题在于我对 gulp 中异步任务的理解。在使用 gulp-git 签出标签之前,如何验证克隆是否成功“cloneDir”?
【问题讨论】:
【参考方案1】:查看您更新的帖子后的一些事情。
-
要使相关任务正常工作,您可以使用回调函数或简单地返回某些内容,这样您就不会像在这种情况下使用回调那样紧密耦合任务。
您似乎想克隆到您选择的目录。为此,您必须为
git.clone
命令指定一些参数,并在尝试结帐时指定一个参数。
还要验证您是否使用有效的 URL 进行克隆。
试试这个:
gulp.task('clone', function()
return git.clone('URL-TO-REMOTE-REPO', args: './cloneDir', function (err)
if (err)
throw err;
);
);
gulp.task('checkout',['clone'], function()
git.checkout('tags/' + argv.tag, cwd: './cloneDir' , function (err)
if (err)
throw err;
);
);
【讨论】:
也许你应该更好地使用回调? Check this @stek29,回调是另一种选择,在我作为帖子评论发布的链接中已注明。回调选项不适用于在我分享的链接上发帖的人。 不是更好吗?他们可以缩短代码,因为它也替换了if
/throw
部分。 AFAIK 回调也更像 JS 风格。
关于返回 git.clone,我得到了同样的行为。控制台看起来像这样(演示时间问题):[10:42:56] 开始“克隆”... [10:42:56] 4.97 毫秒后完成“克隆”[10:42:56] 开始“结帐” '... [10:42:56] 'checkout' 在 157 μs 后出错 [10:42:56] 错误:ENOENT,没有这样的文件或目录... [10:42:59] 克隆到 'cloneDir'。 ..
回调可能更像是“JS 风格”,但是,gulp 擅长使用返回流而不是使用回调。此外,使用回调紧密耦合任务;这不是 gulp 任务的设置方式。使用 return 是解决 IMO 特定问题的更好方法。以上是关于如何克隆然后使用 git-gulp 正确签出标签 [重复]的主要内容,如果未能解决你的问题,请参考以下文章