Re: [RFC] Subversion command line UI for interactive conflict resolution

2016-10-13 Thread Ivan Zhakov
On 13 October 2016 at 15:23, Stefan Sperling  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

2016-10-13 Thread Evgeny Kotkov
Ivan Zhakov  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

2016-10-13 Thread Stefan Sperling
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.


[RFC] Subversion command line UI for interactive conflict resolution

2016-10-13 Thread Ivan Zhakov
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