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

[PATCH 4/6] Teach clone to set remote.default.

From
marcnarc@xiplink.com <marcnarc@xiplink.com>
Date
Jul 11, 2012, 15:33 UTC
Message-ID
<1342020841-24368-5-git-send-email-marcnarc@xiplink.com>
In-Reply-To
<1342020841-24368-1-git-send-email-marcnarc@xiplink.com>
From: Marc Branchaud <marcnarc@xiplink.com>

This makes git-clone consistent with the remote.default support implemented in git-remote. Specifically, since "git remote add" sets remote.default if it's adding the first remote to the repository, when clone itself adds the first remote it should do the same.

This also makes "git clone -o" work without a special case in the code (so "git clone /some/repo" and "git clone -o origin /some/repo" produce the same result).

Signed-off-by: Marc Branchaud <marcnarc@xiplink.com>
---
 builtin/clone.c          |  2 ++
 t/t5601-clone.sh         | 10 ++++++++++
 t/t5702-clone-options.sh |  7 +++++--
 3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index a4d8d25..b198456 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -770,6 +770,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 	git_config_set(key.buf, repo);
 	strbuf_reset(&key);
 
+	git_config_set("remote.default", option_origin);
+
 	if (option_reference.nr)
 		setup_reference();
 
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 67869b4..046610d 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -57,6 +57,16 @@ test_expect_success 'clone checks out files' '
 
 '
 
+test_expect_success 'clone sets remote.default' '
+
+	rm -fr dst &&
+	git clone src dst &&
+	(
+		cd dst &&
+		test "$(git config --get remote.default)" = origin
+	)
+'
+
 test_expect_success 'clone respects GIT_WORK_TREE' '
 
 	GIT_WORK_TREE=worktree git clone src bare &&
diff --git a/t/t5702-clone-options.sh b/t/t5702-clone-options.sh
index 02cb024..9e573dd 100755
--- a/t/t5702-clone-options.sh
+++ b/t/t5702-clone-options.sh
@@ -15,8 +15,11 @@ test_expect_success 'setup' '
 test_expect_success 'clone -o' '
 
 	git clone -o foo parent clone-o &&
-	(cd clone-o && git rev-parse --verify refs/remotes/foo/master)
-
+	(
+		cd clone-o &&
+		git rev-parse --verify refs/remotes/foo/master &&
+		test "$(git config --get remote.default)" = foo
+	)
 '
 
 test_expect_success 'redirected clone' '
-- 
1.7.11.1
Previous: Marc BranchaudNext: marcnarc@xiplink.com
Message 14 of 17 in “Default remote”
  1. 0/6 Default remotemarcnarc@xiplink.com, Jul 11, 2012
  2. 1/6 Rename remote.c's default_remote_name static variables.marcnarc@xiplink.com, Jul 11, 2012
  3. 2/6 Teach remote.c about the remote.default configuration setting.marcnarc@xiplink.com, Jul 11, 2012
  4. Junio C HamanoJul 11, 2012
  5. Marc BranchaudJul 11, 2012
  6. Junio C HamanoJul 11, 2012
  7. Marc BranchaudJul 13, 2012
  8. Junio C HamanoJul 13, 2012
  9. 3/6 Teach "git remote" about remote.default.marcnarc@xiplink.com, Jul 11, 2012
  10. Junio C HamanoJul 11, 2012
  11. Marc BranchaudJul 11, 2012
  12. Junio C HamanoJul 11, 2012
  13. Marc BranchaudJul 13, 2012
  14. 4/6 Teach clone to set remote.default.marcnarc@xiplink.com, Jul 11, 2012
  15. 5/6 Test that plain "git fetch" uses remote.default when on a detached HEAD.marcnarc@xiplink.com, Jul 11, 2012
  16. 6/6 Teach get_default_remote to respect remote.default.marcnarc@xiplink.com, Jul 11, 2012
  17. Junio C HamanoJul 11, 2012

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.