Заменить репозиторий svn архивом

#svn

#svn

Вопрос:

Есть ли простой способ заменить репозиторий svn архивированным дампом?

У меня есть foo.tar, который содержит будущую версию репозитория svn. Чтобы передать это в репозиторий svn, все, что мне нужно сделать, это перезаписать содержимое foo.tar, а svn удалить все файлы, которых нет в foo.tar, а затем зафиксировать?

Есть ли лучший способ сделать это?

Комментарии:

1. Вы говорите об svn delete и commit . Эти термины указывают на то, что у вас есть рабочая копия svn, а не репозиторий . Не могли бы вы уточнить, какой из них вы имеете в виду?

2. Привет, да, я использую рабочую копию, а не централизованный репозиторий. Однако у меня есть доступ к центральному репозиторию.

Ответ №1:

Простое удаление с помощью Explorer фактически не приведет к удалению файлов в репозитории. Удаление всех файлов с помощью svn может быть излишним. Я бы установил даты всех файлов в WC на некоторую нулевую дату, затем скопировал все файлы из tar, затем нашел и удалил с помощью svn все файлы, которые сохранили свою нулевую дату.

Комментарии:

1. Спасибо, я думаю, что это хороший подход. Я также не уверен, как svn обработает «удаление svn», а затем файл будет перезаписан? В идеале он должен обрабатывать его как модификацию, но я не уверен, достаточно ли он умен или будет обрабатывать его как удаление и добавление?

2. Я использую TortoiseSVN для своих операций svn, поэтому мои предположения могут быть неверными, но… Когда файл удаляется с помощью svn, он больше не существует в WC. Файл, который вы видите там, теперь просто обычный файл. Не имеет значения, изменен ли он, не изменен, удален или что-то еще.

Ответ №2:

Нет, лучшего способа сделать это нет.

  • Проверьте свой проект
  • Удалите все файлы в проводнике (сохраните папки и содержимое .svn)
  • Извлеките свой архив в эту папку
  • Проверьте каждый файл / папку и зафиксируйте

Примечание:
добавленный элемент будет помечен как добавленный, если вы их проверите.
Удаленный элемент будет помечен как удаленный, если вы их проверите (сообщается как отсутствующий).

Комментарии:

1. Привет! Я все понимаю, кроме того, что вы подразумеваете под «проверкой каждого файла / папки и фиксацией»?

2. Как только вы откроете панель фиксации, вы проверите все файлы / папки. Итак, вы нажимаете на флажки 😉 Это добавит новые файлы и удалит отсутствующие файлы.

3. Хорошо, я думаю, вы, должно быть, используете какой-то визуальный инструмент. Я использую инструмент svn из командной строки, поэтому не уверен, что это значит там 🙂 Спасибо!