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

[PATCH 11/20] fetch-pack: use a separate flag for fetch in deepening mode

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Dec 29, 2015, 12:10 UTC
Message-ID
<1451391043-28093-12-git-send-email-pclouds@gmail.com>
In-Reply-To
<1451391043-28093-1-git-send-email-pclouds@gmail.com>

The shallow repo could be deepened or shortened when then user gives --depth. But in future that won't be the only way to deepen/shorten a repo. Stop relying on args->depth in this mode. Future deepening methods can simply set this flag on instead of updating all these if expressions.

The new name "deepen" was chosen after the command to define shallow boundary in pack protocol. New commands also follow this tradition.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 fetch-pack.c | 14 ++++++++------
 fetch-pack.h |  1 +
 2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/fetch-pack.c b/fetch-pack.c
index 16917f9..e947514 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -197,7 +197,7 @@ enum ack_type {
 
 static void consume_shallow_list(struct fetch_pack_args *args, int fd)
 {
-	if (args->stateless_rpc && args->depth > 0) {
+	if (args->stateless_rpc && args->deepen) {
 		/* If we sent a depth we will get back "duplicate"
 		 * shallow and unshallow commands every time there
 		 * is a block of have lines exchanged.
@@ -348,7 +348,7 @@ static int find_common(struct fetch_pack_args *args,
 	packet_buf_flush(&req_buf);
 	state_len = req_buf.len;
 
-	if (args->depth > 0) {
+	if (args->deepen) {
 		char *line;
 		const char *arg;
 		unsigned char sha1[20];
@@ -557,7 +557,7 @@ static void filter_refs(struct fetch_pack_args *args,
 		}
 
 		if (!keep && args->fetch_all &&
-		    (!args->depth || !starts_with(ref->name, "refs/tags/")))
+		    (!args->deepen || !starts_with(ref->name, "refs/tags/")))
 			keep = 1;
 
 		if (keep) {
@@ -627,7 +627,7 @@ static int everything_local(struct fetch_pack_args *args,
 		}
 	}
 
-	if (!args->depth) {
+	if (!args->deepen) {
 		for_each_ref(mark_complete_oid, NULL);
 		for_each_alternate_ref(mark_alternate_complete, NULL);
 		commit_list_sort_by_date(&complete);
@@ -813,6 +813,8 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
 
 	if ((args->depth > 0 || is_repository_shallow()) && !server_supports("shallow"))
 		die("Server does not support shallow clients");
+	if (args->depth > 0)
+		args->deepen = 1;
 	if (server_supports("multi_ack_detailed")) {
 		print_verbose(args, "Server supports multi_ack_detailed");
 		multi_ack = 2;
@@ -873,7 +875,7 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
 
 	if (args->stateless_rpc)
 		packet_flush(fd[1]);
-	if (args->depth > 0)
+	if (args->deepen)
 		setup_alternate_shallow(&shallow_lock, &alternate_shallow_file,
 					NULL);
 	else if (si->nr_ours || si->nr_theirs)
@@ -940,7 +942,7 @@ static void update_shallow(struct fetch_pack_args *args,
 	int *status;
 	int i;
 
-	if (args->depth > 0 && alternate_shallow_file) {
+	if (args->deepen && alternate_shallow_file) {
 		if (*alternate_shallow_file == '\0') { /* --unshallow */
 			unlink_or_warn(git_path_shallow());
 			rollback_lock_file(&shallow_lock);
diff --git a/fetch-pack.h b/fetch-pack.h
index bb7fd76..4d0adb0 100644
--- a/fetch-pack.h
+++ b/fetch-pack.h
@@ -25,6 +25,7 @@ struct fetch_pack_args {
 	unsigned self_contained_and_connected:1;
 	unsigned cloning:1;
 	unsigned update_shallow:1;
+	unsigned deepen:1;
 };
 
 /*
-- 
2.3.0.rc1.137.g477eb31
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 12 of 24 in “More flexibility in making shallow clones”
  1. 00/20 More flexibility in making shallow clonesNguyễn Thái Ngọc Duy, Dec 29, 2015
  2. 01/20 upload-pack: move shallow deepen code out of receive_needs()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  3. 02/20 upload-pack: move "shallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  4. 03/20 upload-pack: remove unused variable "backup"Nguyễn Thái Ngọc Duy, Dec 29, 2015
  5. 04/20 upload-pack: move "unshallow" sending code out of deepen()Nguyễn Thái Ngọc Duy, Dec 29, 2015
  6. 05/20 shallow.c: implement a generic shallow boundary finder based on rev-listNguyễn Thái Ngọc Duy, Dec 29, 2015
  7. 06/20 upload-pack: glue code to use get_shallow_commits_by_rev_listNguyễn Thái Ngọc Duy, Dec 29, 2015
  8. 07/20 upload-pack: use skip_prefix() instead of starts_with() when possibleNguyễn Thái Ngọc Duy, Dec 29, 2015
  9. 08/20 upload-pack: tighten number parsing at "deepen" linesNguyễn Thái Ngọc Duy, Dec 29, 2015
  10. 09/20 upload-pack: add deepen-since to cut shallow repos based on timeNguyễn Thái Ngọc Duy, Dec 29, 2015
  11. 10/20 fetch-pack: use a common function for verbose printingNguyễn Thái Ngọc Duy, Dec 29, 2015
  12. 11/20 fetch-pack: use a separate flag for fetch in deepening modeNguyễn Thái Ngọc Duy, Dec 29, 2015
  13. 12/20 fetch: define shallow boundary with --sinceNguyễn Thái Ngọc Duy, Dec 29, 2015
  14. 13/20 clone: define shallow clone boundary based on time with --sinceNguyễn Thái Ngọc Duy, Dec 29, 2015
  15. 14/20 Add test_repo_expect_success for running tests in a new repositoryNguyễn Thái Ngọc Duy, Dec 29, 2015
  16. Duy NguyenDec 29, 2015
  17. 15/20 t5500: test for shallow depth since a specific dateNguyễn Thái Ngọc Duy, Dec 29, 2015
  18. 16/20 upload-pack: support define shallow boundary by excluding revisionsNguyễn Thái Ngọc Duy, Dec 29, 2015
  19. 17/20 fetch: define shallow boundary with --notNguyễn Thái Ngọc Duy, Dec 29, 2015
  20. 18/20 clone: define shallow clone boundary with --notNguyễn Thái Ngọc Duy, Dec 29, 2015
  21. 19/20 t5500: test for shallow depth excluding a refNguyễn Thái Ngọc Duy, Dec 29, 2015
  22. 20/20 fetch: add --deepen=<N> to extend shallow boundary by <N> commitsNguyễn Thái Ngọc Duy, Dec 29, 2015
  23. Eric SunshineJan 4, 2016
  24. Junio C HamanoDec 29, 2015

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.