TortoiseSVN: Как объединить ветку обратно в магистраль без переключения рабочей копии на багажник?
Мы используем TortoiseSVN в командной среде. Когда я работаю над большей функцией, я создаю ветвь функции, работаю в течение недели там, каждый день сменяю изменения с туловища на мою ветку, и когда эта функция завершена, я объединять ее обратно в магистраль.
При слиянии я всегда делаю следующее:
- передать все ветке
- переключить всю рабочую копию в туловище, меняя (в основном, удаление) сотни файлов
- используйте параметр "Реинтегрировать ветвь", слияние измененных/новых файлов из ветки, которые уже были на диске 30 секунд назад.
- убедитесь, что код компилирует
- передать в магистраль
Это кажется мне неэффективным - я создаю кучу файлов, удаляю их при переключении на магистраль, а затем создаю их снова при слиянии с туловищем.
Есть ли другой способ слияния ветки с магистралью с использованием TortoiseSVN, которая была бы более эффективной, без двух отдельных рабочих копий? (что на самом деле не очень эффективно в нашем сценарии, потому что некоторые зависимости используют абсолютные пути, и мне нужно их вручную изменить, когда я хочу скомпилировать из другой рабочей копии)
Ответы
Ответ 1
Вы не можете объединиться и зафиксировать в SVN, не имея рабочей копии магистрали (т.е. цели слияния). Это не действие, которое может быть сделано непосредственно в репозитории, поскольку оно изменяет файлы, и вы должны убедиться, что они были объединены правильно, прежде чем совершать.
Итак, я думаю, вы в основном хотите выполнить действие switch-and-merge (или переключение-слияние-реинтеграция). Насколько мне известно, эта команда не предоставляется SVN или TortoiseSVN, поэтому вы застряли, делая это так, как вы описали.
Ответ 2
Я сохраняю рабочую копию обоих из них в любое время.
Если вы проверите корень ниже соединительной линии и ветки, у вас есть оба варианта, поэтому нет необходимости переключаться туда и обратно. Просто двигайтесь вверх и вниз по дереву, как и обычная файловая структура.
Ответ 3
Я знаю, что опаздываю на вечеринку, но одна идея заключалась бы в использовании команды subst
, чтобы виртуальный диск указывал на активную рабочую копию:
cd \myproject\trunk
subst z: .
... use the trunk ...
cd \myproject\branchxy
subst /d z:
subst z: .
... use the branch xy ...
Таким образом, вы просто использовали бы букву subst
со сжатыми буквами в ваших входящих внешних зависимостях.
Ответ 4
Вот выдержка из книги SVN:
Вам понадобится рабочая копия/ствол. Вы можете получить его, выполнив проверку svn, вытащив старую рабочую копию рабочего места где-нибудь на вашем диске или используя svn-переключатель (см. Раздел "Traversing Branches" ).