Re: Add support for `git rebase -no-edit`

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Chaitanya,

On Thu, Jan 11, 2024 at 10:55:47PM +0530, Chaitanya Tata wrote:
> Hi,
>
> I have a feature request to add `--no-edit` option to `git rebase`
> like we do for `git commit`.
> The workflow I typically follow is:
>
> * `git commit -a --fixup=XXX`
> * `git rebase  -i HEAD~15 --autosquash`
>
> But it requires closing the editor without any changes. I can
> workaround this using the `GIT_EDITOR` option, see [1]. But it would
> be good to have this built-in.

The easiest workaround would be setting GIT_EDITOR=true, which matches
the recommendation in [1].

Short of that, you can't do a non-interactive rebase, since we rely on
the todo list generated by interactive rebases in order for
`--autosquash` to work.

Presumably plumbing in a new `--[no-]edit` option would be fairly
straightforward, and once that is done, the change boils down to just:

index 3cc88d8a80..5235a003f2 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -6169,7 +6169,7 @@ int complete_action(struct repository *r, struct replay_opts *opts, unsigned fla
 	struct todo_list new_todo = TODO_LIST_INIT;
 	struct strbuf *buf = &todo_list->buf, buf2 = STRBUF_INIT;
 	struct object_id oid = onto->object.oid;
-	int res;
+	int res = 0;

 	repo_find_unique_abbrev_r(r, shortonto, &oid,
 				  DEFAULT_ABBREV);
@@ -6197,8 +6197,9 @@ int complete_action(struct repository *r, struct replay_opts *opts, unsigned fla
 		return error(_("nothing to do"));
 	}

-	res = edit_todo_list(r, todo_list, &new_todo, shortrevisions,
-			     shortonto, flags);
+	if (!opts->edit)
+		res = edit_todo_list(r, todo_list, &new_todo, shortrevisions,
+				     shortonto, flags);
 	if (res == -1)
 		return -1;
 	else if (res == -2) {

> [1] - https://stackoverflow.com/a/45783848

Thanks,
Taylor




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux