Возможно ли автоматически осуществлять выезды из любого VCS?

StackOverflow https://stackoverflow.com/questions/14634

Вопрос

Давайте рассмотрим среду веб-разработки, в которой разработчики загружают проект на свои локальные компьютеры, работают над ним и регистрируют изменения в процессе разработки.
Эти изменения дополнительно тестируются при разработке и внедряются по регулярному графику (например, еженедельно, ежемесячно и т.д.).
Возможно ли автоматическое перемещение последней помеченной версии (а не последней проверки, поскольку это может быть не на 100% стабильно), например, в 8 утра в понедельник утром, либо с помощью скрипта, либо встроенной функции VCS?

Это было полезно?

Решение

Конечно, но конкретный продукт может зависеть от VCS, который вы используете.

Что вы, возможно, захотите сделать, так это создать несколько разных ветвей и мигрировать вверх по мере продвижения.Например, Разработка -> Стабильная-Разработка -> Бета-версия -> Производство.Затем вы можете просто автоматически обновить стабильную версию и бета-версию для своих тестировщиков до последней и всегда сможете в мгновение ока развернуть новую производственную версию.

Другие советы

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

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

Все, что вы можете сделать с cvs, можно сделать с помощью командной строки, и я почти уверен, что svn - это то же самое.Просто разработайте нужную функциональность и поместите ее в сценарий командной строки или командный файл.

Единственные два, с которыми у меня есть опыт, - это SVN и Mercurial.Для Mercurial вы указываете, из какой ветки вы хотите, чтобы она обновлялась (скажем, по умолчанию), а затем всякий раз, когда вы объединяете ветку с default, вы можете просто запустить сервер:

hg update

Который обновляет ваш репозиторий до последней версии ветки, в которую вы его установили.

SVN - это та же концепция, вы только проверяете, какая ветка вам нужна изначально

svn co http://host/repository/branchname/

затем вы должны обновить свой сервер с помощью задания cron, ala

svn up

Теоретически, однако, любой VCS, поддерживающий ветвление (все хорошие :git, mercurial, SVN и т.д.), должен быть способен сделать что-то подобное этому.

Я сомневаюсь, что многие VCS предоставляют эту возможность напрямую, однако сценарий должен быть очень простым.Либо проверка на основе даты, либо на основе филиала.

В качестве последующей меры,

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

Если бы я делал что-то подобное, я бы получил что-то вроде SVN, ANT и библиотеки Ant Subversion (http://ant.apache.org/antlibs/svn/index.html) - однако ваш размер может отличаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top