You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@subversion.apache.org by "Nathan Hartman (Jira)" <ji...@apache.org> on 2019/10/17 16:34:00 UTC

[jira] [Commented] (SVN-1722) svn diff may missreport a revision as the working copy

    [ https://issues.apache.org/jira/browse/SVN-1722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16953899#comment-16953899 ] 

Nathan Hartman commented on SVN-1722:
-------------------------------------

This issue was fixed somewhere between 1.8.19 and 1.12.2, probably during the implementation of new features, repair of other bug(s), or other refactoring.

In 2004, when this issue was opened, it was reported that the problem manifest when svn diff was run with the following arguments in the reproduction script:

+ svn diff -r BASE:HEAD
+ svn diff -r HEAD:BASE
+ svn diff -r HEAD
+ svn diff -r 0:HEAD
+ svn diff -r 1

In 2010 it was partly fixed / still partly broken.

I ran the reproduction script against 1.8.19 and against 1.12.2 (respectively the oldest and newest installed versions I have available).

When run against 1.8.19, the following forms produce the broken output:

+ svn diff -r HEAD:BASE
+ svn diff -r HEAD
+ svn diff -r 1

When run against 1.12.2, all of the forms appear correct.

I did not setup and run a bisect to find the exact commit where the issue gets fixed, but I think it happened at r1570053. Other revisions of interest: r1619452, r1570266.

See mailing list thread "Issue tracker housecleaning: SVN-1722" Oct 2019: https://svn.haxx.se/dev/archive-2019-10/0083.shtml

Regression test added in r1868561.

Closing this issue.

> svn diff may missreport a revision as the working copy
> ------------------------------------------------------
>
>                 Key: SVN-1722
>                 URL: https://issues.apache.org/jira/browse/SVN-1722
>             Project: Subversion
>          Issue Type: Bug
>          Components: cmdline client
>    Affects Versions: all
>            Reporter: Subversion Importer
>            Priority: Trivial
>              Labels: bite-sized, patch
>             Fix For: 1.10-consider
>
>
> {noformat:nopanel=true}
> It appears that the 'svn diff' command can result in output in which the file 
> headers within the diff are incorrect; the unified diff itself appears to be as 
> expected.  Specifically under some circumstances a diff header will indicate 
> one revision as the working copy when it is not.
> In this example revision 0 (BASE) is an empty repository and revision 1 (HEAD) 
> contains a single file containing the word test (the full recipe to reproduce 
> and the full output from all the possible diffs are included at the end of this 
> email).  The working copy from which the diffs are requested is a checkout of 
> revision 0.
> If we examine the svn diff -r BASE:HEAD and HEAD:BASE outputs it is clear that 
> the diffs cannot both be against the working copy (if either is) despite the 
> fact that it is clearly labeled as such indeed they are the diff we would 
> expect between the requested versions, the diff (further below) of the real 
> working copy against BASE and HEAD support this.  It seems to me that BASE is 
> being incorrectly reported as working copy.
> + svn diff -r BASE:HEAD
> Index: file
> ===================================================================
> --- file        (revision 0)
> +++ file        (working copy)
> @@ -0,0 +1 @@
> +test
> + svn diff -r HEAD:BASE
> Index: file
> ===================================================================
> --- file        (revision 1)
> +++ file        (working copy)
> @@ -1 +0,0 @@
> -test
> Does this come under an existing issuse or should I file one.  Feel free to 
> say 'stupid' that's because of 'foo' and expected behaviour.
> Cheers.
> -apw
> [apw@kuckoo test2]$ cat T
> rm -rf repo test test2
> svnadmin create repo
> svn checkout file:///`pwd`/repo test
> svn checkout file:///`pwd`/repo test2
> cd test
> echo "test" >file
> svn add file
> svn -m test commit
> cd ../test2
> svn diff -r BASE:HEAD
> svn diff -r HEAD:BASE
> svn diff -r BASE
> svn diff -r HEAD
> svn diff -r 0:BASE
> svn diff -r 0:HEAD
> svn diff -r 0:1
> svn diff -r 1:0
> svn diff -r 0
> svn diff -r 1
> [apw@kuckoo test2]$ sh -x T
> + rm -rf repo test test2
> + svnadmin create repo
> ++ pwd
> + svn checkout file:////home/apw/test2/repo test
> Checked out revision 0.
> ++ pwd
> + svn checkout file:////home/apw/test2/repo test2
> Checked out revision 0.
> + cd test
> + echo test
> + svn add file
> A         file
> + svn -m test commit
> Adding         file
> Transmitting file data .
> Committed revision 1.
> + cd ../test2
> + svn diff -r BASE:HEAD
> Index: file
> ===================================================================
> --- file        (revision 0)
> +++ file        (working copy)
> @@ -0,0 +1 @@
> +test
> + svn diff -r HEAD:BASE
> Index: file
> ===================================================================
> --- file        (revision 1)
> +++ file        (working copy)
> @@ -1 +0,0 @@
> -test
> + svn diff -r BASE
> + svn diff -r HEAD
> Index: file
> ===================================================================
> --- file        (revision 1)
> +++ file        (working copy)
> @@ -1 +0,0 @@
> -test
> + svn diff -r 0:BASE
> + svn diff -r 0:HEAD
> Index: file
> ===================================================================
> --- file        (revision 0)
> +++ file        (revision 1)
> @@ -0,0 +1 @@
> +test
> + svn diff -r 0:1
> Index: file
> ===================================================================
> --- file        (revision 0)
> +++ file        (revision 1)
> @@ -0,0 +1 @@
> +test
> + svn diff -r 1:0
> Index: file
> ===================================================================
> --- file        (revision 1)
> +++ file        (revision 0)
> @@ -1 +0,0 @@
> -test
> + svn diff -r 0
> + svn diff -r 1
> Index: file
> ===================================================================
> --- file        (revision 1)
> +++ file        (working copy)
> @@ -1 +0,0 @@
> -test
> [apw@kuckoo test2]$
> {noformat}
> Original issue reported by *awhitcroft*



--
This message was sent by Atlassian Jira
(v8.3.4#803005)