def update_hg_bookmarks(self, refs): try: oldbm = getattr(bookmarks, 'parse', None) if oldbm: bms = bookmarks.parse(self.repo) else: bms = self.repo._bookmarks heads = dict([(ref[11:],refs[ref]) for ref in refs if ref.startswith('refs/heads/')]) for head, sha in heads.iteritems(): # refs contains all the refs in the server, not just # the ones we are pulling if sha not in self.git.object_store: continue hgsha = bin(self.map_hg_get(sha)) if not head in bms: # new branch bms[head] = hgsha else: bm = self.repo[bms[head]] if bm.ancestor(self.repo[hgsha]) == bm: # fast forward bms[head] = hgsha if heads: if oldbm: bookmarks.write(self.repo, bms) else: self.repo._bookmarks = bms bookmarks.write(self.repo) except AttributeError: self.ui.warn(_('creating bookmarks failed, do you have' ' bookmarks enabled?\n'))
def update_hg_bookmarks(self, remote_name): try: bms = bookmarks.parse(self.repo) if remote_name: heads = self.git.remote_refs(remote_name) else: branches = self.bookbranch.split(',') heads = dict((i, self.git.ref(i.strip())) for i in branches) if remote_name: base_name = (remote_name + '/') else: base_name = '' for head, sha in heads.iteritems(): if not sha: self.ui.warn(_("Could not resolve head %s.\n") % head) continue hgsha = hex_to_sha(self.map_hg_get(sha)) if not head == 'HEAD': bms[base_name + head] = hgsha if heads: bookmarks.write(self.repo, bms) except AttributeError: self.ui.warn(_('creating bookmarks failed, do you have' ' bookmarks enabled?\n'))
def local_heads(self): try: if getattr(bookmarks, 'parse', None): bms = bookmarks.parse(self.repo) else: bms = self.repo._bookmarks return dict([(bm, hex(bms[bm])) for bm in bms]) except AttributeError: #pragma: no cover return {}
def update_hg_bookmarks(self, remote_name): try: bms = bookmarks.parse(self.repo) for head, sha in self.git.remote_refs(remote_name).iteritems(): hgsha = hex_to_sha(self.map_hg_get(sha)) if not head == 'HEAD': bms[remote_name + '/' + head] = hgsha bookmarks.write(self.repo, bms) except AttributeError: self.ui.warn(_('creating bookmarks failed, do you have' ' bookmarks enabled?\n'))
def update_references(self): try: # We only care about bookmarks of the form 'name', # not 'remote/name'. def is_local_ref(item): return item[0].count('/') == 0 bms = bookmarks.parse(self.repo) bms = dict(filter(is_local_ref, bms.items())) # Create a local Git branch name for each # Mercurial bookmark. for key in bms: hg_sha = hex(bms[key]) git_sha = self.map_git_get(hg_sha) self.git.set_ref('refs/heads/' + key, git_sha) except AttributeError: # No bookmarks extension pass c = self.map_git_get(hex(self.repo.changelog.tip())) self.git.set_ref(self.exportbranch, c)