Folosesc SVN de multă vreme şi îşi face treaba bine. Dar, din când în când primeam erori de genul:

svn: Connection closed unexpectedly

urmate de

svn: Berkeley DB error for filesystem '/path/to/repo/db' while opening environment:
svn: Permission denied

şi altele asemănătoare. Până azi, reparam erorile cu un mic script:

svnadmin recover /path/to/repo/
chown -R svn.svn /path/to/repo/
chmod -R g+w /path/to/repo/

În ultimul timp însă, frecvenţa erorilor s-a înmulţit şi a devenit insuportabil să faci un update sau commit.

Aşa că... am început să caut o soluţie mai bună decât scriptul meu. Căutările au început de la documentaţia oficială unde, căutând după Berkeley DB am aflat că există un alt layer disponibil pentru stocarea datelor, layer care m-ar scăpa de acele erori. Astfel, am început migrarea către FSFS(layer-ul de care vorbeam) şi după încă două minute de citit documentaţia, am creat următorul script:

cp -R -p /path/to/repo/ /path/to/backup/repo/ #inainte de toate, facem un backup
svnadmin dump /path/to/repo/ > /tmp/repo_dump
rm -rf /path/to/repo/
svnadmin create /path/to/repo/ --fs-type fsfs #facem un repo nou, cu FSFS
svnadmin load /path/to/repo/ < /tmp/repo_dump
rm -rf /tmp/repo_dump

După alte câteva minute de aşteptare (repo mare), am obţinut ce vroiam plus o reducere a spaţiului utilizat pe disc cu aprox ~35% (irelevant, dar merită menţionat :P ). Acuma nu-mi rămâne de făcut decât să repet aceeaşi chestie de vreo 5 ori, pentru toate proiectele.

Ps: FSFS e setat ca layer de stocare implicit începând cu Subversion versiunea 1.2 (versiunea actuală a ajuns cu numărătoarea la 1.4).