path: root/patch-ids.h
diff options
authorJunio C Hamano <>2007-04-10 00:01:27 (GMT)
committerJunio C Hamano <>2007-04-12 03:02:03 (GMT)
commit5d23e133d23bc9e26d6f23a4d136901e18e6ffba (patch)
tree7eccc9a29ba6f3a4fbdd83ae28965f3b00c65ec5 /patch-ids.h
parent199c45bf2b168cb8b2231e45f35e5fd588c2fc19 (diff)
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 <>
Diffstat (limited to 'patch-ids.h')
1 files changed, 21 insertions, 0 deletions
diff --git a/patch-ids.h b/patch-ids.h
new file mode 100644
index 0000000..c8c7ca1
--- /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 */