Слияние изменений из ветки в ствол - PullRequest
0 голосов
/ 17 января 2019

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

Так что я фиксирую и обновляю из Windows Explorer, никаких проблем с этим.

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

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

Сначала я указываю свою рабочую копию в папку ствола, создаю файл 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.

У меня вопрос: где мне «находиться» в рабочей копии, чтобы слиться из ветви (x.xx) в транк?

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

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

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

1 Ответ

0 голосов
/ 21 января 2019

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

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

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

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


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

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

...