Слияние изменений из ветки в ствол

Я использую SVN для контроля версий с проектом в Eclipse. Но я использую TortoiseSVN в качестве клиента в Windows 10.

Поэтому я фиксирую и обновляю из проводника Windows, с этим проблем нет.

Итак, я начал тест.

У меня есть папка /trunk в репозитории, и папка /branches/1.77 тоже в репозитории. (который я создал с Tortoise SVN-> Branch/Tags) без проблем, я не переключался.)

Сначала я указываю свою рабочую копию на папку trunk, создаю файл versionado.trunk.txt и фиксирую это изменение.

На данный момент все в порядке.

Перехожу на /braches/1.77. В моей рабочей копии я вижу, что SVN удалил versionado.trunk.txt.

Затем в своей рабочей копии я создаю еще один файл versionado.branch.txt и делаю коммит. Все хорошо, у меня версия versionado.branch.txt.

У меня в рабочей копии нет versionado.trunk.txt, т.к. работаю над веткой.

Когда я снова переключаюсь на транк, versionado.branch.txt удаляется из моей рабочей копии, потому что я работаю в транке, и SVN снова создал versionado.trunk.txt.

У меня вопрос, где я должен "быть" в рабочей копии, чтобы слиться с ветки (х.хх) на транк?

Моя стратегия состоит в том, чтобы работать (ежедневная разработка) в стволе, и я развернул версии в ветках, где в конечном итоге мне нужно исправить некоторые ошибки, ошибки, которые я должен объединить в ствол!

Я пытаюсь выполнить слияние из веток в магистраль (моя рабочая копия указывает на магистраль), но SVN сообщает мне, что существует конфликт дерева, потому что versionado.trunk.txt не существует (он был удален при переключении с ветвей на магистраль).

Есть идеи, что я делаю не так?


748
1

Ответ:

Я не эксперт SVN, но, возможно, поможет следующее:

Когда вы объединяете изменения из ветки в ствол, вы обычно не редактируете репозиторий напрямую. Вместо этого вы модифицируете рабочую копию ствола, а затем фиксируете изменения. Объединение с помощью команды merge полезно, потому что SVN имеет замечательное свойство SVN, называемое svn:mergeinfo, которое сохраняет предыдущую историю объединенных элементов. Таким образом, следующий рабочий процесс должен работать:

  1. switch в рабочую копию вашей магистрали и убедитесь, что это updated.
  2. merge ревизии из ветки в рабочую копию магистрали.
  3. commit изменения с ветки на транк.

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


Если идти дальше, я нахожу раздел «Поддержание ветки в синхронизации» в бесплатной книге Контроль версий с помощью Subversion полезным для объяснения желаемого базового рабочего процесса ветки. Хотя он описывает клиент командной строки вместо клиента Tortoise SVN, концепции остаются теми же.

Документ Tortoise SVN также содержит раздел "Слияние" по этой теме, хотя они рекомендуют вам вернуться и прочитать всю главу о ветвлении и слиянии из книги SVN, с чем я согласен, если вы хотите продолжать расти в навыках работы с SVN; это чрезвычайно полезно для процессов SVN, даже если вы не используете клиент командной строки.