2012-02-08 3 views
3

У меня есть сайт, который работает на сервере Windows 2008. Я хочу знать, как лучше всего управлять этим сайтом с помощью git. В идеале я хочу автоматическое развертывание, используя крюк после приема или аналогичный.управление веб-сайтом на окнах с помощью git

У меня есть сервер Linux, который я обычно использую как мой исходный сервер git, поэтому я могу использовать его, если это упростит ситуацию. Обычно мой пост-получить файл там выглядит следующим образом:

#!/bin/sh 
GIT_WORK_TREE=/var/www/example.com git checkout -f 

Очевидно, что не будет работать, как есть на Windows, без чего-то другого на месте.

Мой сервер Windows поддерживает FTP, но я хотел бы использовать что-то более безопасное, если это возможно.

ответ

0

Вы можете использовать путь Windows в своем сценарии bash (который будет интерпретироваться с помощью msysgit на окнах).

/C/my/path/... 

Вы можете увидеть здесь пример fairly complex post-checkout hook (не после приема, но он может иллюстрирует то, что вы можете сделать на Windows, в крюке Баш скрипт).

Подробнее «Combining mingw and git».

На самом деле, Adam Rofer упоминает в комментариях:

Если вы используете нормальные окна обмена, вы можете получить доступ к Git репозиториев через этот путь синтаксисом:

//computername/folder/repo.git 

предполагая папка является общая папка доступной для ваш логин через обычный доступ к папке Windows. Msysgit, похоже, хорошо справляется с этим.

+0

Хорошо, что может позаботиться о крюке после приема, но как я могу h на сервер Windows с удаленного ПК. Обычно я использую ssh, но я не знаю, как это работает в Windows или если это даже практично. –

+0

@Peter: Обычно я устанавливаю сервер Apache перед моим репо и использую https session + скрипт 'git-http-backend' (http://stackoverflow.com/questions/5264949/cannot-push-git-to -remote-repository-with-http-https/5265022 # 5265022) – VonC

+0

Это звучит как интересная альтернатива, которую я должен будет проверить в какой-то момент. Я бы предпочел перейти на ssh-маршрут, так что он может быть похож на мою существующую настройку Linux. –

0

Я закончил использовать эти инструкции для установки Cygwin + OpenSSH + Git, который доставил мне большую часть пути.

http://www.shannoncornish.com/blog/2009/04/git-server-windows-2008/

В посте-прием я должен был удалить первую строку #!/bin/sh из-за некоторые проблемы разрешения, и я добавил символьную ссылку на мой вебсервер изнутри Cygwin так:

ln -s /cygdrive/c/inetpub/wwwroot /var/www 

Так файл после приема оказался очень похожим на предыдущий, но без первой строки

GIT_WORK_TREE=/var/www/example.com git checkout -f 
+0

Интересно, но я бы * действительно * избегал использования Git в Cygwin (это невероятно * медленнее *, чем дистрибутив msysgit. Я предпочел бы использовать 'sshd' из Cygwin с msysgit: http://superuser.com/questions/325639/make -msysgit-work-with-cygwin-ssh – VonC

+0

Да, я заметил, что он очень медленный, хотя для большинства вещей, которые я делаю, это не имеет большого значения. Также у меня возникли проблемы с работой моих крючков после приема. –

+0

@VonC согласно вашему предложению, я переключился на msysgit, используя cygwin sshd. Его было гораздо сложнее настроить. Думаю, что я, наконец, все понял, но теперь у меня возникают проблемы с нажатием и нажатием. Когда я попробовал «git clone ssh: // git @ myserver.com/var/git/example.git' сказал, что это не репозиторий git. По прихоти я попробовал «git clone ssh: //[email protected]: c:/cygwin/var/git/example .git' он работал.Однако, когда я пытаюсь нажать из клона, он говорит, что '/ cygwin/var/git/example.git' не является допустимой командой git. Кажется, что пути являются mes соблазнил как-то. –

Смежные вопросы