struct diff_options;
struct argv_array;
struct oid_array;
+struct remote;
enum {
RECURSE_SUBMODULES_ONLY = -5,
const char *remotes_name,
struct string_list *needs_pushing);
extern int push_unpushed_submodules(struct oid_array *commits,
- const char *remotes_name,
+ const struct remote *remote,
+ const char **refspec, int refspec_nr,
+ const struct string_list *push_options,
int dry_run);
extern void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir);
extern int parallel_submodules(void);
+/*
+ * Given a submodule path (as in the index), return the repository
+ * path of that submodule in 'buf'. Return -1 on error or when the
+ * submodule is not initialized.
+ */
+int submodule_to_gitdir(struct strbuf *buf, const char *submodule);
#define SUBMODULE_MOVE_HEAD_DRY_RUN (1<<0)
#define SUBMODULE_MOVE_HEAD_FORCE (1<<1)