I did an 'svn switch' to change between trunk and a release branch of clang, and the built binary still reported it was built on trunk. It uses $URL to determine this:
I did an 'svn switch' from clang trunk to the 2.8 branch, and the $URL property was not updated on Version.cpp: ~/src/llvm/tools/clang/lib/Basic $ grep '\$URL' Version.cpp static const char URL[] = "$URL: http://llvm.org/svn/llvm-project/cfe/trunk/lib/Basic/Version.cpp $"; ~/src/llvm/tools/clang/lib/Basic $ svn info Version.cpp Path: Version.cpp Name: Version.cpp URL: http://llvm.org/svn/llvm-project/cfe/branches/release_28/lib/Basic/Version.cpp Repository Root: http://llvm.org/svn/llvm-project Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8 Revision: 114256 Node Kind: file Schedule: normal Last Changed Author: ddunbar Last Changed Rev: 103192 Last Changed Date: 2010-05-06 11:39:38 -0700 (Thu, 06 May 2010) Text Last Updated: 2010-05-30 17:21:25 -0700 (Sun, 30 May 2010) Checksum: 2bae87644b9b641237ed3724456d938b ~/src/llvm/tools/clang/lib/Basic $ svn pl Version.cpp Properties on 'Version.cpp': svn:keywords ~/src/llvm/tools/clang/lib/Basic $ svn pg svn:keywords Version.cpp URL ~/src/llvm/tools/clang/lib/Basic $ rm Version.cpp ~/src/llvm/tools/clang/lib/Basic $ svn update Restored 'Version.cpp' At revision 114268. ~/src/llvm/tools/clang/lib/Basic $ grep '\$URL' Version.cpp static const char URL[] = "$URL: http://llvm.org/svn/llvm-project/cfe/branches/release_28/lib/Basic/Version.cpp $";