Verwenden des gemeinsamen Git-Arbeitsbereichs auf mehreren Hosts

0

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).

  1. (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.

  2. (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.

  3. (F) Hat GIT dasselbe Problem wie Subversion, da alle Clients, die ein bestimmtes Repo verwenden, dieselbe Version haben müssen?

  4. (F) Schlägt dieser Ansatz fehl, wenn ein anderes Betriebssystem eingeführt wird (Linux, Apple OSX)?

  5. (F) Funktioniert diese Lösung immer noch, wenn ein Cloud-Speicheranbieter wie Dropbox oder SpiderOak verwendet wird?

  6. (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.

PatS
quelle

Antworten:

1

Es sollte kein Problem funktionieren. Stellen Sie einfach Ihr Git-Repo auf host1, wo sich Ihr aktuelles SVN-Arbeitsverzeichnis befindet. Ich habe etwas Ähnliches gemacht, bei dem ich ein Git-Repo mit Dropbox zwischen mehreren Computern teile (was eigentlich weniger ratsam ist als das, worüber Sie sprechen, da Dropbox eine separate Version des Repos erstellt, wenn es nicht synchronisiert werden kann).

Hier finden Sie Antworten auf Ihre Fragen.

  1. In einem .gitconfigOrdner in Ihrem Home-Verzeichnis sind einige Informationen gespeichert , aber all dies wird durch alle Konfigurationsinformationen im .gitOrdner ersetzt, die vollständig portierbar sind. Es sollte keine Probleme verursachen. Eine Sache - achten Sie darauf, auf allen Systemen die gleiche Option für Zeilenenden zu wählen, oder konfigurieren Sie sie im .gitOrdner.
  2. Nein (zumindest nicht, dass mir das bewusst ist). Alle Revisionen werden im Ordner .git gespeichert, und die Arbeitskopie besteht nur aus regulären Dateien.
  3. Es ist am besten, wenn alle dieselbe Version von git ausführen, damit Sie keine seltsamen Fehler bekommen, aber es kann keine Probleme verursachen, wenn es sich um verschiedene Versionen handelt und Sie nur grundlegende Aufgaben erledigt haben.
  4. Das Betriebssystem macht keinen Unterschied, da der .gitOrdner derselbe wäre. Wählen Sie einfach die entsprechende Option für Zeilenenden und auf allen Systemen die gleiche Option.
  5. Ja, ich habe es auf Dropbox gemacht. Das einzige Problem ist, dass Dropbox nicht synchronisiert werden kann und eine in Konflikt stehende Kopie Ihres Repository erstellt. Dann haben Sie Kopfschmerzen, um herauszufinden, welches Ihre letzten Commits enthält. Dies funktioniert nicht für mehrere Benutzer gleichzeitig, da jeder Benutzer eine eigene Arbeitskopie benötigt.
  6. Keine Biggies. Ich habe vor einiger Zeit meine persönlichen Projekte eingeschaltet und es war ziemlich reibungslos. Es gibt Tools, die Ihnen helfen, Ihren SVN-Verlauf nach Git zu importieren, wenn Sie möchten.
mkasberg
quelle