abb*_*dev 8 .net git tfs tfsbuild tfs2013
当我尝试使用Git使用TFS构建时,TFS的git提供程序尚不支持子模块存在限制.有点痛苦,但是,我能告诉TFS在编译之前运行批处理文件.我用它来调用手动git脚本来更新我的"超级"项目中的所有子模块.
此批处理文件运行的命令只是:git submodule update --init --recursive
在将子模块源迁移到TFS之前,这工作得很好,但是现在TFS构建失败了,因为上面的git模块脚本不再起作用.
那么,TFS在构建之前所做的是将当前源从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)
$
Run Code Online (Sandbox Code Playgroud)
经过多次试验和错误,我修复了类似的问题:事实证明,这是在没有用户配置文件的情况下运行的 TFS 预构建 PowerShell 脚本的问题,因此 GIT 无法看到构建用户的凭据缓存设置(例如,如设置C:\Users\theuser\.gitconfig)。
批处理脚本也会遇到同样的问题。
独特的行为是git submodule调用将完全挂起,并使 GIT 存储库处于非常奇怪的状态(如not a tree上面的错误所示)。
挂起是由于 GIT 提示输入要使用的用户名和密码,但这是一个非交互式会话,因此一切都会停止。
使用wincred凭据缓存,我可以通过以下方式解决此问题:
wincred,即使它没有用户配置文件:git config --system credential.helper wincred| 归档时间: |
|
| 查看次数: |
2494 次 |
| 最近记录: |