Thank you all for your detailed replies!
To summarise:
I think there's complete agreement that we need the ability to print
differences against the copy source. Greg pointed out something that
hadn't occurred to me: while you might be able to specify the source
and target manually for a single file copy, you need a way to get the
current behaviour when you are producing a diff across more than one file.
I think that we also have consensus that there's a need to provide
a switch to force one behaviour or the other, and to rationalise the
wc->repos and repos->repos diffs to work the same way by default. Karl
pointed out the --no-diff-deleted option on 'svn diff', which already
gives users a way to make the diff more useful (at the cost of not
providing a 'complete' diff), while Peter pointed out that svnlook also
has a --diff-copy-from option, which does exactly what we're talking
about here (svnlook _also_ has a --no-diff-added, so it's got the most
flexible of the interfaces).
It sounds like it might also be useful to further develop the draft 'svn
diff' specification that I put together (Julian seemed particularly keen
on this) - what do you all think? What would we do with it afterwards?
In terms of code changes, I think I should be able to conditionalise
the copyfrom behaviour for repos->wc and wc->wc diffs on a command-line
option, and I _may_ be able to do the same for repos->repos diffs as well
(though I haven't looked at that code yet).
One important thing to decide is what the default behaviour should
be. We are already inconsistent: if we do want to fix that inconsistency,
one of the default (wc,repos)->wc / repos->repos codepaths has to change.
So:
I propose that we add the --diff-copy-from option as an option to 'svn
diff', and therefore change the default behaviour for the (wc,repos)->wc
diffs, because...
* I strongly believe that the default behaviour should be to produce a
diff that is a valid input to 'patch' (where 'valid' means 'transforms
tree A to tree B'). We already provide one option (--no-diff-deleted)
on 'svn diff' to change the output format in a non-standard way;
adding --diff-copy-from would just allow us to change it in another
non-standard way.
* The current behaviour violates the principle of least surprise. We
don't document it anywhere very obvious, and the _absence_ of a file
from diff output is easily overlooked (by contrast, if you _want_ to see
your local modifications, you're going to realise that something needs
to change immediately).
* It would be confusing if 'svnlook diff' worked one way, and 'svn diff'
the other. Yes, that might be an argument for changing svnlook :-)
However, that's just my personal belief: consensus is obviously what's
important here.
Finally, there's also the discussion about whether Subversion should
provide a more 'complete' diff format. I'm not too bothered about that
right this moment: it's a conversation that I suspect could go on for
a while.
So, let me know which of the above is useful. I can't promise that I'll
have time to follow up on everything (I don't have a great deal of spare
time generally, though last week was an exception), but I hope I can
make some contribution along the way.
Regards,
Malcolm
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 11 01:45:04 2005