[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Compare revisions can use the wrong peg revision

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Tue, 26 Aug 2008 18:01:03 +0200

Dave Lawrence wrote:
> Stefan Küng wrote:
>> Dave Lawrence wrote:
>>> Dave Lawrence wrote:
>>>> I've attached a script (as a .txt) to create a simple repos with 4 revs
>>>> to demonstrate this problem. It creates test.txt, modifies it in revs 2
>>>> and 3, and renames it to test_newname.txt in rev 4.
>>>>
>>>> To put things in context, it then does a command line svn diff on rev 1
>>>> and 2 using peg revisions in different ways.
>>>>
>>>> After running the script, do a show log on test_wc, and click compare
>>>> revisions on rev 1 and 2. It shows test.txt modified. So far so good.
>>>> Now double lick on test.txt, and the error occurs:
>>>> "File not found: revision 4, path '/test.txt'
>>>>
>>>> It (I presume) is trying to diff revs 1 and 2 of test.txt_at_4, but
>>>> test.txt no longer exists at rev 4. I think that it should either use
>>>> test.txt_at_2 or text_newname.txt_at_4 (not sure if there is a preference here).
>>>>
>>>> It could be worse, because if a trunk has been replaced by a branch,
>>>> this behavior could actually bring up a diff on completely the wrong file.
>>> I retract that statement. For some reason, if a file of the same name
>>> existed in the previous trunk, and you invoke the diff from show log of
>>> the current trunk, then the diff correctly shows the differences between
>>> the two revs of the correct file (even though it lived in the branch
>>> back in the revs that are being diffed). But for files that live in the
>>> current trunk, came from the old branch and didn't have an equivalent in
>>> the old trunk, the failure is the same. If that description is unclear
>>> (I suspect it is) then I can do another script to demonstrate.
>> Yes, please do. It's very difficult from such descriptions to find the
>> exact steps to reproduce something.
>>
>> Stefan
>>
> I think I probably confused things with that second posting. Anyway,
> attached is a script which demonstrates what happens where a directory
> has been replaced - I think this demo may be more helpful.
>
> Do a show log on "bar" after running the script a compare revisions 2
> and 3. This shows file1.txt and file2.txt modified. Clicking file2.txt
> will give an error. Clicking file1.txt will do the equivlalent of
> svn diff %REPO%/bar/file1.txt_at_2 %REPO%/foo/file1.txt_at_3
>
> Whereas I think it should do
> svn diff %REPO%/foo/file1.txt_at_2 %REPO%/foo/file1.txt_at_3
>
> Which is equivalent to
> svn diff bar/file1.txt -r2:3
> which is the operation I think the user would expect from the GUI in
> this case.

Thanks a lot for your detailed script!

Fixed in r13763.

Stefan

-- 
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

Received on 2008-08-26 18:01:24 CEST

This is an archived mail posted to the TortoiseSVN Users mailing list.