Wat?
Ik gebruik diverse Windows- en Linuxsystemen op verschillende fysieke locaties door elkaar heen en ik loop daarbij op een vrij simpel probleem: ik heb m'n bestanden niet heel gemakkelijk bij de hand. De oplossing is echter niet zo simpel, aangezien ik een aantal vereisten heb voor die bestanden:- Mijn bestanden moeten centraal beschikbaar en bijwerkbaar zijn via internet, en dit moet vrij vlot werken zolang de verbinding dit toestaat.
- Ik wil van alle bestanden een volledige geschiedenis bijhouden en dus over 10 jaar precies alle bestanden terug kunnen zien zoals ze op dit moment zijn.
- Zonder internetverbinding wil ik toch nog mijn bestanden lokaal kunnen benaderen en wijzigen (en eventueel lokaal revisies toevoegen die ik later synchroniseer met de centrale locatie).
- Ik wil ook gedeeltes van de directory tree kunnen ophalen in plaats van het gehele ding, zoals dit in Subversion mogelijk is.
- Ik wil lokaal niet veel meer schijfruimte kwijt zijn dan nodig is om de bestanden op te slaan.
- Op de centrale locatie wil ik niet meer schijfruimte kwijt zijn dan nodig; zie bijvoorbeeld git die belachelijk hoge deltacompressies behaalt.
- De bestanden moeten slim gesynchroniseerd worden: een kleine wijziging in een bestand van 300MB moet binnen een paar seconden centraal kunnen staan en opgehaald kunnen worden door andere clients.
- De eigenschappen/rechten van/op de bestanden moeten voor zover mogelijk ook opgeslagen worden; symlinks e.d. zijn niet interessant.
- Het geheel moet werken op tenminste Linux- en Windowssystemen.
- Het systeem moet soepel om kunnen gaan met grote(re) bestanden in de range van 100MB tot ongeveer 4GB (uitzonderlijk).
- Het systeem moet soepel om kunnen gaan met een groot aantal bestanden en moet bijvoorbeeld niet 3 minuten lang alle directories aflopen als ik één bestandje van 4 KB probeer in te checken.
- Het liefst moet het systeem niet in elke directory een subdirectory of -bestand plaatsen.
Unison
Met dit tooltje worden op een slimme manier bestanden gesynchroniseerd met een of meerdere servers, waarbij je gemakkelijk directory- en bestandsfilters kunt instellen.Afgekeurd: geen bestandsgeschiedenis, geen compressie op de centrale locatie.
Subversion
Deze 'CVS done right' heeft een prima revisiecontrole en mogelijkheid tot checkouts van subdirectories e.d.Afgekeurd: lokaal wordt 2x zoveel ruimte gebruikt door de zogenaamde 'pristine copies', op de centrale locatie vindt weinig tot geen compressie plaats, slechte ervaringen met grotere bestanden, plaatst in elke directory een .svn subdirectory.
Git
Oorspronkelijk door Linus Torvalds zelf geschreven, onderscheidt deze SCM zich door een bijzonder briljante deltacompressie en performance voor grotere projecten en vele kleine bestanden. Door de opzet van de repositories is het zelfs mogelijk om zonder internetverbinding de bestandsgeschiedenis bij te houden.Afgekeurd: het is niet mogelijk om een gedeelte van de directorystructuur op te halen.
Dus?
Zo op internet gekeken zijn dit de drie tooltjes die het meest worden gebruikt voor homedir versioning, echter dus nog niet compleet geschikt. Git komt angstvallig dicht in de buurt van de ideale tool, maar de onmogelijkheid om een gedeelte van de repository op te halen maakt het helaas onwerkbaar (als ik even 2 tekstdocumentjes wil aanpassen op een niet-standaard locatie wil ik niet een paar gigabyte aan videomateriaal voor andere projecten binnenhalen).Ik ben op zoek naar het ideale tooltje