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