You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Ivan Zhakov <iv...@visualsvn.com> on 2016/10/13 13:01:39 UTC
[RFC] Subversion command line UI for interactive conflict resolution
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
Re: [RFC] Subversion command line UI for interactive conflict resolution
Posted by Evgeny Kotkov <ev...@visualsvn.com>.
Ivan Zhakov <iv...@visualsvn.com> writes:
> 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
I'd love to see the layout like this:
Resolution options:
(p) Postpone
(r) Mark as resolved
(m) Move and merge
(h) Help
(q) Postpone all remaining conflicts
Which changes to this, if the user selects "Help":
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 '^/subversion/trunk/subversion/libsvn_client/foo'
to 'subversion\libsvn_client\bar' and merge)
(h) Help
(q) Postpone all remaining conflicts
Regards,
Evgeny Kotkov
Re: [RFC] Subversion command line UI for interactive conflict resolution
Posted by Ivan Zhakov <iv...@visualsvn.com>.
On 13 October 2016 at 15:23, Stefan Sperling <st...@elego.de> wrote:
> On Thu, Oct 13, 2016 at 03:01:39PM +0200, Ivan Zhakov wrote:
>> 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:
>> ]]]
>
> +1
>
> It might also be nice to show a detailed conflict description only
> if the user asks for help:
>
> 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.
>
> By default we could show an abbreviated version of this description.
Good idea. But we need short_description API to implement this :)
--
Ivan Zhakov
Re: [RFC] Subversion command line UI for interactive conflict
resolution
Posted by Stefan Sperling <st...@elego.de>.
On Thu, Oct 13, 2016 at 03:01:39PM +0200, Ivan Zhakov wrote:
> 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:
> ]]]
+1
It might also be nice to show a detailed conflict description only
if the user asks for help:
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.
By default we could show an abbreviated version of this description.