# url.<base>.insteadOf with empty value

3 messages from 2011-10-14 to 2011-10-14. Participants: Kirill Likhodedov, Junio C Hamano.
Thread: https://gitlist.dev/t/28674

## Kirill Likhodedov, 2011-10-14 09:03

Subject: url.<base>.insteadOf with empty value
Message-ID: <54556728-92C0-4992-9831-0D582C383235@jetbrains.com>
URL: https://gitlist.dev/e/54556728-92C0-4992-9831-0D582C383235%40jetbrains.com

```
If I don't specify any value for url.<base>.insteadOf or url.<base>.pushInsteadOf, Git substitutes all urls for remotes defined in .git/config

Probably that's because any url starts with empty string and thus has to be substituted. 
But it might be a bit confusing, because on the other hand if no value is given to the property insteadOf, user may expect this property to be ignored.

Please check if current Git behavior is correct. 

If it is not a bug, I'd suggest to add a note to man git-config about this.

# git version
git version 1.7.6

# 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=

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




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

```

## Junio C Hamano, 2011-10-14 17:57

Subject: Re: url.<base>.insteadOf with empty value
Message-ID: <7v8von1mnd.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v8von1mnd.fsf%40alter.siamese.dyndns.org
In-Reply-To: <54556728-92C0-4992-9831-0D582C383235@jetbrains.com>

```
Kirill Likhodedov <Kirill.Likhodedov@jetbrains.com> writes:

> If I don't specify any value for url.<base>.insteadOf or url.<base>.pushInsteadOf, Git substitutes all urls for remotes defined in .git/config
>
> Probably that's because any url starts with empty string and thus has to be substituted. 
> But it might be a bit confusing, because on the other hand if no value is given to the property insteadOf, user may expect this property to be ignored.
>
> Please check if current Git behavior is correct. 
>
> If it is not a bug, I'd suggest to add a note to man git-config about this.

Please assume that what the documentation says is clear enough for whoever
wrote it and need no further clarification, so you would need to help them
understand what additional things you may want the documentation to say,
by clarifying "add a note" and "about this" a bit.

The "insteadOf" replacement is meant to apply for any URL we use. I would
be surprised if it did not affect pushURL; it would be a bug if it didn't.

On the other hand, the rewrite done by "pushinsteadof" is meant to apply
only when remote.<any>.url is used for pushing.  See t/t5516-fetch-push.sh
part of the patch for 1c2eafb (Add url.<base>.pushInsteadOf: URL rewriting
for push only, 2009-09-07). It would clarify what the intended interaction
among these configuration variables.

Thanks.

```

## Kirill Likhodedov, 2011-10-14 19:09

Subject: Re: url.<base>.insteadOf with empty value
Message-ID: <6DA2F444-C774-4F22-8EF0-BFD8F3308A4A@jetbrains.com>
URL: https://gitlist.dev/e/6DA2F444-C774-4F22-8EF0-BFD8F3308A4A%40jetbrains.com
In-Reply-To: <7v8von1mnd.fsf@alter.siamese.dyndns.org>

```

14.10.2011, в 21:57, Junio C Hamano writes:

>> If I don't specify any value for url.<base>.insteadOf or url.<base>.pushInsteadOf, Git substitutes all urls for remotes defined in .git/config
>> 
>> If it is not a bug, I'd suggest to add a note to man git-config about this.
> 
> Please assume that what the documentation says is clear enough for whoever
> wrote it and need no further clarification, so you would need to help them
> understand what additional things you may want the documentation to say,
> by clarifying "add a note" and "about this" a bit.

I would add the following to the "url.<base>.insteadOf" section of git-config:
:::: If empty value is specified in insteadOf, <base> will be added to the start of any URL.


> The "insteadOf" replacement is meant to apply for any URL we use. I would
> be surprised if it did not affect pushURL; it would be a bug if it didn't.

That was the question I wanted to clarify. 
I thought that pushURL shouldn't be affected by insteadOf, because it is not affected by pushInsteadOf.
Thanks for clarifying that out.

> On the other hand, the rewrite done by "pushinsteadof" is meant to apply
> only when remote.<any>.url is used for pushing.  See t/t5516-fetch-push.sh
> part of the patch for 1c2eafb (Add url.<base>.pushInsteadOf: URL rewriting
> for push only, 2009-09-07). It would clarify what the intended interaction
> among these configuration variables.


Yeah, that's clear. My question was only about insteadOf behavior. Sorry for making it not clear enough. The behavior of pushInsteadOf is completely clear from the discussion thread I mentioned and from t5516-fetch-push.sh

Thanks.
```
