aboutsummaryrefslogtreecommitdiff
path: root/submodule-config.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-02-18 13:53:29 -0800
committerJunio C Hamano <gitster@pobox.com>2022-02-18 13:53:29 -0800
commit5cc9522b1575f832db8fd9dc4974a8a67c59dcb8 (patch)
treee56a8e9defb059735be0e9a1d7cd97ec2842c4ee /submodule-config.h
parent7455e33cba53e015982ea6c61c49c2cfbadd7141 (diff)
parent679e3693aba0c17af60c031f7eef68f2296b8dad (diff)
downloadgit-5cc9522b1575f832db8fd9dc4974a8a67c59dcb8.tar.xz
Merge branch 'gc/branch-recurse-submodules'
"git branch" learned the "--recurse-submodules" option. * gc/branch-recurse-submodules: branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks branch: add --recurse-submodules option for branch creation builtin/branch: consolidate action-picking logic in cmd_branch() branch: add a dry_run parameter to create_branch() branch: make create_branch() always create a branch branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
Diffstat (limited to 'submodule-config.h')
-rw-r--r--submodule-config.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/submodule-config.h b/submodule-config.h
index 65875b94ea..fa229a8b97 100644
--- a/submodule-config.h
+++ b/submodule-config.h
@@ -6,6 +6,7 @@
#include "hashmap.h"
#include "submodule.h"
#include "strbuf.h"
+#include "tree-walk.h"
/**
* The submodule config cache API allows to read submodule
@@ -101,4 +102,37 @@ int check_submodule_name(const char *name);
void fetch_config_from_gitmodules(int *max_children, int *recurse_submodules);
void update_clone_config_from_gitmodules(int *max_jobs);
+/*
+ * Submodule entry that contains relevant information about a
+ * submodule in a tree.
+ */
+struct submodule_tree_entry {
+ /* The submodule's tree entry. */
+ struct name_entry *name_entry;
+ /*
+ * A struct repository corresponding to the submodule. May be
+ * NULL if the submodule has not been updated.
+ */
+ struct repository *repo;
+ /*
+ * A struct submodule containing the submodule config in the
+ * tree's .gitmodules.
+ */
+ const struct submodule *submodule;
+};
+
+struct submodule_entry_list {
+ struct submodule_tree_entry *entries;
+ int entry_nr;
+ int entry_alloc;
+};
+
+/**
+ * Given a treeish, return all submodules in the tree and its subtrees,
+ * but excluding nested submodules. Callers that require nested
+ * submodules are expected to recurse into the submodules themselves.
+ */
+void submodules_of_tree(struct repository *r,
+ const struct object_id *treeish_name,
+ struct submodule_entry_list *ret);
#endif /* SUBMODULE_CONFIG_H */