Subject: Re: [RFC] make --set-upstream work for local branches not in refs/heads

From: Junio C Hamano <[email-masked]>
Date: Tue, 04 Mar 2014 11:44:47 -0800

Krzesimir Nowak <[email-masked]> writes:

> It might be possible (in "Gerrited" setups) to have local branches
> outside refs/heads/, like for example in following fetch config:
>
> [remote "origin"]
> 	url = ssh://[email-masked]/my-project
> 	fetch = +refs/heads/*:refs/remotes/origin/*
> 	fetch = +refs/wip/*:refs/remotes/origin-wip/*
>
> Let's say that 'test' branch already exist in origin/refs/wip/. If I
> call:
>
> git checkout test
>
> then it will create a new branch and add an entry to .git/config:
>
> [branch "test"]
> 	remote = origin
> 	merge = refs/wip/test
>
> But if I create a branch 'test2' and call:
>
> git push --set-upstream origin test2:refs/wip/test2
>
> then branch is pushed, but no entry in .git config is created.

By definition anything otuside refs/heads/ is not a branch, so do
not call things in refs/wip "branches".  Retitle it to "work for
local refs outside refs/heads" or something.

Having said that, I do not see a major problem if we allowed

	[branch "test2"]
		remote = origin
                merge = refs/wip/test2

to be created when "push --setupstream" is requested, making
test2@{upstream} to point at refs/remotes/origin-wip/test2.

I do not know what the correct implementation of such a feature
should be, though.