* Re: gcc: Trouble setting up / using git area
2024-02-19 14:24 ` Georg-Johann Lay
@ 2024-02-19 14:53 ` Jonathan Wakely
2024-02-19 14:55 ` Georg-Johann Lay
1 sibling, 0 replies; 6+ messages in thread
From: Jonathan Wakely @ 2024-02-19 14:53 UTC (permalink / raw)
To: Georg-Johann Lay; +Cc: Mark Wielaard, overseers
On 19/02/24 15:24 +0100, Georg-Johann Lay wrote:
>
>
>Am 19.02.24 um 14:36 schrieb Mark Wielaard:
>>Hi Johann,
>>
>>On Mon, 2024-02-19 at 14:05 +0100, Georg-Johann Lay via Overseers
>>wrote:
>>>Hi, I'm having trouble wrapping my head around the
>>>git areas as described in
>>>
>>>https://gcc.gnu.org/git.html "Repository Layout"
>>>
>>>With that description I managed somehow to get
>>>
>>>$ git ls-remote | grep gjl
>>> From git+ssh://gjl@gcc.gnu.org/git/gcc.git
>>>eafe83f2f20ef0c1e7703c361ba314b44574523c refs/users/gjl/heads/gcc-8
>>>
>>>So I have my own branches in "users/gjl" according to the
>>>branch naming convention.
>>>
>>>But I cannot use it to push anything. I created a local branch
>>>"gjl/gcc-8" from "releases/gcc-8" and want to push, e.g.
>>>
>>>$ git push origin gjl/gcc-8:refs/users/gjl/heads/gcc-8
>>>
>>>but I am getting errors from the server.
>>>
>>>Creating a branch to track "users/gjl" does not work either:
>>>
>>>$ git checkout -b gjl/gcc-8 --track refs/users/gjl/heads/gcc
>>>
>>>I am just lost and trying around isn't any good. Would
>>>you please help me on how to uuse it? The gcc Wiki on git
>>>does not have any examples either.
>>
>>Could you show us what the server errors are that you are getting?
>>
>>Did you make sure git knows about the users refs you created?
>>You should do something like:
>>
>> git config --add remote.origin.fetch "+refs/users/gjl/heads/*:refs/remotes/origin/users/gjl/*"
>> git config --add remote.origin.fetch "+refs/users/gjl/tags/*:refs/tags/users/gjl/*"
>> git fetch origin
>
>Hi Mark,
>
>Yes, I did that according to the hint in "Repository Layout"
>where I replaced "dead" by "users/gjl/
>
>My .git/config reads:
>
>[remote "origin"]
> url = git+ssh://gjl@gcc.gnu.org/git/gcc.git
> fetch = +refs/heads/master:refs/remotes/origin/master
> fetch = +refs/users/gjl/heads/*:refs/remotes/origin/users/gjl/*
> fetch = +refs/users/gjl/tags/*:refs/tags/users/gjl/*
>[branch "master"]
> remote = origin
> merge = refs/heads/master
>
>
>What I did in the worktree is:
>
>$ git checkout -b gjl/gcc-8
>$ git push --set-upstream origin gjl/gcc-8:refs/users/gjl/heads/gcc-8
>
>which passes ok.
>
>Then I add and commit changes to gjl/gcc-8:
>
>$ git log
>
>commit 900efd5c53f2738cfd136c70a32b26d182354f11 (HEAD -> gjl/gcc-8)
>Author: Georg-Johann Lay <avr@gjlay.de>
>Date: Mon Feb 19 13:31:08 2024 +0100
>...
>
>commit eafe83f2f20ef0c1e7703c361ba314b44574523c (tag:
>releases/gcc-8.5.0, origin/users/gjl/gcc-8, releases/gcc-8)
>Author: Jakub Jelinek <jakub@redhat.com>
>Date: Fri May 14 08:22:23 2021 +0000
>...
>
>Then I want to push that:
>
>$ git push origin HEAD
>Enumerating objects: 16, done.
>Counting objects: 100% (16/16), done.
>Delta compression using up to 2 threads
>Compressing objects: 100% (9/9), done.
>Writing objects: 100% (9/9), 1.79 KiB | 1.79 MiB/s, done.
>Total 9 (delta 7), reused 0 (delta 0), pack-reused 0
>remote: *** Update rejected by this repository's hooks.update-hook script
>remote: *** (/git/gcc.git/hooks-bin/update_hook):
>remote: *** Shared development branches should be named devel/*, and
>should be documented in https://gcc.gnu.org/git.html .
>remote: error: hook declined to update refs/heads/gjl/gcc-8
>To git+ssh://gcc.gnu.org/git/gcc.git
> ! [remote rejected] HEAD -> gjl/gcc-8 (hook declined)
>error: failed to push some refs to 'git+ssh://gcc.gnu.org/git/gcc.git'
>
>As far as I can see, the naming convention for my "users/gjl" area fits
>the ones of other users:
>
>$ git ls-remote | grep users | grep -C2 gjl
>From git+ssh://gjl@gcc.gnu.org/git/gcc.git
>71fee3df121affc891ada03b09e74e96b2ee5e5b
>refs/users/giulianob/heads/pfe_backport_clean
>a97db5c54aa2998507a0436cb10d76ae5854a0a1
>refs/users/giulianob/heads/pfe_backport_dirty
>eafe83f2f20ef0c1e7703c361ba314b44574523c refs/users/gjl/heads/gcc-8
>437c1c2d91cee27c8280542e7a56d98470fd47cd refs/users/glisse/heads/fenv
>ce08a33145e1b5736595c4c5a600ea5443103d03
>refs/users/guojiufu/heads/guojiufu-branch
>
>But the error says: "hook declined to update refs/heads/gjl/gcc-8"
>where the location should be refs/users/gjl/heads/gcc-8
>
>Something with the tracking mapping appears to be not as expected;
>the fetch entries in .git/config should do the trick, no?
No, because they are fetch entries, they don't tell Git how to push,
only to fetch. The clue is in the name.
The simplest solution is to use the contrib/gcc-git-customization.sh
script which sets up the config correctly. This is documented at
https://gcc.gnu.org/gitwrite.html#vendor
If you insist on doing it manually, you want a separate remote that
you use for pushing to your user branch. Something like:
[remote "users/me"]
url = git+ssh://gcc.gnu.org/git/gcc.git
fetch = +refs/users/gjl/heads/*:refs/remotes/users/me/*
fetch = +refs/users/gjl/tags/*:refs/tags/users/me/*
push = refs/heads/me/*:refs/users/gjl/heads/*
Then you can do: git push users/me gjl/gcc-8:gcc-8
This really belongs on the GCC list, since this has nothing to do with
overseers. It's entirely related to GCC's Git repo structure, not
admin of the server.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: gcc: Trouble setting up / using git area
2024-02-19 14:24 ` Georg-Johann Lay
2024-02-19 14:53 ` Jonathan Wakely
@ 2024-02-19 14:55 ` Georg-Johann Lay
1 sibling, 0 replies; 6+ messages in thread
From: Georg-Johann Lay @ 2024-02-19 14:55 UTC (permalink / raw)
To: Mark Wielaard, overseers; +Cc: avr
Am 19.02.24 um 15:24 schrieb Georg-Johann Lay:
>
>
> Am 19.02.24 um 14:36 schrieb Mark Wielaard:
>> Hi Johann,
>>
>> On Mon, 2024-02-19 at 14:05 +0100, Georg-Johann Lay via Overseers
>> wrote:
>>> Hi, I'm having trouble wrapping my head around the
>>> git areas as described in
>>>
>>> https://gcc.gnu.org/git.html "Repository Layout"
>>>
>>> With that description I managed somehow to get
>>>
>>> $ git ls-remote | grep gjl
>>> From git+ssh://gjl@gcc.gnu.org/git/gcc.git
>>> eafe83f2f20ef0c1e7703c361ba314b44574523c refs/users/gjl/heads/gcc-8
>>>
>>> So I have my own branches in "users/gjl" according to the
>>> branch naming convention.
>>>
>>> But I cannot use it to push anything. I created a local branch
>>> "gjl/gcc-8" from "releases/gcc-8" and want to push, e.g.
>>>
>>> $ git push origin gjl/gcc-8:refs/users/gjl/heads/gcc-8
>>>
>>> but I am getting errors from the server.
>>>
>>> Creating a branch to track "users/gjl" does not work either:
>>>
>>> $ git checkout -b gjl/gcc-8 --track refs/users/gjl/heads/gcc
>>>
>>> I am just lost and trying around isn't any good. Would
>>> you please help me on how to uuse it? The gcc Wiki on git
>>> does not have any examples either.
>>
>> Could you show us what the server errors are that you are getting?
>>
>> Did you make sure git knows about the users refs you created?
>> You should do something like:
>>
>> git config --add remote.origin.fetch
>> "+refs/users/gjl/heads/*:refs/remotes/origin/users/gjl/*"
>> git config --add remote.origin.fetch
>> "+refs/users/gjl/tags/*:refs/tags/users/gjl/*"
>> git fetch origin
>
> Hi Mark,
>
> Yes, I did that according to the hint in "Repository Layout"
> where I replaced "dead" by "users/gjl/
>
> My .git/config reads:
>
> [remote "origin"]
> url = git+ssh://gjl@gcc.gnu.org/git/gcc.git
> fetch = +refs/heads/master:refs/remotes/origin/master
> fetch = +refs/users/gjl/heads/*:refs/remotes/origin/users/gjl/*
> fetch = +refs/users/gjl/tags/*:refs/tags/users/gjl/*
> [branch "master"]
> remote = origin
> merge = refs/heads/master
>
>
> What I did in the worktree is:
>
> $ git checkout -b gjl/gcc-8
> $ git push --set-upstream origin gjl/gcc-8:refs/users/gjl/heads/gcc-8
>
> which passes ok.
>
> Then I add and commit changes to gjl/gcc-8:
>
> $ git log
>
> commit 900efd5c53f2738cfd136c70a32b26d182354f11 (HEAD -> gjl/gcc-8)
> Author: Georg-Johann Lay <avr@gjlay.de>
> Date: Mon Feb 19 13:31:08 2024 +0100
> ...
>
> commit eafe83f2f20ef0c1e7703c361ba314b44574523c (tag:
> releases/gcc-8.5.0, origin/users/gjl/gcc-8, releases/gcc-8)
> Author: Jakub Jelinek <jakub@redhat.com>
> Date: Fri May 14 08:22:23 2021 +0000
> ...
>
> Then I want to push that:
>
> $ git push origin HEAD
> Enumerating objects: 16, done.
> Counting objects: 100% (16/16), done.
> Delta compression using up to 2 threads
> Compressing objects: 100% (9/9), done.
> Writing objects: 100% (9/9), 1.79 KiB | 1.79 MiB/s, done.
> Total 9 (delta 7), reused 0 (delta 0), pack-reused 0
> remote: *** Update rejected by this repository's hooks.update-hook script
> remote: *** (/git/gcc.git/hooks-bin/update_hook):
> remote: *** Shared development branches should be named devel/*, and
> should be documented in https://gcc.gnu.org/git.html .
> remote: error: hook declined to update refs/heads/gjl/gcc-8
> To git+ssh://gcc.gnu.org/git/gcc.git
> ! [remote rejected] HEAD -> gjl/gcc-8 (hook declined)
> error: failed to push some refs to 'git+ssh://gcc.gnu.org/git/gcc.git'
>
> As far as I can see, the naming convention for my "users/gjl" area fits
> the ones of other users:
>
> $ git ls-remote | grep users | grep -C2 gjl
> From git+ssh://gjl@gcc.gnu.org/git/gcc.git
> 71fee3df121affc891ada03b09e74e96b2ee5e5b
> refs/users/giulianob/heads/pfe_backport_clean
> a97db5c54aa2998507a0436cb10d76ae5854a0a1
> refs/users/giulianob/heads/pfe_backport_dirty
> eafe83f2f20ef0c1e7703c361ba314b44574523c refs/users/gjl/heads/gcc-8
> 437c1c2d91cee27c8280542e7a56d98470fd47cd refs/users/glisse/heads/fenv
> ce08a33145e1b5736595c4c5a600ea5443103d03
> refs/users/guojiufu/heads/guojiufu-branch
>
> But the error says: "hook declined to update refs/heads/gjl/gcc-8"
> where the location should be refs/users/gjl/heads/gcc-8
>
> Something with the tracking mapping appears to be not as expected;
> the fetch entries in .git/config should do the trick, no?
>
> Johann
Hi, just by pure trial and error, I found that the following works:
$ git push origin users/gjl/gcc-8:refs/users/gjl/heads/gcc-8
So maybe there is a rule for "push" missing, similar to the rules for
"fetch"?
Johann
^ permalink raw reply [flat|nested] 6+ messages in thread