# HG changeset patch # User Durham Goode # Date 2017-03-12 19:33:35 # Node ID 91ddb33deea5b4813d4897f6860b00078afd3f19 # Parent 8228bc8fed8c709a43baa6c3af418d37c8ccd55c rebase: move state serialization to use unfiltered repo Now that rebasestate is serialized as part of the transaction, the repo state it sees is the version at the end of the transaction, which may have hidden nodes. Therefore, it's possible parts of the rebase commit set are no longer visible by the time the transaction is closing, which causes a filtered revision error in this code. I don't think state serialization should be blocked from accessing commits it knows exist, especially if all it's trying to do is get the hex of them, so let's use an unfiltered repo here. Unfortunately, the only known repro is with the fbamend Facebook extension, so I'm not sure how to repro it in core Mercurial for a test. diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -169,7 +169,7 @@ class rebaseruntime(object): self._writestatus(f) def _writestatus(self, f): - repo = self.repo + repo = self.repo.unfiltered() f.write(repo[self.originalwd].hex() + '\n') f.write(repo[self.target].hex() + '\n') f.write(repo[self.external].hex() + '\n')