Thanks Gavin :)

I am aware of it. I have been working in a different approach to solve
the same problem.
 Since I felt that my current approach would make the "diff" to have a
uniform behaviour throughout, without the "--diff-copy-from" switch, I
did not ping this thread. Hoping to get back to solve this problem in a
much better new patch :) 


Thanks and regards
Prabhu

On Thu, 2010-12-16 at 23:46 +1100, Gavin Beau Baumanis wrote:
> Ping. This patch has received no more comments.
> 
> Gavin "Beau" Baumanis
> 
> 
> 
> On 30/11/2010, at 12:35 AM, Prabhu Gnana Sundar wrote:
> 
> > Hi Julian,
> > 
> > $ svn diff -r1029227:1029240 subversion/tests/libsvn_wc/utils.h
> > 
> > The above command would work fine since the "full" target is given
> > explicitly and because of the *continuity of history*. 
> > 
> > What if the file has been removed or renamed (which can occur often)..
> > In such cases, the normal "svn diff" shows the entire content as
> > deletion or addition, whereas with the "diff-copy-from" switch, the "svn
> > diff" would show a more granular output with only the injected
> > modifications(along with copy commit) that were done.
> > 
> > 
> > 
> > On Mon, 2010-11-29 at 11:09 +0000, Julian Foad wrote:
> >> On Sun, 2010-11-28, Prabhu Gnana Sundar Ponnarasu wrote:
> >>> [[[
> >>> Make svn diff to accept "--diff-copy-from" inorder to compare/diff 
> >>> against the copy-source file.
> >> 
> >> Hi Prabhu.
> >> 
> >> I'm not clear about the precise change in behaviour that you are making.
> >> The current behaviour of "svn diff" seems to be to show the difference
> >> against the copy source in some cases, but not in other cases:
> > 
> > the cases where it does *not* work is listed below,
> > 
> > * where the file has been renamed or reinstated
> > * where we may *not* be explicitly giving the full target (but only upto
> > the root path). 
> > 
> > The "diff-copy-from" switch bridges the gap in the history of the file.
> > 
> > 
> > To address this difference between diff behaviour,
> > 
> > * we can either make current default behaviour to give diff always as
> > 'all adds and all deletes".
> > 
> > * Make diff-copy-from the default *implicit* behaviour by removing the
> > diff-copy-from option from my patch and retain rest. 
> > 
> >> 
> >> [[[
> >> $ svn log -vq -c1029240
> >> [...]
> >>   A /subversion/trunk/subversion/tests/libsvn_wc/utils.h (from 
> >> /subversion/trunk/subversion/tests/svn_test_utils.h:1029227)
> >> 
> >> $ svn diff -r1029227:1029240 subversion/tests/libsvn_wc/utils.h
> >> Index: subversion/tests/libsvn_wc/svn_test_utils.h
> >> ===================================================================
> >> --- subversion/tests/libsvn_wc/svn_test_utils.h    (.../svn_test_utils.h)  
> >> (revision 1029227)
> >> +++ subversion/tests/libsvn_wc/svn_test_utils.h    (.../libsvn_wc/utils.h) 
> >> (revision 1029240)
> >> @@ -1,7 +1,7 @@
> >> -/* svn_test_utils.h --- test utilities
> >> +/* utils.h --- wc/client test utilities
> >> [...]
> >> 
> >> $ svn diff -r1029227:1029240 subversion/tests/
> >> Index: subversion/tests/svn_test_utils.h
> >> ===================================================================
> >> --- subversion/tests/svn_test_utils.h      (revision 1029227)
> >> +++ subversion/tests/svn_test_utils.h      (revision 1029240)
> >> @@ -1,64 +0,0 @@
> >> -/* svn_test_utils.h --- test utilities
> >> [...]
> >> Index: subversion/tests/libsvn_wc/utils.h
> >> ===================================================================
> >> --- subversion/tests/libsvn_wc/utils.h     (revision 0)
> >> +++ subversion/tests/libsvn_wc/utils.h     (revision 1029240)
> >> @@ -0,0 +1,64 @@
> >> +/* utils.h --- wc/client test utilities
> >> [...]
> >> ]]]
> >> 
> >> The current doc strings do not appear to describe this.  I think it is
> >> important that we clarify what the current behaviour is - in other
> >> words, what the new behaviour will be when --diff-copy-from is not
> >> present or when diff_copy_from = FALSE.  Can you help by describing
> >> that?
> >> 
> > 
> > By default the diff_copy_from is FALSE, so the absence of
> > --diff-copy-from would give the normal "svn diff". 
> > See if the below explanation makes the intention clear...
> > $ vi file1
> > $ svn add file1 
> > A         file1
> > $ svn ci -m "added file1"
> > Adding         file1
> > Transmitting file data .
> > Committed revision 1.
> > 
> > $ svn up
> > At revision 1.
> > 
> > $ svn rm file1 
> > D         file1
> > $ svn ci -m "removed file1"
> > Deleting       file1
> > 
> > Committed revision 2.
> > 
> > $ svn cp file:///tmp/testrepo/fi...@1 file2
> > A         file2
> > $ svn ci -m "coped file1"
> > $ vi file2
> > $ svn ci -m "copied and modified file2"
> > Adding         file2
> > Transmitting file data .
> > Committed revision 3.
> > 
> > $ svn up
> > At revision 3.
> > 
> > $ svn diff -c3
> > Index: file2
> > ===================================================================
> > --- file2       (revision 0)
> > +++ file2       (revision 3)
> > @@ -0,0 +1,8 @@
> > +1
> > +2
> > +3
> > +4
> > +5
> > +6
> > +7
> > +8
> > 
> > $ svn diff -c3 --diff-copy-from
> > Index: file2
> > ===================================================================
> > --- file2       (revision 2)
> > +++ file2       (revision 3)
> > @@ -3,3 +3,6 @@
> > 3
> > 4
> > 5
> > +6
> > +7
> > +8
> >> Do we have a way to request the opposite behaviour - to show a diff in
> >> which a copy is *never* diffed against its source?  Is that what the
> >> "--show-copies-as-adds" option and show_copies_as_adds API flag does?
> >> If so, then the doc strings need to mention how these two relate: for
> >> example, are they mutually exclusive or does one override the other?
> >> 
> >> 
> >> [...]
> >>> Index: subversion/svn/main.c
> >>> ===================================================================
> >>> +  {"diff-copy-from", opt_diff_copy_from, 0,
> >>> +                    N_("print copy history of files")},
> >> 
> > 
> > Sure to change this :) Stefan too had a good suggestion...
> > 
> > 
> > Thanks and regards
> > Prabhu
> > 
> > 
> 

Reply via email to