Как получить имя удаленной ветки в git pre-push hook

В документации говорится:

Информация о том, что должно быть отправлено, предоставляется в стандартном вводе ловушки со строками формы:

‹Локальная ссылка> SP‹ локальная sha1> SP ‹удаленная ссылка> SP‹ удаленная sha1> LF

Например, если была запущена команда + git push origin master: foreign +, ловушка получит строку, подобную следующей:

ссылки / главы / мастера 67890 ссылки / главы / иностранные 12345

как мне получить доступ к этим строкам в скрипте pr-hook?


person Gummidrum    schedule 04.02.2014    source источник
comment
Вы читаете данные из стандартного входного потока ловушки. Любое дальнейшее объяснение потребует знания того, на каком языке написана ловушка.   -  person Magnus Bäck    schedule 04.02.2014
comment
Это на Perl. И он работает на платформе Windows   -  person Gummidrum    schedule 04.02.2014
comment
stackoverflow .com / questions / 3138649 /   -  person Magnus Bäck    schedule 04.02.2014
comment
Вот как это делается (я не могу опубликовать ответ, потому что я новый пользователь, поэтому оставлю его здесь, в комментариях): пока читаю localref_ localsha1_ remoteref_ remotesha1_ do echo $ localref_ echo $ localsha1_ echo $ remoteref_ echo $ remotesha1_ done   -  person Gummidrum    schedule 04.02.2014


Ответы (2)


Доступ к имени удаленного филиала можно получить, используя:

while read local_ref local_sha remote_ref remote_sha 
do 
    echo $local_ref
    echo $local_sha 
    echo $remote_ref
    echo $remote_sha
done 
person Krati Jain    schedule 24.05.2017
comment
в v2.21.0 это ничего не печатает - person Cpt. Senkfuss; 29.05.2019

Есть возможность протолкнуть сразу не только одну ветку. Вам необходимо прочитать:

  1. ARGV в хуке, указывающем удаленное имя ("часто происхождение")
  2. STDIN, который предоставляет список веток в формате:

    local_branch_name from_commit удаленное_имя_ответки to_commit

person Ivo Solánský    schedule 20.07.2017