Problem was good old line endings - all our files had CRLF, since they were checked in from Windows.
Problem never appeared before, previously people were using Perforce clients, which can fix line ending for the "host" operating system. With Team Explorer everywhere that was not a case anymore.
So long story short, I ended up with need to fix line ending for the set of files, located in the same directory. Massive convertion of file endings... I need a tool... Git! So I created a script which convert line endings for all files in a specific directory (and subdirectories) and checks in to TFVC.
Configure Git line
endings to unix style :
git config --global core.autocrlf input
Go into
folder which need to be converted:
cd MYFOLDER
Make
Folder a git repo, checkin all files:
git init
git add *
git commit -m "make it a unix, baby..."
At this moment in repository files are with Unix line endings, but locally on disk - still unchanged. Let's fix that.
Delete
all files and then undo change so it will fetch back from repository:
git rm *
git reset
git checkout *
Now all files have correct line endings, we need to checkin to TFVC. So, delete .git in your folder:
rd .git /S /Q
Go up one level and checkout your folder and all under:
cd ..
tf checkout MYFOLDER /recursive
Checkin
to TFS forcibely (it does not see the difference if only line endings changed,
so we need to force):
tf checkin MYFOLDER /recursive /force /noprompt
Voila :)
What is extra nice, Visual Studio is clever enougth to deal with Linux style line endings. So I still can build my solution with devenv.exe.
And even msbuild had nothing against unix style line endings.
PS: some more reading on subject
PPS: Of course, if you want to checkin changes or new files to TFVC, you need to watch line endings. It is possibel to configure your TFVC client to be aware. See more information here:
or here:
No comments:
Post a Comment