Wie erklären Sie die Bedeutung der Verwendung eines [verteilten] Versionskontrollsystems für jemanden, der nicht im CS-Bereich tätig ist? [geschlossen]


13

Ein gutes Beispiel für jemanden, der zu dieser Beschreibung passt, könnte ein Projektmanager sein.

Ich wurde neulich von meinem Chef gefragt: "Was ist das für ein Github-Ding und warum ist es wichtig?" Er hat einige proprietäre Projekte, daher würde er privates Hosting benötigen, und es fiel mir schwer, Folgendes über das Übliche hinaus zu erklären: VCS machen die Zusammenarbeit trivial, bieten einen Verlauf und ein "Backup" aller Ihrer Daten und ermöglichen es Ihnen, atomare Änderungen in einer Codebasis aufzuzeichnen . In meinen Gedanken dachte ich: "Es ist fast so, als müsste man ein DRVS verwenden, um wirklich zu verstehen, wie nützlich es ist."

Am Ende habe ich ihn auf BitBucket hingewiesen, weil Sie dort unbegrenzt viele private Repositorys haben (ich musste sogar erklären, was ein Repository ist).

Hat jemand wirklich gute konkrete Beispiele dafür, wie ein VCS seinen Arsch gerettet oder das Leben erleichtert hat? Wie würden Sie einen DVSC an jemanden verkaufen, der mit Programmieren nicht vertraut ist, der aber kein Programmierer von Beruf ist?


1
Haben Sie gesehen, warum ist GIT besser als SVN
MarkJ

4
Geht es um VCS im Allgemeinen oder um Distributed V Non Distributed?
JeffO

2
Schrauben Sie seine Festplatte am Morgen ab und legen Sie sie in Ihren Schreibtisch. Dann wird er die Wichtigkeit erkennen.
Andrew T Finnell

Antworten:


6

Die Versionskontrolle eignet sich hervorragend für (mindestens) drei Dinge: Sichern, Code zwischen Entwicklern austauschen, Fehler finden und beheben und den Fortschritt verfolgen.

  1. Backup . Wenn nichts anderes, ist es Backup auf Steroiden. Sie haben den gesamten Entwicklungsverlauf, jedes Commit ist eine Momentaufnahme Ihres gesamten Codes mit einer ID (Versionsnummer), einer Beschreibung, einem Zeitstempel und Benutzerinformationen. Und es ist einfach, Dateien zwischen Revisionen zu vergleichen. Nicht zuletzt ist es schneller als eine einfache Sicherung (nur Dateiänderungen werden gesendet und gespeichert) und enthält wesentlich nützlichere Metadaten. Warum das neu erfinden?

  2. Code zwischen Entwicklern teilen . Wenn mindestens zwei Entwickler gleichzeitig am selben Produkt arbeiten, sehe ich keinen anderen Weg, um Codeänderungen zuverlässig und konsistent zu teilen und zusammenzuführen. Senden von Reißverschlüssen per E-Mail?

  3. Fehler finden und beheben . Wenn Ihre Kunden einen Fehler für eine bestimmte Produktversion melden, können Sie schnell den tatsächlichen Quell-Snapshot abrufen, um ihn zu reproduzieren und zu beheben. Es ist schwierig, Fehler zu reproduzieren, wenn sich Ihre Quelle von der des Kunden unterscheidet. Bitten Sie sie, die ausführbare Datei zu senden, damit Sie sie zerlegen können? Wenn Sie Probleme haben, die Ursache eines Fehlers zu identifizieren, können Sie VCS verwenden, um die genaue Revision zu bestimmen, in der der Fehler aufgetreten ist.

  4. Fortschrittskontrolle . Wenn Sie Ihre Arbeit in Snapshots festschreiben, können Sie (und Ihr Manager) den Fortschritt bei der Implementierung von Funktionen und den Status von offenen Fehlern verfolgen. VC-Systeme lassen sich auch problemlos in Tracking-Systeme und Systeme zur kontinuierlichen Integration integrieren. Es ist nahezu unmöglich, ein Qualitätsniveau für etwas anderes als ein Hobbyprojekt beizubehalten, es sei denn, Sie haben ein VCS.

Sobald Sie alle haben vereinbart, dass keine Software - Entwicklung sollte jemals außerhalb eines VCS getan werden (ich würde es nicht verpassen , auch für ein Hobby - Projekt), dann können Sie Merkmale eines (etwas komplizierter) DVCS (im folgenden Teil aus eklatant kopiert diskutieren Wikipedia ):

  • Jeder Benutzer verfügt über eine eigene lokale Kopie des Repositorys (und effektiv über eine Sicherungskopie).
  • Ermöglicht Benutzern produktives Arbeiten, auch wenn sie nicht mit einem Netzwerk verbunden sind
  • Beschleunigt die meisten Vorgänge, da kein Netzwerk beteiligt ist
  • Ermöglicht die Teilnahme an Projekten ohne Genehmigung der Projektbehörden
  • Ermöglicht private Arbeit, sodass Benutzer ihr Revisionskontrollsystem auch für frühe Entwürfe verwenden können, die sie nicht veröffentlichen möchten
  • Vermeidet es, sich auf eine einzige physische Maschine als einzige Fehlerquelle zu verlassen

+1 für die Erwähnung der Fehlerreproduktion. Daran habe ich noch nie gedacht!
David Cowden

31

"Haben Sie jemals die Schaltfläche" Rückgängig "als nützlich empfunden? Oh, Sie stimmen also zu, dass wir dann eine Versionskontrolle verwenden sollten?"

Als ich mit der Versionskontrolle anfing, war das wichtigste Feature, das mich interessierte, die Möglichkeit, meine Fehler rückgängig zu machen und zu einer früheren Version zurückzukehren. Jeder kann eine Schaltfläche zum Rückgängigmachen schätzen. Zugegebene Versionskontrolle kann viel mehr.


1
Irgendwie ist es angebracht, dass der Benutzer @ Buttons840
David Cowden

9

Beginnen Sie mit den Grundlagen:

Erstens schützt ein VCS Entwickler vor sich selbst und voreinander - wenn es keinem anderen Zweck diente, als es zwei oder mehr Entwicklern zu ermöglichen, relativ sicher auf derselben Codebasis zu arbeiten, wäre es von großem Wert (und ich war in einem Team, in dem das vorherige Team tätig war) Tage Arbeit wurde durch ein wenig nachlässiges Kopieren überschrieben).

Zweitens bietet es einen Audit-Trail - eine Historie - Sie können zurückgehen und sehen, wer was wann geändert hat, und Sie können zurückgehen und gelöschten Code abrufen, weil er nicht mehr benötigt wurde oder angemessen war, wenn sich herausstellte, dass er später benötigt wird alle.

Drittens gibt es Ihnen einen Bezugspunkt - die endgültige Quelle ist der festgeschriebene Code (in der realen Welt ist es etwas komplizierter, insbesondere bei DVCS, aber für diese Diskussion ist es eng genug). Wenn Sie das Repository ordnungsgemäß gesichert haben, sollten Sie die Vermögenswerte des Unternehmens schützen.

Diese drei Dinge sollten "es" für den Verkauf von VCS sein - wenn ein Manager in der oben genannten Zeit keinen ausreichenden Wert sieht, um einen anderen Manager zu finden.

Sobald Sie VCS verkauft haben (das schließlich nur für Entwicklungsteams von Nutzen ist, bei denen die Anzahl der Entwickler größer als Null ist), stellen Sie sich die Frage, warum DVCS beispielsweise SVN oder TFS übertrifft, und die Frage, ob es funktionieren soll im Haus oder zur Nutzung eines gehosteten Dienstes wie Kiln oder Bitbucket oder Github (was privat ist, wenn Sie bezahlen) ist eher tiefer und kontextabhängiger.


5

VCSs

Erklären Sie einfach das Konzept von Backups . Mit Backups können Sie sehen, woran Sie zu einem bestimmten Zeitpunkt gearbeitet haben. Erklären Sie, wie VCS-Programmierer, bevor sie ihre gesamten Projekte zwangsweise kopierten, um im Allgemeinen jede gute und stabile Version zu sichern, die sie hatten. Wenn die Dinge schlecht liefen, hatten sie einen guten Bezugspunkt, wann die Dinge funktionierten, vergleichen Sie sie mit den neuesten Sachen und sehen Sie, wo Sie oder eine andere Person haben Probleme behoben, indem sie sich nur die Unterschiede angesehen haben und nicht die gesamten zwei Sicherungen des Projekts.

Zusammenfassend : Mit VCS können Sie Sicherungen Ihrer Arbeit speichern und nur die Unterschiede zwischen Sicherungen erkennen.

DVCSs

Erklären Sie in Bezug auf die verteilte Versionskontrolle, wie die typische Versionskontrolle einen Server und eine Internetverbindung benötigte und dass alle davon müde wurden, weil sie langsamer war und alle an einem einzelnen Backup arbeiteten. Mit der verteilten Versionskontrolle kann jeder ohne Internetverbindung an seinem eigenen Backup auf seinem Computer arbeiten, und jeder ist froh, weil niemand während der Arbeit an seinem Backup herumwirbelt und sich Sorgen machen kann, dass er seine Arbeit später teilen kann, wenn er fertig ist.

Ein weiterer Vorteil ist, dass im Gegensatz zu einem zentralisierten VCS, bei dem nur eine Sicherung vorhanden ist, auf dem Computer mit der Sicherung weitere vollständige Sicherungen durchgeführt werden müssen (mindestens eine für jeden Entwickler).

Zusammenfassend lässt sich sagen, dass Sie mit DVCS in Ihrem eigenen Backup arbeiten können, ohne dass sich alle auf einem einzigen Server gegenseitig stören müssen, und dass Sie sich um andere Änderungen kümmern müssen, wenn Sie mit Ihren Dingen fertig sind. Außerdem passiert nichts, wenn der Haupt-Repository-Computer Feuer fängt .


Ich denke, es ist typisch für Entwickler, über das schlimmste Szenario nachzudenken. Sie haben eine pathologische Angst davor. Das ist sehr interessant ...
Radu Murzea

Zu viel kühn !!
David Cowden

2

Ich arbeite hauptsächlich mit Ingenieuren (keine Entwickler an sich, aber sie schreiben Code)

Der wichtigste Punkt, wenn ich ihnen die Versionskontrolle erkläre, ist die Möglichkeit, Ihren Code / Ihre Dokumentation / was auch immer rückgängig zu machen und zu verwalten und die Zusammenarbeit mit anderen Entwicklern / Autoren / usw. zu vereinfachen.

Das ist ein gutes Verkaufsargument - und war für mich der Hauptgrund, ein VCS für alle meine Arbeiten zu verwenden, auch die anderen Vorteile: eine Historie zu haben, ein Repo, das leicht gesichert werden kann ...

Die meisten von ihnen mögen die Idee und finden sie sehr nützlich, indem sie sie für ihre Projekte übernehmen (insbesondere, wenn sie mit anderen Ingenieuren zusammenarbeiten).


2

Wenn Sie versuchen, jemanden von etwas zu überzeugen, müssen Sie immer versuchen, es aus ihrer Sicht zu betrachten.

Ihr Projektmanager hat ein einfaches Ziel: Projekte pünktlich und im Rahmen des Budgets abzuschließen.

Wenn Sie derzeit keine Versionskontrolle verwenden, löst Ihr Entwicklungsteam die Probleme, die durch die Versionskontrolle behoben werden, von Hand. Alle diese Probleme wurden durch andere Antworten gut aufgezählt, so dass ich hier nicht darauf eingehen werde.

Was Sie tun müssen, ist Ihrem Projektmanager zu erklären, dass das Team Xjede Woche mehrere Stunden damit verbringt , die Probleme, die GIT automatisch lösen könnte, manuell zu lösen, oder beispielsweise in der 0.1 * XAnzahl der Entwicklerstunden.

Gehen Sie es nicht mit Gründen an, aus denen GIT Ihr Leben oder das Ihrer Mitentwickler einfacher macht. Gehen Sie davon aus, dass GIT Software schneller und billiger ausliefert.


1

Ich mag die Beschreibung von @ Buttons840 als Rückgängig-Schaltfläche für die Codebasis. Es kann auch hilfreich sein, es mit einer (weniger frustrierenden) Version von Word oder der Funktion "Änderungen nachverfolgen" von InDesign zu vergleichen. Nach meiner Erfahrung ist es definitiv weniger notwendig, dass eine Person herumläuft und anderen sagt, dass sie die Dateien X, Y und Z in den nächsten Stunden nicht berühren soll, was praktisch ist, um Dinge zu erledigen.

Ich fand auch die feinkörnigen Versionsinformationen unglaublich nützlich, um Fehler zu beheben / zu umgehen. Ich habe die SVN-Versionsnummer (über die Eigenschaft $ Id) in fast jeder von mir generierten Datendatei gespeichert. Wenn (wann?) Ein Fehler gefunden wird, ist es auf diese Weise trivial, Dateien mit potenziellen Problemen zu identifizieren und neu zu generieren oder den Fehler durch anderen Code zu kompensieren.


1

Woher wissen Sie, wie Sie Ihre Produktionsumgebung neu erstellen können, wenn Sie die Versionskontrolle nicht verwenden?

1 Verschiedene Personen (Tester, Entwickler) suchen an verschiedenen Stellen nach denselben Informationen

Dies führt zu DUPLICATE DATA, das nicht mehr synchron ist.
Die Versionskontrolle ist der einfachste Weg, um doppelte Daten zu beseitigen.

2 Wenn Sie die Versionskontrolle verwenden, können Sie auf einfache Weise sicherstellen, dass die Produktionsumgebung mit der Versionskontrolle übereinstimmt.

Auf diese Weise können Sie leicht feststellen, ob ein Problem auf einen fehlerhaften Build (Prod stimmt nicht mit der Versionskontrolle überein) oder auf einen Design- oder Codierungsfehler (Prod stimmt mit der Versionskontrolle überein) zurückzuführen ist.

Durch die Versionskontrolle ist es einfach, jeder Testumgebung eine Versionsnummer zuzuweisen, und Sie würden natürlich erwarten, dass die Produktion eine niedrigere Versionsnummer als Test oder Entwicklung und Test eine niedrigere Versionsnummer als Entwicklung hat. Wenn dies nicht der Fall wäre, wurde ein Teil des Codes nicht ordnungsgemäß getestet.


0

Auch wenn Sie Software freigeben, ist die folgende Funktion eines VCS ziemlich wichtig: Angenommen, Ihr Kunde findet einen Fehler. Die aktuelle Entwicklung der Software befindet sich wahrscheinlich in einem ganz anderen Zustand als die Version, die der Kunde hat. Vielleicht ist der Fehler jetzt behoben, vielleicht auch nicht, aber auf jeden Fall befindet sich die aktuelle Software nicht in einem Zustand, in dem Sie sie einfach an den Kunden senden können.

Ein VCS macht es trivial, zu der Version zurückzukehren, die dem Kunden geliefert wurde, den von ihm angeforderten Fehler zu beheben, ihn zu erstellen und ihm eine überarbeitete Version zuzusenden. All dies, ohne die aktuelle Entwicklung zu stören, ohne ihm eine Version mit unvollendeten / instabilen Funktionen oder zusätzlichen Fehlern ausliefern zu müssen, die aufgrund der neuen unvollendeten Entwicklung eingeführt wurden.

Darüber hinaus erleichtert Ihnen ein VCS das Portieren dieses Fixes in den neuen Entwicklungszweig, wenn der Fehler auch dort noch vorhanden ist.

Durch starke Disziplin können Sie dies wahrscheinlich ohne ein VCS für ein sehr kleines Team schaffen, aber wenn Sie eines verwenden, sparen Sie Zeit und letztendlich Geld. Höchstwahrscheinlich hilft es Ihnen auch, Ihre Kunden zu halten.


0

Wenn in Ihrem Unternehmen mehr als zwei Personen beschäftigt sind, haben Sie wahrscheinlich ein Word- oder Excel-Dokument, das von mehreren Personen bearbeitet wurde. Und manchmal machen diese Personen lokale Kopien, um eine Geschäftsreise zu unternehmen usw. Oder das Dokument wird nach jeder Änderung per E-Mail verschickt.

Wenn Sie über eine solche Datei verfügen, sind die Änderungen einiger Personen in der Vergangenheit verloren gegangen oder gehen in Zukunft verloren. Oder die Leute glauben, sie hätten Veränderungen verloren, können dies aber nicht beweisen. Oder sie möchten sehen, wer wann und warum was geändert hat. Das ist genau das Problem, das ein VCS löst.


2
Abgesehen davon, dass Word / Excel-Dokumente für jedes VCS, das ich je gesehen habe, undurchsichtig sind. Seien Sie vorsichtig, wenn Sie diese Erklärung verwenden!
Peter Taylor

Ich verwende auch gerne das E-Mail-Ketten-Beispiel.
David Cowden

0

Bei der Auswahl von Open-Source-Software / -Bibliotheken ist ein DVCS-Repository bei den Auswahlkriterien auf jeden Fall von Vorteil.

1) Wir können das gesamte Repository klonen, müssen uns keine Sorgen um das Projekt machen oder die Website ist tot.

2) Leute sind eher bereit, Fehlerbehebungen per Pull-Anfrage einzureichen, was zu einer schnelleren Fehlerbehebung bei dringenden Problemen führt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.