From: Johannes Schindelin Date: Mon, 09 Jul 2007 11:28:05 GMT Subject: Re: [PATCH] branch.autosetupmerge: allow boolean values, or "all" Message-ID: In-Reply-To: <46919692.5020708@gnu.org> Hi, On Sun, 8 Jul 2007, Paolo Bonzini wrote: > [Paolo tried to hide the fact that it was Junio who wrote this:] > > > Having prepared the patch below, I do not think if the original patch > > even wanted to have 'all' semantics. The surrounding text only talks > > about "off a remote branch" and I strongly suspect that nobody wanted > > to do this for a local branch case at all. > > If I remember correctly, the problem was that you are not sure that > remote branches are in refs/remotes. Then you code is incorrect. Basically, you use a confusing set of four functions to do the following: - read the config, and - write the branch..{remote,merge} variables Two functions would have been sufficient, and easier to read. And as I fully expect with non-simple code, a bug was lurking. This time in set_branch_defaults(): you check if neither config_repo nor config_remote (which is a misnomer, as it does not contain a "remote", but a "remote branch") is set. But that happens when there was no information in the config, too! Also you miss the case that there is ambiguous information: [remote "hello"] url = git://blub/x.git fetch = refs/heads/master:refs/heads/origin [remote "bello"] url = git://yaddayadda/x.git fetch = refs/heads/master:refs/heads/origin See? Your code just uses "bello". Will send out a fix shortly. Ciao, Dscho