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@2'
to
'^/branches/b1/foo@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@2'
to
'^/branches/b1/foo@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@2' to '^/branches/b1/foo@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@2' to '^/branches/b1/foo@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@2' to '^/branches/b1/foo@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

Reply via email to