Re: Issue #1093: "svn diff" enhancement to follow moved/renamed items
From: Julian Foad <julianfoad_at_btopenworld.com>
Date: 2003-12-11 02:02:29 CET
[Added a description to the Subject line so we can see what these messages are about without having to read several paragraphs or fire up the issue tracker. :-) ]
This all sounds good. Some comments on the details follow.
C. Michael Pilato wrote:
That sounds sound. Syntax 1 below doesn't allow Z to be specified, so, until syntax 1 is extended, this is limited to Z = WC. I would guess that this case would most commonly arise in the form "diff -rX:HEAD path", when the WC is not quite up to date.
> So let's talk about syntax changes. On Oct. 29, 2003, Greg Hudson
Add: "The default target is the path '.'."
I think that "peg is WC" is exactly what we need, but just want to point out that it may be slightly trickier to implement than "peg is BASE". Shouldn't be a problem, though.
> 2. diff --old=OLD-TGT[@OLDREV] --new=NEW-TGT[@NEWREV] [PATH...]
The words "old" and "new" here match one common use case but are misleading in other cases. But that's a separate issue, and is already in the existing implementation.
Requiring both "--old" and "--new" to be specified in this case is stricter than the current implementation, but I think that is a good thing. It is always better to start strictly and have the option of relaxing the syntax later than vice versa.
Add: "Each of OLD-TGT and NEW-TGT may be a path or a URL."
Presumably we add: "Each of OLDREV and NEWREV defaults to HEAD for a URL or to WC for a local path." (The existing implementation defaults to BASE for local paths, but we probably came to the conclusion that WC is better.)
> Compare OLD-TGT and NEW-TGT, restricted to the paths PATH... if
We should clarify "restricted to the paths PATH..." with regard to that limitation. The current help says "PATHs, if given, are relative to OLD-TGT and NEW-TGT and restrict the output to differences for those paths." This is still not quite clear; I assume it means the union of PATHs that exist under OLD-TGT and PATHs that exist under NEW-TGT, with those that are only present on one side causing an "added" or "deleted" diff. Or does it mean that it is an error if any PATH does not exist on both sides?
> 3. diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]
This seems like a nice clean syntax, and it leaves room to add support for "@PEG" on the TARGETs of syntax 1 so that deleted items can be referenced easily.
This is an archived mail posted to the Subversion Dev mailing list.