[PATCH] incoming copy of locally modified file(under repo_root) is not receiving the local modification

Kamesh Jayachandran <[email protected]> Fri, 04 Dec 2009 21:54:44 +0530
Newsgroups gmane.comp.version-control.subversion.devel,gmane.comp.version-control.subversion.rapidsvn.devel
Message-ID <[email protected]>
Hi All,

I observed the following bug when I was working with the file under repo 
root.

$svnadmin create repo
$svn co file://`pwd`/repo wc
$cd wc
$echo "I am test.c" >test.c
$svn add test.c
$svn ci -m "log"
$svn mv test.c test2.c
$svn ci -m "refactor"
$cd ..
$svn co -r1 file://`pwd`/repo wc2
$cd wc2
$echo "modified" >>test.c


$svn up

The above svn update is not adding the 'modified' change to test2.c.

Everything works fine if the files are *not* directly under repo root.


Attached patch fixes it.

I ran test against ra_local, *no* failure with this patch. Hope this fix 
is independent of ra layer and hence sending it without testing against 
each layer.

If there are no objections will commit it by tomorrow.

With regards
Kamesh Jayachandran

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2427104

Please start new threads on the <[email protected]> mailing list.
To subscribe to the new list, send an empty e-mail to <[email protected]>.
copy_not_receiving_the_local_change.patch (text/plain, 733 B)
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c	(revision 887212)
+++ subversion/libsvn_wc/update_editor.c	(working copy)
@@ -3346,9 +3346,6 @@
   ancestor_relpath = svn_relpath_get_longest_ancestor(dir_repos_relpath,
                                                       copyfrom_relpath,
                                                       scratch_pool);
-  if (strlen(ancestor_relpath) == 0)
-    return SVN_NO_ERROR;
-
   /* Move 'up' the working copy to what ought to be the common ancestor dir. */
   levels_up = svn_path_component_count(dir_repos_relpath)
               - svn_path_component_count(ancestor_relpath);
copy_not_receiving_the_local_change.log (text/plain, 216 B)
[[[
incoming copy of locally modified file(under repo_root) is not receiving the
local modification.
* subversion/libsvn_wc/update_editor.c
  (locate_copyfrom): No need of early return for files under repo_root.
]]]