Skip to content
  • Katsunori FUJIWARA's avatar
    templatekw: compare target context and its parent exactly (issue4690) · ed18f4acf435
    Katsunori FUJIWARA authored
    Before this patch, template keywords `{file_mods}`, `{file_adds}` and
    `{file_dels}` use values gotten by `repo.status(ctx.p1().node(),
    ctx.node())`.
    
    But this doesn't work as expected if `ctx` is `memctx` or
    `workingcommitctx`. Typical case of templating with these contexts is
    customization of the text shown in the commit message editor by
    `[committemplate]` configuration.
    
    In this case, `ctx.node()` returns None and it causes comparison
    between `ctx.p1()` and `workingctx`. `workingctx` lists up all changed
    files in the working directory even at selective committing.
    
    BTW, `{files}` uses `ctx.files()` and it works as expected.
    
    To compare target context and its parent exactly, this patch passes
    `ctx.p1()` and `ctx` without `node()`-nize. This avoids unexpected
    comparison with `workingctx`.
    
    This patch uses a little redundant template configurations in
    `test-commit.t`, but they are needed to avoid regression around
    problems fixed by a4958cdb2202 and 1e6fb8db666e: accessing on `ctx`
    may break `ctx._status` field.
    ed18f4acf435