Как я могу изменить хук git post-update, чтобы он активировался только в одной (основной) ветке? - PullRequest
2 голосов
/ 06 июля 2011

Я установил репо на своем веб-хосте и клонировал его репо, которое будет обновляться всякий раз, когда изменения передаются в голое репо. Клонированное хранилище на веб-хосте - это, по сути, "production", находится в каталоге public_html. Я очень внимательно следовал инструкциям на этом сайте:

http://www.ibm.com/developerworks/web/library/wa-git/

Он дал мне указание сделать «пост-обновление» в голом репо:

#!/bin/bash 
WEB_DIR="<web_dir>"
export GIT_DIR="$WEB_DIR/.git"
pushd $WEB_DIR > /dev/null
git pull
popd > /dev/null

Это отличное решение для VCS, если я работаю только с основной веткой.

Когда я нахожусь в точке A, я хочу клонировать голое хранилище, начать работать с веткой "newstuff", зафиксировать изменения, а затем перенести его в голое хранилище, чтобы, если я пойду в локацию B, я мог клонируйте голое репо и получите доступ к «новинкам». Но я не хочу, чтобы "production" обновлялся через скрипт после обновления.

Есть ли способ, которым я могу изменить свой скрипт после обновления, чтобы он делал свое дело только тогда, когда обновление выполнено в основной ветке?

1 Ответ

6 голосов
/ 06 июля 2011

Обновленные ссылки передаются на крючок в качестве аргументов.Это означает, что вы можете проверить мастер, используя case:

case " $* " in
*' refs/heads/master '*)
        # Do stuff
        ;;
esac

Кстати, git pull на сервере будет только выбирать другие ветви, но не будет изменять ваш рабочий каталог, если мастер былне обновляется, так что в этом нет необходимости (кроме случаев, когда вы, возможно, беспокоитесь о производительности).

Также см. официальную документацию по ловушке: http://schacon.github.com/git/githooks.html#post-update

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...