git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] submodule--helper.c: remove duplicate code

From
me@vtolstov.org <me@vtolstov.org>
Date
Mar 8, 2017, 17:44 UTC
Message-ID
<20170308174449.24266-1-me@vtolstov.org>
From: Valery Tolstov <me@vtolstov.org>

Remove code fragment from module_clone that duplicates functionality of connect_work_tree_and_git_dir in dir.c

Signed-off-by: Valery Tolstov <me@vtolstov.org>
---
Show 6 quoted lines
>> I think we can reuse code from module_clone that writes .git link.
>> Possibly this code fragment needs to be factored out from module_clone
>
> That fragment already exists, see dir.h:
> connect_work_tree_and_git_dir(work_tree, git_dir);
> Maybe another good microproject is to use that in module_clone.

By suggestion of Stefan Beller I would like to make this micro improvement as my microproject for GSoc.

 builtin/submodule--helper.c | 22 +++-------------------
 1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 899dc334e..cda8a3bc1 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -579,7 +579,6 @@ static int module_clone(int argc, const char **argv, const char *prefix)
 	const char *name = NULL, *url = NULL, *depth = NULL;
 	int quiet = 0;
 	int progress = 0;
-	FILE *submodule_dot_git;
 	char *p, *path = NULL, *sm_gitdir;
 	struct strbuf rel_path = STRBUF_INIT;
 	struct strbuf sb = STRBUF_INIT;
@@ -653,27 +652,12 @@ static int module_clone(int argc, const char **argv, const char *prefix)
 		strbuf_reset(&sb);
 	}
 
-	/* Write a .git file in the submodule to redirect to the superproject. */
-	strbuf_addf(&sb, "%s/.git", path);
-	if (safe_create_leading_directories_const(sb.buf) < 0)
-		die(_("could not create leading directories of '%s'"), sb.buf);
-	submodule_dot_git = fopen(sb.buf, "w");
-	if (!submodule_dot_git)
-		die_errno(_("cannot open file '%s'"), sb.buf);
-
-	fprintf_or_die(submodule_dot_git, "gitdir: %s\n",
-		       relative_path(sm_gitdir, path, &rel_path));
-	if (fclose(submodule_dot_git))
-		die(_("could not close file %s"), sb.buf);
-	strbuf_reset(&sb);
-	strbuf_reset(&rel_path);
-
-	/* Redirect the worktree of the submodule in the superproject's config */
 	p = git_pathdup_submodule(path, "config");
 	if (!p)
 		die(_("could not get submodule directory for '%s'"), path);
-	git_config_set_in_file(p, "core.worktree",
-			       relative_path(path, sm_gitdir, &rel_path));
+
+	/* Connect module worktree and git dir */
+	connect_work_tree_and_git_dir(path, sm_gitdir);
 
 	/* setup alternateLocation and alternateErrorStrategy in the cloned submodule if needed */
 	git_config_get_string("submodule.alternateLocation", &sm_alternate);
-- 
2.12.0.190.g250ed7eaf
Next: Stefan Beller
Message 1 of 24 in “submodule--helper.c: remove duplicate code”
  1. submodule--helper.c: remove duplicate codeme@vtolstov.org, Mar 8, 2017
  2. Stefan BellerMar 8, 2017
  3. Valery TolstovMar 8, 2017
  4. Stefan BellerMar 8, 2017
  5. 0/2 Remove duplicate code from module_clone()Valery Tolstov, Mar 9, 2017
  6. 1/2 connect_work_tree_and_git_dir: safely create leading directoriesValery Tolstov, Mar 9, 2017
  7. 2/2 submodule--helper.c: remove duplicate codeValery Tolstov, Mar 9, 2017
  8. Brandon WilliamsMar 9, 2017
  9. 0/2 Remove duplicate code from module_clone()Valery Tolstov, Mar 9, 2017
  10. 2/2 submodule--helper.c: remove duplicate codeValery Tolstov, Mar 9, 2017
  11. Brandon WilliamsMar 9, 2017
  12. Junio C HamanoMar 10, 2017
  13. Stefan BellerMar 10, 2017
  14. Junio C HamanoMar 10, 2017
  15. Stefan BellerMar 10, 2017
  16. Valery TolstovMar 9, 2017
  17. 1/2 connect_work_tree_and_git_dir: safely create leading directoriesValery Tolstov, Mar 9, 2017
  18. Brandon WilliamsMar 9, 2017
  19. Valery TolstovMar 9, 2017
  20. Brandon WilliamsMar 9, 2017
  21. Valery TolstovMar 8, 2017
  22. Stefan BellerMar 8, 2017
  23. Junio C HamanoMar 8, 2017
  24. Stefan BellerMar 8, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.