aboutsummaryrefslogtreecommitdiffstats
path: root/path.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-07-18 12:20:27 -0700
committerJunio C Hamano <gitster@pobox.com>2018-07-18 12:20:28 -0700
commit00624d608cc69bd62801c93e74d1ea7a7ddd6598 (patch)
treeaa731e8d54303307bff336dceb8216134f25e379 /path.h
parent473b8bb3aa01fb214c9905456f1f33c9c7def6b3 (diff)
parentb9dbddf6dace2094061d5093743f29c100cfd534 (diff)
downloadgit-00624d608cc69bd62801c93e74d1ea7a7ddd6598.tar.gz
Merge branch 'sb/object-store-grafts'
The conversion to pass "the_repository" and then "a_repository" throughout the object access API continues. * sb/object-store-grafts: commit: allow lookup_commit_graft to handle arbitrary repositories commit: allow prepare_commit_graft to handle arbitrary repositories shallow: migrate shallow information into the object parser path.c: migrate global git_path_* to take a repository argument cache: convert get_graft_file to handle arbitrary repositories commit: convert read_graft_file to handle arbitrary repositories commit: convert register_commit_graft to handle arbitrary repositories commit: convert commit_graft_pos() to handle arbitrary repositories shallow: add repository argument to is_repository_shallow shallow: add repository argument to check_shallow_file_for_update shallow: add repository argument to register_shallow shallow: add repository argument to set_alternate_shallow_file commit: add repository argument to lookup_commit_graft commit: add repository argument to prepare_commit_graft commit: add repository argument to read_graft_file commit: add repository argument to register_commit_graft commit: add repository argument to commit_graft_pos object: move grafts to object parser object-store: move object access functions to object-store.h
Diffstat (limited to 'path.h')
-rw-r--r--path.h40
1 files changed, 31 insertions, 9 deletions
diff --git a/path.h b/path.h
index 1ccd0373c9..5263f40519 100644
--- a/path.h
+++ b/path.h
@@ -160,14 +160,36 @@ extern void report_linked_checkout_garbage(void);
return ret; \
}
-const char *git_path_cherry_pick_head(void);
-const char *git_path_revert_head(void);
-const char *git_path_squash_msg(void);
-const char *git_path_merge_msg(void);
-const char *git_path_merge_rr(void);
-const char *git_path_merge_mode(void);
-const char *git_path_merge_head(void);
-const char *git_path_fetch_head(void);
-const char *git_path_shallow(void);
+#define REPO_GIT_PATH_FUNC(var, filename) \
+ const char *git_path_##var(struct repository *r) \
+ { \
+ if (!r->cached_paths.var) \
+ r->cached_paths.var = git_pathdup(filename); \
+ return r->cached_paths.var; \
+ }
+
+struct path_cache {
+ const char *cherry_pick_head;
+ const char *revert_head;
+ const char *squash_msg;
+ const char *merge_msg;
+ const char *merge_rr;
+ const char *merge_mode;
+ const char *merge_head;
+ const char *fetch_head;
+ const char *shallow;
+};
+
+#define PATH_CACHE_INIT { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
+
+const char *git_path_cherry_pick_head(struct repository *r);
+const char *git_path_revert_head(struct repository *r);
+const char *git_path_squash_msg(struct repository *r);
+const char *git_path_merge_msg(struct repository *r);
+const char *git_path_merge_rr(struct repository *r);
+const char *git_path_merge_mode(struct repository *r);
+const char *git_path_merge_head(struct repository *r);
+const char *git_path_fetch_head(struct repository *r);
+const char *git_path_shallow(struct repository *r);
#endif /* PATH_H */