Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 1781:284fc722c342
add an optional argument to push only the specified revisions (push -r)
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Tue, 14 Feb 2006 21:11:57 +0100 |
parents | 03ee100b8c21 |
children | b9671b41e360 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Mon Feb 13 12:48:28 2006 -0600 +++ b/mercurial/localrepo.py Tue Feb 14 21:11:57 2006 +0100 @@ -952,7 +952,7 @@ cg = remote.changegroupsubset(fetch, heads) return self.addchangegroup(cg) - def push(self, remote, force=False): + def push(self, remote, force=False, revs=None): lock = remote.lock() base = {} @@ -964,17 +964,25 @@ return 1 update = self.findoutgoing(remote, base) - if not update: + if revs is not None: + msng_cl, bases, heads = self.changelog.nodesbetween(update, revs) + else: + bases, heads = update, self.changelog.heads() + + if not bases: self.ui.status(_("no changes found\n")) return 1 elif not force: - if len(heads) < len(self.changelog.heads()): + if len(bases) < len(heads): self.ui.warn(_("abort: push creates new remote branches!\n")) self.ui.status(_("(did you forget to merge?" " use push -f to force)\n")) return 1 - cg = self.changegroup(update) + if revs is None: + cg = self.changegroup(update) + else: + cg = self.changegroupsubset(update, revs) return remote.addchangegroup(cg) def changegroupsubset(self, bases, heads):