Mit SVN hatte ich ein einziges großes Repository, das ich auf einem Server aufbewahrte und auf einigen Computern auscheckte. Dies war ein ziemlich gutes Backup-System, mit dem ich problemlos an allen Maschinen arbeiten konnte. Ich könnte ein bestimmtes Projekt auschecken, ein Commit durchführen und das 'Master'-Projekt aktualisieren, oder ich könnte das Ganze auschecken.
Jetzt habe ich eine Reihe von Git-Repositories für verschiedene Projekte, von denen sich einige auf Github befinden. Ich habe auch das erwähnte SVN-Repository, das über den Befehl git-svn importiert wurde.
Grundsätzlich mag ich es, meinen gesamten Code (nicht nur Projekte, sondern auch zufällige Schnipsel und Skripte, einige Dinge wie meinen Lebenslauf, Artikel, die ich geschrieben habe, Websites, die ich erstellt habe usw.) in einem großen Repository zu haben, das ich einfach auf Remote klonen kann Maschinen oder Memory Sticks / Festplatten als Backup.
Das Problem ist, da es sich um ein privates Repository handelt und git das Auschecken aus einem bestimmten Ordner nicht zulässt (den ich als separates Projekt an github senden könnte, die Änderungen jedoch sowohl im Master-Repo als auch im Sub-Repo angezeigt werden) repos)
Ich könnte das Git-Submodul-System verwenden, aber es funktioniert nicht so, wie ich es möchte (Submodule sind Zeiger auf andere Repositorys und enthalten nicht wirklich den eigentlichen Code, daher ist es für die Sicherung nutzlos).
Derzeit habe ich einen Ordner mit Git-Repos (z. B. ~ / code_projects / proj1 / .git / ~ / code_projects / proj2 / .git /). Nachdem ich Änderungen an proj1 vorgenommen habe, kopiere ich git push github
die Dateien in ~ / Dokumente / code / python / projects / proj1 / und führen Sie ein einzelnes Commit durch (anstelle der zahlreichen in den einzelnen Repos). Dann tun git push backupdrive1
, git push mymemorystick
etc
Die Frage lautet also: Wie können Sie Ihren persönlichen Code und Ihre Projekte mit Git-Repositorys synchronisieren und sichern?
Ich möchte Damiens Antwort hinzufügen, wo er empfiehlt:
Sie können eine spezielle Fernbedienung einrichten, um mit einem Befehl auf alle einzelnen realen Fernbedienungen zuzugreifen. Ich fand es unter http://marc.info/?l=git&m=116231242118202&w=2 :
Sie können sich auch sparen, indem Sie die URLs zweimal eingeben, indem Sie die folgende Konstruktion verwenden:
quelle
Ich bin auch neugierig auf vorgeschlagene Möglichkeiten, um damit umzugehen, und werde das aktuelle Setup beschreiben, das ich verwende (mit SVN). Ich habe im Grunde ein Repository erstellt, das eine Mini-Dateisystemhierarchie enthält, einschließlich eigener bin- und lib-Verzeichnisse. Im Stammverzeichnis dieses Baums befindet sich ein Skript, mit dem Ihre Umgebung so eingerichtet wird, dass diese bin, lib usw. andere Verzeichnisse zu den richtigen Umgebungsvariablen hinzugefügt werden. Das Stammverzeichnis sieht also im Wesentlichen so aus:
In / bin und / lib befinden sich nun mehrere Projekte und die entsprechenden Bibliotheken. Ich weiß, dass dies kein Standardprojekt ist, aber es ist für andere in meiner Gruppe sehr einfach, das Repo auszuchecken, das Skript 'setup_env.bash' auszuführen und die aktuellsten Versionen aller Projekte lokal in ihrem zu haben Auschecken. Sie müssen sich nicht um die Installation / Aktualisierung von / usr / bin oder / usr / lib kümmern, und es ist einfach, mehrere Checkout-Vorgänge und eine sehr lokalisierte Umgebung pro Checkout durchzuführen. Jemand kann auch nur das gesamte Repository verwalten und sich keine Gedanken über die Deinstallation von Programmen machen.
Das funktioniert gut für uns und ich bin mir nicht sicher, ob wir es ändern werden. Das Problem dabei ist, dass sich in diesem einen großen Repository viele Projekte befinden. Gibt es eine git / Hg / bzr-Standardmethode, um eine solche Umgebung zu erstellen und die Projekte in ihre eigenen Repositories aufzuteilen?
quelle
Ich habe noch nicht versucht, Git-Repositorys zu verschachteln, weil ich nicht in eine Situation geraten bin, in der ich muss. Wie ich auf dem # Git- Kanal gelesen habe, scheint Git durch das Verschachteln der Repositorys verwirrt zu werden, dh Sie versuchen, Git-Init in einem Git-Repository zu erstellen. Die einzige Möglichkeit, eine verschachtelte Git-Struktur zu verwalten, besteht darin,
git-submodule
dasrepo
Dienstprogramm von Android zu verwenden .Was die Sicherungsverantwortung betrifft, die Sie beschreiben, sage ich, delegieren Sie sie ... Für mich stelle ich normalerweise das "Ursprungs" -Repository für jedes Projekt auf einem Netzwerklaufwerk in Betrieb, das regelmäßig von den IT-Technikern durch ihre Sicherungsstrategie von gesichert wird Wahl. Es ist einfach und ich muss mir keine Sorgen machen. ;)
quelle
Was ist mit mr für die gleichzeitige Verwaltung mehrerer Git-Repos:
quelle
Es gibt eine andere Methode, um verschachtelte Git-Repos zu haben, aber sie löst nicht das Problem, nach dem Sie suchen. Für andere, die nach einer Lösung suchen, war ich dennoch:
Im Git-Repo der obersten Ebene verstecken Sie einfach den Ordner in .gitignore, der das verschachtelte Git-Repo enthält. Dies macht es einfach, zwei separate (aber verschachtelte!) Git-Repos zu haben.
quelle