summaryrefslogtreecommitdiff
path: root/sequencer.h
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2018-04-27 20:48:21 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-05-01 22:47:47 (GMT)
commite12a7ef5972423c822834f9c514a54e32ea99e65 (patch)
tree21e9985f4fe9a39bde40cc8acf12b810c562932c /sequencer.h
parentd5bc6f292ab0a1715ff021f5854ac5a81c2b88b0 (diff)
downloadgit-e12a7ef5972423c822834f9c514a54e32ea99e65.zip
git-e12a7ef5972423c822834f9c514a54e32ea99e65.tar.gz
git-e12a7ef5972423c822834f9c514a54e32ea99e65.tar.bz2
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
We previously relied on the localized versions of # This is a combination of <N> commits (which we write into the commit messages during fixup/squash chains) to contain <N> encoded in ASCII. This is not true in general, and certainly not true when compiled with GETTEXT_POISON=TryToKillMe, as demonstrated by the regression test we just introduced in t3418. So let's decouple keeping track of the count from the (localized) commit messages by introducing a new file called 'current-fixups' that keeps track of the current fixup/squash chain. This file contains a bit more than just the count (it contains a list of "fixup <commit>"/"squash <commit>" lines). This is done on purpose, as it will come in handy for a fix for the bug where `git rebase --skip` on a final fixup/squash will leave the commit message in limbo. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'sequencer.h')
-rw-r--r--sequencer.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/sequencer.h b/sequencer.h
index e45b178..1898158 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -44,10 +44,14 @@ struct replay_opts {
char **xopts;
size_t xopts_nr, xopts_alloc;
+ /* Used by fixup/squash */
+ struct strbuf current_fixups;
+ int current_fixup_count;
+
/* Only used by REPLAY_NONE */
struct rev_info *revs;
};
-#define REPLAY_OPTS_INIT { -1 }
+#define REPLAY_OPTS_INIT { .action = -1, .current_fixups = STRBUF_INIT }
/* Call this to setup defaults before parsing command line options */
void sequencer_init_config(struct replay_opts *opts);