Hi Julian,
On Wed, 2011-01-05 at 11:41 +0000, Julian Foad wrote:
> On Thu, 2010-12-30, Prabhu Gnana Sundar wrote:
> [...]
>
> I like this change, in principle.
>
Thank you :)
> For example, maybe some tables
> something like this would be a good way to summarize the changes:
>
> Type of diff shown BEFORE this patch, WITHOUT --show-copies-as-adds:
> +-------------------+---------------+----------------------+-----------+
> | | copied only | copied and modified | ... |
> +-------------------+---------------+----------------------+-----------+
> | | | | |
> | WC-WC diff | | | |
> | | | | |
> | WC-repo diff | | | |
> | | | | |
> | repo-repo diff | | | |
> | | | | |
> +-------------------+---------------+----------------------+-----------+
> Or whatever rows and columns best convey the information.
I made a tabular summary of the change that this patch would make.
Since it displayed weirdly in the mail body I have attached it as a
file(diff-explanation-table.txt) with this mail.
I have also attached the experiment carried out, in another
file(diff-explanation.txt), with this mail.
Please let me know if I am not clear at any point.
>
> Are there any differences with different (old) versions of Subversion
> server? (I seem to recall that copy-from data was not always supplied,
> but I am not sure of the details.)
>
Actually, the send_copyfrom_args was passed even without this patch, but
was not handled. Only for 'svnserve' this was newly introduced by this
patch. So I don't think there's something to worry.
> Isn't it a layering violation for libsvn_wc to know about libsvn_ra?
> Maybe this needs to use callbacks or something, so that all the RA
> knowledge remains in libsvn_client.
>
What you say is correct. :)
But since we need to access a file which is not in our text-base. I had
to get the ra_session to make use of the repository to fetch the file.
Anyway now I am working on this to make use of any function in
libsvn_client that would get me an ra_session. But that seems to me like
a costly work.
Thanks and regards
Prabhu
$ svnadmin create diffrepo
$ svn co file:///tmp/diffrepo diffwc
Checked out revision 0.
$ cd diffwc/
$ vi file1
$ svn add file1
A file1
$ svn ci -m "adding new file"
Adding file1
Transmitting file data .
Committed revision 1.
$ svn cp file1 copiedfile1
A copiedfile1
$ svn ci -m "copied file1 to copiedfile1"
Adding copiedfile1
Committed revision 2.
Copy only:
------------
$ svn up
Updating '.' ...
At revision 2.
(with patch)
$ svn diff -r2:1
Index: copiedfile1
===================================================================
--- copiedfile1 (revision 2)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(without patch)
$ svn diff -r2:1
Index: copiedfile1
===================================================================
--- copiedfile1 (revision 2)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(with patch)
$ svn diff -r2:1 --sca
Index: copiedfile1
===================================================================
--- copiedfile1 (revision 2)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(without patch)
$ svn diff -r2:1 --sca
Index: copiedfile1
===================================================================
--- copiedfile1 (revision 2)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(with patch)
$ svn diff -rBASE:1
Index: copiedfile1
===================================================================
--- copiedfile1 (working copy)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(without patch)
$ svn diff -rBASE:1
Index: copiedfile1
===================================================================
--- copiedfile1 (working copy)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(with patch)
$ svn diff -rBASE:1 --sca
Index: copiedfile1
===================================================================
--- copiedfile1 (working copy)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
(without patch)
$ svn diff -rBASE:1 --sca
Index: copiedfile1
===================================================================
--- copiedfile1 (working copy)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
$ svn cp file1 copiedfile2
A copiedfile2
(with patch)
$ svn diff
(without patch)
$ svn diff
(with patch)
$ svn diff --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
(without patch)
$ svn diff --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
copied and modified:
----------------------
$ vi copiedfile2
(with patch)
$ svn diff
Index: copiedfile2
===================================================================
--- copiedfile2 (working copy)
+++ copiedfile2 (working copy)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
(without patch)
prabhugs_at_arwin-desktop:/tmp/diffwc$ ~/binaries/trunkbin/bin/svn diff
Index: copiedfile2
===================================================================
--- copiedfile2 (working copy)
+++ copiedfile2 (working copy)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
(with patch)
$ svn diff --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(without patch)
$ svn diff --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
$ svn ci -m "copied and modified"
Adding copiedfile2
Transmitting file data .
Committed revision 3.
$ svn up -r2
Updating '.' ...
D copiedfile2
Updated to revision 2.
(with patch)
$ svn diff -rBASE:3
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 2)
+++ copiedfile2 (revision 3)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
(without patch)
$ svn diff -rBASE:3
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(with patch)
$ svn diff -rBASE:3 --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(without patch)
$ svn diff -rBASE:3 --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(with patch)
$ svn diff -r2:3
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 2)
+++ copiedfile2 (revision 3)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
(without patch)
$ svn diff -r2:3
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(with patch)
$ svn diff -r2:3 --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
(without patch)
$ svn diff -r2:3 --sca
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
--------------------------------------------------
| WC - WC | REPOS - WC | REPOS - REPOS |
|---------+------------+---------------+------------+---------------+-------------------+
| | | | | | |
| | | only diff | N/A | B | A |
| | BEFORE |---------------+------------+---------------+-------------------+
| | | | | | |
| | | with '--sca' | C | B | A |
|COPIED +------------+---------------+------------+---------------+-------------------+
| | | | | | |
| | | only diff | N/A | B | A |
| | AFTER |---------------+------------+---------------+-------------------+
| | | | | | |
| | | with '--sca' | C | B | A |
+---------+------------+---------------+------------+---------------+-------------------+
+---------+------------+---------------+------------+---------------+-------------------+
| | | | | | |
| | | only diff | D | G | G |
| | BEFORE |---------------+------------+---------------+-------------------+
| | | | | | |
| | | with '--sca' | E | G | G |
|COPIED +------------+---------------+------------+---------------+-------------------+
| & | | | | | |
|MODIFIED | | only diff | D | F | F |
| | AFTER |---------------+------------+---------------+-------------------+
| | | | | | |
| | | with '--sca' | E | G | G |
+---------+------------+---------------+------------+---------------+-------------------+
---------
Legends:
---------
A)
Index: copiedfile1
===================================================================
--- copiedfile1 (revision 2)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
B)
Index: copiedfile1
===================================================================
--- copiedfile1 (working copy)
+++ copiedfile1 (revision 1)
@@ -1,5 +0,0 @@
-1
-2
-3
-4
-5
C)
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,5 @@
+1
+2
+3
+4
+5
D)
Index: copiedfile2
===================================================================
--- copiedfile2 (working copy)
+++ copiedfile2 (working copy)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
E)
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (working copy)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
F)
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 2)
+++ copiedfile2 (revision 3)
@@ -3,3 +3,6 @@
3
4
5
+6
+7
+8
G)
Index: copiedfile2
===================================================================
--- copiedfile2 (revision 0)
+++ copiedfile2 (revision 3)
@@ -0,0 +1,8 @@
+1
+2
+3
+4
+5
+6
+7
+8
Received on 2011-01-06 12:05:28 CET