我的公司使用Visual Studio Team Services(以前称为Visual Studio Online,Team Foundation Service)。作为开发人员,我使用git-tf来完成Git的工作。要应用持续集成,我运行Jenkins,使用Team Explorer Everywhere CLC的插件从Team Services获取代码。
最近在提交Team Services期间,出现了以下消息:
gottfried @ lubuntu-virtual-machine:〜/ git_repo $ git-tf checkin
签入$ / fireAnalytics:12%,提交a0bfea1
git-tf:由于以下错误导致未能将更改挂起到TFS。 请修复错误并重试签入。 TF10151:无法锁定项目 $ / fireAnalytics /包/ fdssuite / src目录/ fdssuite /测试/ couch_devices.png 退房。该项目 $ / fireAnalytics /包/ fdssuite / src目录/ fdssuite /测试/ couch_devices.png 由Sascha Gottfried在Hudson-hhpberlin工作室检查 fireanalytics-MASTER。
提到的工作区(工作区Hudson-hhpberlin fireanalytics-MASTER )由Jenkins CI服务器创建(使用TEE-CLC的TFS插件)。提到的文件是在构建步骤期间创建的,该步骤运行集成测试并且不受版本控制。
工作区设置为使用TFS插件选项'use update'。 引自docs
如果选中此选项,则工作区和工作文件夹不会 在构建结束时删除。这使得构建更快,但是 构件之间仍存在工件。如果未选中,插件将 创建一个工作区并将其映射到开头的本地文件夹 构建,然后在构建结束时删除工作区。
我的CI设置如何影响TFS签入以及如何解决这种情况?
答案 0 :(得分:2)
二进制文件由TFS专门检出,因为无法合并对文件所做的任何更改。看起来你已经在你名字的工作区中检出了这个文件。您需要撤消其他工作区中的结帐(或至少撤消锁定)。您可以从Source Control Explorer或命令行执行此操作。
从标准命令行发出
tf undo /workspace:"Hudson-hhpberlin fireanalytics-MASTER";"Sascha Gottfried" "$/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png"
我怀疑CLC命令行非常相似(但我目前无法检查)。
使用构建帐户时,将其配置为执行非独占签出可能更安全,并确保在构建失败时(在Gated Checkin的情况下)锁定文件被释放。这些类型的情况经常发生在构建最新+ shelveset的Gated Checkins上,但由于某种原因失败,保留了shelveset中的文件。如果是二进制文件,那么这些结账将是独占的。
您还可以将TFS配置为永远不会独占签出二进制文件。在Visual Studio中,您可以在 Team > Team Foundation Server设置> 源代码控制文件类型下找到这些设置。
答案 1 :(得分:0)
显然Jenkins CI服务器在我的TFS提交期间触发了新的构建,因为Jenkins作业设置为每分钟轮询TFS repo。我暂时关闭了Jenkins CI并且TFS提交再次成功。