Когда то давно в одной из контор был один репозиторий на все проекты.
в принципе, это было довольно удобно, тк все хранится в одной базе.
Но столкнулись с проблемой. непонятно почему, база начала сыпаться именно в тот момент когда было решено провести разделение репозитория на несколько.
Для начала нужно было найти все точки разрыва, если они есть.
найдем первый разрыв:
В моем случае из 8600 ревизий, первый нашелся быстро… 2300ая ревизия.
Далее найдем еще точки:
получили еще одну. 3459.
и еще найдем.
больше ошибок не нашлось.
Теперь делаем дампы живых ревизий.
s
Теперь делаем деление репозиториев на проекты.
проект 1:
проект 2:
по аналогии и третий так же.
далее создаем репозиторий для первого проекта:
и выгружаем дампы:
и здесь могут объявится ошибки типа:
1. файл уже есть
2. как это не пародоксально — файла нет.
в первом случае все просто — заходим в репозиторий, например, «черепахой» и удаляеем этот мешающий файл.
во втором случае придется делать отсев в дампах
и потом его выгружать в репозиторий.
Вот в общем то и все.
svn svn://server/
some1
some2
some3
в принципе, это было довольно удобно, тк все хранится в одной базе.
Но столкнулись с проблемой. непонятно почему, база начала сыпаться именно в тот момент когда было решено провести разделение репозитория на несколько.
Для начала нужно было найти все точки разрыва, если они есть.
найдем первый разрыв:
svnadmin dump --incremental -r0:HEAD c:\path\to\repo > test.dmp
В моем случае из 8600 ревизий, первый нашелся быстро… 2300ая ревизия.
Далее найдем еще точки:
svnadmin dump --incremental -r2301:HEAD c:\path\to\repo > test.dmp
получили еще одну. 3459.
и еще найдем.
svnadmin dump --incremental -r3460:HEAD c:\path\to\repo > test.dmp
больше ошибок не нашлось.
Теперь делаем дампы живых ревизий.
s
vnadmin dump --incremental -r0:2299 c:\path\to\repo > dump(0-2299).dmp
svnadmin dump --incremental -r2301:3458 c:\path\to\repo > dump(2301-3458).dmp
svnadmin dump --incremental -r3460:HEAD c:\path\to\repo > dump(3460-HEAD).dmp
Теперь делаем деление репозиториев на проекты.
проект 1:
svndumpfilter include /some < dump(0-2299).dmp > some-1.dmp
svndumpfilter include /some < dump(2301-3458).dmp > some-2.dmp
svndumpfilter include /some < dump(2301-3458).dmp > some-3.dmp
проект 2:
svndumpfilter include /some2 < dump(0-2299).dmp > some2-1.dmp
svndumpfilter include /some2 < dump(2301-3458).dmp > some2-2.dmp
svndumpfilter include /some2 < dump(2301-3458).dmp > some2-3.dmp
по аналогии и третий так же.
далее создаем репозиторий для первого проекта:
svnadmin create c:\path\to\some
и выгружаем дампы:
svnadmin load c:\path\to\some < some-1.dmp
svnadmin load c:\path\to\some < some-2.dmp
svnadmin load c:\path\to\some < some-3.dmp
и здесь могут объявится ошибки типа:
1. файл уже есть
2. как это не пародоксально — файла нет.
в первом случае все просто — заходим в репозиторий, например, «черепахой» и удаляеем этот мешающий файл.
во втором случае придется делать отсев в дампах
svndumpfilter exclude /chto/ne/nawlos < some-1.dmp > some-11.dmp
и потом его выгружать в репозиторий.
Вот в общем то и все.