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

[PATCH] http-push.c: remove duplicated code

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 7, 2008, 18:39 UTC
Message-ID
<7vhcc5nl7r.fsf@gitster.siamese.dyndns.org>

An earlier commit aa1dbc9 (Update http-push functionality, 2006-03-07) borrowed some code from rev-list.c.

This copy and paste made sense back then, because mark_edges_uninteresting(), and its helper mark_edge_parents_uninteresting(), accessed a file scope static variable "revs" in rev-list.c, and http-push.c did not have nor care about such a variable.

But these days they are already properly libified and live in list-objects.c and they take "revs" as as an argument. Make use of them and lose 20 or so lines.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * Only compile tested.  I do not use http-push myself nor have a readily
   usable test environment for it, but the patch looks obvious enough.
   I cc'ed Nick, the original author, even though we haven't seen him here
   for quite some time...
 http-push.c |   29 +++--------------------------
 1 files changed, 3 insertions(+), 26 deletions(-)
diff --git a/http-push.c b/http-push.c
index c93e781..665712a 100644
--- a/http-push.c
+++ b/http-push.c
@@ -9,6 +9,7 @@
 #include "revision.h"
 #include "exec_cmd.h"
 #include "remote.h"
+#include "list-objects.h"
 
 #include <expat.h>
 
@@ -1878,31 +1879,6 @@ static int ref_newer(const unsigned char *new_sha1,
 	return found;
 }
 
-static void mark_edge_parents_uninteresting(struct commit *commit)
-{
-	struct commit_list *parents;
-
-	for (parents = commit->parents; parents; parents = parents->next) {
-		struct commit *parent = parents->item;
-		if (!(parent->object.flags & UNINTERESTING))
-			continue;
-		mark_tree_uninteresting(parent->tree);
-	}
-}
-
-static void mark_edges_uninteresting(struct commit_list *list)
-{
-	for ( ; list; list = list->next) {
-		struct commit *commit = list->item;
-
-		if (commit->object.flags & UNINTERESTING) {
-			mark_tree_uninteresting(commit->tree);
-			continue;
-		}
-		mark_edge_parents_uninteresting(commit);
-	}
-}
-
 static void add_remote_info_ref(struct remote_ls_ctx *ls)
 {
 	struct strbuf *buf = (struct strbuf *)ls->userData;
@@ -2408,6 +2384,7 @@ int main(int argc, char **argv)
 		}
 		init_revisions(&revs, setup_git_directory());
 		setup_revisions(commit_argc, commit_argv, &revs, NULL);
+		revs.edge_hint = 0; /* just in case */
 		free(new_sha1_hex);
 		if (old_sha1_hex) {
 			free(old_sha1_hex);
@@ -2418,7 +2395,7 @@ int main(int argc, char **argv)
 		pushing = 0;
 		if (prepare_revision_walk(&revs))
 			die("revision walk setup failed");
-		mark_edges_uninteresting(revs.commits);
+		mark_edges_uninteresting(revs.commits, &revs, NULL);
 		objects_to_send = get_delta(&revs, ref_lock);
 		finish_all_active_slots();
 
Message 1 of 1 in “http-push.c: remove duplicated code”
  1. http-push.c: remove duplicated codeJunio C Hamano, Jun 7, 2008

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.