SVN Repository: как проверить, что скопированные данные идентичны исходным? - PullRequest
0 голосов
/ 10 февраля 2019

Я скопировал репозиторий ОДИН (30 гигабайт) во вновь созданный репозиторий ДВА:

Старая конфигурация:

 Repositories/
   ONE/
      branches
      tags/
      trunks/

Новая конфигурация:

 Repositories/
  ONE/ ...
  TWO/
       ONE/
          branches
          tags/
          trunks/

Я использовалследующие команды для этого:

svnadmin dump D:/svn/ONE/ > ONE_dump

svnadmin load --parent-dir ONE D:/svn/TWO < ONE_dump

Вопрос : Как я могу проверить, что источники данных в старом и скопированном ЕДИНИЦАХ идентичны?

1 Ответ

0 голосов
/ 15 февраля 2019

Данные идентичны , потому что потоки дампа репозитория были предназначены для миграции данных репозитория.Тем не менее, используйте последние версии Subversion LTS для загрузки старых дампов (что-то более старое, чем 1.8.x, я думаю).Найдите бинарные дистрибутивы для вашей ОС по адресу https://subversion.apache.org/packages.html.

С очень параноидальным взглядом на вещи , вы можете написать скрипт, который докажет, что между старыми и новыми репозиториями нет различий.Вот пример процедуры:

  1. Экспорт содержимого соответствующих ревизий из обоих репозиториев в разные каталоги:

    svn export --revision X file:///C:\Repositories\ONE C:\OLD-REPO

    svn export --revision Y file:///C:\Repositories\TWO\ONE C:\NEW-REPO

    Обратите внимание, что номера редакций X и Y будут разными.Поскольку вы загрузили данные в существующий репозиторий, в котором уже были некоторые ревизии, произойдет сдвиг в числах.

  2. Различают каталоги:

    svn diff --old C:\OLD-REPO --new C:\NEW-REPO

    Не видите вывод?Это означает, что содержимое идентично.

  3. Повторите шаги 1 и 2.

Приведенный выше подход не очень удобен, и я предполагаю, что онбудет очень много времени и места.А как насчет сравнения текстовых различий?Вот альтернативная процедура, которая может быть намного быстрее и не займет много места на диске:

  1. Сохранить разность соответствующих ревизий X и Y в двух текстовых файлах:

    svn diff file:///C:\Repositories\ONE --revision X > X-rev.diff

    svn diff file:///C:\Repositories\TWO\ONE --revision Y > Y-rev.diff

  2. Различаются эти файлы:

    svn diff --old X-rev.diff --new Y-rev.diff

    Не видите вывод?Это означает, что текстовые изменения, внесенные в эти редакции, идентичны.Поэтому сам контент тоже должен быть идентичным.Я не уверен, как настроить эту конкретную инструкцию для работы с двоичным контентом (фото, видео и другим нетекстовым контентом).

...