Darcs - Darcs
Původní autoři | David Roundy |
---|---|
Vývojáři | Guillaume Hoffmann a kol. |
První vydání | 3. března 2003[1] |
Stabilní uvolnění | 2.16.2 / 21. srpna 2020[1] |
Úložiště | |
Napsáno | Haskell |
Operační systém | Unix, Linux, BSD, Jablko Operační Systém Mac, SLEČNA Okna |
Typ | Řízení verzí |
Licence | GNU GPL |
webová stránka | Darcs |
Darcs je řízení distribuované verze systém vytvořený David Roundy. Mezi klíčové vlastnosti patří možnost zvolit, které změny mají být přijaty z jiných úložišť, interakce s jinými místními (na disku) úložišti nebo vzdálenými úložišti prostřednictvím SSH, HTTP nebo e-mail a neobvykle interaktivní rozhraní. Vývojáři také zdůrazňují použití pokročilých softwarových nástrojů pro ověřování správnosti: expresivní typový systém z funkční programovací jazyk Haskell vynucuje některé vlastnosti a randomizované testování pomocí Rychlá kontrola ověřuje mnoho dalších.[2] Jméno je a rekurzivní zkratka pro Pokročilý systém kontroly revizí Darcs.[3]
Modelka
Darcs považuje záplaty za občané první třídy. Pro uživatele lze úložiště považovat za sadu oprav, kde každá oprava nemusí být nutně uspořádána s ohledem na jiné opravy, tj. Sada oprav je pouze částečně objednaná sada. V mnoha případech mohou být patche nezávisle přenášeny mezi různými úložišti.
Mnoho větvení, slučování a operace sběru třešní, které by vyžadovaly další příkazy se systémy založenými na snímcích, jako je Git nebo Mercurial lze provést přímo pomocí Darcse obvyklými příkazy „pull“ a „push“. Pokud jde o uživatelské rozhraní, znamená to, že Darcs má méně příkazů. Tyto příkazy jsou interaktivnější: lze si přesněji vybrat, které patche si chtějí vyměnit se vzdálenými úložišti.
Opravy úložiště jsou lineárně seřazeny. Darcs automaticky vypočítá, zda lze změnit pořadí oprav (operace zvaná komutace) a jak na to. Tyto výpočty implementují takzvanou „teorii patchů“.
Oprava Darcs může obsahovat změny následujících druhů:
- změny vedení,
- vytváření a mazání souborů a adresářů,
- přesun souborů a adresářů,
- substituce slov (obvykle se používá při refaktoringu kódu, například přejmenujte všechny výskyty „foo“ na „bar“ v daném souboru).
Pojem závislosti mezi opravami je definován syntakticky. Intuitivně oprava B záleží na další záplatě A -li A poskytuje obsah, který B upravuje. To znamená, že opravy, které upravují různé části kódu, jsou standardně považovány za nezávislé. K řešení případů, kdy to není žádoucí, umožňuje Darcs uživateli určit explicitní závislosti mezi opravami.
Od verze 2.10 používá Darcs rozdíl trpělivosti ve výchozím stavu.
Dějiny
Darcs se vyvinul z úsilí Davida Roundyho navrhnout nový formát opravy pro GNU arch v červnu 2002. Tyto diskuse nevedly k tomu, že by se nějaký kód zavázal k Archovi, ale vedly ke koncepci teorie oprav. Po napsání původní verze Darcsu v C ++, Haskell verze byla napsána na podzim 2002 a pro veřejnost byla vydána v dubnu 2003. Darcs 2.0 byl vydán v dubnu 2008 a představil robustnější formát úložiště a novou sémantiku patchů nazvanou „darcs-2“ zaměřenou na minimalizaci exponenciálních problémů se slučováním .[4] Současná vývojová strategie se zaměřuje na implementaci optimalizací a přidání nových funkcí při zachování stejného formátu úložiště.
Nedostatky
Darcs byl kritizován z důvodu výkonu.[5][6] Jeden z nejpozoruhodnějších problémů byl spojen s algoritmem sloučení v Darcs 1.x, který mohl provádět exponenciální práci ke sloučení některých konfliktů. Ačkoli problém nebyl v Darcsu 2 zcela opraven,[7] frekvence exponenciálních sloučení byla snížena. Stále zůstávají chyby, ve kterých selže sloučení rekurzivních konfliktů.[8]
Viz také
Reference
- ^ A b "Seznam změn pro darce". Hackování. Citováno 2018-06-24.
- ^ Roundy 2005, str. 2: „Jedním z problémů, které jsem měl při počátečních darech C ++, bylo to, že jsem neměl žádný testovací kód jednotky. Během dvou týdnů od prvního záznamu darců jsem začal používat QuickCheck k testování funkcí patchů a ve stejný den jsem opravil chybu, kterou QuickCheck objevil. Díky funkci QuickCheck lze velmi snadno definovat vlastnosti, které funkce musí mít, a které se poté testují s náhodně generovanými daty. “
- ^ Roundy, David (2008-10-21), „dává přednost rekurzivní zkratce (sic) před trapnou“, Darcs (Commit), Darcs Hub.
- ^ "Dva", Darcs
- ^ Marlow, Simon (7. března 2007), „Aktuální stav Darců“, Uživatelé Darcs (seznam adresátů), OSUOSL.
- ^ Fendt, Robert (9. ledna 2009), „DVCS Round-Up: Jeden systém, který jim vládne?“, Síť vývojářů, 1, Linux Foundation, archivovány z originál dne 28. 2. 2009.
- ^ "ConflictsFAQ", Wiki, Darcs.
- ^ "Issue 1520 Irrefutable pattern failed for pattern Data.Maybe.Just a2", Sledování chyb, Darcs.
- Roundy, David (2005), „Darcs: správa distribuovaných verzí v Haskellu“, Sborník workshopů ACM SIGPLAN 2005 o Haskellovi, Tallinn, Estonsko, s. 1–4, doi:10.1145/1088348.1088349, ISBN 1-59593-071-X