Skip to content
  • Martin von Zweigbergk's avatar
    rewriteutil: fix broken touch of merge commits (issue6416) · 4a09e95d29c9
    Martin von Zweigbergk authored
    `rewriteutil.rewrite()` is for rewriting a linear chain of commits
    into a single commit, i.e. what `hg fold` does. Many of the callers
    passed in a single commit because they wanted to rewrite just a single
    commit (e.g. `hg touch`). Before this patch, the code worked by going
    through the commits to fold and adding up all the modified files in
    them, then building a `memctx` based on that. As reported in
    issue6416, that can lose changes in merge commits. We could probably
    fix that without changing the existing code too much, but it seems the
    easiest way is to rewrite the code so it instead creates the new
    commit by effectively checking out the base and then revert to the
    head of the chain, so that's what this patch does. It does so by using
    in-memory merge.
    4a09e95d29c9