Versiohallinnan varmuuskopiointi on perinteisesti hankalaa. Esimerkiksi Subversion käyttää keskitettyjä repositoryja, jotka muistuttavat ominaisuuksiltaan tietokantoja. Tietokantojakin on vaikea varmuuskopioida niiden ollessa jatkuvassa käytössä. Tätä varten Subversionissa on erillinen komento "svnadmin hotcopy", jolla repositorysta voi tehdä kopion varmuuskopiointia varten.
Git on puolestaan luonteeltaan hajautettu, joten varmuuskopiointi on helppo toteuttaa normaalilla push-toiminnallisuudella. Itse rakensin hiljattain järjestelmän, joka muodostuu seuraavista osista:
- Keskitetty varmuuskopiointipalvelin, jossa on yhteinen käyttäjätunnus ja hakemisto varmuuskopioiduille repositoryille.
- Joukko muita palvelimia, joilla sijaitsee paikallisia Git-repositoryja erilaisten projektien tarpeiden mukaan.
Kuhunkin varmuuskopioitavaan Git-repositoryyn lisätään vakioitu backup-remote:
git remote add backup ssh://xxx@yyy.zzz/backup/project.git
Sen jälkeen kullakin projektipalvelimella ajetaan säännöllisesti cronjobia, joka puskee repositoryjen uusimmat muutokset backup-remoteen:
git push backup --mirror
Näin on toteutettu keskitetty varmuuskopiointi ilman sen kummempia rsync- tai hotcopy-virityksiä. Uusia repositoryja on helppo lisätä varmuuskopioitavaksi samaa keskitettyä käyttäjätunnusta käyttäen. Varmuuskopiointipalvelin hoitaa ne sitten talteen nauhalle tai jonnekin muualle.