Зафиксировать изменения в ветке, отличной от текущей проверенной ветки, с помощью Subversion

115

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

Есть ли способ зафиксировать изменения в рабочей папке в ветке, отличной от исходной?

Пол Александр
источник

Ответы:

129

sourceURLСначала вы должны создать ветку из известного (это будет ваша «линия разработки», которую вы упомянули в вопросе):

svn copy sourceURL branchURL

Затем переключитесь на эту ветку:

svn switch branchURL

И зафиксируйте свои изменения:

svn commit
ryanprayogo
источник
56

Вы можете сделать это в TortoiseSVN вот так:

  • Щелкните правой кнопкой мыши каталог, в котором находятся изменения, которые вы хотите разветвить. Он не должен быть корнем репозитория, не говоря уже о его дублировании;
  • Выберите TortoiseSVN -> « Ветвь / тег ... »;
  • Установить на URL : "svn: // host / repository / FooBar / branch / FooBarBranchName";
  • Убедитесь, что выбрана [*] Рабочая копия . Это обеспечит фиксацию изменений;
  • Сообщение журнала : «Экспериментируем с мухами :)»;
  • Необязательно: Отметьте [*] Переключить рабочую копию на новую ветку / тег . Это полезно, если вы планируете продолжить работу над новой веткой. Хотя переключиться на него можно и позже.
  • Попробуй найти кнопку ОК . Подсказка: он находится в нижней части окна по центру.

Наслаждайтесь!

Дж. Поллак
источник
Что вы имеете в виду, говоря «Это не должен быть корень репозитория, не говоря уже о том, чтобы дублировать его таким образом»?
thekozak 04
Я рекомендую не выбирать корневую папку со всеми ненужными подпапками, которые не подлежат изменению в ветке. Позже будет легче объединить (меньшую) ветку обратно со стволом.
J Pollack
В моем случае фиксация только этой папки вызвала проблемы, потому что программное обеспечение также зависит от суперпапок. Я думаю, что так бывает чаще всего. Я думаю, что для большинства случаев использования лучше просто зафиксировать все, поэтому рекомендуется делать коммит из корня.
ikku100
@ ikku100, если в этих суперпапках нет изменений, какое это имеет значение?
simpleuser
Это могло быть связано с тем, что позже люди могут зафиксировать изменения там, но я думаю, вы можете проверить правильную версию суперпапки, а затем проверить ветку для подпапки. Я думаю, что это больше, чем просто коммит из супердира.
ikku100
8

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

Команды svn copyиsvn switch

Дима
источник