Skip to content
  • Manuel Jacob's avatar
    config: add option to control creation of empty successors during rewrite · b6269741ed42
    Manuel Jacob authored
    The default for many history-rewriting commands (e.g. rebase and absorb) is
    that changesets which would become empty are not created in the target branch.
    This makes sense if the source branch consists of small fix-up changes. For
    more advanced workflows that make heavy use of history-editing to create
    curated patch series, dropping empty changesets is not as important or even
    undesirable.
    
    Some users want to keep the meta-history, e.g. to make finding comments in a
    code review tool easier or to avoid that divergent bookmarks are created. For
    that, obsmarkers from the (to-be) empty changeset to the changeset(s) that
    already made the changes should be added. If a to-be empty changeset is pruned
    without a successor, adding the obsmarkers is hard because the changeset has to
    be found within the hidden part of the history.
    
    If rebasing in TortoiseHg, it’s easy to miss the fact that the to-be empty
    changeset was pruned. An empty changeset will function as a reminder that
    obsmarkers should be added.
    
    Martin von Zweigbergk mentioned another advantage. Stripping the successor will
    de-obsolete the predecessor. If no (empty) successor is created, this won’t be
    possible.
    
    In the future, we may want to consider other behaviors, like e.g. creating the
    empty successor, but pruning it right away. Therefore this configuration
    accepts 'skip' and 'keep' instead of being a boolean configuration.
    b6269741ed42