mbox series

[v3,0/5] cleanup ra/rebase-i-more-options

Message ID 20200521101455.63484-1-phillip.wood123@gmail.com (mailing list archive)
Headers show
Series cleanup ra/rebase-i-more-options | expand

Message

Phillip Wood May 21, 2020, 10:14 a.m. UTC
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Thanks for the feedback on v2, I've updated the documentation as
suggested by Elijah and made the style fixes suggested by Alban but
I've not changed read_author_script() for the reasons explained in
https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@gmail.com

These patches are based on 9fadedd637 ("Merge branch
'ds/default-pack-use-sparse-to-true'", 2020-03-29)

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                       |  46 ++++--
 sequencer.c                            | 111 ++++++++++++-
 sequencer.h                            |   2 +
 t/t3422-rebase-incompatible-options.sh |   2 -
 t/t3436-rebase-more-options.sh         | 209 +++++++++++++++++++++++++
 6 files changed, 379 insertions(+), 24 deletions(-)
 create mode 100755 t/t3436-rebase-more-options.sh

Range-diff against v2:
1:  5ef315240a ! 1:  df8c4ed2e9 rebase -i: add --ignore-whitespace flag
    @@ Documentation/git-rebase.txt: your branch contains commits which were dropped, t
      with `--keep-base` in order to drop those commits from your branch.
      
      --ignore-whitespace::
    -+	Behaves differently depending on which backend is selected.
    ++	Ignore whitespace differences when trying to reconcile
    ++differences. Currently, each backend implements an approximation of
    ++this behavior:
     ++
     +apply backend: When applying a patch, ignore changes in whitespace in
    -+context lines.
    ++context lines. Unfortunately, this means that if the "old" lines being
    ++replaced by the patch differ only in whitespace from the existing
    ++file, you will get a merge conflict instead of a successful patch
    ++application.
     ++
     +merge backend: Treat lines with only whitespace changes as unchanged
    -+when merging.
    ++when merging. Unfortunately, this means that any patch hunks that were
    ++intended to modify whitespace and nothing else will be dropped, even
    ++if the other side had no changes that conflicted.
     +
      --whitespace=<option>::
     -	These flags are passed to the 'git apply' program
2:  55eb3a7efc ! 2:  df44a0bde6 rebase -i: support --committer-date-is-author-date
    @@ Commit message
         Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
     
      ## Documentation/git-rebase.txt ##
    -@@ Documentation/git-rebase.txt: when merging.
    +@@ Documentation/git-rebase.txt: if the other side had no changes that conflicted.
      See also INCOMPATIBLE OPTIONS below.
      
      --committer-date-is-author-date::
    @@ sequencer.c: static int run_git_commit(struct repository *r,
      
      	if (!(flags & VERIFY_MSG))
     @@ sequencer.c: static int try_to_commit(struct repository *r,
    - 
    - 	if (parse_head(r, &current_head))
    - 		return -1;
    --
    - 	if (flags & AMEND_MSG) {
    - 		const char *exclude_gpgsig[] = { "gpgsig", "gpgsig-sha256", NULL };
    - 		const char *out_enc = get_commit_output_encoding();
    -@@ sequencer.c: static int try_to_commit(struct repository *r,
      		commit_list_insert(current_head, &parents);
      	}
      
3:  19352fdc22 = 3:  fa3d4856b4 sequencer: rename amend_author to author_to_free
4:  5e971abb74 ! 4:  96657233d4 rebase -i: support --ignore-date
    @@ sequencer.c: static const char *author_date_from_env_array(const struct argv_arr
     +		error(_("malformed ident line '%s'"), author);
     +		return NULL;
     +	}
    ++
     +	len = ident.mail_end - ident.name_begin + 1;
    -+
     +	strbuf_addf(&new_author, "%.*s ", len, ident.name_begin);
     +	datestamp(&new_author);
     +	return strbuf_detach(&new_author, NULL);
    @@ sequencer.c: static int try_to_commit(struct repository *r,
     +		free(author_to_free);
     +		author_to_free = (char *)author;
     +	}
    ++
      	if (commit_tree_extended(msg->buf, msg->len, &tree, parents,
      				 oid, author, opts->gpg_sign, extra)) {
      		res = error(_("failed to write commit object"));
5:  43a097c583 = 5:  828155baba rebase: add --reset-author-date

Comments

Elijah Newren May 22, 2020, 3:54 p.m. UTC | #1
On Thu, May 21, 2020 at 3:15 AM Phillip Wood <phillip.wood123@gmail.com> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> Thanks for the feedback on v2, I've updated the documentation as
> suggested by Elijah and made the style fixes suggested by Alban but
> I've not changed read_author_script() for the reasons explained in
> https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@gmail.com

All my questions were answered earlier; this round addressed my
remaining feedback and I see no new issues.

Reviewed-by: Elijah Newren <newren@gmail.com>
Johannes Schindelin May 23, 2020, 6:59 a.m. UTC | #2
Hi Phillip,

On Thu, 21 May 2020, Phillip Wood wrote:

> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> Thanks for the feedback on v2, I've updated the documentation as
> suggested by Elijah and made the style fixes suggested by Alban but
> I've not changed read_author_script() for the reasons explained in
> https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@gmail.com
>
> These patches are based on 9fadedd637 ("Merge branch
> 'ds/default-pack-use-sparse-to-true'", 2020-03-29)

Thank you for working on these patches! TBH what I was looking to most in
that GSoC project was the ability to combine `--interactive` with Sverre's
`--whitespace=fix` option, but it never came even close to that. So I had
planned to help this patch series as much as I can.

Turns out that I do not really have any time to help this patch series,
therefore I am very happy to see Danh and Elijah jump in and review the
patch series, and that makes me think that between the three of you, it is
in good hands now.

Thanks,
Dscho

>
> 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                       |  46 ++++--
>  sequencer.c                            | 111 ++++++++++++-
>  sequencer.h                            |   2 +
>  t/t3422-rebase-incompatible-options.sh |   2 -
>  t/t3436-rebase-more-options.sh         | 209 +++++++++++++++++++++++++
>  6 files changed, 379 insertions(+), 24 deletions(-)
>  create mode 100755 t/t3436-rebase-more-options.sh
>
> Range-diff against v2:
> 1:  5ef315240a ! 1:  df8c4ed2e9 rebase -i: add --ignore-whitespace flag
>     @@ Documentation/git-rebase.txt: your branch contains commits which were dropped, t
>       with `--keep-base` in order to drop those commits from your branch.
>
>       --ignore-whitespace::
>     -+	Behaves differently depending on which backend is selected.
>     ++	Ignore whitespace differences when trying to reconcile
>     ++differences. Currently, each backend implements an approximation of
>     ++this behavior:
>      ++
>      +apply backend: When applying a patch, ignore changes in whitespace in
>     -+context lines.
>     ++context lines. Unfortunately, this means that if the "old" lines being
>     ++replaced by the patch differ only in whitespace from the existing
>     ++file, you will get a merge conflict instead of a successful patch
>     ++application.
>      ++
>      +merge backend: Treat lines with only whitespace changes as unchanged
>     -+when merging.
>     ++when merging. Unfortunately, this means that any patch hunks that were
>     ++intended to modify whitespace and nothing else will be dropped, even
>     ++if the other side had no changes that conflicted.
>      +
>       --whitespace=<option>::
>      -	These flags are passed to the 'git apply' program
> 2:  55eb3a7efc ! 2:  df44a0bde6 rebase -i: support --committer-date-is-author-date
>     @@ Commit message
>          Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
>
>       ## Documentation/git-rebase.txt ##
>     -@@ Documentation/git-rebase.txt: when merging.
>     +@@ Documentation/git-rebase.txt: if the other side had no changes that conflicted.
>       See also INCOMPATIBLE OPTIONS below.
>
>       --committer-date-is-author-date::
>     @@ sequencer.c: static int run_git_commit(struct repository *r,
>
>       	if (!(flags & VERIFY_MSG))
>      @@ sequencer.c: static int try_to_commit(struct repository *r,
>     -
>     - 	if (parse_head(r, &current_head))
>     - 		return -1;
>     --
>     - 	if (flags & AMEND_MSG) {
>     - 		const char *exclude_gpgsig[] = { "gpgsig", "gpgsig-sha256", NULL };
>     - 		const char *out_enc = get_commit_output_encoding();
>     -@@ sequencer.c: static int try_to_commit(struct repository *r,
>       		commit_list_insert(current_head, &parents);
>       	}
>
> 3:  19352fdc22 = 3:  fa3d4856b4 sequencer: rename amend_author to author_to_free
> 4:  5e971abb74 ! 4:  96657233d4 rebase -i: support --ignore-date
>     @@ sequencer.c: static const char *author_date_from_env_array(const struct argv_arr
>      +		error(_("malformed ident line '%s'"), author);
>      +		return NULL;
>      +	}
>     ++
>      +	len = ident.mail_end - ident.name_begin + 1;
>     -+
>      +	strbuf_addf(&new_author, "%.*s ", len, ident.name_begin);
>      +	datestamp(&new_author);
>      +	return strbuf_detach(&new_author, NULL);
>     @@ sequencer.c: static int try_to_commit(struct repository *r,
>      +		free(author_to_free);
>      +		author_to_free = (char *)author;
>      +	}
>     ++
>       	if (commit_tree_extended(msg->buf, msg->len, &tree, parents,
>       				 oid, author, opts->gpg_sign, extra)) {
>       		res = error(_("failed to write commit object"));
> 5:  43a097c583 = 5:  828155baba rebase: add --reset-author-date
>
> --
> 2.26.2
>
Phillip Wood May 23, 2020, 8:55 a.m. UTC | #3
On 22/05/2020 16:54, Elijah Newren wrote:
> On Thu, May 21, 2020 at 3:15 AM Phillip Wood <phillip.wood123@gmail.com> wrote:
>>
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> Thanks for the feedback on v2, I've updated the documentation as
>> suggested by Elijah and made the style fixes suggested by Alban but
>> I've not changed read_author_script() for the reasons explained in
>> https://lore.kernel.org/git/c6a2711a-96c1-d7ac-9678-20c581408ef5@gmail.com
> 
> All my questions were answered earlier; this round addressed my
> remaining feedback and I see no new issues.
> 
> Reviewed-by: Elijah Newren <newren@gmail.com>

Thanks Elijah