есть маленький веб-проект, который я пишу один. Хочу идеологически правильно настроить систему контроля версий.
На моем компьютере установлено такое же ПО, как и на сервере. Соответственно, сейчас у меня есть такие ветки:
~/dev/theproject/trunk
/srv/web/theproject (это видит веб-сервер)
И на сервере свой checkout, который тоже расположен в /srv/web/theproject. Когда я доделаю проект до того, что его станет можно выставить на всеобщее обозрение, планируется, что на сервере появится еще одна ветка — тестовая, отдельно от production-сайта.
Идея была та, что я веду разработку на своем компьютере прямо в той ветке, на которую настроен веб-сервер. Если я хочу внести какое-то крупное изменение, я создаю ветку в ~/dev/theproject/somebranch, делаю ее checkout в /srv/web/theproject и там и ковыряю, потом merge обратно. Когда готово, я делаю merge с сервера.
Не нравится то, что получается многовато веток. Как это делает уважаемый All?
СКВ — распределенная, Bazaar. (Сайт — Python, Django, StringTemplate, nginx, хотя вряд ли это важно.)
Здравствуйте, Roman Odaisky, Вы писали:
RO>Привет All,
RO>есть маленький веб-проект, который я пишу один. Хочу идеологически правильно настроить систему контроля версий.
RO>На моем компьютере установлено такое же ПО, как и на сервере. Соответственно, сейчас у меня есть такие ветки:
RO>~/dev/theproject/trunk RO>/srv/web/theproject (это видит веб-сервер)
RO>И на сервере свой checkout, который тоже расположен в /srv/web/theproject. Когда я доделаю проект до того, что его станет можно выставить на всеобщее обозрение, планируется, что на сервере появится еще одна ветка — тестовая, отдельно от production-сайта.
RO>Идея была та, что я веду разработку на своем компьютере прямо в той ветке, на которую настроен веб-сервер. Если я хочу внести какое-то крупное изменение, я создаю ветку в ~/dev/theproject/somebranch, делаю ее checkout в /srv/web/theproject и там и ковыряю, потом merge обратно. Когда готово, я делаю merge с сервера.
RO>Не нравится то, что получается многовато веток. Как это делает уважаемый All?
RO>СКВ — распределенная, Bazaar. (Сайт — Python, Django, StringTemplate, nginx, хотя вряд ли это важно.)
Что-то я не совсем понял, зачем Вы создаёте физические ветки у себя и на сервере, конкретно с Bazaar, но, по идее, в распределенных СКВ в том и фича чтобы плодить кучу логических веток, а потом их мёрджить на продакшне, как удобно.
Здравствуйте, Nuseraro, Вы писали:
N>Что-то я не совсем понял, зачем Вы создаёте физические ветки у себя и на сервере, конкретно с Bazaar, но, по идее, в распределенных СКВ в том и фича чтобы плодить кучу логических веток, а потом их мёрджить на продакшне, как удобно.
«Every branch should have a purpose, but not every purpose should have a branch».
Сервер однозначно должен иметь свою ветку, в которую при необходимости делается merge того, чего нужно. Чтобы по минимуму трогать работающую конфигурацию. Серверная ветка может отставать от trunk, если внесенные изменения некритичны. Это вроде понятно.
А что непонятно, так это как красиво организовать разработку.
Вот решил я приделать новую фичу, которая может многое поломать, создал ветку ~/dev/theproject/newfeature.
Варианты передо мной:
1. Вести разработку прямо там, когда нужно будет посмотреть, как это выглядит на сервере, делать bzr commit && bzr push /srv/web/theproject && invoke-rc.d nginx reload. commit на каждый чих делать не хочется.
2. Сразу же сделать checkout этой ветки в /srv/web/theproject и работать там. Сейчас так и делаю. Смущает то, что надо будет merge обратно в ~/dev/theproject/newfeature, а потом в trunk, или в sftp://server/srv/web/test.theproject — что-то многовато объединений без видимой пользы.
3. Попросту сделать /srv/web/theproject симлинком на ~/dev/theproject/какаязахочуветка. Может, на этом остановиться?