threads / bug / 28678

Bug? url.insteadOf overwrites remote.pushUrl

Subject: Bug? url.insteadOf overwrites remote.pushUrl

## tl;dr

3 messages between Oct 14, 2011 and Oct 14, 2011.

replies: 2people: 2as markdown or json

Kirill Likhodedov· Oct 14, 2011, 13:55 UTC · lore

I've found that defining url.<base>.insteadOf overrides explicit remote.<name>.pushUrl. On the other hand, pushInsteadOf doesn't override explicit pushUrl. Is it a bug?

# cat .git/config
[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = github.com/klikh/Test.git 
	pushUrl = jetbrains.com/klikh/Test.git 
[url "http://"]
  insteadOf=jet

# git remote -v origin github.com/klikh/Test.git (fetch) origin http://brains.com/klikh/Test.git (push)

See also http://kerneltrap.org/mailarchive/git/2009/9/7/11264/thread - patch introducing pushInsteadOf & discussion 

---------------------------------- Kirill Likhodedov JetBrains, Inc http://www.jetbrains.com "Develop with pleasure!"

Michael J Gruber· Oct 14, 2011, 15:35 UTC · re: Kirill Likhodedov · lore

Re: Bug? url.insteadOf overwrites remote.pushUrl

Kirill Likhodedov venit, vidit, dixit 14.10.2011 15:55:
> 
> I've found that defining url.<base>.insteadOf overrides explicit
> remote.<name>.pushUrl.
It doesn't really override it. It is applied to it, i.e. transforms it.
> On the other hand, pushInsteadOf doesn't
> override explicit pushUrl. Is it a bug?
That is as described in the thread (thanks for linking to it).
Show 6 quoted lines
> # cat .git/config [remote "origin"] fetch =
> +refs/heads/*:refs/remotes/origin/* url = github.com/klikh/Test.git 
> pushUrl = jetbrains.com/klikh/Test.git [url "http://"] insteadOf=jet
> 
> # git remote -v origin	github.com/klikh/Test.git (fetch) origin
> http://brains.com/klikh/Test.git (push)

The idea of "pushInsteadOf" was that, instead of having to define url and pushurl separately, you can use different rules, say

github -> git://github.com (fetch) github -> https://username@github.com (push) github/ -> git@github.com: (push)

used with "url = github/otheruser/repo.git" alone, without pushurl.

pushurl predates pushinsteadof, and when the latter was introduced, one could have argued for or against "insteadof" being applied to pushurls. But that was necessary before, and existing behavior at the time when pushinsteadof was introduced. So, I don't see a bug, nor anything we could change now, though arguably most people use either pushinstead of or pushurl, but not both.

Cheers, Michael

Kirill Likhodedov· Oct 14, 2011, 19:16 UTC · re: Michael J Gruber · lore

Re: Bug? url.insteadOf overwrites remote.pushUrl

>> On the other hand, pushInsteadOf doesn't
>> override explicit pushUrl. Is it a bug?
> 
> That is as described in the thread (thanks for linking to it).
Show 6 quoted lines
> pushurl predates pushinsteadof, and when the latter was introduced, one
> could have argued for or against "insteadof" being applied to pushurls.
> But that was necessary before, and existing behavior at the time when
> pushinsteadof was introduced. So, I don't see a bug, nor anything we
> could change now, though arguably most people use either pushinstead of
> or pushurl, but not both.

Yeah, that's clear now. As I already answered to Junio in another thread, my question was only about insteadOf, not pushInsteadOf behavior. The behavior of pushInsteadOf is completely clear from the thread and from t5516-fetch-push.sh Sorry for making it not clear enough.

Anyway, thanks for giving a one more explanation and example on how url, pushUrl and insteadOf configs work, it is always useful to go though it once again.

← back to recent threads