Re: BUG: git request-pull broken for plain branches
From: Uwe Kleine-König <hidden>
Date: 2016-06-15 23:01:44
Hello Linus, On Wed, Jun 25, 2014 at 05:05:51AM -0700, Linus Torvalds wrote:
On Wed, Jun 25, 2014 at 2:55 AM, Uwe Kleine-König [off-list ref] wrote:quoted
$ git rev-parse HEAD 9e065e4a5a58308f1a0da4bb80b830929dfa90b3 $ git ls-remote origin | grep 9e065e4a5a58308f1a0da4bb80b830929dfa90b3 9e065e4a5a58308f1a0da4bb80b830929dfa90b3 refs/heads/ukl/for-mainline $ git request-pull origin/master origin HEAD > /dev/null warn: No match for commit 9e065e4a5a58308f1a0da4bb80b830929dfa90b3 found at origin warn: Are you sure you pushed 'HEAD' there?Notice how "HEAD" does not match. The error message is perhaps misleading. It's not enough to match the commit. You need to match the branch name too. git used to guess the branch name (from the commit), and it often guessed wrongly. So now they need to match. So you should do git request-pull origin/master origin ukl/for-mainline to let request-pull know that you're requesting a pull for "ukl/for-mainline". If you have another name for that branch locally (ie you did something like "git push origin local:remote"), then you can say git request-pull origin/master origin local-name:remote-name to specify what the branch to be pulled is called locally vs remotely. In other words, what used to be "pick some branch randomly" is now "you need to _specify_ the branch".
ah, got it. Still some of my concerns stay valid and I also have some new ones: - if there is a branch and a tag on the remote side that match what I specified the outcome depends on the order of git-ls-remote. (minor nit.) - if I have to specify the remote name now, why do I have to also specify my local ref? Isn't the respective $sha1 of the remote side enough to do what is needed? - Isn't $found = $sha1; silly because I cannot pull a rev, only a ref? (side note: git pull linus d91d66e88ea95b6dd21958834414009614385153 gives no error message, only returns 1 and does nothing else.) - Is the result of git request-pull $somecommit origin what is intended? For me it does ... are available in the git repository at: $repository for you to fetch changes ... if the remote HEAD matches the local one. I'd prefer to have an explicit branch name there, or at least HEAD. I liked git guessing the branch name, maybe we can teach it to guess a bit better than it did before 2.0? Something like: - if there is a unique match on the remote side, use it. - if there are >= 1 match on the remote side and exactly one matches what I specified as <end>, use it. - if there are >= 1 match on the remote side and exactly one of them is a tag, use the tag - if there are two matches on the remote side, and one is "HEAD", pick the other one. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | http://www.pengutronix.de/ |