当我试图使用TFS与Git进行构建时,存在一个限制,即TFS的git提供程序尚不支持子模块。这有点烦人,但是我可以告诉TFS在编译之前运行批处理文件。我已经使用它来调用手动git脚本来更新我的“超级”项目中的所有子模块。
此批处理文件运行的命令非常简单:
git submodule update --init --recursive
在将子模块源迁移到TFS之前,这很好地运行,但是现在TFS构建失败了,因为上述git模块脚本不再起作用。
因此,在构建之前,TFS会将当前的Git源从Git拉到构建服务器上的文件夹中,我可以访问该文件夹。
如果我打开Git Bash并在该文件夹中运行以下命令:
git submodule init
git submodule update
我会收到以下错误,而我无法弄清楚它是什么。我尝试搜索此特定错误,通常指向在“超级项目” repo 推送之后推送子模块提交的问题。但是我可以验证所有子模块的提交和推送都是在完成“超级项目”提交和推送之前执行的。以下是TFS git命令的输出:
此批处理文件运行的命令非常简单:
git submodule update --init --recursive
在将子模块源迁移到TFS之前,这很好地运行,但是现在TFS构建失败了,因为上述git模块脚本不再起作用。
因此,在构建之前,TFS会将当前的Git源从Git拉到构建服务器上的文件夹中,我可以访问该文件夹。
如果我打开Git Bash并在该文件夹中运行以下命令:
git submodule init
git submodule update
我会收到以下错误,而我无法弄清楚它是什么。我尝试搜索此特定错误,通常指向在“超级项目” repo 推送之后推送子模块提交的问题。但是我可以验证所有子模块的提交和推送都是在完成“超级项目”提交和推送之前执行的。以下是TFS git命令的输出:
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$ git submodule init
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$ git submodule update
Username for 'http://tfs:8080': james
Password for 'http://james@TFS:8080': <password>
From http://TFS:8080/TFS/Technique/_git/Technique%20Library
* branch HEAD -> FETCH_HEAD
fatal: reference is not a tree: 33106ea146d470159e327c1b2d623d14f522cdd4
Unable to checkout '33106ea146d470159e327c1b2d623d14f522cdd4' in submodule path 'calc-engine'
james@TFS /C/Builds/1/Technique Webs/MIS Console 5.2 Development/src (5.2development)
$