GNU arch
| {{#if: | | {{#invoke:WLink|getArticleBase}} }}
{{#if: | | ||||||||
|---|---|---|---|---|---|---|---|---|
colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | |
{{#if: {{#invoke:Wikidata|claim|P154}} |
| ||||||||
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
}} }}{{#if: | | ||||||||
| {{{Screenshot}}}{{#if: | {{{Beschreibung}}} }}| }} | ||||||||
| Basisdaten
{{#if: | | ||||||||
| Hauptentwickler |
{{#if: {{#invoke:Wikidata|claim|P126}} |
| |||||||
| Maintainer | claim|P126|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |||||||
| Entwickler |
{{#if: {{#invoke:Wikidata|claim|P178}} |
| |||||||
| Entwickler | claim|P178|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |||||||
| Erscheinungsjahr |
{{#if: {{#invoke:Wikidata|claim|P577}} |
| |||||||
| Erscheinungsjahr | claim|P577|references=ja|list=, }} |
{{#if: {{#invoke:Wikidata|claim|P571}} |
| |||||||
| Erscheinungsjahr | claim|P571|references=ja|list=, }}
}} }} }}{{#ifeq: | KEINE_ANGABE || {{#if: | | |||||||
| Aktuelle Version | ({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an. |
format | | {{#timefl:now|date}}}} | {{{2}}} | T._Monat JJJJ}} | lang= {{#switch: | -|=de | #default=de-AT
}} }} }}) }} |
{{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} |
|
| Aktuelle Version | claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} | ({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}} }}{{#ifeq: {{{AktuelleVorabVersion}}} | KEINE_ANGABE || {{#if: | | |||||||
| Aktuelle Vorabversion | ({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an. |
format | {{{AktuelleVorabVersionFreigabeDatum}}} | {{#timefl:now|date}}}} | {{{2}}} | T._Monat JJJJ}} | lang= {{#switch: | -|=de | #default=de-AT
}} }} }}) }} |
{{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} |
|
| Aktuelle Vorabversion | claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} | ({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}} }}{{#if: | | |||||||
| Ausführungsumgebung |
{{#if: |
| |||||||
| Betriebssystem |
{{#if: {{#invoke:Wikidata|claim|P306}} |
| |||||||
| Betriebssystem | claim|P306|parameter=link|references=ja|list=, }}
}} }} }}{{#if: | | |||||||
| Programmiersprache |
{{#if: {{#invoke:Wikidata|claim|P277}} |
| |||||||
| Programmiersprache | claim|P277|parameter=link|references=ja|list=, }}
}} }}{{#if: Versionsverwaltung | | |||||||
| Kategorie | Versionsverwaltung
}}{{#if: | | |||||||
| Lizenz |
{{#if: {{#invoke:Wikidata|claim|P275}} |
| |||||||
| Lizenz | claim|P275|parameter=link|references=ja|list=, }}
}} }}{{#if: | | |||||||
| deutschsprachig | faculty|0}} | ja | nein }}
}}{{#if: | | |||||||
| Sonstiges | {{{Sonstiges}}}
}}{{#if: | | |||||||
|
{{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} |
| ||||||||
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
}} }}{{#if: | | ||||||||
| Dateien | [[c:Category:Created with {{{Dateien}}}|{{{Dateien}}}]]
}} | |||||||
GNU arch ist eine Software zur verteilten Versionsverwaltung. Versionsverwaltungssysteme werden u. a. eingesetzt, um die Veränderungen am Quellcode eines Programmes zu speichern und Entwicklern die Möglichkeit zu geben, gleichzeitig daran zu arbeiten.
Das letzte Release wurde am 20. Juli 2006 veröffentlicht;<ref>Projektseite bei GNU Savannah</ref> die letzte Änderung im Code-Repository fand am 15. Februar 2008 statt.<ref>Source Code Repository</ref>
GNU arch wurde vollständig durch Bazaar, einen Fork ersetzt.
Merkmale
GNU arch verfolgt einen etwas anderen Ansatz als die meisten anderen Versionskontrollen. Jede Revision, d. h. Änderung am Quelltext, ist eindeutig identifizierbar. Dadurch sind Zusammenführungen von an sich komplett ungleichartigen Quellcodebäumen möglich.
GNU arch operiert dezentral, das bedeutet, dass es keine Notwendigkeit für einen zentralen Server mit getrennter Benutzerverwaltung gibt. Stattdessen stellt ein sogenannter Head-Developer, also ein Entwickler an zentraler Position im Projekt, einfach eine Kopie des Projektes via HTTP, FTP, SFTP oder jedem anderen Protokoll, das sich für Dateitransfer eignet, zur Verfügung. Entwickler, die an dem Projekt mitarbeiten möchten, holen sich diese Kopien und erstellen ihre Änderungen, welche an den Head-Developer zurückgesandt werden und von ihm in den offiziellen Quellcodebaum eingepflegt werden.
Um das Verhalten eines zentralisierten Versionskontrollsystems nachzuahmen, könnte der Head-Developer den Mitentwicklern z. B. Shellzugang via SSH bereitstellen. Diese können dann, nach erfolgter Authentifizierung, über Schreibzugriff im Dateisystem den Quellcode direkt ändern.
Andere Features von GNU arch:
- Atomare Commits: Ein Commit findet nur als Transaktion statt, schlägt ein Teil des Commits fehl werden alle Änderungen zurückgenommen. Dies garantiert konsistente Commits.
- Orientierung an changesets: GNU arch verwaltet sogenannte changesets, also Änderungen an mehreren Dateien, anstelle von einzelnen Dateien
- Leichtes und fortschrittliches branching, also das Abspalten und späterem Zusammenfügen von Quellcodebaum-Teilen zwecks gleichzeitiger Bearbeitung
- Fortgeschrittenes Zusammenführen von Changesets
- Kryptographische Signaturen zwecks Authentifizierung
- Datei- und Verzeichnisumbenennung (eine Schwachstelle von CVS)
- Verwaltung von symbolischen Verknüpfungen
Autor
Der Hauptentwickler und Verwalter von GNU arch ist Tom Lord. GNU arch wird auch manchmal tla genannt, einem Akronym für {{#invoke:Vorlage:lang|flat}}. Lord begann mit der Entwicklung von GNU arch als einer Ansammlung von Shellskripten als Alternative zu CVS. 2003 wurde arch ein Teil des GNU-Projekts.
Kritik
Die häufigste Kritik an arch ist seine steile Lernkurve, sogar für Benutzer, die bereits Erfahrung mit anderen Versionskontrollsystemen haben. Archs große Anzahl von Befehlen kann auf neue Benutzer abschreckend wirken.
Auch die etwas ungewöhnliche Dateinamenskonvention FunkyFileNames<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20070808210711
| {{#ifeq: 20070808210711 | *
| {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20070808210711}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20070808210711}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Arch naming conventions from a Layman's standpoint | {{#invoke:WLink|getEscapedTitle|Arch naming conventions from a Layman's standpoint}} | {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20070808210711|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames}}
|| {{#if: || }}
}}{{#if: Arch naming conventions from a Layman's standpoint
| {{#if: {{#invoke:WLink|isBracketedLink|Arch naming conventions from a Layman's standpoint}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.gnuarch.org/gnuarchwiki/FunkyFileNames }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}</ref> stieß auf Kritik. Durch sie wird die Verarbeitung von arch-Dateien in Shellskripten sowie die Portierung von arch auf andere Betriebssysteme erschwert. Auch hat arch den Ruf, nicht sehr gut auf großen Quellcodebäumen zu skalieren.
Weblinks
- Die GNU-Arch-Homepage (englisch)
- Version Control with GNU Arch, LWN.net (englisch)
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Freie Versionsverwaltungssoftware
- GNU-Paket