Получите refname в хуках пост-получения - PullRequest
0 голосов
/ 14 октября 2011

Я использую git под окном и хочу выполнять некоторые операции после каждого нажатия, поэтому я использую хук после получения, но когда я пытаюсь получить refname, чтобы узнать ветвь, которая выдвигается, я даю что-нибудь.

Почему?(Я не могу также указать другие параметры: oldrev и newrev)

Это мой файл после получения, электронное письмо отправлено правильно, но в теме нет refname (этото же самое, если я положу $3 в тело)

#!/bin/sh
#
# An example hook script for the "post-receive" event.
#
# The "post-receive" script is run after receive-pack has accepted a pack
# and the repository has been updated.  It is passed arguments in through
# stdin in the form
#  <oldrev> <newrev> <refname>
# For example:
#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
#
# see contrib/hooks/ for a sample, or uncomment the next line and
# rename the file to "post-receive".

#. /usr/share/doc/git-core/contrib/hooks/post-receive-email    

# send mail
last_comment=$(git log -n 1 HEAD --format=format:%s%n%b)
last_change=$(git log -1 --name-status)
msmtp  $(git config hooks.mailinglist) <<EOI
Subject: [GIT] ($3) Sources update
$last_change
EOI

1 Ответ

2 голосов
/ 14 октября 2011

В комментариях вверху вашего скрипта показано, что передается и как:

It is passed arguments in through
# stdin in the form
#  <oldrev> <newrev> <refname>

ключевое слово stdin. Они не передаются в качестве аргументов скрипту.

Вы можете читать со стандартного ввода, используя что-то вроде ниже:

while read oldrev newrev refname
do
  # Do what you want with $oldrev $newrev $refname

done
...