Mercurial > hg > hg-git
changeset 397:60d181f9ecc3
Make pull results more like hg pulls.
Returns the number of changed heads (refs).
Uses the same "no changes found" message.
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Wed, 18 May 2011 15:12:32 -0700 |
parents | de0b2661032f |
children | 50c8d033638b |
files | hggit/git_handler.py hggit/hgrepo.py |
diffstat | 2 files changed, 16 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hggit/git_handler.py +++ b/hggit/git_handler.py @@ -101,6 +101,7 @@ refs = self.fetch_pack(remote, heads) remote_name = self.remote_name(remote) + oldrefs = self.git.get_refs() if refs: self.import_git_objects(remote_name, refs) self.import_tags(refs) @@ -116,11 +117,23 @@ lambda : None)() if bms: bookmarks.setcurrent(self.repo, bms[0]) - else: - self.ui.status(_("nothing new on the server\n")) + + def remoteref(ref): + rn = remote_name or 'default' + if ref.startswith('refs/tags/'): + return ref + return 'refs/remotes/' + rn + ref[10:] + + modheads = set([refs[k] for k in refs if k != 'HEAD' + and refs[k] != oldrefs.get(remoteref(k))]) + + if not modheads: + self.ui.status(_("no changes found\n")) self.save_map() + return len(modheads) + def export_commits(self): try: self.export_git_objects()
--- a/hggit/hgrepo.py +++ b/hggit/hgrepo.py @@ -11,7 +11,7 @@ def pull(self, remote, heads=None, force=False): if isinstance(remote, gitrepo): git = GitHandler(self, self.ui) - git.fetch(remote.path, heads) + return git.fetch(remote.path, heads) else: #pragma: no cover return super(hgrepo, self).pull(remote, heads, force)