My company uses Visual Studio Team Services (formerly Visual Studio Online, Team Foundation Service). As a developer I use git-tf to do my work with Git. To apply Continuous Integration I have Jenkins running that fetches the code from Team Services with a plugin that uses Team Explorer Everywhere CLC.
Lately during a commit to Team Services, this message came up:
gottfried@lubuntu-virtual-machine:~/git_repo$ git-tf checkin
Checking in to $/fireAnalytics: 12%, commit a0bfea1
git-tf: failed to pend changes to TFS due to the following errors. Please fix the errors and retry check in. TF10151: Cannot lock item $/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png for check-out. The item $/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png is checked out by Sascha Gottfried in workspace Hudson-hhpberlin fireanalytics-MASTER.
The workspace mentioned (workspace Hudson-hhpberlin fireanalytics-MASTER) is created by Jenkins CI server (with TFS plugin using TEE-CLC). The file mentioned is created during build step that runs integration tests and is not under version control.
The workspace is set up to use TFS plugin option 'use update'. Quote from docs
If this option is checked, then the workspace and work folder will not be removed at the end of build. This makes the build faster, but artifacts remain between builds. If it is not checked, the plugin will create a workspace and map it to a local folder at the start of the build, and then delete the workspace at the end of the build.
How my CI setup could affect a TFS checkin and how can I fix this situation?
Apparently Jenkins CI server triggered a new build during my TFS commit, because the Jenkins job was setup to poll TFS repo each minute. I temporarily shutdown the Jenkins CI and the TFS commit was successful again.