Git: Я настроил локальный компьютер для удаленного рабочего процесса.Где файлы на пульте? - PullRequest
1 голос
/ 18 января 2012

В двух словах я ищу код, перемещающийся слева направо посредством нажатия:

local machine  ->  bare remote repository  ->  full remote repository

Примечание: голое репо находится на той же машине, что и полное репо. Полное репо также является моим живым сайтом на общем хосте.

После выполнения всех требований для этого я не вижу абсолютно никаких файлов, созданных на моем сервере в моем полном хранилище. Git даже делает это? Я новичок в Git, так что, возможно, я что-то напутал. Все, что я сделал, перечислено ниже.


Вот что я сделал на своей локальной машине, находясь в каталоге с выходом кода:

$ git init
$ git add .
$ git commit -m "Initial commit"

Находясь на удаленной машине, вот что я сделал для простого репо:

$ mkdir -p $HOME/www/example.git
$ cd $HOME/www/example.git
$ git --bare init

Вернувшись на локальную машину, я сделал это:

$ git push exampleserver master
$ git remote add exampleserver ssh://exampleuser@example.com/~/www/example.git
$ git push exampleserver master

Вернувшись на удаленный компьютер, чтобы настроить сайт полного репо / live, я сделал это:

$ mkdir -p $HOME/www/example.com
$ cd example.com
$ git init
$ git remote add bare $HOME/www/example.git
$ cd $HOME/www/example.git/hooks/

Находясь в каталоге hooks в голом репозитории, я создал исполняемый скрипт оболочки с именем 'post-update', и он выглядит так:

#!/bin/sh
cd $HOME/www/example.com
unset GIT_DIR
git pull bare master

exec git-update-server-info

Наконец, когда я закончу кодирование на моей локальной машине, я делаю следующее:

$ git push exampleserver master

Возвращает «все обновлено».

1 Ответ

1 голос
/ 18 января 2012

Если push-эхо «все в порядке», ваш хук не будет вызван, поскольку ничего не обновлено.Как указывает @ysdx, стандартный вывод перенаправляется, и вы можете использовать echo для вывода дополнительной информации.

Таким образом, толчок фактического изменения будет выглядеть следующим образом:

Counting objects: 5, done.
Writing objects: 100% (3/3), 244 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
remote: /git/server /git/remote
remote: From ../remote
remote:  * branch            master     -> FETCH_HEAD
remote: Updating e10977b..21d83ca
remote: Fast-forward
remote:  test.txt |    2 +-
remote:  1 files changed, 1 insertions(+), 1 deletions(-)
remote: /git/remote
To ../remote
   e10977b..21d83ca  master -> master

Вы можете увидетьвыход из тяги вызывается с крючка там.Фактически все строки, начинающиеся с «remote:», перенаправляются с крючка.Принимая во внимание, что если бы ваш хук не был вызван, вы бы получили такой вывод:

Counting objects: 5, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To ../remote
   21d83ca..aac857c  master -> master

Кроме того, вероятно, стоит использовать pushd / popd для смены каталога.Я в основном использовал тот же скрипт, что и вы, чтобы сгенерировать вышеприведенный вывод:

pushd ../server
unset GIT_DIR
git pull remote master
popd

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