Skip to content

Commit ad23603

Browse files
spearcegitster
authored andcommitted
Don't configure remote "." to fetch everything to itself
When we are talking about a remote URI of "." we are really talking about *this* repository that we are fetching into or pushing out of. There are no matching tracking branches for this repository; we do not attempt to map a ref back to ourselves as this would either create an infinite cycle (for example "fetch = +refs/*:refs/mine/*") or it causes problems when we attempt to push back to ourselves. So we really cannot setup a remote like this: [remote "."] url = . fetch = +refs/*:refs/* In the case of `git push . B:T` to fast-forward branch T to B's current commit git-send-pack will update branch T to B, assuming that T is the remote tracking branch for B. This update is performed immediately before git-send-pack asks git-receive-pack to perform the same update, and git-receive-pack then fails because T is not where git-send-pack told it to expect T to be at. In the case of `git fetch .` we really should do the same thing as `git fetch $otherrepo`, that is load .git/FETCH_HEAD with the commit of HEAD, so that `git pull .` will report "Already up-to-date". We have always behaved like this before on this insane request and we should at least continue to behave the same way. With the above (bad) remote configuration we were instead getting fetch errors about funny refs, e.g. "refs/stash". Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent b3abdd9 commit ad23603

File tree

1 file changed

+0
-4
lines changed

1 file changed

+0
-4
lines changed

remote.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -356,10 +356,6 @@ struct remote *remote_get(const char *name)
356356
add_uri(ret, name);
357357
if (!ret->uri)
358358
return NULL;
359-
if (!strcmp(name, ".")) {
360-
// we always fetch "refs/*:refs/*", which is trivial
361-
add_fetch_refspec(ret, "refs/*:refs/*");
362-
}
363359
ret->fetch = parse_ref_spec(ret->fetch_refspec_nr, ret->fetch_refspec);
364360
ret->push = parse_ref_spec(ret->push_refspec_nr, ret->push_refspec);
365361
return ret;

0 commit comments

Comments
 (0)