def from_objects(cls, repository, revision_id, time, timezone, target_branch, local_target_branch=None, public_branch=None, message=None): submit_branch = _mod_branch.Branch.open(target_branch) submit_branch.lock_read() try: submit_revision_id = submit_branch.last_revision() repository.fetch(submit_branch.repository, submit_revision_id) graph = repository.get_graph() todo = graph.find_difference(submit_revision_id, revision_id)[1] cg, revidmap = dchangegroup( repository, getattr(submit_branch, "mapping", default_mapping), todo) fn = changegroup.writebundle(cg, None, BUNDLE_TYPE) f = open(fn, 'r') try: contents = f.read() finally: f.close() finally: submit_branch.unlock() return cls(revision_id, None, time, timezone, target_branch, contents, None, public_branch, message)
def _generate_changegroup(self, revision_id, mapping, lossy=False): assert revision_id is not None graph = self.source.get_graph() revs = graph.find_difference(self.target.last_revision(), revision_id)[1] from breezy.plugins.hg.changegroup import dchangegroup return dchangegroup(self.source, mapping, revs, lossy=lossy)
def changegroup(self, nodes, kind): """See mercurial.repo.changegroup().""" if nodes == [mercurial.node.nullid]: revids = [ revid for revid in self.repo.all_revision_ids() if revid != _mod_revision.NULL_REVISION ] else: revids = [ self.lookup_revision_by_changeset_id(node) for node in nodes ] from breezy.plugins.hg.changegroup import dchangegroup self.repo.lock_read() try: return dchangegroup(self.repo, self.mapping, revids, lossy=False)[0] finally: self.repo.unlock()