Philip Martin <philip@codematters.co.uk> writes:
> Hmm, I've just discovered that HEAD has some problems
>
> $ svn log -r6458 http://svn.collab.net/repos/svn/tags/0.26
> ../svn/subversion/libsvn_ra_dav/util.c:597: (apr_err=175007)
> svn: HTTP Path Not Found
> svn: REPORT request failed on '/repos/svn/!svn/bc/6458/tags/0.26'
> ../svn/subversion/libsvn_ra_dav/util.c:568: (apr_err=175007)
> svn: '/repos/svn/!svn/bc/6458/tags/0.26' path not found
>
> while
>
> $ svn log http://svn.collab.net/repos/svn/tags/0.26 | grep 6458
> rev 6458: djh | 2003-07-12 16:20:40 +0100 (Sat, 12 Jul 2003) | 8 lines
>
> So 'svn log -rREV' doesn't work if REV occurred in the copyfrom
> history. Is that the way 'svn log -rREV' is supposed to work? It's
> not the most convenient way to operate.
log -rREV doesn't work if the path didn't exist at REV. This is
consistent with, oh, probably every other Subversion subcommand. (Are
you just noticing this for the first time, Philip?)
It's also not a trivial fix. I think it requires a major UI change.
Ben and Karl talked about this problem in the office last week (I
think it was). Essentially, to accomplish some of the things people
are wanting (like this log behavior, for example), users are required
to provided two different revision-y things for every path: a locator
("peg") revision (which identifies a line of history), and an
operative revision range (a revision or set of revisions on which to
perform the operation).
Consider what would happen in this scenario:
revision 1: make trunk, tags, branches
revision 2: import the subversion tree into trunk
revision 3: copy /trunk/libsvn_fs /branches/my-branch
...
revision 6: del /branches/my-branch
revision 7: copy /trunk/libsvn_wc /branches/my-branch
...
Now, if a user sez 'svn log -r 2 http://url/to/branches/my-branch',
which line of history should they get? The line that extends back
through libsvn_fs or the one through libsvn_wc?
To allow the full range of motion, you'd need something like:
'svn log -r 2 http://url/to/branches/my-branch@HEAD'
'svn log -r 2 http://url/to/branches/my-branch@7'
'svn log -r 2 http://url/to/branches/my-branch@3'
where the url@REV *must* exist as a real filesystem location, and the
-r is the revision range on which to operate for that line of history.
Today, we overload -r (and the @-syntax, for that matter) to be a
combination of both the peg revision and the revision range. And, as
folks are finding out, it can be a little limiting/annoying.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Aug 20 02:20:05 2003