Versionskontrolle

Im Softwareentwicklung, Versionskontrolle (auch bekannt als Revisionskontrolle, Quellcodeverwaltung, oder Quellcodeverwaltung) ist eine Klasse von Systemen, die für die Verwaltung von Änderungen zu verantwortlich sind Computerprogramme, Dokumente, große Websites oder andere Informationssammlungen. Die Versionskontrolle ist eine Komponente von Software -Konfigurationsverwaltung.[1]

Änderungen werden normalerweise durch eine Nummer oder einen Briefcode identifiziert, als "Revisionsnummer", "Revisionsebene" oder einfach "Revision" bezeichnet. Beispielsweise ist ein anfänglicher Satz von Dateien "Revision 1". Wenn die erste Änderung vorgenommen wird, ist das resultierende Satz "Revision 2" und so weiter. Jede Revision ist mit a verbunden Zeitstempel und die Person, die die Veränderung vornimmt. Überarbeitungen können verglichen, wiederhergestellt und mit einigen Arten von Dateien zusammengeführt werden.[2]

Die Notwendigkeit einer logischen Möglichkeit, Revisionen zu organisieren und zu kontrollieren Schreiben Hat existiert, aber die Revisionskontrolle wurde viel wichtiger und komplizierter, als die Ära des Computers begann. Die Nummerierung von Buchausgaben und von Spezifikationsrevisionen sind Beispiele, die zurück in die nur Druckzeit von Print stammen. Heutzutage sind die fähigsten (sowie komplexesten) Revisionskontrollsysteme diejenigen, in denen verwendet wird Software-Entwicklung, wo ein Team von Menschen gleichzeitig Änderungen an denselben Dateien vornehmen kann.

Versionskontrollsysteme werden am häufigsten als eigenständige Anwendungen ausgeführt Textverarbeitungen und Tabellenkalkulationen, Kollaborativ Webdokumente,[3] und Content -Management -Systemez. B. Wikipedia's Seitenverlauf. Durch die Revisionskontrolle werden ein Dokument in eine frühere Revision zurückkehren, die es für die Ermöglichung der Redakteure von entscheidender Bedeutung ist Spam in Wikis.

Überblick

Im Computer Softwareentwicklung, Revisionskontrolle ist jede Art von Praxis, die sich verfolgt und Kontrolle über Änderungen an verfolgt Quellcode. Softwareentwickler Verwenden Sie manchmal eine Revisionskontrollsoftware, um die Dokumentation zu erhalten und Konfigurationsdateien sowie Quellcode.

Da Teams Software entwerfen, entwickeln und bereitstellen, ist es üblich, dass mehrere Versionen derselben Software auf verschiedenen Websites bereitgestellt werden und die Entwickler der Software gleichzeitig an Aktualisierungen arbeiten. Käfer oder Funktionen der Software sind häufig nur in bestimmten Versionen vorhanden (aufgrund der Behebung einiger Probleme und der Einführung anderer während des Programms). Daher ist es für die Zwecke des Lokalisierens und Fixierens von Fehlern von entscheidender Bedeutung, um verschiedene Versionen der Software abzurufen und auszuführen, um festzustellen, in welcher Version (n) das Problem auftritt. Es kann auch erforderlich sein, zwei Versionen der Software gleichzeitig zu entwickeln: beispielsweise bei einer Version, bei der Fehler behoben sind, aber keine neuen Funktionen (keine neuen Funktionen (Zweig), während in der anderen Version neue Funktionen bearbeitet werden (Rüssel).

Auf einfachster Ebene konnten Entwickler einfach mehrere Kopien der verschiedenen Versionen des Programms behalten und sie angemessen beschriften. Dieser einfache Ansatz wurde in vielen großen Softwareprojekten verwendet. Während diese Methode funktionieren kann, ist sie ineffizient, da viele nahezu identische Kopien des Programms beibehalten werden müssen. Dies erfordert viel Selbstdisziplin seitens der Entwickler und führt häufig zu Fehlern. Da die Codebasis gleich ist, müssen auch eine Reihe von Entwicklern die Erlaubnis zur Readschreiberin erteilt, und dies erhöht den Druck von jemandem, der Berechtigungen verwaltet, damit die Codebasis nicht beeinträchtigt wird, was zu einer stärkeren Komplexität führt. Infolgedessen wurden Systeme zur Automatisierung einiger oder des gesamten Revisionskontrollprozesses entwickelt. Dies stellt sicher, dass der Großteil des Managements von Versionskontrollschritten hinter den Kulissen verborgen ist.

In der Softwareentwicklung, der Rechts- und Geschäftspraxis sowie in anderen Umgebungen ist es außerdem immer häufiger für ein einzelnes Dokument oder ein einzelnes Code -Snippet, das von einem Team bearbeitet werden kann, dessen Mitglieder geografisch verteilt sind und unterschiedlich und sogar entgegengesetzt werden können Interessen. Die anspruchsvolle Revisionskontrolle, die das Eigentum an Änderungen an Dokumenten und Code verfolgt und berücksichtigt, kann in solchen Situationen äußerst hilfreich oder sogar unverzichtbar sein.

Die Revisionskontrolle kann auch Änderungen an verfolgen Konfigurationsdateien, wie die typischerweise in gespeicherten in /etc oder /usr/lokal/etc. auf Unix -Systemen. Dies gibt Systemadministratoren eine andere Möglichkeit, Änderungen leicht vorgenommen zu haben, und die Möglichkeit, auf frühere Versionen zurückzukehren, falls der Bedarf erfolgt.

Geschichte

IBMs OS/360 Iebupdte Das Tool von Software -Update stammt aus dem Jahr 1962, wohl ein Vorläufer für Versionsteuerungssysteme für Versionen. Ein volles System für die Quellcodekontrolle wurde 1972 gestartet. Quellcode -Steuerungssystem für dasselbe System (OS/360). Die Einführung des Quellcode -Steuerungssystems, die am 4. Dezember 1975 veröffentlicht worden war, war in der Vergangenheit impliziert, dass es das erste absichtliche Revisionskontrollsystem war.[4] RCS folgte kurz danach,[5] mit seiner vernetzten Version Gleichzeitige Versionssystem. Die nächste Generation nach dem System des gleichzeitigen Version wurde von dominiert von Subversion,[6] gefolgt von dem Aufstieg von Distributed Revision Control Werkzeuge wie Git.[7]

Struktur

Die Revisionskontrolle verwaltet Änderungen an einer Reihe von Daten im Laufe der Zeit. Diese Veränderungen können auf verschiedene Weise strukturiert werden.

Oft werden die Daten als Sammlung vieler einzelnen Elemente wie Dateien oder Dokumente betrachtet, und Änderungen an einzelnen Dateien werden verfolgt. Dies entspricht den Intuitionen über separate Dateien, verursacht jedoch Probleme, wenn sich die Identität ändert, z. B. während der Umbenennung, Aufteilung oder Verschmelzung von Dateien. Dementsprechend einige Systeme wie GitBetrachten Sie stattdessen Änderungen der Daten als Ganzes, was für einfache Änderungen weniger intuitiv ist, aber komplexere Änderungen vereinfacht.

Wenn Daten, die unter Revisionskontrolle stehen auschecken, Dies spiegelt sich im Allgemeinen nicht sofort im Revisionskontrollsystem (in der Repository), muss aber stattdessen sein eingecheckt oder engagiert sein. Eine Kopie außerhalb der Revisionskontrolle wird als "Arbeitskopie" bezeichnet. Als einfaches Beispiel ist bei der Bearbeitung einer Computerdatei die im Speicher vom Bearbeitungsprogramm gespeicherten Daten die Arbeitskopie, die durch Speichern begangen wird. Konkret kann man ein Dokument ausdrucken, es von Hand bearbeiten und die Änderungen erst später manuell in einen Computer eingeben und speichern. Für die Quellcode -Steuerung ist die Arbeitskopie stattdessen eine Kopie aller Dateien in einer bestimmten Revision, die im Allgemeinen lokal auf dem Computer des Entwicklers gespeichert ist.[Anmerkung 1] In diesem Fall ändert das Speichern der Datei nur die Arbeitskopie, und das Einchecken in das Repository ist ein separater Schritt.

Wenn mehrere Personen an einem einzelnen Datensatz oder Dokument arbeiten, erstellen sie implizit Zweige der Daten (in ihren Arbeitskopien) und entstehen daher Probleme der Verschmelzung, wie nachstehend erläutert. Für eine einfache kollaborative Dokumentbearbeitung kann dies durch die Verwendung verhindert werden Dateisperrung Oder einfach vermeiden, an demselben Dokument zu arbeiten, an dem jemand anderes arbeitet.

Revisionskontrollsysteme sind häufig zentralisiert, mit einem einzigen maßgeblichen Datenspeicher, der Repository, und Check-outs und Check-Ins, die unter Bezugnahme auf dieses zentrale Repository durchgeführt wurden. Alternativ in Distributed Revision Control, kein einzelnes Repository ist maßgeblich und Daten können in jedem Repository überprüft und überprüft werden. Wenn Sie sich in ein anderes Repository einchecken, wird dies als Zusammenführung oder Patch interpretiert.

Grafikstruktur

Beispielverlaufsgrafik eines überarbeitgesteuerten Projekts; Der Kofferraum ist grün, Zweige in Gelb und Diagramm ist aufgrund der Vorhandensein von Zusammenführungen (die roten Pfeile) kein Baum.

Bezüglich Graphentheorie, Revisionen werden im Allgemeinen als Entwicklungslinie angesehen (die Rüssel) Mit Zweigen davon bilden ein gerichteter Baum, der sich als eine oder mehrere parallele Entwicklungslinien (die "Hauptlinien" der Zweige) abzweigen, die von einem Kofferraum verzweigen. In Wirklichkeit ist die Struktur komplizierter und bildet a Regie acyclische GraphenAber für viele Zwecke "Baum mit Merges" ist eine angemessene Annäherung.

Revisionen treten im Laufe der Zeit nacheinander auf und können somit in der Reihenfolge angeordnet werden, entweder durch Revisionsnummer oder durch Zeitstempel.[Anmerkung 2] Revisionen basieren auf früheren Revisionen, obwohl es möglich ist, eine frühere Überarbeitung weitgehend zu ersetzen oder vollständig zu ersetzen, z. B. "Alle vorhandenen Text löschen, neuen Text einfügen". Im einfachsten Fall basiert jede Revision ohne Verzweigung oder Rückgängig Tipp. Im Graphentheorie Begriffe, die jede Revision als Punkt und jede "abgeleitete Revisionsbeziehung" als Pfeil (herkömmlicherweise von älter nach neuer, in die gleiche Richtung wie die Zeit zeigen) zeichnen, ist dies eine Lineare Graph. Wenn es Verzweigungen gibt, basieren mehrere zukünftige Überarbeitungen auf einer früheren Überarbeitung oder einem Rückgängigmachen, sodass eine Revision von einer Revision abhängen kann Regieer Baum (Jeder Knoten kann mehr als ein Kind haben) und hat mehrere Tipps, die den Revisionen ohne Kinder entsprechen ("letzte Revision in jeder Zweigstelle").[Notiz 3] Im Prinzip muss der resultierende Baum keinen bevorzugten Tipp ("Haupt" -Regalrevision) haben - nur verschiedene Überarbeitungen -, aber in der Praxis wird ein Tipp im Allgemeinen als Kopf identifiziert. Wenn eine neue Revision auf dem Kopf basiert, wird sie entweder als neuer Kopf oder als neue Zweigstelle angesehen.[Anmerkung 4] Die Liste der Überarbeitungen von Start -to -Head (in Graphentheorie wird der eindeutige Pfad im Baum, der wie zuvor ein lineares Diagramm bildet) Rüssel oder Hauptlinie.[Anmerkung 5] Umgekehrt kann eine Überarbeitung auf mehr als einer vorherigen Überarbeitung basieren (wenn ein Knoten mehr als eine haben kann Elternteil) Der resultierende Prozess wird a genannt verschmelzen, und ist einer der komplexesten Aspekte der Revisionskontrolle. Dies tritt am häufigsten auf, wenn Änderungen in mehreren Zweigen auftreten (meistens zwei, aber mehr sind möglich), die dann in einen einzelnen Zweig verschmolzen werden und beide Änderungen enthalten. Wenn sich diese Änderungen überlappen, kann es schwierig oder unmöglich sein, sich zu verschmelzen, und erfordern manuelle Eingriffe oder Umschreiben.

In Gegenwart von Zusammenführungen ist das resultierende Diagramm kein Baum mehr, da Knoten mehrere Eltern haben können, sondern stattdessen ein verwurzeltes Wurzeln Regie acyclische Graphen (DAG). Die Grafik ist acyclisch, da Eltern immer rechtzeitig rückwärts sind und verwurzelt sind, weil es eine älteste Version gibt. Angenommen, es gibt einen Koffer Patch, die auf den Kopf (des Kofferraums) angewendet wird, eine neue Revision ohne explizite Bezugnahme auf den Zweig erzeugt und die Baumstruktur erhalten bleibt. Während die tatsächlichen Beziehungen zwischen den Versionen eine DAG bilden, kann dies als Baum und Zusammenschlüsse angesehen werden, und der Kofferraum selbst ist eine Linie.

Bei der Distributed Revision Control können diese in Gegenwart mehrerer Repositories auf einer einzelnen Originalversion (eine Wurzel des Baumes) basieren, es muss jedoch keine ursprüngliche Wurzel vorhanden sein, und somit nur eine separate Wurzel (älteste Überarbeitung) für jedes Repository Zum Beispiel, wenn zwei Personen getrennt an einem Projekt beginnen. Ähnlich in Gegenwart mehrerer Datensätze (mehrere Projekte), die Daten austauschen oder verschmelzen seine eigene Revisionsgeschichte.

Spezialstrategien

Ingenieurrevisionskontrolle, die aus formalisierten Prozessen entwickelt wurden, die auf der Verfolgung von Revisionen frühzeitiger Blaupausen basieren oder Bluelines. Dieses Kontrollsystem erlaubte implizit die Rückkehr in einen früheren Zustand des Entwurfs, in dem bei der Entwicklung des Designs ein technisches Sackgassen erreicht wurde. Eine Revisionstabelle wurde verwendet, um die vorgenommenen Änderungen im Auge zu behalten. Darüber hinaus wurden die modifizierten Bereiche der Zeichnung unter Verwendung von Revisionswolken hervorgehoben.

Die Versionskontrolle ist in Wirtschaft und Recht weit verbreitet. In der Tat gehören "Vertragsredline" und "Legal Blackline" einige der frühesten Formen der Revisionskontrolle,[8] und sind immer noch in Wirtschaft und Recht mit unterschiedlichem Ausmaß an Raffinesse beschäftigt. Die anspruchsvollsten Techniken werden für die elektronische Verfolgung von Änderungen an verwendet CAD -Dateien (sehen Produktdatenmanagement), Ergänzung der "manuellen" elektronischen Implementierung der traditionellen Revisionskontrolle.

Quellmanagementmodelle

Herkömmliche Revisionskontrollsysteme verwenden ein zentrales Modell, bei dem alle Revisionskontrollfunktionen auf einem gemeinsam genutzten Verhältnis stattfinden Server. Wenn zwei Entwickler versuchen, gleichzeitig dieselbe Datei zu ändern, kann es sein, dass die Entwickler die Arbeit des anderen überschreiben. Zentralisierte Revisionskontrollsysteme lösen dieses Problem in einem von zwei verschiedenen "Quellverwaltungsmodellen": Dateisperrung und Versionsverschmelzung.

Atomare Operationen

Eine Operation ist Atomic Wenn das System in einem konsistenten Zustand gelassen wird, auch wenn der Betrieb unterbrochen wird. Das verpflichten Der Betrieb ist in diesem Sinne normalerweise am kritischsten. Commits geben das Revisionskontrollsystem an, eine Gruppe von Änderungen endgültig vorzunehmen und allen Benutzern zur Verfügung zu stellen. Nicht alle Revisionskontrollsysteme haben Atom -Commits; Concurrent Versions System fehlt diese Funktion.[9]

Dateisperrung

Die einfachste Methode zur Verhinderung "gleichzeitiger Zugang"Probleme beinhalten Dateien sperren Daher hat nur ein Entwickler zu einem Zeitpunkt Zugriff auf die zentralen "Repository" -Kopien dieser Dateien. Sobald ein Entwickler eine Datei "überprüft", kann andere diese Datei lesen, aber niemand sonst kann diese Datei ändern, bis dieser Entwickler "in der aktualisierten Version überprüft" (oder die Checkout).

Die Dateisperrung hat sowohl Verdienste als auch Nachteile. Es kann einen gewissen Schutz vor schwierigen Zusammenführungskonflikten bieten, wenn ein Benutzer radikale Änderungen an vielen Abschnitten einer großen Datei (oder einer Gruppe von Dateien) vornimmt. Wenn die Dateien zu lange ausschließlich gesperrt bleiben, können andere Entwickler versucht sein, die Revisionskontrollsoftware zu umgehen und die Dateien lokal zu ändern, wodurch eine schwierige manuelle Verschmelzung erzwingt, wenn die anderen Änderungen schließlich eingleichen. In einer großen Organisation können Dateien sein, können Dateien sein Links "auscheckte" und gesperrt und vergessen, wenn Entwickler zwischen Projekten wechseln - diese Tools können es leicht machen oder nicht, zu sehen, wer eine Datei ausgecheckt hat.

Versionsverschmelzung

Mit den meisten Versionskontrollsystemen können mehrere Entwickler dieselbe Datei gleichzeitig bearbeiten. Der erste Entwickler, der Änderungen am zentralen Repository "einchecken", ist immer erfolgreich. Das System kann Einrichtungen zur Verfügung stellen verschmelzen Weitere Änderungen in das zentrale Repository und bewahren Sie die Änderungen vom ersten Entwickler bei, wenn andere Entwickler einchecken.

Das Zusammenführen von zwei Dateien kann ein sehr empfindlicher Betrieb sein und normalerweise nur dann möglich, wenn die Datenstruktur einfach ist, wie in Textdateien. Das Ergebnis einer Zusammenführung von zwei Bilddateien Möglicherweise führen Sie überhaupt nicht zu einer Bilddatei. Der zweite Entwickler, der im Code überprüft wird Logik Fehler in den Dateien. Diese Probleme beschränken die Verfügbarkeit automatischer oder semi-automatischer Zusammenführungsvorgänge hauptsächlich auf einfache textbasierte Dokumente, es sei denn, eine bestimmte Zusammenführung Plugin ist für die Dateitypen verfügbar.

Das Konzept von a Reservierte Bearbeitung Kann ein optionales Mittel bereitstellen, um eine Datei explizit für den exklusiven Schreibzugriff zu sperren, auch wenn eine Verschmelzungsfähigkeit besteht.

Grundlinien, Beschriftungen und Tags

Die meisten Überarbeitungssteuerungswerkzeuge verwenden nur einen dieser ähnlichen Begriffe (Basislinie, Etikett, Tag), um auf die Aktion der Identifizierung eines Snapshots ("Beschriftung das Projekt") oder den Aufzeichnung des Snapshots ("Probieren Sie es mit der Basislinie aus X"). Typischerweise nur einer der Begriffe Grundlinie, Etikett, oder Schild wird in Dokumentation oder Diskussion verwendet; Sie können als Synonyme angesehen werden.

In den meisten Projekten sind einige Schnappschüsse bedeutender als andere, wie sie, die für veröffentlichte Veröffentlichungen, Zweige oder Meilensteine ​​angezeigt werden.

Wenn beide der Begriff Grundlinie und einer von Etikett oder Schild werden zusammen im selben Kontext verwendet, Etikett und Schild Normalerweise beziehen Grundlinie zeigt die erhöhte Bedeutung eines bestimmten Etiketts oder eines bestimmten Tags an.

Formalste Diskussion über Konfigurationsmanagement Verwendet den Begriff Grundlinie.

Distributed Revision Control

Distributed Revision Control Systems (DRCS) verfolgen einen Peer-to-Peer Kundenserver Ansatz zentraler Systeme. Anstatt ein einzelnes, zentrales Repository, über das Clients synchronisieren, ist die Arbeitskopie jedes Peer der Codebasis a Bona Fide Repository.[10] Die verteilte Revisionskontrolle führt die Synchronisation durch Austausch durch Patches (wechseln) von Peer zu Peer. Dies führt zu einigen wichtigen Unterschieden zu einem zentralisierten System:

  • Es gibt standardmäßig keine kanonische Referenzkopie der Codebasis; Nur Kopien.
  • Gemeinsame Operationen (wie Commits, Ansichtsgeschichte und Rückzugsänderungen) sind schnell, da nicht mit einem zentralen Server kommuniziert werden muss.[1]: 7

Vielmehr ist die Kommunikation nur beim Schieben oder Ziehen von Änderungen an oder von anderen Kollegen erforderlich.

  • Jede Arbeitskopie fungiert effektiv als Remote-Sicherung der Codebasis und seiner Änderungsgeschichte, was einen inhärenten Schutz vor Datenverlust bietet.[1]: 4

Integration

Einige der fortschrittlicheren Revisionskontrollwerkzeuge bieten viele andere Einrichtungen, die eine tiefere Integration in andere Tools und Software-Engineering-Prozesse ermöglichen. Plugins sind oft verfügbar für Ides wie zum Beispiel Oracle JDeveloper, Intellij Idee, Finsternis, Visual Studio, Delphi, Netbeans IDE, Xcode, und GNU EMACS (über vc.el). Fortgeschrittene Forschungsprototypen generieren geeignete Festnutzungsnachrichten,[11] Es funktioniert jedoch nur bei Projekten, die bereits eine große Geschichte haben, da die Begehung von Botschaften sehr von den Konventionen und Eigenheiten des Projekts abhängt.[12]

Gemeinsame Terminologie

Die Terminologie kann von System zu System variieren, einige Begriffe in allgemeinem Gebrauch umfassen jedoch:[13]

Grundlinie
Eine genehmigte Überarbeitung eines Dokuments oder einer Quelldatei, an die nachfolgende Änderungen vorgenommen werden können. Sehen Grundlinien, Beschriftungen und Tags.
Schuld
Eine Suche nach dem Autor und zur Revision, die zuletzt eine bestimmte Zeile geändert haben.
Zweig
Ein Satz von Dateien unter der Versionskontrolle kann sein verzweigt oder gegabelt Zu einem Zeitpunkt, so dass sich von diesem Zeitpunkt an zwei Kopien dieser Dateien mit unterschiedlichen Geschwindigkeiten oder auf unterschiedliche Weise unabhängig voneinander entwickeln können.
Veränderung
A Rückgeld (oder diff, oder Delta) stellt eine spezifische Änderung an einem Dokument unter Versionskontrolle dar. Die Granularität der Modifikation, die eine Änderung betrachtete, variiert zwischen Versionskontrollsystemen.
Änderungsliste
Auf vielen Versionskontrollsystemen mit Atomic Mehrgech-Commits, a Änderungsliste (oder Cl), Änderungssatz, aktualisieren, oder Patch identifiziert den Satz von Änderungen in einem einzigen Komitee gemacht. Dies kann auch eine sequentielle Ansicht des Quellcodes darstellen, die die Prüfung der Quelle zu einer bestimmten ChangeList -ID ermöglicht.
Kasse
Zu Kasse (oder CO) soll eine lokale Arbeitskopie aus dem Repository erstellen. Ein Benutzer kann eine bestimmte Revision angeben oder die neueste erhalten. Der Begriff "Checkout" kann auch als Substantiv verwendet werden, um die Arbeitskopie zu beschreiben. Wenn eine Datei von einem freigegebenen Dateiserver ausgecheckt wurde, kann sie nicht von anderen Benutzern bearbeitet werden. Stellen Sie sich das wie ein Hotel vor, wenn Sie sich auschecken, haben Sie keinen Zugang mehr zu seinen Annehmlichkeiten.
Klon
Klonen bedeutet, ein Repository zu erstellen, das die Revisionen aus einem anderen Repository enthält. Dies entspricht zu drückenoder ziehenin ein leeres (neu initialisiertes) Repository. Als Substantiv können zwei Repositories bezeichnet werden Klons, wenn sie synchron gehalten werden und die gleichen Überarbeitungen enthalten.
Verpflichten (Substantiv)
Ein "Commit" oder "Revision" (SVN) ist eine Änderung, die auf das Repository angewendet wird.
Commit (Verb)
Zu verpflichten (Check-In, CI oder seltener, Installieren, einreichen oder Aufzeichnung) soll die Änderungen in der Arbeitskopie zurück in das Repository schreiben oder zusammenführen. Ein Commit enthält Metadaten, in der Regel die Autoreninformationen und eine Commit -Nachricht, die die Änderung beschreibt.
Konflikt
Ein Konflikt tritt auf, wenn verschiedene Parteien Änderungen am selben Dokument vornehmen und das System die Änderungen nicht in Einklang bringen kann. Ein Benutzer muss beschließen Der Konflikt durch Kombination der Änderungen oder durch Auswahl einer Änderung zugunsten der anderen.
Delta -Komprimierung
Die meisten Revisionskontrollsoftware verwendet Software Delta -Komprimierung, was nur die Unterschiede zwischen aufeinanderfolgenden Versionen von Dateien behält. Dies ermöglicht eine effizientere Speicherung vieler verschiedener Versionen von Dateien.
Dynamischer Stream
Ein Stream, in dem einige oder alle Dateiversionen Spiegel der Versionen des übergeordneten Streams sind.
Export
Exportieren Ist der Akt des Erhaltens der Dateien aus dem Repository. Das ist vergleichbar mit auschecken Außer dass es einen sauberen Verzeichnisbaum ohne die in einer Arbeitskopie verwendete Versionskontrollmetadaten erzeugt. Dies wird häufig vor der Veröffentlichung des Inhalts verwendet.
Bringen
Sehen ziehen.
Vorwärtsintegration
Der Prozess der Verschmelzung von Änderungen im Haupt Rüssel in eine Entwicklungsabteilung (Feature oder Team).
Kopf
Auch manchmal genannt TippDies bezieht sich auf das jüngste Commit, entweder auf den Kofferraum oder auf einen Zweig. Der Kofferraum und jeder Zweig haben seinen eigenen Kopf, obwohl der Kopf manchmal lose verwendet wird, um sich auf den Kofferraum zu beziehen.[14]
Importieren
Import Ist das Kopieren eines lokalen Verzeichnisbaums (das derzeit keine Arbeitskopie ist) zum ersten Mal in das Repository.
Initialisieren
So erstellen Sie ein neues, leeres Repository.
Verengte Deltas
Einige Revisionskontrollsoftware verwendet Software Verengte Deltas, eine Methode, die es ermöglicht, den Verlauf der textbasierten Dateien auf effizientere Weise zu speichern als mit Verwendung Delta -Komprimierung.
Etikett
Sehen Schild.
Sperren
Wenn ein Entwickler Schlösser Eine Datei, sonst niemand kann diese Datei aktualisieren, bis sie freigeschaltet ist. Das Sperren kann durch das Versionskontrollsystem oder über informelle Kommunikation zwischen Entwicklern (auch bekannt als AKA) unterstützt werden soziale Verriegelung).
Hauptlinie
Ähnlich zu RüsselAber für jeden Zweig kann es eine Hauptlinie geben.
Verschmelzen
A verschmelzen oder Integration ist eine Operation, bei der zwei Änderungensätze auf eine Datei oder eine Reihe von Dateien angewendet werden. Einige Beispielszenarien sind wie folgt:
  • Ein Benutzer, der an einer Reihe von Dateien arbeitet, Aktualisierung oder Synchronisation Ihre Arbeitskopie mit Änderungen, die vorgenommen und in das Repository untersucht wurden, von anderen Benutzern.[15]
  • Ein Benutzer versucht es Check-In Dateien, die seit den Dateien von anderen aktualisiert wurden geprüft, und die Revisionskontrollsoftware Zusammenschließt die Dateien automatisch (normalerweise nach dem Auftragen des Benutzers, wenn er mit der automatischen Zusammenführung fortfahren sollte, und in einigen Fällen nur dann, wenn die Zusammenführung klar und vernünftigerweise behoben werden kann).
  • A Zweig wird erstellt, der Code in den Dateien wird unabhängig bearbeitet, und die aktualisierte Filiale wird später in eine einzelne, einheitliche Einheit aufgenommen Rüssel.
  • Eine Reihe von Dateien ist verzweigt, ein Problem, das vor der Verzweigung existierte, wird in einem Zweig behoben, und die Lösung wird dann in den anderen Zweig zusammengefasst. (Diese Art der selektiven Zusammenführung wird manchmal als als bezeichnet Kirschwahl Um es von der vollständigen Zusammenführung im vorherigen Fall zu unterscheiden.)
Fördern
Das Kopieren von Dateiinhalten von einem weniger kontrollierten Ort in einen kontrollierten Ort. Zum Beispiel vom Arbeitsbereich eines Benutzers in ein Repository oder von einem Stream zu seinem übergeordneten Stream.[16]
Ziehen drücken
Kopieren Sie Revisionen von einem Repository in ein anderes. Ziehen wird durch das empfangende Repository initiiert drücken wird von der Quelle initiiert. Bringen wird manchmal als Synonym für verwendet ziehen, oder um a zu bedeuten ziehen gefolgt von an aktualisieren.
Anfrage ziehen
Ein Entwickler bittet andere, ihre "Pushing" -Dänderungen zusammenzuführen.
Repository
Das Repository (oder "Repo") sind dort, wo die aktuellen und historischen Daten von Dateien häufig auf einem Server gespeichert werden. Manchmal auch als a genannt Depot.
Beschließen
Der Akt der Benutzerintervention, um einen Konflikt zwischen unterschiedlichen Änderungen desselben Dokuments zu behandeln.
Reverse Integration
Der Prozess des Zusammenführens verschiedener Teamzweige in den Hauptkoffer des Versionsversionssystems.
Revision
Ebenfalls Ausführung: EIN Ausführung ist jede Formänderung. In SVK ist eine Revision der Zustand zu einem Zeitpunkt des gesamten Baumes im Repository.
Teilen
Der Akt der gleichzeitigen Erstellung einer Datei oder eines Ordners in mehreren Filialen. Wenn eine freigegebene Datei in einer Filiale geändert wird, wird sie in anderen Zweigen geändert.
Strom
Ein Container für verzweigte Dateien, der eine bekannte Beziehung zu anderen solchen Containern hat. Streams bilden eine Hierarchie; Jeder Stream kann verschiedene Eigenschaften (wie Versionen, Namespace, Workflow -Regeln, Abonnenten usw.) aus seinem übergeordneten Stream erben.
Schild
A Schild oder Etikett Bezieht sich auf einen wichtigen Schnappschuss, der in vielen Dateien konsistent ist. Diese Dateien können zu diesem Zeitpunkt alle mit einem benutzerfreundlichen, aussagekräftigen Namen oder einer Revisionsnummer getaggt werden. Sehen Grundlinien, Beschriftungen und Tags.
Rüssel
Die einzigartige Entwicklungslinie, die kein Zweig ist (manchmal auch als Grundlinie, Hauptlinie oder Master bezeichnet[17][18])
Aktualisieren
Ein aktualisieren (oder Synchronisation, aber Synchronisation kann auch eine kombinierte bedeuten drücken und ziehen) Fusioniert Änderungen, die im Repository (zum Beispiel von anderen Personen) in den Lokal vorgenommen wurden Arbeitskopie. Aktualisieren ist auch der Begriff, der von einigen CM -Tools (CM+, PLS, SMS) für das Änderungspaketkonzept verwendet wird (siehe Änderungsliste). Synonym zu Kasse In Revisionskontrollsystemen, bei denen jedes Repository genau eine funktionierende Kopie aufweist (gemeinsam in verteilten Systemen)
Entsperren
ein Schloss freigeben.
Arbeitskopie
Das Arbeitskopie ist die lokale Kopie von Dateien aus einem Repository zu einer bestimmten Zeit oder Überarbeitung. Alle Arbeiten in den Dateien in einem Repository werden ursprünglich auf einer Arbeitskopie durchgeführt, daher der Name. Konzeptionell ist es a Sandkasten.

Siehe auch

Anmerkungen

  1. ^ In diesem Fall sind Bearbeitungspuffer eine sekundäre Form der Arbeitskopie und werden nicht als solche bezeichnet.
  2. ^ Im Prinzip zwei Überarbeitungen können einen identischen Zeitstempel haben und können daher nicht in einer Linie angeordnet werden. Dies ist im Allgemeinen bei separaten Repositories der Fall, ist jedoch auch für gleichzeitige Änderungen mehrerer Zweige in einem einzigen Repository möglich. In diesen Fällen können die Überarbeitungen als eine Reihe separater Zeilen betrachtet werden, eine pro Repository oder Zweig (oder Zweig innerhalb eines Repositorys).
  3. ^ Die Überarbeitung oder das Repository "Baum" sollte nicht mit dem Verzeichnisbaum von Dateien in einer Arbeitskopie verwechselt werden.
  4. ^ Beachten Sie, dass, wenn ein neuer Zweig auf dem Kopf basiert, topologisch kein Tipp mehr ist, da er ein Kind hat.
  5. ^ "Mainline" kann sich auch auf den Hauptweg in einem separaten Zweig beziehen.

Verweise

  1. ^ a b c O'Sullivan, Bryan (2009). Quecksilber: Der endgültige Leitfaden. Sebastopol: O'Reilly Media, Inc. ISBN 9780596555474. Abgerufen 4. September 2015.
  2. ^ Scott, Chacon; Straub, Ben (2014). Pro Git zweite Ausgabe. Vereinigte Staaten: Apress. p. 14.
  3. ^ "Google Dokumente",", Sehen Sie, was in einer Datei geändert wird, Google Inc..
  4. ^ Rochkind, Marc J. (1975). "Das Quellcode -Steuerungssystem" (PDF). IEEE -Transaktionen auf Software -Engineering. SE-1 (4): 364–370. doi:10.1109/tse.1975.6312866. S2CID 10006076.
  5. ^ Tichy, Walter F. (1985). "RCS - Ein System zur Versionskontrolle". Software: Übung und Erfahrung. 15 (7): 637–654. doi:10.1002/spe.4380150703. ISSN 0038-0644. S2CID 2605086.
  6. ^ Collins-Sussman, Ben; Fitzpatrick, BW; Pilato, CM (2004), Versionskontrolle mit Subversion, O'Reilly, ISBN 0-596-00448-6
  7. ^ Loeliger, Jon; McCullough, Matthew (2012). Versionskontrolle mit GIT: leistungsstarke Tools und Techniken für die Entwicklung der kollaborativen Software. O'Reilly Media. S. 2–5. ISBN 9781449345044.
  8. ^ Für technische Zeichnungen siehe Whiteprint#Dokumentkontrollefür einige der im 20. Jahrhundert vorhandenen manuellen Systeme zum Beispiel die Technische Verfahren von Hughes Aircraft, jede Überarbeitung erforderte die Genehmigung durch Lawrence A. Hyland; Siehe auch die von der US -Regierung eingeleiteten Genehmigungsverfahren.
  9. ^ Smart, John Ferguson (2008). Java -Elektrowerkzeuge. "O'Reilly Media, Inc.". p. 301. ISBN 9781491954546. Abgerufen 20. Juli 2019.
  10. ^ Wheeler, David. "Kommentare zu Open Source Software / Free Software (OSS / FS) Software Configuration Management (SCM) -Systemen (SCM)". Archiviert von das Original am 9. November 2020. Abgerufen 8. Mai, 2007.
  11. ^ Cortes-Coy, Luis Fernando; Linares-Vasquez, Mario; Aponte, Jairo; Poshyvanyk, Denys (2014). "Zum automatischen Generieren von Commit -Nachrichten durch Zusammenfassung von Quellcode -Änderungen". 2014 IEEE 14. Internationale Arbeitskonferenz zur Quellcodeanalyse und -manipulation. IEEE. S. 275–284. doi:10.1109/scam.2014.14. ISBN 978-1-4799-6148-1. S2CID 360545.
  12. ^ Etemadi, Khashayar; Monperrus, Martin (2020-06-27). "Über die Relevanz des Cross-Project-Lernens mit den nächsten Nachbarn für die Erzeugung von Botschaften." Verfahren der IEEE/ACM 42. Internationale Konferenz über Software -Engineering -Workshops. Seoul, Republik Korea: ACM. S. 470–475. Arxiv:2010.01924. doi:10.1145/3387940.3391488. ISBN 9781450379632. S2CID 221911386.
  13. ^ Wingerd, Laura (2005). Praktische Perforce. O'Reilly. ISBN 0-596-10185-6. Archiviert von das Original Am 2007-12-21. Abgerufen 2006-08-27.
  14. ^ Gregory, Gary (3. Februar 2011). "Trunk vs. Kopf in Versionskontrollsystemen". Java, Eclipse und andere Tech -Tidbits. Abgerufen 2012-12-16.
  15. ^ Collins-Sussman, Fitzpatrick & Pilato 2004, 1.5: SVN Tour Cycle Resolve: "Das G steht für Fusionged, was bedeutet, dass die Datei zu Beginn lokale Änderungen hatte, die Änderungen aus dem Repository nicht mit den lokalen Änderungen überschneideten."
  16. ^ Konzeptehandbuch (Version 4.7 ed.). ACCUREV. Juli 2008.
  17. ^ Wallen, Jack (2020-09-22). "Github, um den Master ab Oktober durch den Main zu ersetzen: Was Entwickler jetzt tun müssen". TechRepublic. Abgerufen 2022-04-24.
  18. ^ Heinze, Carolyn (2020-11-24). "Warum Github seine Master -Filiale in Main umbenannt hat". Theserverside. Abgerufen 2022-04-24.

Externe Links

  • "Visuelle Anleitung zur Versionskontrolle", Besser erklärt.
  • Waschbecken, Eric, "Quellensteuerung", SCM (wie man). Die Grundlagen der Versionskontrolle.