subversion и tortoisesvn: ветвление / перемещение директории - PullRequest
1 голос
/ 18 января 2010

код моей компании находится в хранилище Subversion, и до сих пор он работал хорошо. Я последовал совету по настройке хранилища, то есть у меня есть подкаталоги веток / тегов / ствола. Но теперь я хочу быть немного более организованным и иметь две мета-ветви: dev и release. Первый, очевидно, предназначен для целей разработки, где инженеры могут попробовать разные странные вещи, а второй - для стабильного кода, готового для продукта. Все новые функции сначала будут жить в "dev" во время разработки, и когда они будут считаться нормальными, они будут время от времени добавляться в ветку "release". Фиксация "релиза" будет происходить только от таких слияний плюс обычная ошибка. Каждая из этих мета-ветвей будет содержать нормальные подкаталоги ветвей / тегов / транка.

Проблема, с которой я столкнулся, заключается в том, что я не могу на всю жизнь это настроить. Я создал 2 мета-ветви, переместил все существующие подкаталоги в «dev» и теперь хочу переместить ствол «dev» в ствол «release». Но я не могу понять, как это сделать. Если я переключаюсь (из TortoiseSVN), он просто удаляет все, потому что ствол "release" пуст. Если я пытаюсь создать ветку 'release / trunk' из 'dev / trunk', tortoisesvn жалуется, что путь не существует.

Я не могу понять, что делать. Это должно быть просто, не так ли? Я предполагаю, что многие люди используют подобную организацию, dev против release?!

Любые советы / комментарии / идеи приветствуются.

Заранее спасибо.

A

Ответы [ 4 ]

5 голосов
/ 18 января 2010

Как обычно это делается, проект имеет только один набор каталогов веток / тегов / стволов на верхнем уровне хранилища.Директория trunk - это ваша мета-ветка "dev", и вы создаете ветку транка в вашей директории branches под названием "release", чтобы служить стабильной веткой, готовой к продукту.Если вам нужно отслеживать несколько выпусков (например, v1.0 и v2.0), тогда у вас будет и «1.0», и «2.0» под branches.Когда вы будете готовы выпустить код, вы создадите тег с номером версии из соответствующей ветки релиза.

Я думаю, то, что вы пытаетесь сделать, сделает структуру хранилища слишком сложной.Вы можете достичь всего, что вам нужно сделать, с помощью одного набора веток / тегов / ствола.

Тем не менее, ветки легче всего создавать с помощью TortoiseSVN, переместив Repo-Browser в каталог, из которого вы копируете (""dev / trunk "в вашем случае), щелкнув правой кнопкой мыши по этой папке, выбрав« Copy To »и указав путь к новой ветви (« release / trunk ») в вашем случае.

1 голос
/ 18 января 2010

Откройте Repo-браузер TortoiseSVN (щелкнув правой кнопкой мыши в любом месте списка каталогов проводника), перейдите в каталог dev, щелкните его правой кнопкой мыши и выберите «Копировать в ...».Теперь укажите пункт назначения.Эта операция будет выполняться в виде одного коммита, поэтому у вас будет запрошена запись в журнале.

Я использую немного более старый TortoiseSVN (v1.4.8), но я уверен, что это или что-то подобное будет работать.

1 голос
/ 18 января 2010

В Repo-браузере щелкните правой кнопкой мыши каталог, в котором находится исходный код (транк?), И выберите «Копировать в ...».

Но на самом деле вы можете переосмыслить структуру.

0 голосов
/ 18 января 2010

Настройка, которую вы описываете, обычно называется «ветвями функций». То есть вы разрабатываете новую функцию в отдельной ветке и после ее завершения вы сливаете ее обратно в ствол (которая всегда сохраняется в стабильной версии). Структура хранилища может выглядеть следующим образом:

/trunk
/branches/featureX
/branches/featureY
/tags

Разработка функции будет работать следующим образом:

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

Более подробную информацию об этом сценарии и командах можно найти в книге подрывных действий или в справке TortoiseSVN .

...