On Fri, Sep 17, 2010 at 10:27:13PM -0700, Jeremy Huddleston wrote:
> 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

FYI, proplist -v shows values, too.
 
> ~/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
>  $";

I can reproduce this problem with 1.6.x and trunk svn clients on the llvm.org
repository. Please file an issue. Thanks.

I cannot reproduce this problem with the attached script, however.
So the simple case seems my script is testing seems to work.
Here's the output:

+ rm -rf expand-url
+ mkdir -p expand-url
+ mkdir -p expand-url/trunk
+ echo alpha
+ > expand-url/trunk/alpha 
+ echo beta
+ > expand-url/trunk/beta 
+ mkdir expand-url/trunk/gamma
+ echo delta
+ > expand-url/trunk/gamma/delta 
+ mkdir expand-url/trunk/epsilon
+ echo zeta
+ > expand-url/trunk/epsilon/zeta 
+ svnadmin create /tmp/expand-url/repos
+ svn import expand-url/trunk file:////tmp/expand-url/repos/trunk -m importing 
project tree
Adding         expand-url/trunk/gamma
Adding         expand-url/trunk/gamma/delta
Adding         expand-url/trunk/alpha
Adding         expand-url/trunk/epsilon
Adding         expand-url/trunk/epsilon/zeta
Adding         expand-url/trunk/beta

Committed revision 1.
+ svn copy file:////tmp/expand-url/repos/trunk 
file:////tmp/expand-url/repos/branch -m creating branch

Committed revision 2.
+ rm -rf expand-url/trunk
+ svn checkout file:////tmp/expand-url/repos/trunk expand-url/trunk
A    expand-url/trunk/gamma
A    expand-url/trunk/gamma/delta
A    expand-url/trunk/alpha
A    expand-url/trunk/epsilon
A    expand-url/trunk/epsilon/zeta
A    expand-url/trunk/beta
Checked out revision 2.
+ svn checkout file:////tmp/expand-url/repos/branch expand-url/branch
A    expand-url/branch/gamma
A    expand-url/branch/gamma/delta
A    expand-url/branch/alpha
A    expand-url/branch/epsilon
A    expand-url/branch/epsilon/zeta
A    expand-url/branch/beta
Checked out revision 2.
+ svn ps svn:keywords URL expand-url/trunk/alpha
property 'svn:keywords' set on 'expand-url/trunk/alpha'
+ echo $URL$
+ >> expand-url/trunk/alpha 
+ svn ci -m show URL in alpha expand-url/trunk
Sending        expand-url/trunk/alpha
Transmitting file data .
Committed revision 3.
+ cat expand-url/trunk/alpha
alpha
$URL: file:///tmp/expand-url/repos/trunk/alpha $
+ svn ps svn:keywords URL expand-url/branch/alpha
property 'svn:keywords' set on 'expand-url/branch/alpha'
+ echo $URL$
+ >> expand-url/branch/alpha 
+ svn ci -m show URL in alpha expand-url/branch
Sending        expand-url/branch/alpha
Transmitting file data .
Committed revision 4.
+ cat expand-url/branch/alpha
alpha
$URL: file:///tmp/expand-url/repos/branch/alpha $
+ svn switch file:////tmp/expand-url/repos/branch expand-url/trunk
At revision 4.
+ cat expand-url/trunk/alpha
alpha
$URL: file:///tmp/expand-url/repos/branch/alpha $
+ svn switch file:////tmp/expand-url/repos/trunk expand-url/branch
At revision 4.
+ cat expand-url/branch/alpha
alpha
$URL: file:///tmp/expand-url/repos/trunk/alpha $
#!/bin/sh

set -e

cwd=`pwd`
basename=`basename $0`
scratch_area="`echo $basename | sed -e s/\.sh$//`"
repos=$scratch_area/repos
trunk=$scratch_area/trunk
branch=$scratch_area/branch
trunk_url=file:///$cwd/$repos/trunk
branch_url=file:///$cwd/$repos/branch

set -x

rm -rf $scratch_area
mkdir -p $scratch_area

mkdir -p $trunk
echo alpha > $trunk/alpha
echo beta > $trunk/beta
mkdir $trunk/gamma
echo delta > $trunk/gamma/delta
mkdir $trunk/epsilon
echo zeta > $trunk/epsilon/zeta

svnadmin create $cwd/$repos
svn import $trunk $trunk_url -m "importing project tree"
svn copy $trunk_url $branch_url -m "creating branch"
rm -rf $trunk
svn checkout $trunk_url $trunk
svn checkout $branch_url $branch

svn ps svn:keywords URL $trunk/alpha
echo '$URL$' >> $trunk/alpha
svn ci -m "show URL in alpha" $trunk
cat $trunk/alpha

svn ps svn:keywords URL $branch/alpha
echo '$URL$' >> $branch/alpha
svn ci -m "show URL in alpha" $branch
cat $branch/alpha

svn switch $branch_url $trunk
cat $trunk/alpha
svn switch $trunk_url $branch
cat $branch/alpha

Reply via email to