mbox series

[v6,0/5] fixup ra/rebase-i-more-options

Message ID 20200713101045.27335-1-phillip.wood123@gmail.com
Headers show
Series fixup ra/rebase-i-more-options | expand

Message

Phillip Wood July 13, 2020, 10:10 a.m. UTC
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Thanks for the comments on the last round, I've modified the
controversial conditional in the first patch as suggested by Junio and
updated patch 4 as suggested as well

Best Wishes

Phillip

Phillip Wood (2):
  rebase -i: support --committer-date-is-author-date
  rebase -i: support --ignore-date

Rohit Ashiwal (3):
  rebase -i: add --ignore-whitespace flag
  sequencer: rename amend_author to author_to_free
  rebase: add --reset-author-date

 Documentation/git-rebase.txt           |  33 ++++-
 builtin/rebase.c                       |  47 +++++--
 sequencer.c                            | 112 ++++++++++++++-
 sequencer.h                            |   2 +
 t/t3422-rebase-incompatible-options.sh |   2 -
 t/t3436-rebase-more-options.sh         | 180 +++++++++++++++++++++++++
 6 files changed, 353 insertions(+), 23 deletions(-)
 create mode 100755 t/t3436-rebase-more-options.sh

Range-diff against v5:
1:  43ee10d4d5 ! 1:  5bb4226007 rebase -i: add --ignore-whitespace flag
    @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
      
     +	if (options.type == REBASE_APPLY) {
     +		if (ignore_whitespace)
    -+			argv_array_push (&options.git_am_opts,
    -+					 "--ignore-whitespace");
    -+	} else if (ignore_whitespace) {
    -+			string_list_append (&strategy_options,
    -+					    "ignore-space-change");
    ++			argv_array_push(&options.git_am_opts,
    ++					"--ignore-whitespace");
    ++	} else {
    ++		/* REBASE_MERGE and PRESERVE_MERGES */
    ++		if (ignore_whitespace) {
    ++			string_list_append(&strategy_options,
    ++					   "ignore-space-change");
    ++		}
     +	}
     +
      	if (strategy_options.nr) {
2:  a2b57df19c ! 2:  e5fdb574ed rebase -i: support --committer-date-is-author-date
    @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
      			allow_preemptive_ff = 0;
     @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
      		if (ignore_whitespace)
    - 			argv_array_push (&options.git_am_opts,
    - 					 "--ignore-whitespace");
    + 			argv_array_push(&options.git_am_opts,
    + 					"--ignore-whitespace");
     +		if (options.committer_date_is_author_date)
     +			argv_array_push(&options.git_am_opts,
     +					"--committer-date-is-author-date");
    - 	} else if (ignore_whitespace) {
    - 			string_list_append (&strategy_options,
    - 					    "ignore-space-change");
    + 	} else {
    + 		/* REBASE_MERGE and PRESERVE_MERGES */
    + 		if (ignore_whitespace) {
     
      ## sequencer.c ##
     @@ sequencer.c: static GIT_PATH_FUNC(rebase_path_refs_to_delete, "rebase-merge/refs-to-delete")
3:  363a0140ad = 3:  cf5c9a2456 sequencer: rename amend_author to author_to_free
4:  46d9e108be ! 4:  0fc90eaff1 rebase -i: support --ignore-date
    @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
     -		OPT_PASSTHRU_ARGV(0, "ignore-date", &options.git_am_opts, NULL,
     -				  N_("passed to 'git am'"), PARSE_OPT_NOARG),
     +		OPT_BOOL(0, "ignore-date", &options.ignore_date,
    -+			 "ignore author date and use current date"),
    ++			 N_("ignore author date and use current date")),
      		OPT_PASSTHRU_ARGV('C', NULL, &options.git_am_opts, N_("n"),
      				  N_("passed to 'git apply'"), 0),
      		OPT_BOOL(0, "ignore-whitespace", &ignore_whitespace,
    @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
      					"--committer-date-is-author-date");
     +		if (options.ignore_date)
     +			argv_array_push(&options.git_am_opts, "--ignore-date");
    - 	} else if (ignore_whitespace) {
    - 			string_list_append (&strategy_options,
    - 					    "ignore-space-change");
    + 	} else {
    + 		/* REBASE_MERGE and PRESERVE_MERGES */
    + 		if (ignore_whitespace) {
     
      ## sequencer.c ##
     @@ sequencer.c: static GIT_PATH_FUNC(rebase_path_refs_to_delete, "rebase-merge/refs-to-delete")
    @@ sequencer.c: static const char *author_date_from_env_array(const struct argv_arr
     +/* Construct a free()able author string with current time as the author date */
     +static char *ignore_author_date(const char *author)
     +{
    -+	int len = strlen(author);
    ++	int len;
     +	struct ident_split ident;
     +	struct strbuf new_author = STRBUF_INIT;
     +
    -+	if (split_ident_line(&ident, author, len) < 0) {
    ++	if (split_ident_line(&ident, author, strlen(author)) < 0) {
     +		error(_("malformed ident line '%s'"), author);
     +		return NULL;
     +	}
5:  26d5eefdcb ! 5:  21cf5e5512 rebase: add --reset-author-date
    @@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
      			 &options.committer_date_is_author_date,
      			 N_("make committer date match author date")),
     -		OPT_BOOL(0, "ignore-date", &options.ignore_date,
    --			 "ignore author date and use current date"),
     +		OPT_BOOL(0, "reset-author-date", &options.ignore_date,
    -+			 N_("ignore author date and use current date")),
    + 			 N_("ignore author date and use current date")),
     +		OPT_HIDDEN_BOOL(0, "ignore-date", &options.ignore_date,
     +				N_("synonym of --reset-author-date")),
      		OPT_PASSTHRU_ARGV('C', NULL, &options.git_am_opts, N_("n"),

Comments

Junio C Hamano July 13, 2020, 3:28 p.m. UTC | #1
Phillip Wood <phillip.wood123@gmail.com> writes:

> Phillip Wood (2):
>   rebase -i: support --committer-date-is-author-date
>   rebase -i: support --ignore-date
>
> Rohit Ashiwal (3):
>   rebase -i: add --ignore-whitespace flag
>   sequencer: rename amend_author to author_to_free
>   rebase: add --reset-author-date

Thanks for polishing them further.

Will queue; with help from others, this can be one of the early
topics to be merged after 2.28 gets tagged, hopefully?
Phillip Wood July 15, 2020, 8:55 a.m. UTC | #2
On 13/07/2020 16:28, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
> 
>> Phillip Wood (2):
>>    rebase -i: support --committer-date-is-author-date
>>    rebase -i: support --ignore-date
>>
>> Rohit Ashiwal (3):
>>    rebase -i: add --ignore-whitespace flag
>>    sequencer: rename amend_author to author_to_free
>>    rebase: add --reset-author-date
> 
> Thanks for polishing them further.
> 
> Will queue; with help from others, this can be one of the early
> topics to be merged after 2.28 gets tagged, hopefully?

Yes I hope so, I'm not aware of any outstanding issues (lets see if the 
reviewers agree)

Best Wishes

Phillip