Monotone je distribuovaný verzovací systém s otevřeným zdrojovým textem.

Monotone sleduje revize souborů, seskupuje sady revizí do changesetů a sleduje historii včetně přejmenování. Preferuje integritu před výkonností. Monotone je navržen jako distribuovaný systém a intenzivně využívá kryptografická primitiva pro sledování revizí (pomocí kryptografické hašovací funkce SHA-1) a pro autentizaci činností uživatelů (pomocí digitálních podpisů využívajících RSA).

Návrh Na rozdíl od Apache Subversion používá Monotone distribuovaný přístup k verzování (stejně jako GNU arch a Git). Stejně jako Git a Mercurial používá Monotone používá SHA-1 haše pro identifikaci souborů a skupin souborů, místo obvyklých lineárních čísel revizí. Pro každého uživatele se udržuje jeho vlastní historie revizí, která je uložena v lokální databázi SQLite.

Integrita Před rozsáhlými optimalizacemi ve verzi 0.27 bylo kvůli prvním zkušenostem Monotone často kritizováno pro jeho důraz na správnost před optimalizací. První akcí nového uživatele je obvykle synchronizace (naklonování) rozsáhlé existující databáze Monotone, což je akce, která pro rozsáhlé databáze může trvat hodiny kvůli podrobné validaci a kontrole integrity, jež Monotone provádí, když se přenášejí revize po síti. Po načtení počátečního klonu databáze fungují další činnosti obvykle rychleji. Ale i po roce 2010 existuje prostor pro další optimalizaci některých méně používaných funkcí.

Workflow Silnou stránkou Monotone je jeho podpora používání diverge/merge přístupu, kterého dosahuje mimo jiné tím, že vždy dovoluje provedení commitu před sloučením větví.

Síťový přístup Ačkoli Monotone původně podporoval množství síťových protokolů pro synchronizaci stromů, nyní používá výhradně vlastní protokol nazývaný netsync, který je robustnější a efektivnější a sdílí určité koncepční rysy s rsync a cvsup. (Od verze 0.27 je možné používat netsync protokol přes jakýkoli proud, včetně ssh spojení.) Netsync má vlastní smluvený port přiřazený IANA (4691) a jeho starší verze jsou podporovány zásuvným modulem pro Wireshark. Neexistuje zvláštní Monotone server, protože jakýkoli Monotone klient může fungovat jako server.

Další vlastnosti K dalším vlastnostem Monotone patří:

Dobrá podpora pro internacionalizaci a lokalizaci Přenositelný design, implementace v C++ Vysoká integrita je klíčovým cílem návrhu Monotone může importovat CVS projekty Elektronické podepisování revizí pomocí RSA certifikátů Snadné pro naučení díky sadě příkazů podobných CVS Velmi dobrý při vytváření a slučování větví Dobrá dokumentace Velmi jednoduchá správa Existence stabilních grafických uživatelských rozhraní: guitone, frontend v Qt pro správu pracovních ploch a databáze (podporovaný v systémech MS-Windows a Unix/Linux/MacOS) mtn-prohlížeč, grafický prohlížeč v Gtk2, který umožňuje prohlížení databáze, i na dálku, bez potřeby pracovního stromu (podporované v systémech Unix/Linux/MacOS) Monotone-Viz, grapher historie revizí (podporovaný v systémech MS-Windows a Unix/Linux) TracMtn, Trac plugin pro prohlížení historie a repozitářů Úplná a vyčerpávající knihovna pro Perl, která umožňuje úplně ovládat Monotone pomocí skriptů v Perlu (kterou používá mtn-browse)

Nedostatky Mezi nedostatky Monotone v lednu 2008 patřilo:

Potenciální uživatelé nemohou přistupovat ke vzdáleným repozitářům za proxy (které jsou velmi obvyklé ve firemním prostředí) kvůli použití jiného protokolu než http Výkonnostní problémy při určitých operacích (nejlépe viditelné při počátečním pull)

Milníky V Monotone verze 0.26 byly provedeny velmi rozsáhlé změny ve struktuře interní databáze, včetně zavedení nové struktury nazývané vývojáři Monotone roster. Databáze vytvořenou v Monotone verze 0.26 nelze použít pro výměnu revizí se starší verzí databáze. Starší databáze musí být nejdříve upgradována na nový formát. Nový protokol netsync je nekompatibilní s dřívější verzí Monotone.

Implementace Monotone je implementováno v moderním dialektu jazyka C++ s použitím knihovny Boost, kryptografické knihovny Botan a databázové knihovny SQLite. Monotone podporuje přizpůsobování a rozšiřování pomocí hook funkcí napsaných v jazyce Lua. Proces překladu Monotone je automatizován nástrojem BuildBot a obsahuje množství regresních testů.

Monotone jako inspirace pro Git V dubnu 2005 se Monotone stal předmětem zvýšeného zájmu free a open-source software komunity poté, co jej Linus Torvalds zmínil jako možnou náhradu BitKeeperu pro vývoj jádra Linuxu. V příspěvku v mailing listu pro vývoj jádra Linuxu Torvalds chválil Monotone a kritizoval Subversion (a prakticky všechny verzovací systémy klient-server):

Nakonec se namísto použití Monotone Torvalds rozhodl napsat vlastní verzovací systém, Git. Návrh Gitu používá některé myšlenky z Monotone, ale oba projekty nesdílí žádný zdrojový kód. Git je mnohem více zaměřen na vysokou výkonnost, která vyplynula z Linusovy dlouhodobé zkušenosti s distribuovaným vývojem jádra Linuxu, na kterém spolupracuje s mnoha autory. Torvalds později okomentoval design a výkonnost Monotone:

Cherry-picking Klíčovým problémem, o kterém se diskutovalo, bylo, zda náhrada BitKeeperu má podporovat operaci cherry-pick umožňující, aby správce kódu při schvalování určité sady záplat zamítal vybrané jednotlivé záplaty. Torvalds argumentoval tím, že tento přístup „vede k nesprávné dynamice a psychologii v systému“, protože přesunuje zátěž na správce, místo aby autoři kódu vynaložili větší úsilí na udržování svého stromu bez odpadků. Tvrdil, že odmítání cherry-pick jako vlastnosti v Monotone je správné, ale není dostatečně důsledné, aby umožnilo snadné „zahazování“ nečistých pracovních stromů poté, co splnily svůj účel. Torvalds také uvedl, že Monotone v té době nedosahoval výkonnosti potřebné pro projekt tak velký jako je vývoj Linuxového jádra.

Tento argument je v rozporu s vnímáním mnoha vývojářů, že použití funkce cherry-pick je pokročilá vlastnost, kterou musí verzovací nástroj podporovat. Jiné SCM nástroje, jako například Darcs, jsou v této oblasti obzvláště silné. V roce 2010 Git i Monotone již určitou dobu cherry-picking podporovaly.

Podpora Podpora pro Monotone je dostupná v mailing listech, na IRC a na podpůrné wiki.

Uživatelé Monotone GENESIS I2P

Odkazy Reference

Související články Verzování Git Apache Subversion

Externí odkazy Oficiální web Podpůrná wiki ViewMTN frontend pro Monotone Monotone-viz, prohlížeč repozitářů pro Monotone v GTK+ Další nástroje pro Monotone

Kategorie:Systémy pro správu verzí Kategorie:Software skriptovatelný v jazyce Lua Kategorie:Svobodný software naprogramovaný v C++ Kategorie:Software pod licencí GPL