[PATCH] diff.c: -B argument passing fix.
[gitweb.git] / pull.c
diff --git a/pull.c b/pull.c
index 55f17c0a036e74773fb73ad669b3378af903c30a..cd77738ac62be17e7382bc3b368e686f11f7098d 100644 (file)
--- a/pull.c
+++ b/pull.c
@@ -6,13 +6,20 @@
 
 int get_tree = 0;
 int get_history = 0;
+int get_delta = 1;
 int get_all = 0;
+int get_verbosely = 0;
 static unsigned char current_commit_sha1[20];
 
 static const char commitS[] = "commit";
 static const char treeS[] = "tree";
 static const char blobS[] = "blob";
 
+void pull_say(const char *fmt, const char *hex) {
+       if (get_verbosely)
+               fprintf(stderr, fmt, hex);
+}
+
 static void report_missing(const char *what, const unsigned char *missing)
 {
        char missing_hex[41];
@@ -31,6 +38,12 @@ static int make_sure_we_have_it(const char *what, unsigned char *sha1)
        status = fetch(sha1);
        if (status && what)
                report_missing(what, sha1);
+       if (get_delta) {
+               char delta_sha1[20];
+               status = sha1_delta_base(sha1, delta_sha1);
+               if (0 < status)
+                       status = make_sure_we_have_it(what, delta_sha1);
+       }
        return status;
 }