On Wed, Apr 22, 2015 at 07:58:35PM +0200, Marc Strapetz wrote:
> After invoking following series of commands:
> 
>   svnadmin create repo
>   svn checkout file://localhost/d:/temp/externals/repo wc
> 
>   mkdir wc
>   cd wc
>   mkdir ext
>   touch ext\file
> 
>   mkdir src\dir
>   svn add *
>   svn propset svn:externals "^/ext ext" src
>   svn propset svn:externals "^/ext@1 ext" src\dir
>   svn commit -m "initial import"
> 
>   svn up
>   svn cp --pin-externals src ^^/dst -m "copy"
>   svn log -r2 -v
>   svn proplist -r2 -R -v ^^/
>   svn proplist -r1 -R -v ^^/
> 
> The final log output shows /dst/dir as modified:
> 
> -------------------------
> r2 | marc | 2015-04-22...
> Changed paths:
>    A /dst (from /src:1)
>    M /dst/dir
> 
> copy
> -------------------------
> 
> However, there is no modification expected, because src\dir external already
> has a revision number set. The proplist outputs confirm that the property
> hasn't been modified:

Interesting. I suspect this comes about because the pin-externals code
always sends a propchange in the commit transaction. Apparently the
repository will happily record a no-op change. It seems the client
should avoid sending a propchange with an empty delta?

Or should the server be fixed to collapse empty propchanges to nothing?
What does it do for no-op file content changes sent by clients?

In any case, this is a cosmetic issue in practice. But I agree it should
be fixed.

> $ svn proplist -r2 -R -v ^/
> ...
> Properties on 'file://localhost/D:/temp/externals/repo/dst/dir':
>   svn:externals
>     ^/ext@1 ext
> 
> 
> $ svn proplist -r1 -R -v ^/
> ...
> Properties on 'file://localhost/D:/temp/externals/repo/src/dir':
>   svn:externals
>     ^/ext@1 ext

To rule out whitespace differences, can you please send these outputs
through hexdump or diff to ensure they really are identical?
I believe they are, just checking.

Reply via email to