[Posting here as 'svn log --show-diff' is currently only available in trunk]
I am trying out 1.7.0 (yes, I know it's a bit early) and noticed that svn log
now supports --show-diff. It's very convenient, thanks.
As the comments in the code explain, in case the path was created in some
revision, the function will attempt to go one level up until it finds a parent
that existed in both 'rev' and 'rev-1' revisions. This may result in LOTS of
extra files - sometimes, the whole revision diff may be dumped. Consider what
happens if the file being diff'ed originated as a part of 20Mb 'svn import'.
Judging from the commit message, this option should mimic 'git log -p'
behavior, but git does not dump the whole diff by default when -p is
specified. It only diffs the requested path and produces a full diff only if
--full-diff option is also passed.
Without this flag, "git log -p <path>…" shows commits that touch the
specified paths, and diffs about the same specified paths. With this, the full
diff is shown for commits that touch the specified paths; this means that
"<path>…" limits only commits, and doesn't limit diff for those commits.
Now, I understand this approach was chosen due to svn_client_diff5() returning
an error if the path does not exist in the specified revision. So, first
question is why svn_client_diff5() does not consider missing file as if it
were an empty file? It does that thing when existing parent directory is
And, if svn_client_diff5() has valid reasons to produce an error in such case,
why doesn't 'svn log --diff' just stop at that point, perhaps with some
meaningful message that the specified file was created in that revision?
Received on 2010-08-14 03:55:00 CEST