You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.6 KiB
81 lines
2.6 KiB
#ifndef SHALLOW_H |
|
#define SHALLOW_H |
|
|
|
#include "lockfile.h" |
|
#include "object.h" |
|
#include "repository.h" |
|
#include "strbuf.h" |
|
|
|
void set_alternate_shallow_file(struct repository *r, const char *path, int override); |
|
int register_shallow(struct repository *r, const struct object_id *oid); |
|
int unregister_shallow(const struct object_id *oid); |
|
int is_repository_shallow(struct repository *r); |
|
|
|
/* |
|
* Lock for updating the $GIT_DIR/shallow file. |
|
* |
|
* Use `commit_shallow_file()` to commit an update, or |
|
* `rollback_shallow_file()` to roll it back. In either case, any |
|
* in-memory cached information about which commits are shallow will be |
|
* appropriately invalidated so that future operations reflect the new |
|
* state. |
|
*/ |
|
struct shallow_lock { |
|
struct lock_file lock; |
|
}; |
|
#define SHALLOW_LOCK_INIT { LOCK_INIT } |
|
|
|
/* commit $GIT_DIR/shallow and reset stat-validity checks */ |
|
int commit_shallow_file(struct repository *r, struct shallow_lock *lk); |
|
/* rollback $GIT_DIR/shallow and reset stat-validity checks */ |
|
void rollback_shallow_file(struct repository *r, struct shallow_lock *lk); |
|
|
|
struct commit_list *get_shallow_commits(struct object_array *heads, |
|
int depth, int shallow_flag, int not_shallow_flag); |
|
struct commit_list *get_shallow_commits_by_rev_list( |
|
int ac, const char **av, int shallow_flag, int not_shallow_flag); |
|
int write_shallow_commits(struct strbuf *out, int use_pack_protocol, |
|
const struct oid_array *extra); |
|
|
|
void setup_alternate_shallow(struct shallow_lock *shallow_lock, |
|
const char **alternate_shallow_file, |
|
const struct oid_array *extra); |
|
|
|
const char *setup_temporary_shallow(const struct oid_array *extra); |
|
|
|
void advertise_shallow_grafts(int); |
|
|
|
#define PRUNE_SHOW_ONLY 1 |
|
#define PRUNE_QUICK 2 |
|
void prune_shallow(unsigned options); |
|
|
|
/* |
|
* Initialize with prepare_shallow_info() or zero-initialize (equivalent to |
|
* prepare_shallow_info with a NULL oid_array). |
|
*/ |
|
struct shallow_info { |
|
struct oid_array *shallow; |
|
int *ours, nr_ours; |
|
int *theirs, nr_theirs; |
|
struct oid_array *ref; |
|
|
|
/* for receive-pack */ |
|
uint32_t **used_shallow; |
|
int *need_reachability_test; |
|
int *reachable; |
|
int *shallow_ref; |
|
struct commit **commits; |
|
int nr_commits; |
|
}; |
|
|
|
void prepare_shallow_info(struct shallow_info *, struct oid_array *); |
|
void clear_shallow_info(struct shallow_info *); |
|
void remove_nonexistent_theirs_shallow(struct shallow_info *); |
|
void assign_shallow_commits_to_refs(struct shallow_info *info, |
|
uint32_t **used, |
|
int *ref_status); |
|
int delayed_reachability_test(struct shallow_info *si, int c); |
|
|
|
extern struct trace_key trace_shallow; |
|
|
|
#endif /* SHALLOW_H */
|
|
|