[PATCH hglib] merge and resolve return boolean instead of raising an exception
Idan Kamara
idankk86 at gmail.com
Thu Jan 26 18:42:00 UTC 2012
On Thu, Jan 26, 2012 at 8:30 PM, Andrey Somov <py4fun at gmail.com> wrote:
> # HG changeset patch
> # User py4fun
> # Date 1327602055 -3600
> # Node ID daa30292d864b8b1b94ee0f4393d1c98ba2fdfc0
> # Parent e5d3b0aa48e6ab79531204f61e25ee335b306df3
> merge and resolve return boolean instead of raising an exception
>
Please use the standard first line in a commit message, e.g. topic: short
summary
So this should read: merge: return False on unresolved files, or something
similar.
Also, there are several changes here that deserve their own patch, see
below.
>
> diff -r e5d3b0aa48e6 -r daa30292d864 hglib/client.py
> --- a/hglib/client.py Tue Jan 17 17:15:47 2012 -0600
> +++ b/hglib/client.py Thu Jan 26 19:20:55 2012 +0100
> @@ -999,6 +999,8 @@
> removed it. It can be 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).
> +
> + Returns True on success, False if there are unresolved files.
> """
> # we can't really use --preview since merge doesn't support
> --template
> args = cmdbuilder('merge', r=rev, f=force, t=tool)
> @@ -1011,7 +1013,9 @@
> else:
> prompt = lambda size, output: cb(output) + '\n'
>
> - self.rawcommand(args, prompt=prompt)
> + eh = util.reterrorhandler(args)
> + self.rawcommand(args, prompt=prompt, eh=eh)
> + return bool(eh)
>
> def move(self, source, dest, after=False, force=False, dryrun=False,
> include=None, exclude=None):
> @@ -1237,13 +1241,16 @@
> args = cmdbuilder('resolve', a=all, l=listfiles, m=mark, u=unmark,
> t=tool, I=include, X=exclude, *file)
>
> - out = self.rawcommand(args)
> + eh = util.reterrorhandler(args)
> + out = self.rawcommand(args, eh=eh)
>
> if listfiles:
> l = []
> for line in out.splitlines():
> l.append(tuple(line.split(' ', 1)))
> return l
> + else:
> + return bool(eh)
>
Split the changes to resolve and merge into two separate
patches.
>
> def revert(self, files, rev=None, all=False, date=None, nobackup=False,
> dryrun=False, include=None, exclude=None):
> diff -r e5d3b0aa48e6 -r daa30292d864 hglib/context.py
> --- a/hglib/context.py Tue Jan 17 17:15:47 2012 -0600
> +++ b/hglib/context.py Thu Jan 26 19:20:55 2012 +0100
> @@ -205,4 +205,4 @@
> """
> return the ancestor context of self and c2
> """
> - return changectx(self._repo, 'ancestor(%s, %s)' % (self, n2))
> + return changectx(self._repo, 'ancestor(%s, %s)' % (self, c2))
>
Nice catch, but unrelated. Send in a new patch (a line that tests
this in test-context.py would be nice too).
> diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-merge.py
> --- a/tests/test-merge.py Tue Jan 17 17:15:47 2012 -0600
> +++ b/tests/test-merge.py Thu Jan 26 19:20:55 2012 +0100
> @@ -14,7 +14,7 @@
> self.client.update(self.node0)
> self.append('b', 'a')
> rev, node2 = self.client.commit('new file', addremove=True)
> - self.client.merge(self.node1)
> + self.assertTrue(self.client.merge(self.node1))
> rev, node = self.client.commit('merge')
> diff = """diff -r %s -r %s a
> --- a/a
> @@ -40,7 +40,7 @@
> self.client.remove('a')
> rev, node = self.client.commit('remove')
>
> - self.client.merge(cb=hglib.merge.handlers.noninteractive)
> +
> self.assertTrue(self.client.merge(cb=hglib.merge.handlers.noninteractive))
>
> diff = """diff -r %s a
> --- /dev/null
> @@ -59,7 +59,7 @@
> def cb(output):
> return 'c'
>
> - self.client.merge(cb=cb)
> + self.assertTrue(self.client.merge(cb=cb))
>
> diff = """diff -r %s a
> --- /dev/null
> diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-resolve.py
> --- a/tests/test-resolve.py Tue Jan 17 17:15:47 2012 -0600
> +++ b/tests/test-resolve.py Thu Jan 26 19:20:55 2012 +0100
> @@ -18,12 +18,12 @@
> self.append('b', 'a')
> rev, self.node3 = self.client.commit('third')
>
> - self.assertRaises(hglib.error.CommandError, self.client.merge,
> self.node1)
> - self.assertRaises(hglib.error.CommandError, self.client.resolve,
> all=True)
> + self.assertFalse(self.client.merge(self.node1))
> + self.assertFalse(self.client.resolve(all=True))
>
> self.assertEquals([('U', 'a'), ('U', 'b')],
> self.client.resolve(listfiles=True))
>
> - self.client.resolve('a', mark=True)
> + self.assertTrue(self.client.resolve('a', mark=True))
> self.assertEquals([('R', 'a'), ('U', 'b')],
> self.client.resolve(listfiles=True))
> diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-summary.py
> --- a/tests/test-summary.py Tue Jan 17 17:15:47 2012 -0600
> +++ b/tests/test-summary.py Thu Jan 26 19:20:55 2012 +0100
> @@ -103,7 +103,7 @@
> self.append('b', 'a')
> rev2, node2 = self.client.commit('third', addremove=True)
>
> - self.client.merge(rev1)
> + self.assertTrue(self.client.merge(rev1))
>
> d = {'parent' : [(2, node2[:12], 'tip', 'third'),
> (1, node1[:12], None, 'second')],
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20120126/9550e9ad/attachment-0002.html>
More information about the Mercurial-devel
mailing list