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

[RFC] Subversion command line UI for interactive conflict resolution

From: Ivan Zhakov <ivan_at_visualsvn.com>
Date: Thu, 13 Oct 2016 15:01:39 +0200

Hi,

I'm thinking new conflict resolution should look like in Subversion
command line client. Currently 'svn resolve' works like the following:
[[[
$ svn resolve
Searching tree conflict details for
'D:\ivan\svn\test-wc\add-versus-add\foo' in repository:
Checking r5... done
Tree conflict on 'D:\ivan\svn\test-wc\add-versus-add\foo':
File merged from
'^/trunk/foo_at_2'
to
'^/branches/b1/foo_at_16'
was moved to '^/branches/b1/bar' by ivan in r5.
A file which differs from the corresponding file on the merge source
branch was found in the working copy.
Select: (p) postpone, (r) accept current working copy state,
        (m) move 'foo' to 'bar' and merge, (h) help, (q) quit resolution:
]]]

Then when user types 'h' it will see expanded conflict resolutions
options with one option on each line:
[[[
File merged from
'^/trunk/foo_at_2'
to
'^/branches/b1/foo_at_16'
was moved to '^/branches/b1/bar' by ivan in r5.
A file which differs from the corresponding file on the merge source
branch was found in the working copy.

  (p) - skip this conflict and leave it unresolved [postpone]
  (r) - accept current working copy state [working]
  (m) - move 'foo' to 'bar' and merge
  (h) - show this help (also '?')
  (q) - postpone all remaining conflicts
Words in square brackets are the corresponding --accept option arguments.

Select: (p) postpone, (r) accept current working copy state,
        (m) move 'foo' to 'bar' and merge, (h) help, (q) quit resolution:
]]]

I suggest to change behavior to something like the following:
[[[
$ svn resolve
Searching tree conflict details for
'D:\ivan\svn\test-wc\add-versus-add\foo' in repository:
Checking r5... done
Tree conflict on 'D:\ivan\svn\test-wc\add-versus-add\foo':
File merged from '^/trunk/foo_at_2' to '^/branches/b1/foo_at_16' was moved
to '^/branches/b1/bar' by ivan in r5.
A file which differs from the corresponding file on the merge source
branch was found in the working copy.

Resolution options:
  (p) - postpone
  (r) - mark as resolved
  (m) - move and merge
  (h) - help
  (q) - postpone all remaining conflicts

Select:
]]]

When user types 'h' the some prompt will be shown, but with more
detailed description:
[[[
Tree conflict on 'D:\ivan\svn\test-wc\add-versus-add\foo':
File merged from '^/trunk/foo_at_2' to '^/branches/b1/foo_at_16' was moved
to '^/branches/b1/bar' by ivan in r5.
A file which differs from the corresponding file on the merge source
branch was found in the working copy.

Resolution options:
  (p) - postpone
         skip this conflict and leave it unresolved [postpone]
  (r) - mark as resolved
         accept current working copy state [working]
  (m) - move and merge
         move 'foo' to 'bar' and merge
  (h) - help
  (q) - postpone all remaining conflicts

Select:
]]]

Alternative layout:
[[[
Tree conflict on 'D:\ivan\svn\test-wc\add-versus-add\foo':
File merged from '^/trunk/foo_at_2' to '^/branches/b1/foo_at_16' was moved
to '^/branches/b1/bar' by ivan in r5.
A file which differs from the corresponding file on the merge source
branch was found in the working copy.

Resolution options:
  (p) - Postpone: skip this conflict and leave it unresolved. [postpone]
  (r) - Mark as resolved: accept current working copy state. [working]
  (m) - Move and merge: move 'foo' to 'bar' and merge.
  (h) - Help
  (q) - Postpone all remaining conflicts

Select:
]]]

-- 
Ivan Zhakov
Received on 2016-10-13 15:02:04 CEST

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