簡體   English   中英

使用gulp-git時如何使用git-dir和工作樹

[英]Using gulp-git how to use git-dir and work-tree when

我正在嘗試使用gulp-git觸發git命令,但是遇到麻煩,因為我的git命令中需要包含其他參數。 即git-dir和工作樹。 git命令如下:

git --git-dir=../git_repos/dev --work-tree=../dev status

當我在與gulpfile.js相同的文件夾中從命令行運行此命令時,它可以正常工作,但是我無法弄清楚包含額外參數的正確方法。

我的基本測試任務任務如下所示:

var gulp = require('gulp');
var git = require('gulp-git');    

gulp.task('gitDevStatus', function(){
    git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, function (err, stdout) {
        if (err) throw err;

        console.log(JSON.stringify(stdout));
        console.log("DONE");
    });
});

我遇到的問題是:

git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...

如果我不帶任何參數運行它,我當然會失敗,因為它找不到git文件:

git.status({ }, ... 
fatal: Not a git repository (or any of the parent directories): .git

如果我把多余的變量作為args我得到:

git.status({ args: "--git-dir=../git_repos/dev --work-tree=../dev" },
fatal: Not a git repository (or any of the parent directories): .git

這表明在這種情況下,args不會更改已執行的git命令

最后,如果我將它們添加到cwd:中,如完整的任務示例所示,我將得到:

 git.status({ cwd: "--git-dir=../git_repos/dev --work-tree=../dev" }, ...
 Error: spawn ENOENT

我理解此錯誤是因為無法找到文件或目錄,但至少它不再抱怨沒有.git

我嘗試過的其他方法包括將目錄定義包裝在嵌套引號中:

 git.status({ cwd: "--git-dir='../git_repos/dev' --work-tree='../dev'" }, ...

所有嘗試均以相同的生成ENOENT錯誤結束。

誰能為我指出正確的方向,說明我應該如何在gulp-git中處理這種更復雜的git命令?

經過一番休息和再看一下gulp-git文檔后,我嘗試使用exec函數並獲得成功的結果:

git.exec({args : '--git-dir=../git_repos/dev --work-tree=../dev status'}, function (err, stdout) {
    if (err) throw err;
    console.log(stdout);
});

我不確定這是否是最佳做法,因此,如果有人可以分享更多知識,我將不勝感激。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM