[PATCH] Implement --recover for git-*-fetch
authorDaniel Barkalow <barkalow@iabervon.org>
Tue, 27 Sep 2005 01:38:08 +0000 (21:38 -0400)
committerJunio C Hamano <junkio@cox.net>
Tue, 27 Sep 2005 07:16:40 +0000 (00:16 -0700)
With the --recover option, we verify that we have absolutely
everything reachable from the target, not assuming that things
reachable from refs will be complete.

Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
fetch.c
fetch.h
http-fetch.c
local-fetch.c
ssh-fetch.c

diff --git a/fetch.c b/fetch.c
index 1a33ae9..3e073d3 100644 (file)
--- a/fetch.c
+++ b/fetch.c
@@ -15,6 +15,7 @@ int get_tree = 0;
 int get_history = 0;
 int get_all = 0;
 int get_verbosely = 0;
+int get_recover = 0;
 static unsigned char current_commit_sha1[20];
 
 void pull_say(const char *fmt, const char *hex) 
@@ -214,7 +215,9 @@ int pull(char *target)
                        return -1;
        }
 
-       for_each_ref(mark_complete);
+       if (!get_recover) {
+               for_each_ref(mark_complete);
+       }
 
        if (interpret_target(target, sha1))
                return error("Could not interpret %s as something to pull",
diff --git a/fetch.h b/fetch.h
index e7710e8..9837a3d 100644 (file)
--- a/fetch.h
+++ b/fetch.h
@@ -40,6 +40,9 @@ extern int get_all;
 /* Set to be verbose */
 extern int get_verbosely;
 
+/* Set to check on all reachable objects. */
+extern int get_recover;
+
 /* Report what we got under get_verbosely */
 extern void pull_say(const char *, const char *);
 
index 57141a8..e6181b0 100644 (file)
@@ -491,6 +491,8 @@ int main(int argc, char **argv)
                } else if (argv[arg][1] == 'w') {
                        write_ref = argv[arg + 1];
                        arg++;
+               } else if (!strcmp(argv[arg], "--recover")) {
+                       get_recover = 1;
                }
                arg++;
        }
index 0dbed89..a57386c 100644 (file)
@@ -231,6 +231,8 @@ int main(int argc, char **argv)
                        get_verbosely = 1;
                else if (argv[arg][1] == 'w')
                        write_ref = argv[++arg];
+               else if (!strcmp(argv[arg], "--recover"))
+                       get_recover = 1;
                else
                        usage(local_pull_usage);
                arg++;
index 683a1e4..05d3e49 100644 (file)
@@ -119,6 +119,8 @@ int main(int argc, char **argv)
                } else if (argv[arg][1] == 'w') {
                        write_ref = argv[arg + 1];
                        arg++;
+               } else if (!strcmp(argv[arg], "--recover")) {
+                       get_recover = 1;
                }
                arg++;
        }