Перенос рабочей площадки без VCS вообще в Git - PullRequest
4 голосов
/ 29 апреля 2011

Я подумал, что выложу это и посмотрю, смогу ли получить какой-нибудь твердый совет по этому поводу.

У меня есть производственный сайт с довольно большой базой кода, и я только что установил на него Git,То же самое с тестовым сайтом.И у меня есть локальная коробка, которая в основном будет точкой интеграции.Наша команда подтолкнет к локальной коробке, и маленькие гномы приедут и заберут все на наши разные серверы - или, по крайней мере, это самое близкое, что я когда-либо делал к реализации Git.

У меня действительно нет малейший подсказка, с чего начать.У меня есть большая, привередливая, устаревшая кодовая база, которую я боюсь коснуться в хороший день.Git призван стать отправной точкой большого процесса очистки, я просто не знаю, с чего начать.

Я думал о создании чистого репозитория .git на основе моего производственного документа (с учетом применимости.gitignore), а затем клонировать в среды тестирования и разработки, затем отдельные люди будут клонировать dev и приступать к работе, возвращаться к dev и затем каким-то волшебным образом сообщать git обновить документацию при внесении изменений в чистое хранилище.

Я собирался установить git-flow при разработке (не могу заставить его работать на моем производственном сервере), а затем перейти к производству.Так как в конце концов они являются просто ветвями, я решил, что мне не стоит использовать git-flow на серверах prod / test.

Кажется, все хорошо, я просто не знаю, смогу ли ядолжно быть нажатие на test / prod или изменение от dev до test / prod.Может быть, просто git init в серийном docroot?Создать каталог .git и git init к этому?Git init git giggidy giggigdy ...

Мы ценим понимание.

Edit

Вот что я в итоге сделал, надеюсь, кто-то еще найдет этополезно.

Загруженный текущий производственный код на сервер разработки (LAMP). Установите файлы .gitignore и запустите git init в каталоге и выполните первоначальный импорт / принятие
На промежуточных / производственных серверах.:
Создано YOURNAME.git каталогов и создано пустое хранилище с git init --bare
Установить рабочее дерево как / path / to / my / public_html , установите bare в false и установите receive.denycurrentbranch, чтобы игнорировать
Добавил строку для hooks / post-receive: git checkout -f , убедившись, что мой пользователь git имел разрешение на запись в рабочие деревья

Вернитесь на сервер разработки:
git remote add [staging | production] ssh: //myuser@myserver/path/to/my.git
git push [staging | production] master

Чтобы обновить мойпроизводственные и промежуточные сайты, это простой git push [production | staging] , и мне не нужно возиться с сокрытием каталога .git от общего доступа.

Источники: http://www.deanoj.co.uk/programming/git/using-git-and-a-post-receive-hook-script-for-auto-deployment/
http://toroid.org/ams/git-website-howto

Надеюсь, это кому-нибудь поможет!

Редактирование еще раз
Кроме того, лучше всего работает на1.7.3.3 или позже.Я использую виртуальную версию Ubuntu для разработки и столкнулся с некоторыми проблемами, связанными с Samba.После нескольких часов борьбы с этим прочитайте, что проблема была исправлена ​​в 1.7.3.3.Я был на 1.7.3.1.

1 Ответ

1 голос
/ 29 апреля 2011

Если вас не интересуют более сложные решения для развертывания, такие как Capistrano, тогда вы можете установить хук пост-получения в вашем голом репозитории, который проверяет последние изменения в вашей рабочей документации.Вы можете установить отдельный хук как для разработчика, так и для производства.Вот довольно хорошее руководство для этого.

...