Mercurial > public > mercurial-scm > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
1715:40346aa66b0f | 1781:284fc722c342 |
---|---|
950 cg = remote.changegroup(fetch) | 950 cg = remote.changegroup(fetch) |
951 else: | 951 else: |
952 cg = remote.changegroupsubset(fetch, heads) | 952 cg = remote.changegroupsubset(fetch, heads) |
953 return self.addchangegroup(cg) | 953 return self.addchangegroup(cg) |
954 | 954 |
955 def push(self, remote, force=False): | 955 def push(self, remote, force=False, revs=None): |
956 lock = remote.lock() | 956 lock = remote.lock() |
957 | 957 |
958 base = {} | 958 base = {} |
959 heads = remote.heads() | 959 heads = remote.heads() |
960 inc = self.findincoming(remote, base, heads) | 960 inc = self.findincoming(remote, base, heads) |
962 self.ui.warn(_("abort: unsynced remote changes!\n")) | 962 self.ui.warn(_("abort: unsynced remote changes!\n")) |
963 self.ui.status(_("(did you forget to sync? use push -f to force)\n")) | 963 self.ui.status(_("(did you forget to sync? use push -f to force)\n")) |
964 return 1 | 964 return 1 |
965 | 965 |
966 update = self.findoutgoing(remote, base) | 966 update = self.findoutgoing(remote, base) |
967 if not update: | 967 if revs is not None: |
968 msng_cl, bases, heads = self.changelog.nodesbetween(update, revs) | |
969 else: | |
970 bases, heads = update, self.changelog.heads() | |
971 | |
972 if not bases: | |
968 self.ui.status(_("no changes found\n")) | 973 self.ui.status(_("no changes found\n")) |
969 return 1 | 974 return 1 |
970 elif not force: | 975 elif not force: |
971 if len(heads) < len(self.changelog.heads()): | 976 if len(bases) < len(heads): |
972 self.ui.warn(_("abort: push creates new remote branches!\n")) | 977 self.ui.warn(_("abort: push creates new remote branches!\n")) |
973 self.ui.status(_("(did you forget to merge?" | 978 self.ui.status(_("(did you forget to merge?" |
974 " use push -f to force)\n")) | 979 " use push -f to force)\n")) |
975 return 1 | 980 return 1 |
976 | 981 |
977 cg = self.changegroup(update) | 982 if revs is None: |
983 cg = self.changegroup(update) | |
984 else: | |
985 cg = self.changegroupsubset(update, revs) | |
978 return remote.addchangegroup(cg) | 986 return remote.addchangegroup(cg) |
979 | 987 |
980 def changegroupsubset(self, bases, heads): | 988 def changegroupsubset(self, bases, heads): |
981 """This function generates a changegroup consisting of all the nodes | 989 """This function generates a changegroup consisting of all the nodes |
982 that are descendents of any of the bases, and ancestors of any of | 990 that are descendents of any of the bases, and ancestors of any of |