Mercurial > python-hglib
diff hglib/client.py @ 46:ebcc5d7dd528
client: introduce merge handlers
These can control the behaviour when Mercurial prompts what to do with regard
to a specific file
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 23:58:24 +0300 |
parents | 191855a9d813 |
children | 94d2988e55b7 |
line wrap: on
line diff
--- a/hglib/client.py Tue Aug 16 23:57:21 2011 +0300 +++ b/hglib/client.py Tue Aug 16 23:58:24 2011 +0300 @@ -1,5 +1,5 @@ import subprocess, os, struct, cStringIO, collections, re -import hglib, error, util, templates +import hglib, error, util, templates, merge from util import cmdbuilder @@ -442,11 +442,26 @@ return self._parserevs(out) - def merge(self, rev=None, force=False, tool=None, cb=None): + def merge(self, rev=None, force=False, tool=None, cb=merge.handlers.abort): + """ + merge working directory with another revision + + cb can one of merge.handlers, or a function that gets a single argument + which are the contents of stdout. It should return one of the expected + choices (a single character). + """ # we can't really use --preview since merge doesn't support --template args = cmdbuilder('merge', r=rev, f=force, t=tool) - self.rawcommand(args, prompt=cb) + prompt = None + if cb is merge.handlers.abort: + prompt = cb + elif cb is merge.handlers.noninteractive: + args.append('-y') + else: + prompt = lambda size, output: cb(output) + '\n' + + self.rawcommand(args, prompt=prompt) def move(self, source, dest, after=False, force=False, dryrun=False, include=None, exclude=None):