[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

paths in diff output (possible bug)

From: Dmitry Pavlenko <pavlenko_at_tmatesoft.com>
Date: Mon, 19 Mar 2012 21:54:58 +0100

Hello all.
I'm trying to understand the principles how SVN calculates paths for diff.

I've put repository attached under URL "http://localhost/svn". I'll put its history here:
------------------------------------------------------------------------
r4 | dmit10 | 2012-03-19 20:34:31 +0100 (Пнд, 19 Мар 2012) | 2 lines
Changed paths:
   A /directory/subdirectory/file1
   A /directory/subdirectory/file2

files again

------------------------------------------------------------------------
r3 | dmit10 | 2012-03-19 20:33:55 +0100 (Пнд, 19 Мар 2012) | 2 lines
Changed paths:
   A /directory/subdirectory

subdirectory

------------------------------------------------------------------------
r2 | dmit10 | 2012-03-19 20:33:39 +0100 (Пнд, 19 Мар 2012) | 2 lines
Changed paths:
   A /directory

directory

------------------------------------------------------------------------
r1 | dmit10 | 2012-03-19 20:33:27 +0100 (Пнд, 19 Мар 2012) | 2 lines
Changed paths:
   A /file1
   A /file2

files

------------------------------------------------------------------------

 Then I run:

$ svn diff http://localhost/svn/directory/subdirectory@1 http://localhost/svn/directory/subdirectory@4

(note that neither "http://localhost/svn/directory/subdirectory" nor "http://localhost/svn/directory" exist in r1)

And I get

Index: subdirectory/file1
===================================================================
--- subdirectory/file1 (revision 0)
+++ subdirectory/file1 (revision 4)
@@ -0,0 +1 @@
+file1
Index: subdirectory/file2
===================================================================
--- subdirectory/file2 (revision 0)
+++ subdirectory/file2 (revision 4)
@@ -0,0 +1 @@
+file2-changed

i.e. all paths are relative to "http://localhost/svn/directory" that is strange for me. I tried to debug the code. All editor calls are relative to that path too ("add_file subdirectory/file1").

svn_ra_do_diff3 is called with ra_session pointing to "http://localhost/svn", url2="http://localhost/svn/directory/subdirectory" and target="directory/subdirectory" (that contradicts svn_ra_do_diff3 documentation --- as I
understand it --- stating, that states that "diff_target is an optional single path component").

So I have some "yes-no" questions about that all:
1. Do I understand correctly that "target" parameter in svn_ra_do_diff3 should never contain '/'?
2. Is current diff output really expected (I'm about the paths, the files' content is correct) or is there a bug?
3. Is there any guarantee (suppose, all bugs are fixed if exist) about paths in diff output --- relative to what are they (expected to be)? As I understand, SVN wants to show them relative to the first ancestor of arguments
which exists in both revisions (in my example --- relative to "http://localhost/svn" because "http://localhost/svn/directory" and "http://localhost/svn/directory/subdirectory" do not exist in r1). Please, confirm or disprove. If
there's no guarantee, and it is just human-readable, it's ok too, but I would like to know.

Thanks.

Received on 2012-03-19 21:56:20 CET

This is an archived mail posted to the Subversion Dev mailing list.