2015-09-25 6 views
1

Я пытаюсь сделать git auto разворачиваться в разные каталоги в зависимости от ветви, которая была нажата. У меня есть удаленный открытый репозиторий, локальный репозиторий и два каталога, где я хочу, чтобы данные были развернуты и обновлены при каждом нажатии из локального в удаленный репозиторий. я добавил после обновления Крючок:Git hook post-update writing, но не обновляющее дерево работы

#!/bin/sh 


echo $1 
echo "*UPDATE*" 


case " $1 " in 
*'refs/heads/develop'*) 
     GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout develop webroot 
     echo 
     echo "Dev was pulled" 
     echo 
     ;; 
esac 

case " $1 " in 
*'refs/heads/master'*) 
     GIT_WORK_TREE=/home/git/public_html/example_deploy git checkout master webroot 
     echo 
     echo "Master was pulled" 
     echo 
     ;; 
esac 

Он развертывает просто отлично на создание первого файла, но не обновляет его, когда он изменился в каталогах, которые shold быть развернуты. Где я скучаю? Спасибо!

ответ

0

Обычный сценарий для post update hook является:

#! /bin/sh 

update_master() { 
    GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout master -- webroot 
} 

update_develop() { 
    GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout develop -- webroot 
} 
for ref do 
    case "$ref" in 
    refs/heads/master) update_master;; 
    refs/heads/test) update_test;; 
    *) ;; # ignore other branches 
    esac 
done 

Так что крючок «принимает переменное число параметров, каждый из которых является именем реф, который был фактически обновлен», вы не можете полагаться только на $1.

+0

ТНХ за ответ! Я должен был «esac» до «done», чтобы заставить его работать, но он работает так же, как и раньше: новые файлы добавляются, но старые не обновляются ... может быть, это как-то связано с разрешениями? .. –

+0

@YariG это не должно, но вы видите разное право собственности/право между новыми файлами и старыми в '/ home/git/public_html/example_deploy_dev'? – VonC

+0

нет, это все [тот же] (http://prntscr.com/8k9e02) –

0

Try:

фотографии -f

#! /bin/sh 

update_master() { 
    GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout -f master -- webroot 
} 

update_develop() { 
    GIT_WORK_TREE=/home/git/public_html/example_deploy_dev git checkout -f develop -- webroot 
} 
for ref do 
    case "$ref" in 
    refs/heads/master) update_master;; 
    refs/heads/test) update_test;; 
    *) ;; # ignore other branches 
    esac 
done 
Смежные вопросы