Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git gulp正确克隆并签出标签_Gulp_Gulp Git - Fatal编程技术网

如何使用git gulp正确克隆并签出标签

如何使用git gulp正确克隆并签出标签,gulp,gulp-git,Gulp,Gulp Git,我正在尝试制作一个脚本: 克隆一个repo(例如git clone someClonePath.git),然后 签出标记(git签出标记/someTag) 签出在克隆完成之前完成(失败)。这里的问题在于我对gulp中异步任务的理解。在使用gulp git签出标签之前,我如何验证克隆是否已成功执行“cloneDir”?查看您更新的帖子后的几件事 要使依赖任务工作,您可以使用回调函数或简单地返回一些内容,这是最好的,这样您就不会将任务紧密地耦合在一起,而在本例中使用回调函数就是这样做的 看起来您

我正在尝试制作一个脚本:

  • 克隆一个repo(例如git clone someClonePath.git),然后
  • 签出标记(git签出标记/someTag)

签出在克隆完成之前完成(失败)。这里的问题在于我对gulp中异步任务的理解。在使用gulp git签出标签之前,我如何验证克隆是否已成功执行“cloneDir”?

查看您更新的帖子后的几件事

  • 要使依赖任务工作,您可以使用回调函数或简单地返回一些内容,这是最好的,这样您就不会将任务紧密地耦合在一起,而在本例中使用回调函数就是这样做的
  • 看起来您想克隆到您选择的目录。为此,您必须为
    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;
        }
      });
    });
    

    也许你最好使用回调@stek29,回调是另一种选择,我在帖子的评论链接中提到了这一点。回调选项对在我共享的链接上发表文章的人不起作用。他们不是更好吗?他们可以缩短代码,因为它还可以替换
    if
    /
    throw
    部分。另外,AFAIK回调更具JS风格。关于返回git.clone,我得到了相同的行为。控制台如下所示(以演示计时问题):[10:42:56]正在启动“克隆”。。。[10:42:56]在4.97毫秒后完成“克隆”[10:42:56]开始“签出”。。。[10:42:56]“签出”在157μs后出错[10:42:56]错误:eNot,没有此类文件或目录。。。[10:42:59]克隆到“cloneDir”…回调可能更像“JS风格”,但是gulp擅长使用返回流,而不是使用回调。此外,使用回调将任务紧密耦合;这不是应该如何设置吞咽任务。使用return是解决这个问题的更好方法。
    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;
        }
      });
    });