2013-12-16 2 views
0

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

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

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

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

ответ

1
cd /your/git/repository 
export GIT_WORK_TREE=/build/directory 
git checkout -f $BRANCH_TO_DEPLOY 
cd /build/directory 
<run build/test/other> 

Вы можете запустить другую сборку для каждой ветви, разделив каталоги сборки.

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

Смотрите эту ссылку о git deployment strategies для получения более подробной информации

Что на самом деле происходит?

Мы просто проверяем ветку на совершенно другой каталог, то есть мы отделяем хранилище от проверки. Таким образом, мы получаем только файлы, соответствующие состоянию репо после последнего фиксации на $BRANCH_TO_DEPLOY. Мы можем сделать это для главной ветки в одной папке, а ветвь функции - в другой, и делать разные вещи для этих двух папок. Последний шаг в моем примере выше - это то, где вы будете запускать свой тестовый пакет.

+0

Спасибо за быстрый ответ! Я все еще не понимаю, как раздельная сборка существует для каждой ветки. Не могли бы вы немного разобраться? –

+0

Я добавлю некоторые детали. –

0

Я бы предложил вам использовать проверенный маршрут из CVS - просто дважды клонируйте свой репозиторий git в отдельные каталоги. Затем вы можете работать в обеих ветвях одновременно и строить их отдельно.

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

+0

Я не могу сейчас, модули CVS были сделаны только для чтения, а GIT - единственный вариант. –

+0

Я не говорю, что использую CVS, я говорю, что использую Git как CVS. В CVS вы должны проверить моментальный снимок для каждой ветки на отдельный путь. В Git сделайте клон для каждой ветви на отдельном пути. Другими словами, работайте над одной ветвью в одном клоне и другой ветвью в другом клоне. Чтобы синхронизировать их, просто нажмите и вытащите из своего центрального репо. Нет причин, по которым вы должны * делиться одним и тем же клоном, и если две ветви должны быть одновременно выгружены, то это хорошая причина использовать более одного клона. – locka

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