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

Re: Tree conflicts - command-line UI

From: Karl Fogel <kfogel_at_red-bean.com>
Date: Fri, 12 Sep 2008 15:26:08 -0400

Julian Foad <julianfoad_at_btopenworld.com> writes:
> Some sketches of what I think the UI should be.

In the prose messages, I'd suggest introducing the word "but", as in:

   The update attempted to delete 'rho'
   (possibly as part of a rename operation),
   but you have edited 'rho' locally.

... and (of course) the message should suggest various ways the user
might want to resolve the situation.

General comment: so we're going to show tree conflicts as a conflict on
the parent, rather than on the entry where the conflict happened? As a
programmer, I totally get why that would be accurate. As a user, I'd be
confused and never get used to it, though...

-Karl

> ...
>
> The UI of "svn" with respect to tree conflicts consists of (primarily
> the output of):
>
> RAISE
> - svn update
> - svn switch
> - svn merge
>
> ENQUIRE
> - svn status (1-char/1-line summary)
> - svn info (details)
> - ls, cat (disk state, outside of Subversion)
>
> COMMIT
> - svn commit (failure because of unresolved conflict)
>
> RESOLVE
> - svn resolved
> - svn resolve --accept=X
> - svn up/sw/merge (interactive resolution)
>
> XML output is not considered here.
>
> n.b. The "Ready now" output shown here is indicative of what the
> tree-conflicts branch currently does (around now), but not an actual
> transcript.
>
>
> =============================================================
> == RAISE: svn update / switch
> =============================================================
>
> Desired:
> [[[
> $ svn update # incoming mod onto local del
> C parent/victim
> ]]]
>
> Ready now:
> [[[
> $ svn update # incoming mod onto local del
> U parent/victim
> C parent
> ]]]
>
> To do:
> - report a conflict only on the victim
> - skip processing in conflicted dirs
>
>
> =============================================================
> == RAISE: svn merge
> =============================================================
>
>
> =============================================================
> == ENQUIRE: svn status
> =============================================================
>
> Desired:
> [[[
> $ svn status
> CC parent/victim1
> CC parent/victim2
> ]]]
>
> Ready now:
> [[[
> $ svn status
> A parent/victim1
> M parent/victim2
> C parent
> ]]]
>
> Alternatives:
> - Other status letters (T, V), and/or a third column.
>
> =============================================================
> == ENQUIRE: svn info
> =============================================================
>
> Ready now:
> [[[
> $ svn info svn-test-work/working_copies/info_tests-1/A/D/G
> Path: svn-test-work/working_copies/info_tests-1/A/D/G
> URL:
> file:///home/julianfoad/build/subversion-tc3/svn-test-work/repositories/info_tests-1/A/D/G
> Repository Root:
> file:///home/julianfoad/build/subversion-tc3/svn-test-work/repositories/info_tests-1
> Repository UUID: 85eb87c9-d755-0410-942d-75d89e77a365
> Revision: 2
> Node Kind: directory
> Schedule: normal
> Last Changed Author: jrandom
> Last Changed Rev: 2
> Last Changed Date: 2008-09-01 17:06:35 +0100 (Mon, 01 Sep 2008)
> Tree conflicts:
> The update attempted to delete 'rho'
> (possibly as part of a rename operation).
> You have edited 'rho' locally.
>
> The update attempted to delete 'tau'
> (possibly as part of a rename operation).
> You have deleted 'tau' locally.
> Maybe you renamed it?
>
> The update attempted to edit 'pi'.
> You have deleted 'pi' locally.
> Maybe you renamed it?
>
> $ svn info svn-test-work/working_copies/info_tests-1/A/D/G/rho
> [...]
> # nothing unusual shown
> ]]]
>
> Desired:
> - Rather than listing multiple conflicts on a parent dir, list the
> single conflict of which this node is the victim:
> [[[
> Tree Conflict Operation: update
> Tree Conflict Incoming Change: delete
> Tree Conflict Older URL:
> file:///home/julianfoad/build/subversion-tc3/svn-test-work/repositories/info_tests-1/A/D/G/rho_at_120
> Tree Conflict Newer URL:
> file:///home/julianfoad/build/subversion-tc3/svn-test-work/repositories/info_tests-1/A/D/G/rho_at_130
> Tree Conflict Previous Working File: rho.mine
> ]]]
>
> Alternatives:
> - provide copies of the conflicted items, rather than URL_at_REV references
> to them. Or provide both.
> [[[
> Tree Conflict Operation: update
> Tree Conflict Incoming Change: delete
> Tree Conflict Previous Base File: 'rho.r120'
> Tree Conflict Previous Working File: 'rho.mine'
> Tree Conflict Current Base File: <none>
> ]]]
>
>
> =============================================================
> == ENQUIRE: disk state
> =============================================================
>
> Scenario: incoming edit onto local delete of file 'rho'.
>
> Desired:
> [[[
> $ ls
> # 'rho' is absent: is scheduled for delete
> # 'rho.mine' also absent: was scheduled for delete
> rho.r120
> rho.r130
> ]]]
>
> Ready now:
> [[[
> $ ls
> rho # but is scheduled for delete!
> ]]]
>
>
> =============================================================
> == COMMIT: failure because of unresolved conflict
> =============================================================
>
> Ready now:
> [[[
> $ svn commit
> svn: Commit failed (details follow):
> svn: Aborting commit: 'tree_conflict_tests-1/branch1/fP' remains in
> conflict
> ]]]
>
> Alternatives:
> - List all the nodes still in conflict.
> - Give full details of each unresolved tree conflict.
>
> Status:
> - Good enough for now.
>
>
> =============================================================
> == RESOLVE: svn resolved
> =============================================================
>
> Ready now:
> [[[
> $ svn status
> C branch1/fP
> A + branch1/fP/F2-local
> D branch1/fP/F
>
> $ svn resolved branch1/fP # fP is the parent dir of the victims
> Resolved conflicted state of 'branch1/fP'
> ]]]
>
> To do:
> - The target of the "resolved" command should be a single victim rather
> than a parent dir.
>
>
> =============================================================
> == RESOLVE: svn resolve
> =============================================================
>
>
> =============================================================
> == RESOLVE: interactive resolution
> =============================================================
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
> For additional commands, e-mail: dev-help_at_subversion.tigris.org

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-12 21:26:23 CEST

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