Comment 1 for bug 386576

Revision history for this message
John A Meinel (jameinel) wrote :

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.