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>
This commit is contained in:
21
patch-ids.h
Normal file
21
patch-ids.h
Normal file
@ -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 */
|
Reference in New Issue
Block a user