Re: valgrind UMRs in "svn merge --record-only"
Philip Martin <[email protected]> Tue, 01 Dec 2009 10:17:02 +0000
| Newsgroups | gmane.comp.version-control.subversion.devel,gmane.comp.version-control.subversion.rapidsvn.devel |
|---|---|
| Message-ID | <[email protected]> |
Paul Burba <[email protected]> writes: > Those 'if (merge_b->record_only)' early exits were added in r880264 > which implemented the change that allows --record-only merges to apply > only svn:mergeinfo diffs, see > http://svn.haxx.se/dev/archive-2009-09/0520.shtml. Yes, I'd already found that from the log message on the revision that introduced the change. In that email the double carets, ^^, are single carets for Subversion escaped for the windows shell, is that correct? > You are correct about the the comment 'We are only applying mergeinfo > changes to existing paths', as regards merge_dir_added (and > merge_file_added); since we are applying only mergeinfo diffs we do > not want to actually add any files/dirs. Unfortunately I used the > same comment for merge_file_changed, merge_file_deleted, and > merge_dir_deleted, which is quite wrong. The comment should > universally be changed to: > > /* Easy out: We are only applying mergeinfo differences. */ > > Is that any clearer? I've been thinking about it a bit more, let's see if I've got this right. Merge is an URL-to-URL diff that gets applied to the working copy, followed by some property modifications to record the merge. (I say "followed by" although there is no requirement for them to be sequential, they are done in parallel.) The URL-to-URL diff consists of adds, updates and deletes and these form a conceptually different set of modifications to the subsequent modifications that record the merge. The URL-to-URL diff might even transfer some svn:mergeinfo properties from the merge source to working copy but that is still separate from the subsequent modifications to record the merge. When it comes to recording the merge, there will never be any need to set or modify the svn:mergeinfo property on any path that is added or deleted by the merge. Merge information only ever needs to be recorded in paths exist both before and after the URL-to-URL diff. So in the editor callbacks for added or deleted items we know that no merge recording needs to be done below the item. Is that correct? Another thing I've noticed is that merge doesn't produce notifications when it is modifying svn:mergeinfo. I suppose that was a deliberate decision to make merge tracking less obtrusive, but it does mean that --record-only merges are alarmingly silent: rm -rf repo wc svnadmin create repo svn mkdir -mm file://`pwd`/repo/T svn mkdir -mm file://`pwd`/repo/T/foo svn cp -r1 -mm file://`pwd`/repo/T file://`pwd`/repo/B svn co file://`pwd`/repo/B wc svn merge ^/T wc svn pd svn:mergeinfo wc svn merge --record-only ^/T wc The --record-only merge produces no notifications at all. I need to check status before and after to determine whether it did anything at all. Perhaps --record-only merges should produce notification for each directory where the svn:mergeinfo gets modified? -- Philip ------------------------------------------------------ http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2425826 Please start new threads on the <[email protected]> mailing list. To subscribe to the new list, send an empty e-mail to <[email protected]>.