You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by JJ <eg...@gmail.com> on 2008/09/22 19:09:47 UTC

diff --summarize lists incorrect URLs when comparing two tags

Below is a recipe for reproducing some odd behavior with diff --summarize.

The "problem" I'm seeing is that when I diff two tags, paths are always
displayed using the URL to the oldest tag.  I'd expect the youngest tag to
be used in the returned paths, since that tag represents the final state of
those files after modifications.  In particular the output is incorrect when
a file is added between tag a and b, since the new file doesn't exist in the
previous tag.  See the script below as well as it's "incorrect" output.


PWD=`pwd`
REPO=$PWD/repo
WC=$PWD/wc
svnadmin create $REPO
svn co file://$REPO $WC
svn mkdir $WC/trunk $WC/tags $WC/branches
echo "hello world" > $WC/trunk/one.txt
svn add $WC/trunk/one.txt
svn ci -m "Initial commit" $WC
svn up $WC
svn cp -m "create tag a" file://$REPO/trunk file://$REPO/tags/a
svn up $WC
echo "hi there" > $WC/trunk/two.txt
svn add $WC/trunk/two.txt
svn ci -m "Add two.txt" $WC
svn up $WC
svn cp -m "create tag b" file://$REPO/trunk file://$REPO/tags/b
svn up $WC
svn diff --summarize file://$REPO/tags/a file://$REPO/tags/b


Checked out revision 0.
A         /home/svnadm/wc/trunk
A         /home/svnadm/wc/tags
A         /home/svnadm/wc/branches
A         /home/svnadm/wc/trunk/one.txt
Adding         wc/branches
Adding         wc/tags
Adding         wc/trunk
Adding         wc/trunk/one.txt
Transmitting file data .
Committed revision 1.
At revision 1.
Committed revision 2.
A    /home/svnadm/wc/tags/a
A    /home/svnadm/wc/tags/a/one.txt
Updated to revision 2.
A         /home/svnadm/wc/trunk/two.txt
Adding         wc/trunk/two.txt
Transmitting file data .
Committed revision 3.
At revision 3.
Committed revision 4.
A    /home/svnadm/wc/tags/b
A    /home/svnadm/wc/tags/b/one.txt
A    /home/svnadm/wc/tags/b/two.txt
Updated to revision 4.
A      file:///home/svnadm/repo/tags/a/two.txt
                                     ^
                                     ^
                                     This should be tag b, since two.txt
didn't even exist on tag a!
Has this problem been reported yet?  Am I missing something?

Thanks,
JJ

Re: diff --summarize lists incorrect URLs when comparing two tags

Posted by David Weintraub <qa...@gmail.com>.
I followed your example and got the following:

$ svn diff file://$PWD/repos/tags/a file://$PWD/repos/tags/b
Index: two.txt
===================================================================
--- two.txt     (.../a)        (revision 0)
+++ two.txt     (.../b) (revision 4)
@@ -0,0 +1 @@
+hi there

This is showing that file "two.txt" was not in tag "a", but is in tag "b".

If I am in the working copy and do this:

$ svn diff -r2:4 --summarize
A      trunk/two.txt
A      tags/b/one.txt
A      tags/b/two.txt
A      tags/b

That shows me the difference between revision #2 (when I created
tags/a) and revision #4 (when I created tags/b). That looks okay.

Then, when I do what you did:

$ svn diff --summarize file://$PWD/repos/tags/a file://$PWD/repos/tags/b
A      file:///root/temp/repos/tags/a/two.txt

That does look weird. Maybe it's suppose to be showing you that you
have to add a/two.txt to get the directories to match?

Let's try reversing the position of the two parameters:

$ svn diff --summarize file://$PWD/repos/tags/b file://$PWD/repos/tags/a
D      file:///root/temp/repos/tags/b/two.txt

I think this explains it! This show that you'd have to delete
b/two.txt to get two the tags to match.

As an experiment, I went in and changed the file tags/a/one.txt (yes,
you're not suppose to, but I am pure evil).

Now I get this:

$ svn diff --summarize file://$PWD/repos/tags/a file://$PWD/repos/tags/b
M      file:///root/temp/repos/tags/a/one.txt
A      file:///root/temp/repos/tags/a/two.txt

And this:

$ svn diff --summarize file://$PWD/repos/tags/b file://$PWD/repos/tags/a
D      file:///root/temp/repos/tags/b/two.txt
M      file:///root/temp/repos/tags/b/one.txt

So, the output is showing you the differences between the two, and
what has to be done to make the two URLS match.

--
David Weintraub
qazwart@gmail.com



On Thu, Sep 25, 2008 at 8:59 AM, JJ <eg...@gmail.com> wrote:
> Can anyone reply to this?  Is this a bug as I suspect, or am I missing
> something?
> Thanks.
>
> On Mon, Sep 22, 2008 at 2:09 PM, JJ <eg...@gmail.com> wrote:
>>
>> Below is a recipe for reproducing some odd behavior with diff --summarize.
>>
>> The "problem" I'm seeing is that when I diff two tags, paths are always
>> displayed using the URL to the oldest tag.  I'd expect the youngest tag to
>> be used in the returned paths, since that tag represents the final state of
>> those files after modifications.  In particular the output is incorrect when
>> a file is added between tag a and b, since the new file doesn't exist in the
>> previous tag.  See the script below as well as it's "incorrect" output.
>>
>> PWD=`pwd`
>> REPO=$PWD/repo
>> WC=$PWD/wc
>> svnadmin create $REPO
>> svn co file://$REPO $WC
>> svn mkdir $WC/trunk $WC/tags $WC/branches
>> echo "hello world" > $WC/trunk/one.txt
>> svn add $WC/trunk/one.txt
>> svn ci -m "Initial commit" $WC
>> svn up $WC
>> svn cp -m "create tag a" file://$REPO/trunk file://$REPO/tags/a
>> svn up $WC
>> echo "hi there" > $WC/trunk/two.txt
>> svn add $WC/trunk/two.txt
>> svn ci -m "Add two.txt" $WC
>> svn up $WC
>> svn cp -m "create tag b" file://$REPO/trunk file://$REPO/tags/b
>> svn up $WC
>> svn diff --summarize file://$REPO/tags/a file://$REPO/tags/b
>>
>> Checked out revision 0.
>> A         /home/svnadm/wc/trunk
>> A         /home/svnadm/wc/tags
>> A         /home/svnadm/wc/branches
>> A         /home/svnadm/wc/trunk/one.txt
>> Adding         wc/branches
>> Adding         wc/tags
>> Adding         wc/trunk
>> Adding         wc/trunk/one.txt
>> Transmitting file data .
>> Committed revision 1.
>> At revision 1.
>> Committed revision 2.
>> A    /home/svnadm/wc/tags/a
>> A    /home/svnadm/wc/tags/a/one.txt
>> Updated to revision 2.
>> A         /home/svnadm/wc/trunk/two.txt
>> Adding         wc/trunk/two.txt
>> Transmitting file data .
>> Committed revision 3.
>> At revision 3.
>> Committed revision 4.
>> A    /home/svnadm/wc/tags/b
>> A    /home/svnadm/wc/tags/b/one.txt
>> A    /home/svnadm/wc/tags/b/two.txt
>> Updated to revision 4.
>> A      file:///home/svnadm/repo/tags/a/two.txt
>>                                      ^
>>                                      ^
>>                                      This should be tag b, since two.txt
>> didn't even exist on tag a!
>>
>> Has this problem been reported yet?  Am I missing something?
>>
>> Thanks,
>> JJ
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org

Re: diff --summarize lists incorrect URLs when comparing two tags

Posted by JJ <eg...@gmail.com>.
Can anyone reply to this?  Is this a bug as I suspect, or am I missing
something?
Thanks.

On Mon, Sep 22, 2008 at 2:09 PM, JJ <eg...@gmail.com> wrote:

> Below is a recipe for reproducing some odd behavior with diff --summarize.
>
> The "problem" I'm seeing is that when I diff two tags, paths are always
> displayed using the URL to the oldest tag.  I'd expect the youngest tag to
> be used in the returned paths, since that tag represents the final state of
> those files after modifications.  In particular the output is incorrect when
> a file is added between tag a and b, since the new file doesn't exist in the
> previous tag.  See the script below as well as it's "incorrect" output.
>
>
> PWD=`pwd`
> REPO=$PWD/repo
> WC=$PWD/wc
> svnadmin create $REPO
> svn co file://$REPO $WC
> svn mkdir $WC/trunk $WC/tags $WC/branches
> echo "hello world" > $WC/trunk/one.txt
> svn add $WC/trunk/one.txt
> svn ci -m "Initial commit" $WC
> svn up $WC
> svn cp -m "create tag a" file://$REPO/trunk file://$REPO/tags/a
> svn up $WC
> echo "hi there" > $WC/trunk/two.txt
> svn add $WC/trunk/two.txt
> svn ci -m "Add two.txt" $WC
> svn up $WC
> svn cp -m "create tag b" file://$REPO/trunk file://$REPO/tags/b
> svn up $WC
> svn diff --summarize file://$REPO/tags/a file://$REPO/tags/b
>
>
> Checked out revision 0.
> A         /home/svnadm/wc/trunk
> A         /home/svnadm/wc/tags
> A         /home/svnadm/wc/branches
> A         /home/svnadm/wc/trunk/one.txt
> Adding         wc/branches
> Adding         wc/tags
> Adding         wc/trunk
> Adding         wc/trunk/one.txt
> Transmitting file data .
> Committed revision 1.
> At revision 1.
> Committed revision 2.
> A    /home/svnadm/wc/tags/a
> A    /home/svnadm/wc/tags/a/one.txt
> Updated to revision 2.
> A         /home/svnadm/wc/trunk/two.txt
> Adding         wc/trunk/two.txt
> Transmitting file data .
> Committed revision 3.
> At revision 3.
> Committed revision 4.
> A    /home/svnadm/wc/tags/b
> A    /home/svnadm/wc/tags/b/one.txt
> A    /home/svnadm/wc/tags/b/two.txt
> Updated to revision 4.
> A      file:///home/svnadm/repo/tags/a/two.txt
>                                      ^
>                                      ^
>                                      This should be tag b, since two.txt
> didn't even exist on tag a!
> Has this problem been reported yet?  Am I missing something?
>
> Thanks,
> JJ
>