Ich stelle meine persönlichen Projekte von Subversion (svn) auf GIT um. In Subversion habe ich ein gemeinsames SVN-Arbeitsverzeichnis auf mehreren Hosts verwendet (obwohl mir Leute sagten, dass es nicht funktionieren würde), und es hat sich als gut für mich erwiesen. Es ist wichtig darauf hinzuweisen, dass dies eine Einzelbenutzerlösung ist und ich die einzige Person bin, die Änderungen vornimmt, damit ich keine SVN-Commits für mehrere Boxen gleichzeitig ausführe. Kurz gesagt, ich bin bereit, mit einigen Einschränkungen (falls erforderlich) zu leben, um die allgemeine Verwaltung meiner persönlichen Projekte zu vereinfachen.
Um zu verstehen, warum ich dies tun möchte, betrachten Sie meine Konfiguration (unten). Ich habe ein paar bullige Maschinen, auf denen jeweils mehrere VMs laufen. Ich habe mehrere große Festplatten auf "host1" und habe Dateifreigaben, auf die andere Hosts (im lokalen LAN) zugreifen.
host1 (share \\host1\share)
+vm1 (access SVN working dir \\host1\share\svnproj1, and svnproj2)
+vm2 (access SVN working dir \\host1\share\svnproj1)
+vm3 (access SVN working dir \\host1\share\svnproj1)
host2
+vm4 (access SVN working dir \\host1\share\svnproj1)
+vm5 (access SVN working dir \\host1\share\svnproj1)
laptop (access SVN working dir \\host1\share\svnproj1)
But also have a svn checkout at c:\svnproj1
Alle Betriebssysteme sind Win7x64 oder Win8.1x64. Ich verwende derzeit Tortoise SVN 1.8.2 und Subversion 1.8.3 (auf ALLEN Hosts).
Mit diesem Ansatz kann ich von jedem Host aus auf die Dateifreigabe des Servers (\ host1 \ share) zugreifen. In einigen Fällen sind meine SVN-Repos viele Jahre alt und über 2 GIG mit separaten "SVN-Arbeitsbereichen" in jeder VM vergrößern meine VMs und erschweren meine VM-Snapshots und Backups.
Ich muss auch keine Dateien festschreiben, bis ich meinen Laptop für ein Geschäftstreffen mitnehme. Ich arbeite von zu Hause aus, das kommt also nicht häufig vor. Wenn ich von einem Geschäftstreffen oder einer Geschäftsreise zurückkomme, übernehme ich meine Änderungen auf meinem Laptop und aktualisiere svn update auf einer der 5 VMs. Die Dateien werden für alle 5 VMs aktualisiert. Für mich ist das einfach genug und hat gut funktioniert.
Jetzt frage ich mich, ob dieser Ansatz auch mit GIT funktionieren kann. Alles, was ich gelesen habe, besagt, dass Sie dies nicht können (oder sollten).
Die folgenden Fragen helfen mir zu verstehen, ob dies überhaupt technisch möglich ist (HINWEIS: Ich experimentiere bereits mit diesem Ansatz).
(F) Speichert GIT Informationen auf einem Host außerhalb des GIT-Repos (.git dir) und benötigt diese Informationen, um das Git-Repo ordnungsgemäß zu verwalten. Wenn dies der Fall ist, ist es nicht möglich, mehrere Computer mit diesen Informationen identisch zu konfigurieren.
(F) Erstellt GIT temporäre Dateien im GIT-Arbeitsbereich? Wenn ja, würde diese temporäre Information eine weitere Kopie von Git vermasseln, die auf einem anderen Computer ausgeführt wird? Wenn ja, ist dieser Ansatz ebenfalls nicht durchführbar.
(F) Hat GIT dasselbe Problem wie Subversion, da alle Clients, die ein bestimmtes Repo verwenden, dieselbe Version haben müssen?
(F) Schlägt dieser Ansatz fehl, wenn ein anderes Betriebssystem eingeführt wird (Linux, Apple OSX)?
(F) Funktioniert diese Lösung immer noch, wenn ein Cloud-Speicheranbieter wie Dropbox oder SpiderOak verwendet wird?
(F) Gibt es andere Fragen oder Probleme, auf die ich bei der Verwendung von GIT stoßen könnte, die ich bei der Verwendung von SVN nicht sehen würde?
Auch hier ist zu beachten, dass diese Lösung nur für mich funktionieren muss. Es werden niemals mehrere Personen Änderungen am GIT-Repository vornehmen, und ich kann mit einigen Einschränkungen leben, wenn dies die allgemeine Verwaltung der VMs vereinfacht.
Dieser Artikel http://www.sitepoint.com/how-to-use-dropbox-with-svn-or-git-for-cloud-source-control-management/ hat die Verwendung von GIT in der sehr gut erklärt traditionelle Art und Weise. Für mich entspricht die Dropbox-Lösung der lokalen LAN-Dateifreigabe.