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

Re: git remote update -> rejected

From
Jeff King <peff@peff.net>
Date
Apr 22, 2008, 11:11 UTC
Message-ID
<20080422111113.GB11238@sigill.intra.peff.net>
In-Reply-To
<1208861703.18689.2.camel@marge.simson.net>
On Tue, Apr 22, 2008 at 12:55:03PM +0200, Mike Galbraith wrote:
Show 8 quoted lines
> >   [remote "x86"]
> >     url = ...
> >     fetch = +refs/heads/*:refs/remotes/x86/*
> > 
> > See 'git help fetch' for details.
> 
> Thanks a bunch.  I'll try it.  I notice that origin and linux-next
> already had + prefix.  Presumably that came from the home repo.

Cloning creates an origin with '+' in the fetch line, but "git remote add" doesn't seem to. Hrm, it looks like this is a regression from the recent rewrite in C.

Dscho, is this a bug, or was there a conscious decision that I missed?
If a bug, the fix is below.

-- >8 -- remote: create fetch config lines with '+'

Since git-remote always uses remote tracking branches, it should be safe to always force updates of those branches. I.e., we should generate

  fetch = +refs/heads/*:refs/remotes/$remote/*
instead of
  fetch = refs/heads/*:refs/remotes/$remote/*

This was the behavior of the perl version, which seems to have been lost in the C rewrite.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin-remote.c  |    1 +
 t/t5505-remote.sh |   10 ++++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/builtin-remote.c b/builtin-remote.c
index 9d4432b..8b63619 100644
--- a/builtin-remote.c
+++ b/builtin-remote.c
@@ -107,6 +107,7 @@ static int add(int argc, const char **argv)
 		struct path_list_item *item = track.items + i;
 
 		strbuf_reset(&buf2);
+		strbuf_addch(&buf2, '+');
 		if (mirror)
 			strbuf_addf(&buf2, "refs/%s:refs/%s",
 					item->path, item->path);
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index af2d077..48ff2d4 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -77,6 +77,16 @@ test_expect_success 'add another remote' '
 )
 '
 
+test_expect_success 'remote forces tracking branches' '
+(
+	cd test &&
+	case `git config remote.second.fetch` in
+	+*) true ;;
+	 *) false ;;
+	esac
+)
+'
+
 test_expect_success 'remove remote' '
 (
 	cd test &&
-- 
1.5.5.1.116.g0023.dirty
Previous: Mike GalbraithNext: Johannes Schindelin
Message 4 of 28 in “git remote update -> rejected”
  1. Mike GalbraithApr 22, 2008
  2. Jeff KingApr 22, 2008
  3. Mike GalbraithApr 22, 2008
  4. Jeff KingApr 22, 2008
  5. Johannes SchindelinApr 22, 2008
  6. Jeff KingApr 22, 2008
  7. Johannes SchindelinApr 22, 2008
  8. Jeff KingApr 22, 2008
  9. builtin-remote: resurrect forced updates to tracked branchesJohannes Schindelin, Apr 22, 2008
  10. Junio C HamanoApr 22, 2008
  11. Teemu LikonenApr 22, 2008
  12. Johannes SchindelinApr 22, 2008
  13. Jeff KingApr 22, 2008
  14. Johannes SchindelinApr 22, 2008
  15. Paolo BonziniApr 22, 2008
  16. Teemu LikonenApr 22, 2008
  17. Johannes SchindelinApr 22, 2008
  18. Teemu LikonenApr 22, 2008
  19. Paolo BonziniApr 22, 2008
  20. Johannes SchindelinApr 22, 2008
  21. Paolo BonziniApr 22, 2008
  22. Paolo BonziniApr 22, 2008
  23. Johannes SchindelinApr 22, 2008
  24. Junio C HamanoApr 22, 2008
  25. remote add: disallow --master and --mirror with non-bare repositoriesJohannes Schindelin, Apr 22, 2008
  26. Paolo BonziniApr 22, 2008
  27. Paolo BonziniApr 22, 2008
  28. Johannes SchindelinApr 22, 2008

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.