patch-id: fix patch-id for mode changes
commit93105aba6c4c8608b10c8ebe14b2313b3d347124
authorJerry Zhang <Jerry@skydio.com>
Mon, 24 Oct 2022 20:07:42 +0000 (24 20:07 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 24 Oct 2022 22:44:20 +0000 (24 15:44 -0700)
tree1dca96a7e73f7e842dde46d3b412c1387725a650
parent0df19eb9d905ff9b6115139106d98d8f0a8a9046
patch-id: fix patch-id for mode changes

Currently patch-id as used in rebase and cherry-pick does not account
for file modes if the file is modified. One consequence of this is
that if you have a local patch that changes modes, but upstream
has applied an outdated version of the patch that doesn't include
that mode change, "git rebase" will drop your local version of the
patch along with your mode changes. It also means that internal
patch-id doesn't produce the same output as the builtin, which does
account for mode changes due to them being part of diff output.

Fix by adding mode to the patch-id if it has changed, in the same
format that would be produced by diff, so that it is compatible
with builtin patch-id.

Signed-off-by: Jerry Zhang <Jerry@skydio.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
t/t3419-rebase-patch-id.sh