git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [PATCH] Use reverse_commit_list helper function for in-place list reversal
@ 2022-03-15 19:41 Jayati Shrivastava via GitGitGadget
  2022-03-15 22:53 ` Junio C Hamano
  2022-03-16 10:42 ` [PATCH v2] sequencer.c: use reverse_commit_list() helper Jayati Shrivastava via GitGitGadget
  0 siblings, 2 replies; 5+ messages in thread
From: Jayati Shrivastava via GitGitGadget @ 2022-03-15 19:41 UTC (permalink / raw)
  To: git
  Cc: Johannes Schindelin, Hariom verma, Christian Couder,
	Jayati Shrivastava, JAYATI SHRIVASTAVA

From: JAYATI SHRIVASTAVA <gaurijove@gmail.com>

Here, a reverse copy of a list is being created by iterating
over the list after which the original list is discarded.
Instead of creating a new allocation, we can reverse the
original list in-place using the reverse_commit_list helper
function.

Signed-off-by: Jayati Shrivastava <gaurijove@gmail.com>
---
    Use reverse_commit_list helper function for in-place list reversal
    
    This patch addresses https://github.com/gitgitgadget/git/issues/1156 . I
    have left builtin/merge.c unmodified since in its case, the original
    list is needed separately from the reverse copy.
    
    (Please excuse if you are receiving this patch again. I had previously
    sent it using git send-email but for some reason the patches are not
    getting delivered to the mailing list despite correctly passing the
    --to/--cc/--in-reply-to options.)

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1177%2Fvictorphoenix3%2Freverse-list-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1177/victorphoenix3/reverse-list-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1177

 sequencer.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/sequencer.c b/sequencer.c
index 35006c0cea6..bccbb9e3522 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -3749,7 +3749,7 @@ static int do_merge(struct repository *r,
 	int run_commit_flags = 0;
 	struct strbuf ref_name = STRBUF_INIT;
 	struct commit *head_commit, *merge_commit, *i;
-	struct commit_list *bases, *j, *reversed = NULL;
+	struct commit_list *bases, *j;
 	struct commit_list *to_merge = NULL, **tail = &to_merge;
 	const char *strategy = !opts->xopts_nr &&
 		(!opts->strategy ||
@@ -3984,9 +3984,7 @@ static int do_merge(struct repository *r,
 		      git_path_merge_head(r), 0);
 	write_message("no-ff", 5, git_path_merge_mode(r), 0);
 
-	for (j = bases; j; j = j->next)
-		commit_list_insert(j->item, &reversed);
-	free_commit_list(bases);
+	bases = reverse_commit_list(bases);
 
 	repo_read_index(r);
 	init_merge_options(&o, r);
@@ -4002,10 +4000,10 @@ static int do_merge(struct repository *r,
 		 * update the index and working copy immediately.
 		 */
 		ret = merge_ort_recursive(&o,
-					  head_commit, merge_commit, reversed,
+					  head_commit, merge_commit, bases,
 					  &i);
 	} else {
-		ret = merge_recursive(&o, head_commit, merge_commit, reversed,
+		ret = merge_recursive(&o, head_commit, merge_commit, bases,
 				      &i);
 	}
 	if (ret <= 0)

base-commit: b896f729e240d250cf56899e6a0073f6aa469f5d
-- 
gitgitgadget

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-03-16 19:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-15 19:41 [PATCH] Use reverse_commit_list helper function for in-place list reversal Jayati Shrivastava via GitGitGadget
2022-03-15 22:53 ` Junio C Hamano
2022-03-16 10:42 ` [PATCH v2] sequencer.c: use reverse_commit_list() helper Jayati Shrivastava via GitGitGadget
2022-03-16 11:20   ` [PATCH v3] " Jayati Shrivastava via GitGitGadget
2022-03-16 19:44     ` Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).