[darcs-users] --mark-conflicts

Trent W. Buck trentbuck at gmail.com
Fri Mar 6 01:03:52 UTC 2009

Eric Kow <kowey at darcs.net> writes:

> On Wed, Mar 04, 2009 at 18:47:22 +1100, Trent W. Buck wrote:
>> Yes, it can be worked around.  But sometimes this is terribly
>> inconvenient and "I know better than you, Darcs".  Particularly when I
>> both ends are private repos to which only I have access -- I can go into
>> details regarding use cases in a follow-up post if you like.
> I'd be curious to learn more about this, i.e. where it would be
> inconvenient to darcs pull and resolve conflicts locally instead
> of pushing to the other end.

OK, here's a specific example.  I have a repo for the dotfiles in $HOME,
for which the "active development" copy lives on my laptop.  My laptop
does not run sshd, so I can push from it and pull to it, but not push to
it nor pull from it.

I also have a branch at work, which contains some work-specific patches
(for example, to change $http_proxy).  Periodically I wish to push all
dotfile updates from my latop to my work machine.  Normally I can just
do this with "darcs push fs:prefs", but if there is a conflict, I
instead have to do this in a temp directory:

    laptop$ darcs get fs:prefs
    laptop$ cd prefs
    laptop$ darcs pull --all --mark-conflicts ~/prefs
    laptop$ ed          # resolve conflicts
    laptop$ darcs record -am 'Resolve conflicts.'
    laptop$ darcs push --all fs:prefs

This certainly "feels" quite tedious compared to

    laptop$ darcs push fs:prefs --mark-conflicts
    laptop$ ssh fs
        fs$ ed          # resolve conflicts
        fs$ darcs record -am 'Resolve conflicts.'

Primarily because of the up-front waiting period for "darcs get", which
takes tens of seconds even with --lazy and such.

Also, because I am resolving the conflicts in a temp dir on my laptop
instead of in situ, it is harder to perform testing and easier to
introduce bugs.  For example, the host fs has bash 3.0 instead of bash
3.2, so several times I have broken my login scripts with bash 3.2isms.

When I'm doing several other things, it's also very easy for me to close
the temp dir shell (which causes the temp dir to be GCd) *before* I do
the final push back to fs -- thereby losing all the conflict resolution
work that I just did.

More information about the darcs-users mailing list