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

Re: [PATCH] Re: strange behavior when dealing with copied files repos/wc diffs

From: Charles Acknin <charlesacknin_at_gmail.com>
Date: 2007-09-28 14:52:04 CEST

On 9/28/07, David Glasser <glasser@davidglasser.net> wrote:
> Did you ever get anywhere with this bug?

(David, sorry for unintelligibility yesterday on #svn-dev, /me 's
brain was out of order after midnight; I'll try to make it clear
here.)

Sussman's r26503 did fix this issue as a side-effect I believe since
the log doesn't mention such thing. I was able to reproduce the bug
back in r26501 on trunk (r26502 is a branch commit).

As for the explanation, r26503 changed all three RA implementations
and it seems that the server now sends copied file txdeltas, which
create the text-base file that was missing. So no more error.

Everything's fine on trunk/'s HEAD today. I don't know about release
branches -- has this been backported/fixed?

However, to prevent any regression here's the test updated:

[[[
Add a non-regression diff test against bug that r26503 fixes. (see
http://subversion.tigris.org/servlets/ReadMsg?listName=dev&msgNo=129865)

* subversion/tests/cmdline/diff_tests.py
  (diff_repos_base_copy_reversed): new test for backward repos-base diff
  against copied-file.
]]]

[[[
Index: subversion/tests/cmdline/diff_tests.py
===================================================================
--- subversion/tests/cmdline/diff_tests.py (revision 26826)
+++ subversion/tests/cmdline/diff_tests.py (working copy)
@@ -3334,6 +3334,36 @@
                                      'diff', '-x', '--ignore-eol-style',
                                      file_path)

+def diff_repos_base_copy_reversed(sbox):
+ "reversed repos-base diff with copied file"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+ os.chdir(wc_dir)
+
+ # copy a file
+ mu_path = os.path.join('A', 'mu')
+ mucp_path = os.path.join('A', 'mucopy')
+ svntest.main.run_svn(None, 'cp', mu_path, mucp_path)
+
+ # commit r2 and update back to r1
+ svntest.main.run_svn(None, 'ci', '-m', 'log msg')
+ svntest.main.run_svn(None, 'up', '-r1')
+
+ # diff r2 against base
+ diff_repos_base = [
+ "Index: A/mucopy\n",
+ "===================================================================\n",
+ "--- A/mucopy\t(revision 2)\n",
+ "+++ A/mucopy\t(working copy)\n",
+ "@@ -1 +0,0 @@\n",
+ "-This is the file 'mu'.\n",
+ ]
+
+ svntest.actions.run_and_verify_svn(None, diff_repos_base, [],
+ 'diff', '-r' , '2:BASE')
+
+
 ########################################################################
 #Run the tests

@@ -3383,6 +3413,7 @@
               diff_in_renamed_folder,
               diff_with_depth,
               XFail(diff_ignore_eolstyle_empty_lines),
+ diff_repos_base_copy_reversed,
               ]

 if __name__ == '__main__':
]]]

Charles

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Sep 28 14:52:18 2007

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