#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 и вручную изменить исправление, чтобы исключить операции удаления / создания.