summaryrefslogtreecommitdiff
path: root/sequencer.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-02-13 13:39:15 -0800
committerJunio C Hamano <gitster@pobox.com>2018-02-13 13:39:15 -0800
commit0f57f731ea2a540a4c82b476054e8a36aebb2314 (patch)
tree7d71894a78d4b3acd828861c2c15e314ee18a0a4 /sequencer.h
parentdd0c256b67d1b128655c42ae126fa3397b1f9ede (diff)
parent66618a50f9c9f008d7aef751418f12ba9bfc6b85 (diff)
downloadgit-0f57f731ea2a540a4c82b476054e8a36aebb2314.tar.gz
Merge branch 'pw/sequencer-in-process-commit'
The sequencer infrastructure is shared across "git cherry-pick", "git rebase -i", etc., and has always spawned "git commit" when it needs to create a commit. It has been taught to do so internally, when able, by reusing the codepath "git commit" itself uses, which gives performance boost for a few tens of percents in some sample scenarios. * pw/sequencer-in-process-commit: sequencer: run 'prepare-commit-msg' hook t7505: add tests for cherry-pick and rebase -i/-p t7505: style fixes sequencer: assign only free()able strings to gpg_sign sequencer: improve config handling t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1 sequencer: try to commit without forking 'git commit' sequencer: load commit related config sequencer: simplify adding Signed-off-by: trailer commit: move print_commit_summary() to libgit commit: move post-rewrite code to libgit Add a function to update HEAD after creating a commit commit: move empty message checks to libgit t3404: check intermediate squash messages
Diffstat (limited to 'sequencer.h')
-rw-r--r--sequencer.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/sequencer.h b/sequencer.h
index 81f6d7d393..e45b178dfc 100644
--- a/sequencer.h
+++ b/sequencer.h
@@ -1,6 +1,7 @@
#ifndef SEQUENCER_H
#define SEQUENCER_H
+const char *git_path_commit_editmsg(void);
const char *git_path_seq_dir(void);
#define APPEND_SIGNOFF_DEDUP (1u << 0)
@@ -11,6 +12,13 @@ enum replay_action {
REPLAY_INTERACTIVE_REBASE
};
+enum commit_msg_cleanup_mode {
+ COMMIT_MSG_CLEANUP_SPACE,
+ COMMIT_MSG_CLEANUP_NONE,
+ COMMIT_MSG_CLEANUP_SCISSORS,
+ COMMIT_MSG_CLEANUP_ALL
+};
+
struct replay_opts {
enum replay_action action;
@@ -29,6 +37,7 @@ struct replay_opts {
int mainline;
char *gpg_sign;
+ enum commit_msg_cleanup_mode default_msg_cleanup;
/* Merge strategy */
char *strategy;
@@ -40,6 +49,8 @@ struct replay_opts {
};
#define REPLAY_OPTS_INIT { -1 }
+/* Call this to setup defaults before parsing command line options */
+void sequencer_init_config(struct replay_opts *opts);
int sequencer_pick_revisions(struct replay_opts *opts);
int sequencer_continue(struct replay_opts *opts);
int sequencer_rollback(struct replay_opts *opts);
@@ -61,5 +72,19 @@ extern const char sign_off_header[];
void append_signoff(struct strbuf *msgbuf, int ignore_footer, unsigned flag);
void append_conflicts_hint(struct strbuf *msgbuf);
+int message_is_empty(const struct strbuf *sb,
+ enum commit_msg_cleanup_mode cleanup_mode);
+int template_untouched(const struct strbuf *sb, const char *template_file,
+ enum commit_msg_cleanup_mode cleanup_mode);
+int update_head_with_reflog(const struct commit *old_head,
+ const struct object_id *new_head,
+ const char *action, const struct strbuf *msg,
+ struct strbuf *err);
+void commit_post_rewrite(const struct commit *current_head,
+ const struct object_id *new_head);
+#define SUMMARY_INITIAL_COMMIT (1 << 0)
+#define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
+void print_commit_summary(const char *prefix, const struct object_id *oid,
+ unsigned int flags);
#endif