Quellcodeverwaltung im Vergleich zur Versionskontrolle?

Welches ist der korrekte Name für ein System, das Versionen des Quellcodes wie SVN oder TFS speichert?

Ich habe es immer Quellcodeverwaltung genannt, aber Orte wie Wikipedia nennen es Versionskontrolle?

Um dies zu komplizierteren Seiten wie dieser zu machen, haben Sie ein Tag für beide?

   
  • Revisionskontrolle ist der allgemeinere Begriff, der für Tools zur Quellcodeverwaltung, aber auch für andere Tools (Word, OpenOffice, …) verwendet wird. Es verweist auf eine Version.

  • Quellcodeverwaltung bietet Versionskontrolle mit Verzweigungen und Zusammenführungen, die nicht immer in allen Revisionstools verfügbar sind (Word ist keine Quellcodeverwaltung, bietet jedoch Versionskontrollfunktionen)

  • Versionskontrolle ist ein allgemeinerer Begriff als die Quellcodeverwaltung, da sie die Version von allem verwaltet (Quellen, Binärdateien oder jede Art von Dokumenten).

Hinweis: SCM steht für Source Code Management, aber auch für Software Code Management, um dieselbe Idee widerzuspiegeln (nicht nur “Quellen” werden verwaltet).
Plus SCM führt den Begriff der Abhängigkeiten zwischen einer Gruppe von Dateien ein.
Und es kann auch den Begriff des Änderungslebenszyklus enthalten (eine Änderung starten, eine Änderung schließen, …), was zu einem Änderungsanforderungssystem führt.

Ich mag es so zu denken:

Revisionskontrolle ist was sie tun .

Source Control ist, wofür ich sie verwende.

🙂

Es gibt drei Synonyme, die fast das Gleiche beschreiben:

  1. Versionskontrolle Behandelt Revisionen (Dokument- / Artefakt-Überprüfungen und nachfolgende Versionen von Dokumenten / Artefakten) oder Zahlen (als Abstraktion des Revisionskonzepts ).
  2. Versionskontrolle Behandelt Text- (Quell-) Dateien, nicht binär . Dieser Unterschied spielt eine große Rolle, solange es viel einfacher ist, Vergleiche durchzuführen und Unterschiede zwischen Textdateien zu erzielen. Es gibt eine ganze Reihe grundlegender Werkzeuge, die mit der Quellcodeverwaltung zusammenhängen: diff , diff3 , patch usw. Diese Werkzeuggruppe kann erweitert werden, um eine diff3 zu bilden. Ein Beispiel für eine solche Lösung ist RCS.
  3. Quellcodeverwaltung Behandelt komplexere Operationen über den Quellcode: Speichern in einem repository mit der Möglichkeit, separate branches erstellen. Es wird auch angenommen, dass Zweige zusammengeführt werden können. Ein weiterer Teil der Quellcodeverwaltung ist das tagging . Ein Problem mit dem Quellcode-Management ist, dass es die Abkürzung SCM hat. Diese Abkürzung wird verwendet, um ein breiteres Spektrum von Aktivitäten zu beschreiben – Software Configuration Management . Es gibt eine Menge Verwirrung, da die Quellcodeverwaltung eine Teilmenge des Softwarekonfigurationsmanagements ist, das sich auch mit Aktivitäten wie Build-Management , Deployment-Management , kontinuierlicher Integration , Abhängigkeitenverwaltung , Release-Management usw. befasst.
  4. Versionskontrolle Es wird als Ersatz für einen Begriff wie Quellcodeverwaltung verwendet , um Mehrdeutigkeiten zu vermeiden. Es beinhaltet beide Konzepte der Revisionskontrolle und der Quellcodeverwaltung und beschreibt damit nahezu das gleiche Konzept. Gegenwärtig werden beide Begriffe Revisionskontrolle , Quellcodeverwaltung durch Versionskontrolle ersetzt, da es geeigneter ist, die breite Palette von Tools (CVS, SVN, Git, Mercurial, ClearCase, Perforce, VSS, etc.) zu berücksichtigen, die beide Aufgaben der Revisionskontrolle lösen Quellcodeverwaltung gleichzeitig.

Bild zur deutlicheren Unterscheidung aller dieser Konzepte:

Bildbeschreibung hier eingeben

  • Versionskontrollsystem (VCS) ist der am häufigsten verwendete Begriff
  • Source Code Management (SCM) wird in git verwendet, ist aber erfunden und kann mit Software Configuration Management verwechselt werden, das bereits in der Softwareindustrie verwendet wird und nicht dasselbe ist.

Die verwendete Terminologie ist nicht sehr präzise. Es gibt einen Artikel, der die fünf relevanten Dimensionen beschreibt. Datenverwaltungstools für die Softwareentwicklung neigen nicht dazu, mehr als drei gleichzeitig zu unterstützen. Wenn Sie alle fünf unterstützen möchten, müssen Sie einen Entwicklungsprozess beschreiben:

  • Version (Semantik: Modifikation)
  • Ansicht (Semantik: Äquivalenz, Ableitung)
  • Hierarchie (Semantik: besteht aus)
  • Status (Semantik: Zulassung, Zugänglichkeit)
  • Variante (Semantik: Produktvarianten)

Peter van den Hamer und Kees Lepoeter (1996) Verwalten von Designdaten: Die fünf Dimensionen von CAD-Frameworks, Konfigurationsmanagement und Produktdatenmanagement, Proceedings of the IEEE, Vol. 12, No. 84, Nr. 1, Januar 1996

Bestimmte Systeme (wie SVN) haben eine Terminologieversion, die für eine Nummer steht, die mit einer bestimmten Menge von Versionen aller Dateien im Repository verknüpft ist. In solchen Systemen bedeutet Revision ( SVN-Revision ) im Wesentlichen Version ( Quellenversion ). Ansonsten sind Versionskontrolle und Versionskontrolle die gleichen Begriffe.

Es gibt keinen “richtigen” Namen, die vier gebräuchlichen Namen sind:

  • Versionskontrollsystem
  • Versionskontrollsystem
  • Versionskontrollsystem
  • Quellcode-Management-System

Ein anderer Name ist: Versionskontrolle

Basierend auf den Tags, die auf dieser Site verwendet werden, ist “Quellcodeverwaltung” die beliebteste (was ganz normal ist, da es sich hier um Programmierung handelt):

  • Quellcodeverwaltung (633 Tags)
  • Versionskontrolle (587)
  • Revisionskontrolle (31)

MIL-STD 973 Beschreibt das Konfigurationsmanagement.

Software Configuration Management wird genau so gemacht.

Eine gute Erklärung von SCM / CM finden Sie im CMMI .

Die Systeme, von denen Sie sprechen, sind Versionskontrollsysteme. Sie versionieren Dinge.

Old SCCS war ein Quellcode-Kontrollsystem.

Quellcode-Kontrollsysteme pflegen die Revisionshistorie.

Angenommen, Sie ändern eine Datei von der Revision

1.1, 1.2, 1.3.

Bei 1.3 veröffentlichen wir “Awesome Edition” von unserem Produkt.

1.3 ist eine Revision AwesomeEdition ist eine Version.

In Systemen wie CVS erfolgen Revisionen als Nummerierungsänderungen und Tags als Versionen. SVN-Typ-Repository-Revisionsnummerierung verwirrt Regierungskunden, die MIL-STD-Verhalten erwarten.

Das Schöne an Standards im Change Management ist, dass es so viele Möglichkeiten gibt.

Wenn die historische Priorität Vorrang hat, sollte der Begriff Source Code Control lauten – siehe http://en.wikipedia.org/wiki/Source_Code_Control_System

Also, wonach genau suchst du jetzt?

Ich glaube nicht, dass es einen richtigen Begriff gibt. Beide Begriffe sowie einige andere, die bereits in anderen Antworten erwähnt wurden, werden im Grunde genommen für dasselbe verwendet.

Personen, mit denen Sie sprechen, verbinden es mit einer etwas anderen Bedeutung, auch wenn Sie dasselbe Wort dafür verwenden – und sie können wirklich genau dasselbe bedeuten, selbst wenn Sie ein anderes Wort verwenden.

Andererseits kann das Vokabular, das um diese Dinge herum verwendet wird, auch anders sein (oder an verschiedene Bedeutungen gebunden sein) in Kreisen um verschiedene Software-Implementierungen dieses Konzepts herum.

Während ich dies schreibe, fällt mir ein, dass dies ein sehr natürliches Phänomen ist – in anderen Bereichen haben Sie auch mehrere Wörter, die im Grunde die gleiche Bedeutung haben – während einige argumentieren, dass es tatsächlich geringfügige Unterschiede gibt, andere würden diese Unterschiede nicht sagen gibt es wirklich oder es lohnt sich nicht darüber nachzudenken. Und es ist nie garantiert, dass, wenn zwei Leute genau das gleiche Wort benutzen, sie wirklich genau das Gleiche meinen.

Ich habe einen Kommentar hinzugefügt, aber ich denke, dass es auch für eine Antwort geeignet ist. Ich habe eine etwas andere Sichtweise als einige der anderen bereits geäußerten Kommentare.

Im Allgemeinen SCM (Software Configuration Management) oder (Source Code Management – abgeleiteter Begriff) ist es leicht zu verstehen, wie es als Oberbegriff verwendet wird, der sowohl Revisionskontrolle als auch andere Techniken wie Baseline-Management umfasst. Siehe http://en.wikipedia.org/wiki/Software_configuration_management . Im Allgemeinen umfassen moderne SCM-Tools, die von CVS bis Git reichen, diese beiden Techniken und viele weitere nützliche functionen wie: Berechtigungssteuerung, Rechteverwaltung, Sicherheitsüberwachung, Anpassung des SCM-Ablaufs (ClearCase), Integration in das Build-System und Problemverfolgung Software, etc … Ich denke, die Liste ist offen, weil alles, was mit Software zu tun hat, geändert wird und das Management hier eintreten kann.

Die Hauptverwirrung kommt daher, wenn man den Unterschied zwischen Versionskontrolle, Versionskontrolle und möglicherweise Quellcodeverwaltung versteht. Zuallererst sind alle Begriffe, die “Quelle” enthalten, alle abgeleiteten Begriffe, dh ich meine, einige Leute werden von all diesen generischen Begriffen (Konfigurationsmanagement – was ist das?) Belästigt und bestehen darauf, dass sie insbesondere mit Quellcode arbeiten und sie nicht sich nicht um andere Anwendungsfälle kümmern; Das ist der richtige Punkt.

Bezüglich Revisionskontrolle und Versionskontrolle denke ich, dass der richtige Ausdruck (im Kontext von Werkzeugen wie SVN, Git) die Versionskontrolle ist. Aus meiner Sicht liegt der Schwerpunkt bei der Revisionssteuerung auf der Verwaltung der Änderung (neben der Versionsverwaltung) der (nicht nur) Quellcodedateien, während bei der Versionskontrolle der Schwerpunkt auf der Verwaltung nur der Versionen der Dateien liegt.

Theoretisch könnte jemand eine Software schreiben, die das Verfolgen und Verwalten von Binärdateien ohne Binärdifferenzen und Merging-Unterstützung ermöglicht und dieses Versionskontrollsystem aufrufen würde. Im Falle von Tools wie SVN, Git erlauben diese zusätzlich die Verwaltung der Änderungen an den Dateien: diffing, merging und im Falle von Git die berühmte Rebasing.

Abschließend enthält die Versionskontrolle die Versionskontrolle und ist besser geeignet für Benennungswerkzeuge wie CVS, SVN, Git; während Source Control ein abgeleiteter Begriff ist und vermieden werden sollte, wenn man einen bestimmten SCM-Aspekt benennen möchte.

 SCM > Revision Control > Version Control