On Tue, Oct 13, 2009 at 10:12:47AM -0400, Mark J. Reed wrote:
> This seems like it should be a FAQ, but while I saw a few related posts in
> the archives, there didn't seem to be anything definitive. Apologies if I
> just missed it.
> Anyway, I'm trying to do e.g.
> svn diff branches/my_branch trunk
>
> But it always reports no differences (and no error message, either).
> Whereas if I try
>
> svn diff --old=branches/my_branch --new=trunk
>
> I get an error message about a usage that is "not yet supported".
>
> It seems that my options are limited to either using full repository URLs
> for both targets, or using a local shell diff (with appropriate flags to
> exclude the contents of the .svn directories). Is that correct?
It's not possible right now to compare 2 files in a working copy to each
other using svn diff. You can only compare a file in the working copy to
its BASE revision (i.e. what you have changed since you checked out that
file.)
You can compare 2 arbitrary repository locations, however.
> If so, what's the rationale for the limitation - potential confusion between
> the contents of the working directories and the contents of the
> corresponding repository URLs?
Probably lack of developer time and not enough users requesting that
this feature should be added. There is a comment above the code throwing
the error you are hitting which I've pasted below.
Stefan
(from libsvn_client/diff.c)
/* A Theoretical Note From Ben, regarding do_diff().
This function is really svn_client_diff5(). If you read the public
API description for svn_client_diff5(), it sounds quite Grand. It
sounds really generalized and abstract and beautiful: that it will
diff any two paths, be they working-copy paths or URLs, at any two
revisions.
Now, the *reality* is that we have exactly three 'tools' for doing
diffing, and thus this routine is built around the use of the three
tools. Here they are, for clarity:
- svn_wc_diff: assumes both paths are the same wcpath.
compares wcpath_at_BASE vs. wcpath_at_WORKING
- svn_wc_get_diff_editor: compares some URL_at_REV vs. wcpath_at_WORKING
- svn_client__get_diff_editor: compares some URL1_at_REV1 vs. URL2_at_REV2
So the truth of the matter is, if the caller's arguments can't be
pigeonholed into one of these three use-cases, we currently bail
with a friendly apology.
Perhaps someday a brave soul will truly make svn_client_diff5
perfectly general. For now, we live with the 90% case. Certainly,
the commandline client only calls this function in legal ways.
When there are other users of svn_client.h, maybe this will become
a more pressing issue.
*/
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2407163
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-10-13 22:41:18 CEST