I got an add-vs-add tree conflict during update, after applying a patch which I had also separately committed to the repo from a different WC.

Here is how it looked:

$ svn up
Updating '.':
G    subversion/svn/svn.c
   C subversion/svn/shelve-cmd.c
Updated to revision 1801596.
Summary of conflicts:
  Tree conflicts: 1
Searching tree conflict details for 'subversion/libsvn_client/shelve.c' in 
repository:
Checking r1801595... done
Tree conflict on 'subversion/libsvn_client/shelve.c':
A new file appeared during update to r1801596; it was added by julianfoad in 
r1801595.
A file scheduled to be added to the repository in the next commit was found in 
the working copy.
Select: (p) Postpone, (r) Mark as resolved, (m) Merge the files, (h) Help,
        (q) Quit resolution: r
Tree conflict at 'subversion/libsvn_client/shelve.c' marked as resolved.

$ svn st
M       subversion/svn/svn.c
RM      subversion/svn/shelve-cmd.c

The "Replaced" status is a possible resolution, but not the one I wanted, and I could not tell that is what I was going to get.

An improvement would be to show the pending status, perhaps like this:

...
A file scheduled to be added to the repository in the next commit was found in 
the working copy.
Pending status of the file is:
RM      subversion/svn/shelve-cmd.c
Select: (p) Postpone, (r) Mark as resolved, (m) Merge the files, (h) Help,
...

Certainly for tree conflicts I expect seeing the pending status would always be useful; also for non-tree conflicts I expect it would often be useful.

(Other improvements might include that the default resolution for add-vs-add during update should not be "replaced", but I'd like to discuss that elsewhere and keep this thread focused on showing the pending status.)

- Julian

Reply via email to