summary refs log tree commit diff
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)
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 */