I tracked it down to this function:
def _basic_push(self, target, overwrite, stop_revision):
"""Basic implementation of push without bound branches or hooks.
Must be called with source read locked and target write locked.
"""
result = BranchPushResult() result.source_branch = self result.target_branch = target result.old_revno, result.old_revid = target.last_revision_info() self.update_references(target)
if result.old_revid != self.last_revision():
# We assume that during 'push' this repository is closer than
# the target.
graph = self.repository.get_graph(target.repository) target.update_revisions(self, stop_revision, overwrite=overwrite, graph=graph)
I believe the change should be:
if result.old_revid != self.last_revision():
should become
if result.old_revid != stop_revision:
But we would need tests, etc to confirm.
I can at least confirm in my real-world test case that the change "fixes" this bug. I haven't determined the fallout yet.
I tracked it down to this function:
def _basic_push(self, target, overwrite, stop_revision):
"""Basic implementation of push without bound branches or hooks.
Must be called with source read locked and target write locked.
result. source_ branch = self
result. target_ branch = target
result. old_revno, result.old_revid = target. last_revision_ info()
self.update_ references( target) revision( ): .get_graph( target. repository)
target. update_ revisions( self, stop_revision,
overwrite= overwrite, graph=graph)
"""
result = BranchPushResult()
if result.old_revid != self.last_
# We assume that during 'push' this repository is closer than
# the target.
graph = self.repository
I believe the change should be: revision( ):
if result.old_revid != self.last_
should become
if result.old_revid != stop_revision:
But we would need tests, etc to confirm.
I can at least confirm in my real-world test case that the change "fixes" this bug. I haven't determined the fallout yet.