subversion-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Van Holder <tim.vanhol...@anubex.com>
Subject Issue with 'svn diff' when file name starts with @
Date Mon, 29 Oct 2018 16:08:28 GMT
(I tried searching the issue tracker but it was extremely unresponsive; apologies if this is
already in there (which seems likely))

Initially encountered on Windows (most recent TortoiseSVN).
Reproduced on Linux (Debian testing, subversion-1.10.3-1).

The help for svn diff suggests that it supports peg revisions (TARGET[@REV]).
However, this does not seem to be the case.

In fact, while most (all?) other svn commands will treat 'foo' and 'foo@' as equivalent file
names, svn diff does not; 'svn diff foo@' (when only 'foo' exists) will result in E155010
(the node was not found).
(This seems part of SVN-3231.)

In addition, there is a significant bug in handling of file names starting with @; a diff
for them can only be acquired by running 'svn diff' in their directory and using './<filename>'.
(I don't immediately see a ticket for this case.)

Reproduction case: create a new repo containing 2 files: foo/@bar and foo/xy@zzy
Check out the repository (messages below will assume it is in /wc):

$ cd /wc
$ svn diff foo/@bar
svn: E155010: The node '/wc/foo@bar' was not found.
$ svn diff foo/@bar@
svn: E155010: The node '/wc/foo@bar@' was not found.
$ svn diff foo/xy@zzy
$ svn diff foo/xy@zzy@
svn: E155010: The node '/wc/foo/xy@zzy@' was not found.
$ cd foo
$ svn diff @bar
svn: E125001: '@bar' is just a peg revision. Maybe try '@bar@' instead?
$ svn diff @bar@
svn: E155010: The node '/wc/foo/@bar' was not found.
$ svn diff ./@bar
$ svn diff ./@bar@
svn: E155010: The node '/wc/foo/@bar@' was not found.

So:

  *   the normal 'append-@-to-avoid-peg-revision' syntax does not work (but in some cases
the error message suggests using it)
  *   files containing @ anywhere but at the start work fine
  *   files with @ at the start seem to lose the directory separator in front of it, breaking
diff operation
     *   exception: using ./ as path while in the file's directory (so luckily this means
I have a workaround)

Mime
View raw message