summaryrefslogtreecommitdiff
path: root/patch-ids.h
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-04-09 17:01:27 -0700
committerJunio C Hamano <junkio@cox.net>2007-04-11 20:02:03 -0700
commit5d23e133d23bc9e26d6f23a4d136901e18e6ffba (patch)
tree7eccc9a29ba6f3a4fbdd83ae28965f3b00c65ec5 /patch-ids.h
parent199c45bf2b168cb8b2231e45f35e5fd588c2fc19 (diff)
downloadgit-5d23e133d23bc9e26d6f23a4d136901e18e6ffba.tar.gz
Refactor patch-id filtering out of git-cherry and git-format-patch.
This implements the patch-id computation and recording library, patch-ids.c, and rewrites the get_patch_ids() function used in cherry and format-patch to use it, so that they do not pollute the object namespace. Earlier code threw non-objects into the in-core object database, and hoped for not getting bitten by SHA-1 collisions. While it may be practically Ok, it still was an ugly hack. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'patch-ids.h')
-rw-r--r--patch-ids.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/patch-ids.h b/patch-ids.h
new file mode 100644
index 0000000000..c8c7ca110a
--- /dev/null
+++ b/patch-ids.h
@@ -0,0 +1,21 @@
+#ifndef PATCH_IDS_H
+#define PATCH_IDS_H
+
+struct patch_id {
+ unsigned char patch_id[20];
+ char seen;
+};
+
+struct patch_ids {
+ struct diff_options diffopts;
+ int nr, alloc;
+ struct patch_id **table;
+ struct patch_id_bucket *patches;
+};
+
+int init_patch_ids(struct patch_ids *);
+int free_patch_ids(struct patch_ids *);
+struct patch_id *add_commit_patch_id(struct commit *, struct patch_ids *);
+struct patch_id *has_commit_patch_id(struct commit *, struct patch_ids *);
+
+#endif /* PATCH_IDS_H */