Как проверить восстановленное хранилище SVN - PullRequest
2 голосов
/ 09 ноября 2010

Я перестроил огромный репозиторий SVN (более 350 ГБ - заняло более 11 дней).Как я могу проверить новый репо против существующего.Я попытался "svn ls" на обоих, и они одинаковы - но это просто дамп корневого каталога.Есть ли лучшие способы сделать это, или я просто должен сделать случайные тесты?К вашему сведению, в репозитории более 600 КБ ревизий и 16 КБ + папок в корневом каталоге.

Ответы [ 4 ]

1 голос
/ 30 мая 2012

Я хотел что-то подобное, чтобы проверить svn-репозиторий с его svnadmin sync clone-copy-репозиторием. Для каждой ревизии с номером $ r = 1 (или 0) до HEAD (svnlook младший) я сделал следующее:

svnadmin dump -q --incremental --deltas -r $r /path/to/repo1 > source.txt
svnadmin dump -q --incremental --deltas -r $r /path/to/repo2 > target.txt
diff --text --ignore-matching-lines='^\(UUID: [0-9a-f-]\+\|Prop-delta: true\|Prop-content-length: [0-9]\+\|Content-length: [0-9]\+\|PROPS-END\|\s*\)$' source.txt target.txt

Примечание: если source.txt больше 1 ГБ, я пропускаю diff с предупреждением, иначе diff занимает слишком много памяти. Когда-нибудь, возможно, я разделю ввод diff на куски для больших дампов. Я также должен был добавить --deltas или у меня возникли некоторые ложные различия в информации о недвижимости.

Я думаю, что это работает, как я хочу, и дает мне некоторую уверенность (на основе дампа svnadmin), что синхронизация svnadmin работает правильно.

С уважением,

  • Mark
1 голос
/ 09 ноября 2010

svn ls -R создает дамп каждой папки, а не только корневой каталог. Но это не гарантирует, что показанный контент действительно действителен.

Одна вещь, которую вы должны сделать, это проверить все: от обоих репозиториев до двух чистых каталогов и выполнить рекурсивное сравнение в обоих деревьях каталогов (конечно, за исключением подпапок .svn). Если вам нужен совет для последнего шага, сообщите нам, с какой ОС вы работаете.

Конечно, это не проверяет историю версий, но гарантирует, что, по крайней мере, ничего из головной версии не пропущено.

Чтобы сделать некоторые выборочные проверки для истории версий, проверьте некоторые старые версии (например, некоторые помеченные версии) и сравните их так же, как описано выше.

1 голос
/ 09 ноября 2010

Вы должны сравнить репозитории на уровне файлов, а не на стороне клиента svn ... потому что, если вы создали их с помощью цикла дампа / загрузки, они должны быть идентичными, за исключением новых ревизий, добавленных во время цикла загрузки ... так я бы посоветовал сделать различие между двумя деревьями репозитория ... с помощью инструмента сравнения Unix, если вы работаете в Unix ... но сравнение 350 ГБ займет время, но затраты придется заплатить ...

diff -r Repos1 Repos2

Должен быть пустой результат, кроме новых ревизий ...

Или вы можете сделать второй дамп svnadmin Repos2> repos2.dump и сравнить его с тем, который вы использовали для его создания. Результат должен быть одинаковым ... (кроме новых ревизий) ...

Или напишите сценарий проверки количества (или всех?) Ревизий из обоих репозиториев и проведите сравнение на этом уровне .... но я предполагаю, что это займет больше времени ...

1 голос
/ 09 ноября 2010

Вы можете записать журнал каждого репо в файл и просмотреть файлы журнала.

...