git/patch-ids.h

48 строки
1.2 KiB
C

#ifndef PATCH_IDS_H
#define PATCH_IDS_H
#include "diff.h"
#include "hashmap.h"
struct commit;
struct object_id;
struct repository;
struct patch_id {
struct hashmap_entry ent;
struct object_id patch_id;
struct commit *commit;
};
struct patch_ids {
struct hashmap patches;
struct diff_options diffopts;
};
int commit_patch_id(struct commit *commit, struct diff_options *options,
struct object_id *oid, int, int);
int init_patch_ids(struct repository *, struct patch_ids *);
int free_patch_ids(struct patch_ids *);
/* Add a patch_id for a single commit to the set. */
struct patch_id *add_commit_patch_id(struct commit *, struct patch_ids *);
/* Returns true if the patch-id of "commit" is present in the set. */
int has_commit_patch_id(struct commit *commit, struct patch_ids *);
/*
* Iterate over all commits in the set whose patch id matches that of
* "commit", like:
*
* struct patch_id *cur;
* for (cur = patch_id_iter_first(commit, ids);
* cur;
* cur = patch_id_iter_next(cur, ids) {
* ... look at cur->commit
* }
*/
struct patch_id *patch_id_iter_first(struct commit *commit, struct patch_ids *);
struct patch_id *patch_id_iter_next(struct patch_id *cur, struct patch_ids *);
#endif /* PATCH_IDS_H */