Исправление копирования / перемещения SVN

#svn

#svn

Вопрос:

Другой разработчик в проекте переместил папку с версиями, не выполнив это должным образом через SVN. Таким образом, SVN показывает удаленное дерево каталогов и созданное другое, и не показывает, что одно было просто результатом переименования другого. Это устраняет изменения привязки, различия и историю источников.

Есть ли какой-либо способ исправить это, например, с помощью svndump ?

В основном, чтобы пометить trunk/b как копию trunk/a .

Ответ №1:

Вы можете вручную отредактировать файл svndump для этого одного коммита, чтобы удалить содержимое всех дополнений и изменить его на одно добавление trunk / a с помощью copy-from и copy-from-rev. Затем вам нужно будет сбросить все предыдущие ревизии и все последующие ревизии, затем загрузить все ревизии по порядку в новый репозиторий и заменить ваш репозиторий. Затем вам нужно, чтобы все выполнили проверку из нового репозитория и уничтожили свои старые рабочие копии.

Вы можете избежать ручного редактирования, предполагая, что неправильное переименование было единственным в этом коммите. Предположим, что неправильная ревизия равна $ REV. Сброс ревизий от 0 до (но не включая) $ REV. Загрузите их в новый репозиторий. Извлеките из нового репозитория, выполните правильное переименование и зафиксируйте. Сделайте инкрементный дамп $ REV 1 через HEAD в старом репозитории и загрузите в новый репозиторий.

Ответ №2:

Вы можете просто перейти от версии до модификации, выполнить правильное переименование, а затем объединить это с магистралью.
Конечно, вам нужно будет сообщить об изменении из «нового» каталога во время слияния.

Таким образом, у вас есть история !

Или, если в журнале мало изменений, вы можете получить исправление из его модификации, вернуть модификацию в svn и вручную изменить исправление, чтобы исключить операции удаления / создания.