summaryrefslogtreecommitdiff
path: root/walker.h
diff options
context:
space:
mode:
authorDaniel Barkalow <barkalow@iabervon.org>2007-09-11 03:02:45 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-09-19 10:22:30 (GMT)
commit30ae764b1e11f10b5fca723a876a0f3de3ca11ab (patch)
treeb947d1e54e9bb87327e45395f28d4356821988c9 /walker.h
parentfbdeef948bbc085124f9634d5108940dce5fc688 (diff)
downloadgit-30ae764b1e11f10b5fca723a876a0f3de3ca11ab.zip
git-30ae764b1e11f10b5fca723a876a0f3de3ca11ab.tar.gz
git-30ae764b1e11f10b5fca723a876a0f3de3ca11ab.tar.bz2
Modularize commit-walker
This turns the extern functions to be provided by the backend into a struct of pointers, renames the functions to be more namespace-friendly, and updates http-fetch to this interface. It removes the unused include from http-push.c. It makes git-http-fetch a builtin (with the implementation a separate file, accessible directly). Signed-off-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'walker.h')
-rw-r--r--walker.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/walker.h b/walker.h
new file mode 100644
index 0000000..ea2c363
--- /dev/null
+++ b/walker.h
@@ -0,0 +1,37 @@
+#ifndef WALKER_H
+#define WALKER_H
+
+struct walker {
+ void *data;
+ int (*fetch_ref)(struct walker *, char *ref, unsigned char *sha1);
+ void (*prefetch)(struct walker *, unsigned char *sha1);
+ int (*fetch)(struct walker *, unsigned char *sha1);
+ void (*cleanup)(struct walker *);
+ int get_tree;
+ int get_history;
+ int get_all;
+ int get_verbosely;
+ int get_recover;
+
+ int corrupt_object_found;
+};
+
+/* Report what we got under get_verbosely */
+void walker_say(struct walker *walker, const char *, const char *);
+
+/* Load pull targets from stdin */
+int walker_targets_stdin(char ***target, const char ***write_ref);
+
+/* Free up loaded targets */
+void walker_targets_free(int targets, char **target, const char **write_ref);
+
+/* If write_ref is set, the ref filename to write the target value to. */
+/* If write_ref_log_details is set, additional text will appear in the ref log. */
+int walker_fetch(struct walker *impl, int targets, char **target,
+ const char **write_ref, const char *write_ref_log_details);
+
+void walker_free(struct walker *walker);
+
+struct walker *get_http_walker(const char *url);
+
+#endif /* WALKER_H */