mirror of
https://github.com/jj-vcs/jj.git
synced 2025-12-23 06:01:01 +00:00
In this implementation, we assume that predecessor commits created by old jj are reachable from at least one of the historical views. However, there are a couple of commands which create transitive predecessors. For example, "jj squash" into grandparent will rebase a rewritten source, so the pre-rebase source commit won't be visible to any views. To work around the problem, all immediate predecessors of historically visible commits are also preserved. Note that this change should be considered forward-incompatible change. The stored commits may have unreachable predecessors once we run "jj op abandon && jj util gc". WalkPredecessors::flush_commits() doesn't need to guard against unreachable commits. I was wondering whether values (or old ids) of op.commit_predecessors map should be preserved, and I decided to keep both keys and values. It's nice that we can get rid of index.has_id() calls when we drop support for legacy commit.predecessors. |
||
|---|---|---|
| .. | ||
| examples | ||
| src | ||
| testing | ||
| tests | ||
| build.rs | ||
| Cargo.toml | ||
| docs | ||
| LICENSE | ||