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

[PATCH 3/3] {fetch,upload}-pack: allow --depth=0 to deepen into full repo again

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Aug 19, 2010, 10:40 UTC
Message-ID
<1282214437-16384-3-git-send-email-pclouds@gmail.com>
In-Reply-To
<201008180854.18474.ComputerDruid@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 The funny thing is, even with --depth=0, I still have two commit grafts
 in $GIT_DIR/shallow, which are grafts of tags. I think there is a bug somewhere..
 builtin/fetch-pack.c |    2 +-
 shallow.c            |    2 +-
 upload-pack.c        |    8 ++++----
 3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index 45d1824..7d7af2e 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -845,7 +845,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
 			}
 			if (!prefixcmp(arg, "--depth=")) {
 				args.depth = strtol(arg + 8, NULL, 0);
-				if (args.depth <= 0)
+				if (args.depth < 0)
 					die("Invalid depth %d", args.depth);
 				args.shallow = 1;
 				continue;
diff --git a/shallow.c b/shallow.c
index 4d90eda..eab97c6 100644
--- a/shallow.c
+++ b/shallow.c
@@ -85,7 +85,7 @@ struct commit_list *get_shallow_commits(struct object_array *heads, int depth,
 					continue;
 				*pointer = cur_depth;
 			}
-			if (cur_depth < depth) {
+			if (!depth || cur_depth < depth) {
 				if (p->next)
 					add_object_array(&p->item->object,
 							NULL, &stack);
diff --git a/upload-pack.c b/upload-pack.c
index fc79dde..7b004b9 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -484,7 +484,7 @@ static void receive_needs(void)
 {
 	struct object_array shallows = {0, 0, NULL};
 	static char line[1000];
-	int len, depth = 0;
+	int len, depth = -1;
 
 	shallow_nr = 0;
 	if (debug_fd)
@@ -514,7 +514,7 @@ static void receive_needs(void)
 		if (!prefixcmp(line, "deepen ")) {
 			char *end;
 			depth = strtol(line + 7, &end, 0);
-			if (end == line + 7 || depth <= 0)
+			if (end == line + 7 || depth < 0)
 				die("Invalid deepen: %s", line);
 			continue;
 		}
@@ -562,9 +562,9 @@ static void receive_needs(void)
 	if (!use_sideband && daemon_mode)
 		no_progress = 1;
 
-	if (depth == 0 && shallows.nr == 0)
+	if (depth == -1 && shallows.nr == 0)
 		return;
-	if (depth > 0) {
+	if (depth >= 0) {
 		struct commit_list *result, *backup;
 		int i;
 		backup = result = get_shallow_commits(&want_obj, depth,
-- 
1.7.1.rc1.69.g24c2f7
Previous: Nguyễn Thái Ngọc DuyNext: Jakub Narebski
Message 9 of 16 in “fully deepening a shallow clone”
  1. Joey HessAug 17, 2010
  2. Nguyen Thai Ngoc DuyAug 18, 2010
  3. Daniel JohnsonAug 18, 2010
  4. 1/3 clone: do not accept --depth on local clonesNguyễn Thái Ngọc Duy, Aug 19, 2010
  5. Daniel JohnsonAug 19, 2010
  6. Nguyen Thai Ngoc DuyAug 19, 2010
  7. Mikael MagnussonAug 19, 2010
  8. 2/3 fetch-pack: use args.shallow to detect shallow clone instead of args.depthNguyễn Thái Ngọc Duy, Aug 19, 2010
  9. 3/3 {fetch,upload}-pack: allow --depth=0 to deepen into full repo againNguyễn Thái Ngọc Duy, Aug 19, 2010
  10. Jakub NarebskiAug 19, 2010
  11. Nguyen Thai Ngoc DuyAug 19, 2010
  12. Jakub NarebskiAug 20, 2010
  13. Ramkumar RamachandraAug 20, 2010
  14. grep -A/-B/-Cinfinity to get full contextJonathan Nieder, Aug 20, 2010
  15. Ramkumar RamachandraAug 20, 2010
  16. Joey HessAug 18, 2010

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.