Mercurial renamed "precursors" to "predecessors" in version 4.4, so they’re used synonymously. When the alias was dropped in Mercurial 4.6, this line stopped working: https://bitbucket.org/conservancy/kallithea/src/0b942d34e4deb9b43558d880bc5018c2aba2f2be/kallithea/lib/vcs/backends/hg/changeset.py#lines-103
Mercurial moved the
successorssets function from the
obsolete module to the
obsutil module. Alias was also dropped in Mercurial 4.6, so the following line stopped working: https://bitbucket.org/conservancy/kallithea/src/0b942d34e4deb9b43558d880bc5018c2aba2f2be/kallithea/lib/vcs/backends/hg/changeset.py#lines-91
The code is called from here: https://bitbucket.org/conservancy/kallithea/src/0b942d34e4deb9b43558d880bc5018c2aba2f2be/kallithea/templates/changeset/changeset.html#lines-106. However, the error is silently ignored (at least I didn't find a way to show it).
Even when this naming error is fixed, I find the current behavior a bit surprising:
successorsproperty returns only the newest changesets in the chain of successors.
precursorsproperty returns the changesets referenced by the obsolescence markers, regardless of whether they're in the repository or not.
Instead, I would propose that both properties return the closest changesets in the obsolescence chain that are in the repository. This would be useful for stepping through the obsolescence chain and also matches the behavior of Mercurial’s templates and TortoiseHG’s repository view. An API for getting both of these sets were added in Mercurial 4.3.
Is there a reason why Kallithea introduced its own terminology ("Replaced by" instead of "Succeeded by" or "Successors")?