git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v10 00/10] Fix scissors bug during conflict

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Apr 17, 2019, 10:23 UTC
Message-ID
<20190417102330.24434-1-phillip.wood123@gmail.com>
In-Reply-To
<cover.1553150827.git.liu.denton@gmail.com>
From: Phillip Wood <phillip.wood@dunelm.org.uk>

With Denton's blessing I've rebased his patches on top of my patch to fix the message cleanup with cherry-pick --signoff and -x [1]. I've also refactored a couple of the patches and cleaned up the coding style in places. The refactoring aims to simplify the code that deals with saving and restoring the cleanup option for cherry-pick/revert and improve the --cleanup option handling/parsing in builtin/merge.c and builtin/pull.c. I've dropped patch 7 as it didn't sit well with the new opts->explicit_cleanup added by [1]. I think it is easier just to keep the existing code in the sequencer for parsing the cleanup option rather trying to create a single function that does two slightly different things.

Apologies to those of you that received some of these patches yesterday when I was sending them to Denton, I didn't realize that send-email "helpfully" cc'd people in the *-by: footers.

Best Wishes
Phillip
[1] https://public-inbox.org/git/20190329110842.30604-1-phillip.wood123@gmail.com/
Denton Liu (10):
  t7600: clean up style
  t3507: clean up style
  t7604: clean up style
  t7502: clean up style
  commit: extract cleanup_mode functions to sequencer
  parse-options.h: extract common --cleanup option
  merge: cleanup messages like commit
  merge: add scissors line on merge conflict
  sequencer.c: save and restore cleanup mode
  cherry-pick/revert: add scissors line on merge conflict
 Documentation/git-cherry-pick.txt |   7 ++
 Documentation/git-revert.txt      |   7 ++
 Documentation/merge-options.txt   |   7 ++
 builtin/commit.c                  |  49 +++++-------
 builtin/merge.c                   |  51 +++++++++---
 builtin/pull.c                    |  12 +++
 builtin/revert.c                  |   7 ++
 builtin/tag.c                     |   3 +-
 parse-options.h                   |   1 +
 sequencer.c                       |  73 +++++++++++++++--
 sequencer.h                       |   9 ++-
 t/t3507-cherry-pick-conflict.sh   | 128 +++++++++++++++++++++++++-----
 t/t5521-pull-options.sh           |   8 ++
 t/t7502-commit-porcelain.sh       |  93 ++++++++++++----------
 t/t7600-merge.sh                  |  73 +++++++++++++----
 t/t7604-merge-custom-message.sh   |  75 +++++++++++++++--
 wt-status.c                       |  12 ++-
 wt-status.h                       |   1 +
 18 files changed, 484 insertions(+), 132 deletions(-)
Range-diff to pu
 1:  32caff17f2 !  1:  e660dff207 t7600: clean up style
    @@ -13,7 +13,6 @@
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Helped-by: Junio C Hamano <gitster@pobox.com>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
      --- a/t/t7600-merge.sh
 2:  9af8efc5c2 !  2:  86ae21aff9 t3507: clean up style
    @@ -8,7 +8,6 @@
     
         Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh
      --- a/t/t3507-cherry-pick-conflict.sh
 3:  7d4e0b5f24 !  3:  6f3e0fcd3b t7604: clean up style
    @@ -11,7 +11,6 @@
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/t/t7604-merge-custom-message.sh b/t/t7604-merge-custom-message.sh
      --- a/t/t7604-merge-custom-message.sh
 4:  6743bfce4b !  4:  fa41595854 t7502: clean up style
    @@ -10,7 +10,6 @@
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Helped-by: SZEDER Gábor <szeder.dev@gmail.com>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/t/t7502-commit-porcelain.sh b/t/t7502-commit-porcelain.sh
      --- a/t/t7502-commit-porcelain.sh
 5:  9e699bcc45 !  5:  3e87ab3176 commit: extract cleanup_mode functions to sequencer
    @@ -3,7 +3,6 @@
         commit: extract cleanup_mode functions to sequencer
     
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/builtin/commit.c b/builtin/commit.c
      --- a/builtin/commit.c
 6:  4753ea288a !  6:  d042d82f4f parse-options.h: extract common --cleanup option
    @@ -7,7 +7,6 @@
     
         Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/builtin/commit.c b/builtin/commit.c
      --- a/builtin/commit.c
 7:  f2feeefc50 <  -:  ---------- sequencer.c: remove duplicate code
 8:  b4ad22cdb6 !  7:  c4821d47fc merge: cleanup messages like commit
    @@ -6,18 +6,17 @@
         commit.cleanup configuration or --cleanup option, just like how
         git-commit does it.
     
    -    We also give git-pull the passthrough option of --cleanup so that it can
    -    also take advantage of this change.
    +    We also give git-pull the option of --cleanup so that it can also take
    +    advantage of this change.
     
         Finally, add testing to ensure that messages are properly cleaned up.
         Note that some newlines that were added to the commit message were
         removed so that if a file were read via -F, it would be copied
         faithfully.
     
    -    Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
    +    Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
      --- a/Documentation/merge-options.txt
    @@ -99,10 +98,10 @@
     -		strbuf_commented_addf(&msg, _(merge_editor_comment), comment_line_char);
     +	if (0 < option_edit) {
     +		strbuf_addch(&msg, '\n');
    -+		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS)
    ++		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS) {
     +			wt_status_append_cut_line(&msg);
    -+
    -+		strbuf_commented_addf(&msg, "\n");
    ++			strbuf_commented_addf(&msg, "\n");
    ++		}
     +		strbuf_commented_addf(&msg, _(merge_editor_comment));
     +		strbuf_commented_addf(&msg, _(cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS ?
     +			scissors_editor_comment :
    @@ -129,11 +128,24 @@
      	if (commit_tree(merge_msg.buf, merge_msg.len, result_tree, parents,
      			&result_commit, NULL, sign_commit))
     @@
    - 	if (option_edit < 0)
    - 		option_edit = default_edit_option();
    + 	}
    + 	resolve_undo_clear();
      
    -+	cleanup_mode = get_cleanup_mode(cleanup_arg, 0 < option_edit, 1);
    ++	if (option_edit < 0)
    ++		option_edit = default_edit_option();
     +
    ++	cleanup_mode = get_cleanup_mode(cleanup_arg, 0 < option_edit);
    ++
    + 	if (verbosity < 0)
    + 		show_diffstat = 0;
    + 
    +@@
    + 			fast_forward = FF_NO;
    + 	}
    + 
    +-	if (option_edit < 0)
    +-		option_edit = default_edit_option();
    +-
      	if (!use_strategies) {
      		if (!remoteheads)
      			; /* already up-to-date */
    @@ -153,48 +165,37 @@
      static char *opt_squash;
      static char *opt_commit;
      static char *opt_edit;
    -+static char *opt_cleanup;
    ++static char *cleanup_arg;
      static char *opt_ff;
      static char *opt_verify_signatures;
      static int opt_autostash = -1;
     @@
      	OPT_PASSTHRU(0, "edit", &opt_edit, NULL,
      		N_("edit message before committing"),
      		PARSE_OPT_NOARG),
    -+	OPT_PASSTHRU(0, "cleanup", &opt_cleanup, NULL,
    -+		N_("how to strip spaces and #comments from message"),
    -+		0),
    ++	OPT_CLEANUP(&cleanup_arg),
      	OPT_PASSTHRU(0, "ff", &opt_ff, NULL,
      		N_("allow fast-forward"),
      		PARSE_OPT_NOARG),
     @@
      		argv_array_push(&args, opt_commit);
      	if (opt_edit)
      		argv_array_push(&args, opt_edit);
    -+	if (opt_cleanup)
    -+		argv_array_push(&args, opt_cleanup);
    ++	if (cleanup_arg)
    ++		argv_array_pushf(&args, "--cleanup=%s", cleanup_arg);
      	if (opt_ff)
      		argv_array_push(&args, opt_ff);
      	if (opt_verify_signatures)
     @@
      
      	argc = parse_options(argc, argv, prefix, pull_options, pull_usage, 0);
      
    -+	if (opt_cleanup) {
    -+		const char *prefix = "--cleanup=";
    -+		const char *cleanup_arg;
    -+
    -+		if (strncmp(opt_cleanup, prefix, strlen(prefix)))
    -+			BUG("expecting prefix %s, argument is %s", prefix, opt_cleanup);
    -+
    -+		cleanup_arg = &opt_cleanup[strlen(prefix)];
    -+
    ++	if (cleanup_arg)
     +		/*
     +		 * this only checks the validity of cleanup_arg; we don't need
     +		 * a valid value for use_editor
     +		 */
    -+		get_cleanup_mode(cleanup_arg, 0, 1);
    -+	}
    ++		get_cleanup_mode(cleanup_arg, 0);
     +
      	parse_repo_refspecs(argc, argv, &repo, &refspecs);
      
 9:  7bd6d4370f !  8:  4ad58797e4 merge: add scissors line on merge conflict
    @@ -11,7 +11,6 @@
     
         Helped-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/Documentation/merge-options.txt b/Documentation/merge-options.txt
      --- a/Documentation/merge-options.txt
    @@ -61,7 +60,9 @@
      			die_errno(_("could not read MERGE_MSG"));
     +
     +		if (cleanup_mode == COMMIT_MSG_CLEANUP_SCISSORS &&
    -+		    wt_status_locate_end(sb.buf + merge_msg_start, sb.len - merge_msg_start) < sb.len - merge_msg_start)
    ++		    wt_status_locate_end(sb.buf + merge_msg_start,
    ++					 sb.len - merge_msg_start) <
    ++				sb.len - merge_msg_start)
     +			merge_contains_scissors = 1;
      	} else if (!stat(git_path_squash_msg(the_repository), &statbuf)) {
      		if (strbuf_read_file(&sb, git_path_squash_msg(the_repository), 0) < 0)
    @@ -103,10 +104,10 @@
     +	 * We can't use cleanup_mode because if we're not using the editor,
     +	 * get_cleanup_mode will return COMMIT_MSG_CLEANUP_SPACE instead, even
     +	 * though the message is meant to be processed later by git-commit.
    -+	 * Thus, we will get the cleanup mode which is returned when we _are_ using
    -+	 * an editor.
    ++	 * Thus, we will get the cleanup mode which is returned when we _are_
    ++	 * using an editor.
     +	 */
    -+	if (get_cleanup_mode(cleanup_arg, 1, 1) == COMMIT_MSG_CLEANUP_SCISSORS) {
    ++	if (get_cleanup_mode(cleanup_arg, 1) == COMMIT_MSG_CLEANUP_SCISSORS) {
     +	    fputc('\n', fp);
     +	    wt_status_add_cut_line(fp);
     +	    /* comments out the newline from append_conflicts_hint */
10:  8805d809d4 <  -:  ---------- sequencer.c: define describe_cleanup_mode
 -:  ---------- >  9:  b3136d4fae sequencer.c: save and restore cleanup mode
11:  b86bb747c9 ! 10:  582f842b9e cherry-pick/revert: add scissors line on merge conflict
    @@ -8,7 +8,6 @@
     
         Helped-by: Phillip Wood <phillip.wood@dunelm.org.uk>
         Signed-off-by: Denton Liu <liu.denton@gmail.com>
    -    Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt
      --- a/Documentation/git-cherry-pick.txt
    @@ -50,38 +49,23 @@
      --- a/builtin/merge.c
      +++ b/builtin/merge.c
     @@
    - 	 * Thus, we will get the cleanup mode which is returned when we _are_ using
    - 	 * an editor.
    + 	 * Thus, we will get the cleanup mode which is returned when we _are_
    + 	 * using an editor.
      	 */
    --	if (get_cleanup_mode(cleanup_arg, 1, 1) == COMMIT_MSG_CLEANUP_SCISSORS) {
    +-	if (get_cleanup_mode(cleanup_arg, 1) == COMMIT_MSG_CLEANUP_SCISSORS) {
     -	    fputc('\n', fp);
     -	    wt_status_add_cut_line(fp);
     -	    /* comments out the newline from append_conflicts_hint */
     -	    fputc(comment_line_char, fp);
     -	}
     -
     -	append_conflicts_hint(&the_index, &msgbuf);
    -+	append_conflicts_hint(&the_index, &msgbuf, get_cleanup_mode(cleanup_arg, 1, 1));
    ++	append_conflicts_hint(&the_index, &msgbuf,
    ++			      get_cleanup_mode(cleanup_arg, 1));
      	fputs(msgbuf.buf, fp);
      	strbuf_release(&msgbuf);
      	fclose(fp);
     
    - diff --git a/builtin/rebase--interactive.c b/builtin/rebase--interactive.c
    - --- a/builtin/rebase--interactive.c
    - +++ b/builtin/rebase--interactive.c
    -@@
    - 		OPT_END()
    - 	};
    - 
    -+	opts.action = REPLAY_INTERACTIVE_REBASE;
    - 	sequencer_init_config(&opts);
    - 	git_config_get_bool("rebase.abbreviatecommands", &abbreviate_commands);
    - 
    --	opts.action = REPLAY_INTERACTIVE_REBASE;
    - 	opts.allow_ff = 1;
    - 	opts.allow_empty = 1;
    - 
    -
      diff --git a/builtin/revert.c b/builtin/revert.c
      --- a/builtin/revert.c
      +++ b/builtin/revert.c
    @@ -103,8 +87,10 @@
      	if (opts->keep_redundant_commits)
      		opts->allow_empty = 1;
      
    -+	if (cleanup_arg)
    -+		opts->default_msg_cleanup = get_cleanup_mode(cleanup_arg, 1, 1);
    ++	if (cleanup_arg) {
    ++		opts->default_msg_cleanup = get_cleanup_mode(cleanup_arg, 1);
    ++		opts->explicit_cleanup = 1;
    ++	}
     +
      	/* Check for incompatible command line arguments */
      	if (cmd) {
    @@ -114,44 +100,20 @@
      --- a/sequencer.c
      +++ b/sequencer.c
     @@
    - 	{ NULL, 0, 0 }
    - };
    - 
    -+static inline int is_rebase_i(const struct replay_opts *opts)
    -+{
    -+	return opts->action == REPLAY_INTERACTIVE_REBASE;
    -+}
    -+
    - static int git_sequencer_config(const char *k, const char *v, void *cb)
    - {
    - 	struct replay_opts *opts = cb;
    -@@
    - 		if (status)
    - 			return status;
    - 
    --		opts->default_msg_cleanup = get_cleanup_mode(s, 0, 0);
    -+		opts->default_msg_cleanup = get_cleanup_mode(s, !is_rebase_i(opts), 0);
    - 
    - 		free((char *)s);
    - 		return status;
    -@@
    - 	git_config(git_sequencer_config, opts);
    - }
    - 
    --static inline int is_rebase_i(const struct replay_opts *opts)
    --{
    --	return opts->action == REPLAY_INTERACTIVE_REBASE;
    --}
    --
    - static const char *get_dir(const struct replay_opts *opts)
    - {
    - 	if (is_rebase_i(opts))
    + 			opts->default_msg_cleanup = COMMIT_MSG_CLEANUP_ALL;
    + 			opts->explicit_cleanup = 1;
    + 		} else if (!strcmp(s, "scissors")) {
    +-			opts->default_msg_cleanup = COMMIT_MSG_CLEANUP_SPACE;
    ++			opts->default_msg_cleanup = COMMIT_MSG_CLEANUP_SCISSORS;
    + 			opts->explicit_cleanup = 1;
    + 		} else {
    + 			warning(_("invalid commit message cleanup mode '%s'"),
     @@
      }
      
      void append_conflicts_hint(struct index_state *istate,
     -			   struct strbuf *msgbuf)
    -+		struct strbuf *msgbuf, enum commit_msg_cleanup_mode cleanup_mode)
    ++	struct strbuf *msgbuf, enum commit_msg_cleanup_mode cleanup_mode)
      {
      	int i;
      
    @@ -169,10 +131,28 @@
      
      	if (!clean)
     -		append_conflicts_hint(r->index, msgbuf);
    -+		append_conflicts_hint(r->index, msgbuf, opts->default_msg_cleanup);
    ++		append_conflicts_hint(r->index, msgbuf,
    ++				      opts->default_msg_cleanup);
      
      	return !clean;
      }
    +@@
    + 			  unsigned int flags)
    + {
    + 	struct child_process cmd = CHILD_PROCESS_INIT;
    +-	const char *value;
    + 
    + 	if ((flags & CREATE_ROOT_COMMIT) && !(flags & AMEND_MSG)) {
    + 		struct strbuf msg = STRBUF_INIT, script = STRBUF_INIT;
    +@@
    + 		argv_array_push(&cmd.args, "-e");
    + 	else if (!(flags & CLEANUP_MSG) &&
    + 		 !opts->signoff && !opts->record_origin &&
    +-		 git_config_get_value("commit.cleanup", &value))
    ++		 !opts->explicit_cleanup)
    + 		argv_array_push(&cmd.args, "--cleanup=verbatim");
    + 
    + 	if ((flags & ALLOW_EMPTY))
     
      diff --git a/sequencer.h b/sequencer.h
      --- a/sequencer.h
    @@ -185,7 +165,7 @@
     +void append_conflicts_hint(struct index_state *istate,
     +		struct strbuf *msgbuf, enum commit_msg_cleanup_mode cleanup_mode);
      enum commit_msg_cleanup_mode get_cleanup_mode(const char *cleanup_arg,
    - 	int use_editor, int die_on_error);
    + 	int use_editor);
      
     
      diff --git a/t/t3507-cherry-pick-conflict.sh b/t/t3507-cherry-pick-conflict.sh
-- 
2.21.0
Previous: Denton LiuNext: Phillip Wood
Message 88 of 105 in “Fix scissors bug during merge conflict”
  1. 0/2 Fix scissors bug during merge conflictDenton Liu, Nov 14, 2018
  2. 1/2 commit: don't add scissors line if one existsDenton Liu, Nov 14, 2018
  3. Junio C HamanoNov 14, 2018
  4. Denton LiuNov 14, 2018
  5. Junio C HamanoNov 16, 2018
  6. 2/2 merge: add scissors line on merge conflictDenton Liu, Nov 14, 2018
  7. Junio C HamanoNov 14, 2018
  8. Denton LiuNov 14, 2018
  9. 0/2 Fix scissors bug during merge conflictDenton Liu, Nov 16, 2018
  10. 2/2 merge: add scissors line on merge conflictDenton Liu, Nov 16, 2018
  11. 0/1 Fix scissors bug during merge conflictDenton Liu, Nov 17, 2018
  12. 1/1 merge: add scissors line on merge conflictDenton Liu, Nov 17, 2018
  13. SZEDER GáborNov 18, 2018
  14. Junio C HamanoNov 18, 2018
  15. 0/2 Fix scissors bug during merge conflictDenton Liu, Nov 21, 2018
  16. 1/2 t7600: clean up 'merge --squash c3 with c7' testDenton Liu, Nov 21, 2018
  17. 2/2 merge: add scissors line on merge conflictDenton Liu, Nov 21, 2018
  18. Junio C HamanoNov 21, 2018
  19. Denton LiuNov 22, 2018
  20. Junio C HamanoNov 24, 2018
  21. 0/4 Add git-merge --cleanup supportDenton Liu, Dec 25, 2018
  22. 1/4 commit: extract cleanup_mode functions to sequencerDenton Liu, Dec 25, 2018
  23. 2/4 t7600: clean up 'merge --squash c3 with c7' testDenton Liu, Dec 25, 2018
  24. 3/4 merge: cleanup messages like commitDenton Liu, Dec 25, 2018
  25. 4/4 merge: add scissors line on merge conflictDenton Liu, Dec 25, 2018
  26. 0/4 Add git-merge --cleanup supportDenton Liu, Jan 23, 2019
  27. 1/4 commit: extract cleanup_mode functions to sequencerDenton Liu, Jan 23, 2019
  28. 2/4 t7600: clean up 'merge --squash c3 with c7' testDenton Liu, Jan 23, 2019
  29. 3/4 merge: cleanup messages like commitDenton Liu, Jan 23, 2019
  30. 4/4 merge: add scissors line on merge conflictDenton Liu, Jan 23, 2019
  31. 0/8 Fix scissors bug during conflictDenton Liu, Mar 11, 2019
  32. 1/8 t7600: clean up 'merge --squash c3 with c7' testDenton Liu, Mar 11, 2019
  33. Junio C HamanoMar 12, 2019
  34. 2/8 t3507: cleanup space after redirection operatorsDenton Liu, Mar 11, 2019
  35. 3/8 commit: extract cleanup_mode functions to sequencerDenton Liu, Mar 11, 2019
  36. 4/8 sequencer.c: remove duplicate codeDenton Liu, Mar 11, 2019
  37. Phillip WoodMar 11, 2019
  38. 5/8 merge: cleanup messages like commitDenton Liu, Mar 11, 2019
  39. Eric SunshineMar 11, 2019
  40. Phillip WoodMar 11, 2019
  41. Eric SunshineMar 11, 2019
  42. Phillip WoodMar 11, 2019
  43. Junio C HamanoMar 12, 2019
  44. 6/8 merge: add scissors line on merge conflictDenton Liu, Mar 11, 2019
  45. Eric SunshineMar 11, 2019
  46. 7/8 sequencer.c: define get_config_from_cleanupDenton Liu, Mar 11, 2019
  47. Eric SunshineMar 11, 2019
  48. Junio C HamanoMar 12, 2019
  49. 8/8 cherry-pick/revert: add scissors line on merge conflictDenton Liu, Mar 11, 2019
  50. Phillip WoodMar 12, 2019
  51. Junio C HamanoMar 11, 2019
  52. 00/11 Fix scissors bug during conflictDenton Liu, Mar 17, 2019
  53. 01/11 t7600: clean up styleDenton Liu, Mar 17, 2019
  54. 02/11 t3507: cleanup space after redirection operatorsDenton Liu, Mar 17, 2019
  55. 03/11 t7604: refactor out Git commands upstream of pipeDenton Liu, Mar 17, 2019
  56. 04/11 t7502: clean up test styleDenton Liu, Mar 17, 2019
  57. 05/11 commit: extract cleanup_mode functions to sequencerDenton Liu, Mar 17, 2019
  58. 06/11 parse-options.h: extract common --cleanup optionDenton Liu, Mar 17, 2019
  59. 07/11 sequencer.c: remove duplicate codeDenton Liu, Mar 17, 2019
  60. 08/11 merge: cleanup messages like commitDenton Liu, Mar 17, 2019
  61. Phillip WoodMar 19, 2019
  62. Denton LiuMar 20, 2019
  63. 09/11 merge: add scissors line on merge conflictDenton Liu, Mar 17, 2019
  64. 10/11 sequencer.c: define describe_cleanup_modeDenton Liu, Mar 17, 2019
  65. Eric SunshineMar 18, 2019
  66. Denton LiuMar 18, 2019
  67. Eric SunshineMar 18, 2019
  68. Ramsay JonesMar 19, 2019
  69. 11/11 cherry-pick/revert: add scissors line on merge conflictDenton Liu, Mar 17, 2019
  70. SZEDER GáborMar 17, 2019
  71. Denton LiuMar 18, 2019
  72. Junio C HamanoMar 18, 2019
  73. Denton LiuMar 18, 2019
  74. Junio C HamanoMar 18, 2019
  75. 00/11 Fix scissors bug during conflictDenton Liu, Mar 21, 2019
  76. 01/11 t7600: clean up styleDenton Liu, Mar 21, 2019
  77. 02/11 t3507: clean up styleDenton Liu, Mar 21, 2019
  78. 03/11 t7604: clean up styleDenton Liu, Mar 21, 2019
  79. 04/11 t7502: clean up styleDenton Liu, Mar 21, 2019
  80. 05/11 commit: extract cleanup_mode functions to sequencerDenton Liu, Mar 21, 2019
  81. 06/11 parse-options.h: extract common --cleanup optionDenton Liu, Mar 21, 2019
  82. 07/11 sequencer.c: remove duplicate codeDenton Liu, Mar 21, 2019
  83. Phillip WoodMar 26, 2019
  84. 08/11 merge: cleanup messages like commitDenton Liu, Mar 21, 2019
  85. 09/11 merge: add scissors line on merge conflictDenton Liu, Mar 21, 2019
  86. 10/11 sequencer.c: define describe_cleanup_modeDenton Liu, Mar 21, 2019
  87. 11/11 cherry-pick/revert: add scissors line on merge conflictDenton Liu, Mar 21, 2019
  88. 00/10 Fix scissors bug during conflictPhillip Wood, Apr 17, 2019
  89. 01/10 t7600: clean up stylePhillip Wood, Apr 17, 2019
  90. 04/10 t7502: clean up stylePhillip Wood, Apr 17, 2019
  91. 03/10 t7604: clean up stylePhillip Wood, Apr 17, 2019
  92. 02/10 t3507: clean up stylePhillip Wood, Apr 17, 2019
  93. 05/10 commit: extract cleanup_mode functions to sequencerPhillip Wood, Apr 17, 2019
  94. 06/10 parse-options.h: extract common --cleanup optionPhillip Wood, Apr 17, 2019
  95. 07/10 merge: cleanup messages like commitPhillip Wood, Apr 17, 2019
  96. 08/10 merge: add scissors line on merge conflictPhillip Wood, Apr 17, 2019
  97. 09/10 sequencer.c: save and restore cleanup modePhillip Wood, Apr 17, 2019
  98. Denton LiuApr 17, 2019
  99. Phillip WoodApr 17, 2019
  100. Denton LiuApr 18, 2019
  101. 10/10 cherry-pick/revert: add scissors line on merge conflictPhillip Wood, Apr 17, 2019
  102. Junio C HamanoApr 18, 2019
  103. Phillip WoodApr 18, 2019
  104. 1/2 commit: don't add scissors line if one exists in MERGE_MSGDenton Liu, Nov 16, 2018
  105. Junio C HamanoNov 17, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.