Při pročítání Planet Mozilla jsem narazil na spot tom, jestli má Adium přejít na Monotone. Adium je IM(Instant Messenger) pro OSX, takže to pro mě moc zajímavé není, zato Monotone stojí alespoň za zmínku.
Neměl jsem až tolik času prozkoumávat možnosti Monotone do detailů (natož ho vyzkoušet), ale pár věcí asi stojí za povšimnutí
- Je distribuovaný. V dnešní době vývoji po internetu takřka nutnost.
- Změny ukládá do SQLite databáze
- Základní jednotka verzované informace je změna souboru.
- Nepoužívá číselné označení změn, ale SHA1 hash. Na to si asi člověk musí zvyknout. Na druhou stranu, u distribuovaných systémů ztrácí číselná revize sémantiku (alespoň podle mých zkušeností se SVK). Navíc to otevírá zajímavé možnosti ohledně “atomicity” jednotlivých verzí (dost podstatná změna oproti SVN):
- Změny sad souborů (adresáře) jsou verzované pomocí textového manifestu (což je obyčejný soubor)
- Revize je souhrn změny souborů a změny manifestu. Je popsán (opět) v obyčejném textovém souboru. Historii si pamatuje pomocí odkazů na předchozí revizi (ve formě jejího hashe).
- Veškeré metainformace, “statementy” (ať už logy, nebo informace o branchích) jsou taktéž uloženy v souborech, navíc podepsaných pomocí RSA klíče, takže se jim říká certifikáty, resp. certy.
- Z toho všeho plyne, že MTN si ukládá informace s mnohem větší granularitou, a výsledné hrubé revize “bastlí” dohromady z metainformací (takový subversion ukládá celý jeden commit a metainformace ukládá do revize jako takové ve formě properties).
Vzhledem ke způsobu označování historie (odkazem na předchozí revizi) mohou (a bežne vznikají) něco jako mikrobranche (nazývané “forky”) – každý si může bez problémů commitnout svou verzi změn, a systém nemá problém s tím že má v aktuálním branchi víc “head” revizí. Dokonce je to mnohdy výhodnější – můžete commitnout vždy (i bez předchozího updatu) a případný fork vyřešit až potom (nestane se že musíte řešit konflikty v kódu který jste ještě necommitli).
Bohužel má Monotone (ostatně, jako mnoho jiných verzovacích systémů) pro mne jeden závažný nedostatek – chabou či žádnou integraci v GUI nástrojích či IDE. Příkazová řádka je OK a nějaké nástroje (například pro vizualizaci stromu revizí) také jsou, ale schází mi integrace v Eclipse… takže dál budu používat kombinaci SVN+SVK+Subclipse.