Реорганизация хранилища Subversion с филиалами
-
03-07-2019 - |
Вопрос
Я пытаюсь реорганизовать хранилище Subversion 1.6 с ветвями. Похоже, что если вы перемещаете файл в стволе, и этот файл имеет изменения в ветви, то когда эти изменения объединяются в ветви, их больше нет.
Я попытаюсь проиллюстрировать это ниже:
1. Repo before move
trunk/a.txt
trunk/b.txt
branches/feature/a.txt
branches/feature/b.txt
2. File branches/feature/b.txt is changed.
3. Repo reorganized
trunk/a.txt
trunk/new-location/b.txt
branches/feature/a.txt
branches/feature/b.txt
4. Changes from trunk merged to feature
trunk/a.txt
trunk/new-location/b.txt
branches/feature/a.txt
branches/feature/new-location/b.txt
Папка Branches / Feature является копией ствола .
По завершении шага 4 все изменения в файле b.txt из функциональной ветви больше не существуют.
Я думал, что это было исправлено в SVN 1.5?
Если это не вариант, мне все равно нужно как-то реорганизовать весь мой репозиторий. Делать движение, когда ветви все объединены в ствол, не вариант. У меня всегда есть хотя бы 1 ветка плюс ствол в любой момент времени.
Решение
Объединение перемещенных файлов - это известная проблема . Однако Subversion предупреждает вас этим сообщением, если оно не находит цель слияния :
Пропущенная отсутствующая цель: 'baz.c'
Если вы видите это сообщение, вам может потребоваться выполнить действия вручную. Если файл был перемещен и новое местоположение должно получить изменения, то вы можете рассмотреть возможность объединения поддерева между переименованными объектами.
Мне неизвестна какая-либо система контроля версий, которая выполняет такое слияние автоматически. edit : похоже на mercurial , например объединяет do следовать за копиями .
Другие советы
Укажите подробности шагов 3 и 4. Слияния Subversion не совпадают с копиями.
Необходимо убедиться, что вы используете метод переименования SVN для шага 3, чтобы убедиться, что местоположение файла остается связанным с будущими изменениями.
(я вытаскиваю это из ... ну, я не уверен насчет следующего) Есть проблема с наследством при перемещении / переименовании файлов. Убедитесь, что при объединении опция игнорирования предков не выбрана.