Monotone

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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í. +more 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í. +more 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í. +more 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. +more27 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í: ** [url=https://web. archive. +moreorg/web/20080115062334/http://guitone. thomaskeller. biz/]guitone[/url], frontend v Qt pro správu pracovních ploch a databáze (podporovaný v systémech MS-Windows a Unix/Linux/MacOS) ** [url=http://www. coosoft. plus. com/software. html]mtn-prohlížet[/url] , 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) ** [url=https://web. archive. org/web/20170510144151/http://oandrieu. nerim. net/monotone-viz/]Monotone-Viz[/url], grapher historie revizí (podporovaný v systémech MS-Windows a Unix/Linux) ** [url=http://tracmtn. 1erlei. de]TracMtn[/url], 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. +more 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. +more 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. +more 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ů. +more 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é. +more 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

[url=http://www. monotone. +moreca]Oficiální web[/url] * [url=http://wiki. monotone. ca]Podpůrná wiki[/url] * [url=http://viewmtn. 1erlei. de]ViewMTN frontend pro Monotone[/url] * [url=https://web. archive. org/web/20060829084117/http://oandrieu. nerim. net/monotone-viz/]Monotone-viz, prohlížeč repozitářů pro Monotone v GTK+[/url] * [url=http://wiki. monotone. ca/InterfacesFrontendsAndTools]Další nástroje pro Monotone[/url].

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

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top