Разъяснение по использованию VCS, например Git

Я понимаю основы и то, как работает рабочий процесс, а что нет. Однако, допустим, у меня есть локальный репозиторий на моей рабочей станции Linux. Теперь у меня также есть производственная коробка, расположенная на VPS в удаленном DC. Если я хочу добавить новый код в бокс, как лучше всего это сделать? Я не хочу иметь репозиторий Git на коробке, в нем должен быть только мой веб-код (php/mysql).

Как отправить новые изменения в рабочую коробку без отправки ВСЕХ файлов?


person sdot257    schedule 01.09.2009    source источник
comment
Git — это DVCS, а не VCS — это одно из основных отличий между ним и svn.   -  person Will Bickford    schedule 02.09.2009
comment
Дубликат для экспорта Git: stackoverflow.com/questions/160608/   -  person Will Bickford    schedule 02.09.2009


Ответы (2)


Один из способов управления веб-контентом — создать «голый» репозиторий на рабочей машине. Это репозиторий, у которого нет рабочей копии. Когда вы хотите развернуть новый код, вы должны отправить его в этот репозиторий, чтобы обновить его. Затем войдите в производственную систему и извлеките из пустого репозитория в каталог фактического развертывания (который также является репозиторием Git).

Обратите внимание, что ни один из этих репозиториев в производственной коробке не должен считаться «главным» репозиторием; вы можете хранить свой исходный код в другом месте и просто запускать его в производство по мере необходимости.

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

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

person Greg Hewgill    schedule 01.09.2009
comment
Итак, мне не нужно открывать какие-либо порты на моей локальной рабочей станции, где находится основной репозиторий, верно? Я нажимаю от локального репозитория к голому репо на производстве через ssh, а затем вхожу в производство на VPS и запускаю извлечение из голого репо. - person sdot257; 02.09.2009

Поэтому я думаю, что у вас может быть неправильное представление о том, как работают репозитории, ваш репозиторий может быть где угодно... это не имеет большого значения, он может быть даже на github или на VPS. Суть в том, что пока вы работаете, вы делаете коммиты (с помощью git они помещаются в локальный репозиторий), и когда вы готовы применить эти изменения, вы «отправляете их», это отправит дельты (только изменения, внесенные в ваш код).

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

person JP Silvashy    schedule 01.09.2009
comment
Я понял, мне просто нужна была помощь, чтобы понять, как заставить производство имитировать то, что было в HEAD. Я не хотел открывать порты в своем брандмауэре, чтобы получить дельту с моей локальной рабочей станции. - person sdot257; 02.09.2009