Ich habe nach geschäftlichen Gründen gesucht und keine gefunden, warum Git / Mercurial / Bazzr-Systeme besser sind als zentralisierte Systeme (Subversion, Perforce).
Wenn Sie versuchen würden, ein DVCS an eine nicht technische Person zu verkaufen, welche Argumente würden Sie für die Steigerung des Gewinns des DVCS liefern .
In Kürze werde ich meinem Manager das Pitching von Git durchführen. Es wird einige Zeit dauern, Subversion-Repositorys zu konvertieren, und einige Kosten für den Kauf von Smartgit-Lizenzen.
Bearbeiten Ich habe versucht, diese Frage in eine allgemeine Diskussion über zentralisierte vs. dezentralisierte zu verwandeln, aber es hat sich unvermeidlich in Git vs. Subversion verwandelt. Sicher gibt es bessere zentrale Systeme als Subversion.
git-svn
Ihre Bedürfnisse erfüllen?Antworten:
Hmm, als Manager habe ich zwei unmittelbare "Knie-Ruck" -Reaktionen darauf:
Eigentlich bin ich nicht negativ - ich denke, es muss wahrscheinlich ein Fall gemacht werden (abhängig von den Umständen), aber wenn der Fall einfach ist, dass git "besser" als subversion ist, dann haben Sie keinen.
Sie müssen auch in der Lage sein, die Nachteile aufzuzählen - Sie haben bereits den Mehraufwand für Migration und Nachbearbeitung festgestellt - was ist ein anderes Problem? zB Was passiert mit Ihrem netten, zentralen, gesicherten Repository? Wie integrieren Sie sich in Ihren Continuous Integration Build Server (wenn Sie keinen haben, vergessen Sie git und sortieren Sie diesen zuerst)? Sicherheit und Nachverfolgung - SVN wird mit den richtigen Anmeldungen und Berechtigungen ausgeführt.
Meiner Meinung nach liegen die Vorteile in der Flexibilität, der besseren Zusammenführung, der Fähigkeit, lokale Commits auszuführen, ohne den Build zu unterbrechen und so weiter. Die Nachteile sind mangelnde Kontrolle und die gleiche Flexibilität.
Möglicherweise möchten Sie nur git lokal auf Ihrem Computer als "besseren" Subversion-Client ausführen (ich möchte dies mit mercurial tun).
Hmm, vielleicht ist diese ganze Antwort wirklich ein Kommentar? Sie müssen Ihren Fall hier (in der Frage) für git over subversion (in Ihrer Umgebung) machen, um zu sehen, ob wir Ihnen helfen können, den Geschäftsfall zu identifizieren.
FWIW, ich weiß, dass man eine bestimmte Instanz des Repositorys leicht als Trunk- / Referenzquelle festlegen kann und dass man auf diese Weise den Build-Server einbindet - der Unterschied besteht darin, dass DVCS eher eine administrative Entscheidung ist als eine etwas in der Architektur inhärent.
quelle
Ich würde sagen, das schnelle und schmerzlose Verzweigen und Zusammenführen würde es Entwicklern ermöglichen, produktiver mit ihrem Code umzugehen, da jedes neue Feature verzweigt und später zusammengeführt werden könnte. Der Entwicklungsprozess verläuft viel reibungsloser. Aufgrund der verteilten Struktur verfügt jeder Entwickler über eine vollständige Kopie des Codes, sodass Sie nicht befürchten müssen, dass ein zentraler Serverausfall Ihren gesamten Code ausfällt. Es gibt wahrscheinlich noch mehr Gründe, aber diese beiden Gründe sind meine Hauptgründe für die Verwendung von Git.
quelle
Ich gehe davon aus, dass Sie sich für eine Versionskontrolle einsetzen können, um die Produktivität (und damit den Gewinn) zu steigern, selbst wenn ein Entwickler alleine arbeitet.
Ein guter DVCS erkennt die gleichen Produktivitätsvorteile, auch wenn er als Teil eines Teams arbeitet. Jeder Entwickler kann alle Vorteile der Versionskontrolle nutzen. Er kann häufig Commits ausführen, Rollbacks ausführen, mit Dingen herumspielen usw., ohne sich um Konflikte sorgen zu müssen mit dem, was andere Entwickler tun, bis sie bereit sind, ihre Änderungen zu veröffentlichen.
quelle
Mit diesen Dingen können Sie sowohl alleine als auch im Team effizienter arbeiten. Effizienteres Arbeiten = schnellere Entwicklungszeit = schnellere Time-to-Market = Gewinn.
quelle
Verzeihen Sie mir, dass ich auf meinen eigenen Blog verlinke, aber ich habe Artikel zu diesem Thema geschrieben:
Sie können gerne abstimmen, wenn Sie diese nicht für relevant halten.
Kurz gesagt, mit DVCS lassen sich Verzweigungsmodelle einfach erstellen, sodass große Entwicklergruppen nicht aufeinander treten können, was sowohl die Produktivität als auch Ihre tägliche Verarbeitungsqualität steigert. Der Teil der Versionskontrolle, bei dem die Zusammenarbeit problematisch ist, kann in lokalen Repos durchgeführt werden, wodurch Ihr zentrales Repository sauberer und von höherer Qualität bleibt. Entscheidungen darüber, wann eine Niederlassung eröffnet werden soll, können sich auch erheblich auf die Effizienz auswirken, wenn beispielsweise eine Abteilung bereit ist, mit der Arbeit an 2.0 zu beginnen, während 1.0 noch von anderen aufgeräumt wird. Das DVCS ermöglicht, dass diese Entscheidungen auf lokaler Ebene und nicht vom Ausschuss getroffen werden.
quelle
HEAD~1
,HEAD~2
etc. in git. Es ist sehr selten, dass Sie den eigentlichen Hash brauchen, aber es ist das erste, was Sie in git lernen und es ist immer in Ihrem Gesicht. Das zu verbergen, wenn man es nicht wirklich braucht, ist ein Grund dafür, dass bzr einsteigerfreundlicher ist.Meine Argumente für DVCS sind diese:
Die Verzweigung ist nicht unterbrochen, was zu einer geringeren Reibung bei der Entwicklung von Funktionen und der Beibehaltung vorhandener Produkte führt. Reibung kostet Geld in der Zeit.
Die Umstellung auf ein modernes System zieht die neuesten Entwickler an, was zu einer Kultur besserer Produkte führt, die es dem Unternehmen ermöglicht, mehr Produkte zu verkaufen.
Nicht-Netzwerk-Commits sind schneller , sodass die Entwickler häufig Commits durchführen können, was zu einer detaillierten Fehlererkennung und -analyse führt.
Im Wesentlichen geht es darum, Reibung zu reduzieren. Dafür gibt es einen Begriff: Muda . Je mehr Reibung, desto schmerzhafter ist es, Dinge zu tun. Je mehr Schmerz, desto weniger wird getan, desto weniger Gewinn.
quelle
Ich entschuldige mich, wenn ich großartig bin, aber erlaube mir, den Business Case in eindeutigen Worten zu formulieren:
SVN macht das Leben der Entwickler miserabel . Und das macht ein Software-Geschäft miserabel.
... auf eine Weise, die viele erst erkennen, wenn sie anfangen, ein DVCS zu verwenden. Dies ist der wichtigste Geschäftsfall, der möglicherweise erstellt werden kann . Warum? Im Vergleich zu den Kosten für die Suche und Bindung guter Entwickler sind die Kosten für den Umstieg auf ein DVCS so gut wie nicht vorhanden .
Folgendes berücksichtigen:
push
oder -Operationpull
ausführen. Dies bedeutet, dass nicht triviale Befehle langsam sind . Was machst du, wenn ein Befehl ewig dauert? Ich persönlich gehe programmers.se oder Hacker-Nachrichten durchsuchen, während ich warte. Mit DVCS können sich Programmierer darauf konzentrieren, das zu tun, was sie lieben: die Software des Unternehmens zu schreiben .Was bedeutet das alles? Ich habe noch keinen Entwickler getroffen, der einem DVCS einen ehrlichen Versuch gegeben hat, der danach SVN vorziehen würde. Wenn ich noch eine nervige, kühne Aussage machen könnte, ist SVN ein "notwendiges Übel", zu dessen Verwendung sich Entwickler zwingen. Git ist ein Tool, das Entwickler produktiver und glücklicher macht .
(Ich möchte darauf hinweisen, dass die fettgedruckten Aussagen diejenigen sind, auf die Sie sich konzentrieren sollten. Der Rest von ihnen liefert nur den Kontext.)
quelle
Das einzige, was ich mir vorstellen kann, ist, dass Git ohne Netzwerkverbindung funktioniert. Alles andere ist sogar oft schwer an technische Benutzer zu verkaufen, die seit geraumer Zeit Subversion oder Perforce einsetzen.
quelle
Der Unterschied zeigt, wenn es Ärger gibt
Wir sind vor 6 Monaten auf git umgestiegen, nachdem wir unser zehn Jahre altes Repository portiert hatten.
Bisher habe ich nach einigem Experimentieren folgendes herausgefunden:
Verzweigen und Zusammenführen ist nahezu schmerzfrei. Dies macht es viel einfacher, an separaten Funktionen und Bugfixes zu arbeiten, ohne sich gegenseitig auf die Zehen zu treten. Es macht es auch sehr einfach, einen bestimmten Bugfix auch an einer anderen Stelle anzuwenden.
Robuster durch Design - Sie verlassen sich nicht zu 100% darauf, dass ein zentraler Server verfügbar ist. Wenn dies nicht der Fall ist, können Sie einen beliebigen Klon vorübergehend als Ersatz für einen Hotspot verwenden. Dies beseitigt einen entscheidenden Fehlerpunkt - wenn der SVN-Server aus irgendeinem Grund ausfällt, kann niemand SVN-Arbeit leisten. Wenn das zentrale Git-Repository aus irgendeinem Grund ausfällt, können Sie weiterhin lokal arbeiten und Push / Pull ausführen, um sicherzustellen, dass die Commits repliziert werden. Sie können sogar mehrere externe Repositorys für genau diesen Zweck einrichten.
Repository-Interaktion wird vereinfacht. Für CVS brauchten Sie im Wesentlichen immer Zugriff, wenn Sie Informationen benötigten. Für Git ist das gesamte Repository lokal verfügbar, sodass viele Dinge schneller erledigt werden können.
Der Nutzen ist also nicht so groß im Alltag, sondern sehr deutlich, wenn etwas nicht richtig funktioniert!
Daher schlage ich vor, dass Sie sich für Ihren Geschäftsfall ansehen, was Sie tun werden, wenn eine Katastrophe eintritt ...
quelle
Das einfache Verzweigen und Zusammenführen ist der konkreteste Grund, aber um jemanden zu überzeugen, müssen Sie ihm ein konkretes Beispiel geben, wie dies die Dinge verbessert.
Nehmen wir an, Sie haben einige Programmierer, die an Leistungsverbesserungen für eine App arbeiten. Sie befinden sich im Versuchsstadium und wissen nicht, ob der von ihnen geschriebene Code jemals Teil des Master- / Trunk-Zweigs sein wird. Sie müssen jedoch häufig Code untereinander austauschen und Ideen ausprobieren, die möglicherweise Sackgassen sind. Wie schaffen Sie es, so häufig in Subversion zu verzweigen und zusammenzuführen? Die kurze Antwort lautet, dass Sie dies nicht tun. Mit einem dvcs ist es wirklich einfach, und die Programmierer können schnell neue Ideen in Branchen ausprobieren und mit anderen austauschen, bevor sie entscheiden, ob diese Idee bestehen bleibt.
quelle
Das Geschäftsmodell für SubVersion ist, dass die Verzweigungsunterstützung ein Hindernis für die Produktstabilisierung und -wartung darstellt. Wenn Sie ein Produkt freigeben und dann die Entwicklung fortsetzen müssen, benötigen Sie eine Filiale. Mit Subversion werden die Entwickler die Verzweigung nicht richtig verwenden, sodass Sie die Entwicklung auf dem Tunk nicht aufrechterhalten und sicherstellen können, dass die Fehlerbehebungen tatsächlich sowohl auf dem Stamm als auch auf dem Zweig landen.
quelle