Я добавил сторонний проект в свой собственный svn-репозиторий. Теперь у меня есть новая версия этого проекта, и я хотел бы заменить ее в своем хранилище.
Проект довольно большой (1,2 ГБ), и в новой версии появились новые файлы / каталоги, а также удаленные файлы / каталоги.
Тривиальное решение
svn rm project
mv /path/to/new/project .
svn add project
svn ci
Однако я теряю историю для всего. Кроме того, сервер SVN не сможет использовать дельта-сжатие (да, пространство на сервере имеет значение).
Другой способ - просто перезаписать все файлы в рабочем каталоге и зафиксировать его. Однако удаленные файлы остаются в хранилище. svn add --force *
также «забыл» добавить несколько файлов.
Каковы другие возможности для фиксации новой версии? Это необычный вариант использования, поэтому для него нет встроенной поддержки?
(С Tortoise SVN я бы возился с папками .svn
, Tortoise предлагает удалить отсутствующие файлы / папки в диалоге фиксации, но версия командной строки отказывается от фиксации, если обнаруживает файлы / папки, не удаленные с помощью svn rm
)
Extra 1 : Как избежать переопределения изменений в моем хранилище? (Там только несколько, поэтому повторное применение в настоящее время приемлемо)
Extra 2 : я заменил все символические ссылки на копии места назначения (чтобы избавиться от ошибок special status changed
). Как этого избежать?
Extra 3 : Как справиться с переименованными файлами / каталогами? Поскольку я просто получаю новую версию без истории изменений, определить ее автоматически невозможно. svn mv
до совершения?