Jason Sachs wrote on Tue, Feb 22, 2011 at 11:07:38 -0500: > >> If you could write a script that starts with an empty repository, gets a > >> working copy, and runs svn commands until the problem triggers, that would > >> help greatly (and avoids any ambiguity in the problem description!). > > > > See attached python script (tested only on WinXP + Python 2.6.5) > > > > Script output: > ========= > C:\tmp\svn\ext1>python trybug.py > Checked out revision 0. > A C:\tmp\svn\ext1\working\foo > A C:\tmp\svn\ext1\working\foo\trunk > A C:\tmp\svn\ext1\working\bar > A C:\tmp\svn\ext1\working\bar\trunk > A working\foo\trunk\blah.txt > Adding working\bar > Adding working\bar\trunk > Adding working\foo > Adding working\foo\trunk > Adding working\foo\trunk\blah.txt > Transmitting file data . > Committed revision 1. > Sending working\foo\trunk\blah.txt > Transmitting file data . > Committed revision 2. > Sending working\foo\trunk\blah.txt > Transmitting file data . > Committed revision 3. > property 'svn:externals' set on 'working\bar\trunk' > Sending working\bar\trunk > > Committed revision 4. > > Fetching external item into 'working\bar\trunk\blah.txt' > E working\bar\trunk\blah.txt > Updated external to revision 1. > > Updated to revision 4. > 1:4 > > ========= > This just creates a sample repos + working copy and illustrates the > problem with svnversion, which should print out "4" but instead prints > out "1:4". > > I didn't create a testcase for performing a merge, that's more complex > than I can deal with right now.
With a trunk build, I get a warning and the right svnversion output: [[[ % python2.6 trybug.py Checked out revision 0. A /tmp/svn/working/foo A /tmp/svn/working/foo/trunk A /tmp/svn/working/bar A /tmp/svn/working/bar/trunk A working/foo/trunk/blah.txt Adding working/bar Adding working/bar/trunk Adding working/foo Adding working/foo/trunk Adding working/foo/trunk/blah.txt Transmitting file data . Committed revision 1. Sending working/foo/trunk/blah.txt Transmitting file data . Committed revision 2. Sending working/foo/trunk/blah.txt Transmitting file data . Committed revision 3. property 'svn:externals' set on 'working/bar/trunk' Sending working/bar/trunk Committed revision 4. svn: Unrecognized format for the relative external URL 'blah.txt'. 4 ]]] I'm not sure what causes this, but for reference here's the output of 'svn help propset' from trunk: [[[ ... svn:externals - A newline separated list of module specifiers, each of which consists of a URL and a relative directory path, similar to the syntax of the 'svn checkout' command: http://example.com/repos/zig foo/bar A revision to check out can optionally be specified to pin the external to a known revision: -r25 http://example.com/repos/zig foo/bar To unambiguously identify an element at a path which has been deleted (possibly even deleted multiple times in its history), an optional peg revision can be appended to the URL: -r25 http://example.com/repos/zig@42 foo/bar Relative URLs are indicated by starting the URL with one of the following strings: ../ to the parent directory of the extracted external ^/ to the repository root // to the scheme / to the server root The ambiguous format 'relative_path relative_path' is taken as 'relative_url relative_path' with peg revision support. Lines in externals definitions starting with the '#' character are considered comments and are ignored. Subversion 1.4 and earlier only support the following formats where peg revisions can only be specified using a -r modifier and where URLs cannot be relative: foo http://example.com/repos/zig foo/bar -r 1234 http://example.com/repos/zag Use of these formats is discouraged. They should only be used if interoperability with 1.4 clients is desired. ... ]]]