summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-07-18 19:20:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-07-18 19:20:28 (GMT)
commit7e25437d35a70791b345872af202eabfb3e1a8bc (patch)
tree1d8dcdc9814e310d8be656b11d76885c37191185 /builtin
parent00624d608cc69bd62801c93e74d1ea7a7ddd6598 (diff)
parent984cd77ddbf0eea7371a18ad7124120473b6bb2d (diff)
downloadgit-7e25437d35a70791b345872af202eabfb3e1a8bc.zip
git-7e25437d35a70791b345872af202eabfb3e1a8bc.tar.gz
git-7e25437d35a70791b345872af202eabfb3e1a8bc.tar.bz2
Merge branch 'sb/submodule-core-worktree'
"git submodule" did not correctly adjust core.worktree setting that indicates whether/where a submodule repository has its associated working tree across various state transitions, which has been corrected. * sb/submodule-core-worktree: submodule deinit: unset core.worktree submodule: ensure core.worktree is set after update submodule: unset core.worktree if no working tree is present
Diffstat (limited to 'builtin')
-rw-r--r--builtin/submodule--helper.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 20ae919..216e3da 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -1124,6 +1124,8 @@ static void deinit_submodule(const char *path, const char *prefix,
if (!(flags & OPT_QUIET))
printf(format, displaypath);
+ submodule_unset_core_worktree(sub);
+
strbuf_release(&sb_rm);
}
@@ -2004,6 +2006,29 @@ static int check_name(int argc, const char **argv, const char *prefix)
return 0;
}
+static int connect_gitdir_workingtree(int argc, const char **argv, const char *prefix)
+{
+ struct strbuf sb = STRBUF_INIT;
+ const char *name, *path;
+ char *sm_gitdir;
+
+ if (argc != 3)
+ BUG("submodule--helper connect-gitdir-workingtree <name> <path>");
+
+ name = argv[1];
+ path = argv[2];
+
+ strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name);
+ sm_gitdir = absolute_pathdup(sb.buf);
+
+ connect_work_tree_and_git_dir(path, sm_gitdir, 0);
+
+ strbuf_release(&sb);
+ free(sm_gitdir);
+
+ return 0;
+}
+
#define SUPPORT_SUPER_PREFIX (1<<0)
struct cmd_struct {
@@ -2017,6 +2042,7 @@ static struct cmd_struct commands[] = {
{"name", module_name, 0},
{"clone", module_clone, 0},
{"update-clone", update_clone, 0},
+ {"connect-gitdir-workingtree", connect_gitdir_workingtree, 0},
{"relative-path", resolve_relative_path, 0},
{"resolve-relative-url", resolve_relative_url, 0},
{"resolve-relative-url-test", resolve_relative_url_test, 0},