Unterschiede: 1. SVN ist ein zentralisiertes Versionskontrollsystem, während Git ein verteiltes Versionskontrollsystem ist. 2. SVN wird gemäß der Originaldatei gespeichert, die groß ist, während Git in Form von Metadaten gespeichert wird. Das ist sehr groß. 3. Die Zweigoperationen von Git wirken sich nicht auf andere Entwickler aus, SVN jedoch.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Git-Version 2.30.0, Dell G3-Computer.
SVN ist die Abkürzung für Subversion. Es ist ein Open-Source-Versionskontrollsystem, das die meisten gängigen Betriebssysteme unterstützt. Als Open-Source-Versionskontrollsystem verwaltet Subversion Daten, die sich im Laufe der Zeit ändern. Diese Daten werden in einem zentralen Repository abgelegt. Dieses Archiv ähnelt einem gewöhnlichen Dateiserver, speichert jedoch jede Dateiänderung. Auf diese Weise können Sie die Datei auf eine ältere Version zurücksetzen oder den Änderungsverlauf der Datei durchsuchen. Subversion ist ein Allzwecksystem, das zur Verwaltung jeder Art von Datei, einschließlich Programmquellcode, verwendet werden kann.
Der Workflow der zentralen Verwaltung ist wie folgt:
Der Kern der zentralen Codeverwaltung ist der Server, bevor er mit der Arbeit eines neuen Tages beginnt, und dann entwickeln. Lösen Sie abschließend den Konflikt und reichen Sie ihn ein. Alle Versionsinformationen werden auf dem Server abgelegt. Wenn die Verbindung zum Server unterbrochen wird, kann man grundsätzlich sagen, dass Entwickler nicht arbeiten können. Hier ein Beispiel:
Starten Sie einen neuen Arbeitstag:
Laden Sie den neuesten Code des Projektteams vom Server herunter.
Betreten Sie Ihren eigenen Zweig, arbeiten Sie daran und senden Sie stündlich Code an Ihren eigenen Zweig auf dem Server (viele Leute haben diese Angewohnheit. Denn manchmal ändert man den Code immer wieder und möchte ihn schließlich wiederherstellen vorherige) Stündliche Version, oder sehen Sie, welchen Code Sie in der letzten Stunde geändert haben, Sie müssen dies tun).
Die dienstfreie Zeit steht vor der Tür. Führen Sie Ihren Zweig mit dem Hauptzweig des Servers zusammen. Die Arbeit des Tages ist abgeschlossen und wird auf dem Server angezeigt.
Dieser Ansatz bringt viele Vorteile mit sich, insbesondere im Vergleich zum altmodischen lokalen VCS. Jetzt kann jeder einigermaßen sehen, woran andere im Projekt arbeiten. Administratoren können auch die Berechtigungen jedes Entwicklers einfach steuern.
Alles hat zwei Seiten, eine gute und eine schlechte. Der offensichtlichste Nachteil dieser Vorgehensweise besteht darin, dass der zentrale Server ein Single Point of Failure ist. Wenn es eine Stunde lang nicht verfügbar ist, kann in dieser Stunde niemand Updates, Wiederherstellungen, Vergleiche usw. einreichen und es ist unmöglich, zusammenzuarbeiten. Wenn die Festplatte des zentralen Servers ausfällt und kein Backup erstellt wird oder das Backup nicht rechtzeitig genug erfolgt, besteht die Gefahr eines Datenverlusts. Im schlimmsten Fall gehen alle historischen Änderungsdatensätze des gesamten Projekts vollständig verloren, mit Ausnahme einiger vom Client extrahierter Snapshot-Daten. Dies stellt jedoch immer noch ein Problem dar, da Sie nicht garantieren können, dass alle Daten extrahiert wurden.
Im Prinzip kümmert sich Subversion nur um die spezifischen Unterschiede im Dateiinhalt. Dabei wird jeweils protokolliert, welche Dateien aktualisiert wurden und welche Zeilen und Inhalte aktualisiert wurden.
Jedes Repository hat eine eindeutige URL (offizielle Adresse) und jeder Benutzer erhält Code und Daten von dieser Adresse;
Erhält Code-Updates und kann nur eine Verbindung zu diesem eindeutigen Adress-Repository herstellen und synchronisieren Erhalten Sie die neuesten Daten.
Die Übermittlung muss über eine Netzwerkverbindung erfolgen (nicht lokales Repository).
Die Übermittlung erfordert eine Autorisierung. Wenn keine Schreibberechtigung vorliegt, schlägt die Übermittlung fehl gelingt jedes Mal. Wenn jemand anderes vor Ihnen einreicht, wird die Meldung „Änderungen basieren auf veralteten Versionen, zuerst aktualisieren und dann einreichen“ usw. angezeigt.
Konfliktlösung ist ein Wettbewerb der Einreichungsgeschwindigkeit: Wer schnell ist, reicht ein Zuerst, und alles wird gut; diejenigen, die langsam sind, werden es zuerst einreichen. Diejenigen, die nach der Festlegung möglicherweise Probleme mit der Konfliktlösung haben.
GIT (Distributed Version Control System)
Der größte Unterschied zwischen verteilt und zentralisiert besteht darin, dass Entwickler lokal einreichen können und jeder Entwickler über Git Clone ein vollständiges Git-Repository auf den lokalen Computer kopiert.
WorkflowAus Sicht des Hauptentwicklers (vorausgesetzt, der Hauptentwickler muss keinen Code entwickeln) verfügt Git über die folgenden Funktionen:
Überprüfen Sie E-Mails oder überprüfen Sie den Übermittlungsstatus allgemeiner Entwickler mit anderen Methoden.
Patches anwenden und Konflikte lösen (Sie können sie selbst lösen oder Entwickler bitten, sie vor der erneuten Einreichung zu lösen. Wenn es sich um ein Open-Source-Projekt handelt, müssen Sie auch entscheiden, welche Patches nützlich sind und welche nicht).
Senden Sie die Ergebnisse an einen öffentlichen Server und benachrichtigen Sie dann alle Entwickler.
Seit seiner Geburt im Jahr 2005 ist Git immer ausgereifter und perfekter geworden, obwohl es sehr einfach zu bedienen ist, behält es dennoch die zu Beginn gesetzten Ziele bei. Es ist schnell und eignet sich hervorragend für die Verwaltung großer Projekte. Darüber hinaus verfügt es über ein unglaubliches nichtlineares Filialverwaltungssystem, das verschiedene komplexe Projektentwicklungsanforderungen bewältigen kann.
Im Gegensatz zu SVN zeichnet Git den Versionsverlauf auf und kümmert sich nur darum, ob sich die gesamten Dateidaten geändert haben. Git speichert keine differenziellen Daten über Änderungen im Dateiinhalt. Tatsächlich ist Git eher so, als würde man einen Schnappschuss der geänderten Dateien erstellen und diese in einem Miniaturdateisystem aufzeichnen. Jedes Mal, wenn ein Update übermittelt wird, scannt es die Fingerabdruckinformationen aller Dateien, erstellt einen Snapshot der Datei und speichert dann einen Index, der auf den Snapshot verweist. Um die Leistung zu verbessern, speichert Git die Datei nicht erneut, wenn sie sich nicht geändert hat, sondern stellt nur eine Verbindung zum zuletzt gespeicherten Snapshot her.
SVN ist ein zentralisiertes Versionskontrollsystem. Es gibt eine ungenaue Metapher: SVN = Versionskontrolle + Backup-Server. SVN fühlt sich bei Verwendung ein bisschen wie ein Archivlager an und unterstützt paralleles Lesen und Schreiben Zu den Funktionen gehören das Abrufen, Importieren, Aktualisieren, Verzweigen, Umbenennen, Wiederherstellen, Zusammenführen usw.
Git ist ein verteiltes Versionskontrollsystem. Zu den Betriebsbefehlen gehören: Klonen, Ziehen, Pushen, Verzweigen, Zusammenführen, Pushen, Rebase. Git eignet sich gut für die Versionsverwaltung von Programmcode.
GIT verfügt wie SVN über ein eigenes zentrales Repository oder einen eigenen Server. GIT bevorzugt jedoch die Verwendung im verteilten Modus, d. h. jeder Entwickler klont sein eigenes Repository auf seinem eigenen Computer, nachdem er den Code vom zentralen Repository/Server ausgecheckt hat.
Man kann sagen, dass Sie, wenn Sie an einem Ort gefangen sind, an dem Sie keine Verbindung zum Internet haben, z. B. in einem Flugzeug, in einem Keller, in einem Aufzug usw., immer noch Dateien einreichen, historische Versionsaufzeichnungen einsehen können, Erstellen Sie Projektzweige usw. Manchen scheint dies nicht viel zu nützen, aber wenn Sie plötzlich auf eine Umgebung ohne Netzwerk stoßen, wird dies Ihr großes Problem lösen.
Und Git speichert es in Form von Metadaten, was sehr klein ist; SVN speichert es in Form von Originaldateien, was relativ groß ist.
GIT speichert Inhalte in Form von Metadaten, während SVN Inhalte in Form von Dateien speichert. Alle Ressourcenkontrollsysteme verbergen die Metainformationen von Dateien in einem Ordner ähnlich .svn, .cvs usw.
Wenn Sie die Größe des .git-Verzeichnisses mit der von .svn vergleichen, werden Sie feststellen, dass es einen großen Unterschied zwischen ihnen gibt. Da das .git-Verzeichnis eine geklonte Version des Repositorys auf Ihrem Computer ist, enthält es alles im zentralen Repository, z. B. Tags, Zweige, Versionsdatensätze usw.
Branch ist in SVN nichts Besonderes, es ist nur ein weiteres Verzeichnis im Repository. Wenn Sie wissen möchten, ob ein Zweig zusammengeführt wurde, müssen Sie manuell einen Befehl wie svn propget svn:mergeinfo ausführen, um zu bestätigen, ob der Code zusammengeführt wurde.
Allerdings ist die Arbeit mit GIT-Branches ganz einfach und macht Spaß. Sie können schnell zwischen mehreren Zweigen desselben Arbeitsverzeichnisses wechseln. Sie können nicht zusammengeführte Zweige leicht finden und diese Dateien schnell und einfach zusammenführen.
GIT verfügt im Gegensatz zu SVN über keine globale Versionsnummer. Dies ist bei weitem die größte Funktion, die GIT im Vergleich zu SVN fehlt. Sie wissen auch, dass die SVN-Versionsnummer tatsächlich eine Momentaufnahme des Quellcodes zu jedem entsprechenden Zeitpunkt ist. Ich denke, es ist der größte Durchbruch in der Entwicklung von CVS zu SVN. Da GIT und SVN konzeptionell unterschiedlich sind, weiß ich nicht, welche Funktionen in GIT ihnen entsprechen. Wenn Sie Hinweise haben, teilen Sie diese bitte in den Kommentaren mit allen.
Die Inhaltsintegrität von GIT ist besser als die von SVN: Der Inhaltsspeicher von GIT verwendet den SHA-1-Hash-Algorithmus. Dies stellt die Integrität des Codeinhalts sicher und reduziert Unterbrechungen des Repositorys bei Festplattenausfällen und Netzwerkproblemen.
Auswirkungen von Filialoperationen
Die Filialoperationen von Git wirken sich nicht auf andere Entwickler aus. Wenn Sie eine neue Filiale erstellen, hat jeder die gleiche Filiale wie Sie. Vor- und Nachteile von SVN und Git: Vor- und Nachteile von SVN . Die Benutzeroberfläche ist einheitlich, die Funktionen sind vollständig und die Bedienung ist komfortabel.
Git verwendet eine 128-Bit-ID als Versionsnummer
, und Sie müssen beim Auschecken angeben, um welchen Zweig es sich handelt, während SVN eine inkrementelle Seriennummer als global eindeutige Versionsnummer verwendet, was präziser und einfacher ist zu verstehen. Obwohl Sie mit gittag einige wörtliche Aliase erstellen können, gilt dies schließlich nur für spezielle Versionen.Teilweise Aktualisierung, teilweise Wiederherstellung. Da SVN in jedem Ordner einen .svn-Ordner zur Verwaltung erstellt, können Teilaktualisierungen oder Wiederherstellungen problemlos implementiert werden. Wenn Sie nur bestimmte Teile aktualisieren möchten, kann svn dies sehr gut tun. Wenn der Code falsch geschrieben ist, kann gleichzeitig eine teilweise Wiederherstellung leicht erreicht werden. Natürlich kann Git auch durch historische Versionen wiederhergestellt werden, eine teilweise Wiederherstellung ist jedoch nicht einfach zu erreichen.
Zu den Mitgliedern eines Forschungs- und Entwicklungsteams gehören normalerweise: Anforderungsanalyse, Design, Künstler, Programmierer, Tests, Implementierung, Betrieb und Wartung. Jedes Mitglied verfügt über Ergebnisse in seiner Arbeit, einschließlich Dokumenten, Designcode und Programmcode zentral nach Projekten verwaltet. SVN kann Verzeichnisse klar klassifizieren und verwalten und so die Verwaltung des Projektteams in einem geordneten und effizienten Zustand halten.
Empfohlenes Lernen: „Git Tutorial“
Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen Git und SVN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!