2010-11-09 4 views
2

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

ответ

1

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

diff -r Repos1 Repos2 

Должен быть пустым результатом для новых revsions кроме ...

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

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

1

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

1

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

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

Это, конечно, не проверяет историю версий, но гарантирует, что, по крайней мере, нет ничего из недостатка главы.

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

1

Мне нужно что-то похожее, чтобы проверить репозиторий svn на его хранилище sonnmin sync clone-copy. Для каждого пересмотра числа $ г = 1 (или 0) в ГОЛОВЫ (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 на куски больших отвалов. Я также должен был добавить --deltas, или я закончил с некоторыми ложными различиями для информации о свойствах.

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

С уважением,

  • Марк
Смежные вопросы