2010-04-24 10 views
5

Ich benutze Git als Backup-Tool und 'Roaming-Profil' für mein $ HOME Verzeichnis zwischen Laptop und Desktop.Git ignoriert .git Verzeichnisse in Unterverzeichnissen

Mein Problem ist, dass ich unter meinem $ HOME ein Entwicklungsverzeichnis mit mehreren Git-Projekten habe, an denen ich arbeite. Git erlaubt mir nicht, die Unterordner .git-Ordner hinzuzufügen. Um sich an diese Projekte zu binden, muss ich die Änderungen in mein $ HOME git repo übertragen, auf den Laptop ziehen (wo sie erstellt wurden und .git dir exsits) und committen.

Ich habe über Submodule gelesen, aber es ist nicht wirklich was ich will. Ich möchte nur, dass die .git-Ordner von Kindern wie jedes alte Verzeichnis behandelt werden, damit ich sie verschieben und sichern kann.

Hat jemand dies getan oder eine Idee wie ich?

+4

imho, das ist wahrscheinlich das falsche Werkzeug für den Job. Wenn Sie Ihren Laptop und Ihren Desktop synchronisieren möchten, möchten Sie vielleicht gemeinsam nachsehen. Wenn Sie die gesamte Arbeit, die Sie in $ HOME erledigen, versionieren möchten, ist die einfachste Option reguläre rsyncs, aber natürlich ist das nicht inkrementell. Sie würden ein inkrementelles Backup-Produkt benötigen, oder Sie können etwas hacken mit rsync und git –

+0

@Igor: Ich stimme zu, in der Regel. Sie müssen die git-repos nicht unbedingt rsyncieren - Sie könnten einfach einen Weg finden, sie in großen Mengen zu pushen/zu ziehen/zu aktualisieren, selbst wenn Sie entscheiden, dass Submodule nicht der richtige Weg sind (obwohl sie wahrscheinlich dafür arbeiten könnten) Zweck). – Cascabel

+0

rsnapshot kann die inkrementelle Sache tun. ehrlich Submodule ist, was Sie verwenden sollten. Ich würde nur ein Skript schreiben, um alle Repos zu übertragen. warum willst du die git objekte trotzdem versionieren? nur um den Transfer zu erleichtern? benutze etwas anderes. Auch das ist KEINE SO Frage, die auf SUPERUSER gestellt werden sollte. Warum fragen die Leute all diese nicht programmierten Fragen zu SO? – xenoterracide

Antwort

0

Ich würde ein Skript empfehlen, die erste wäre Backup alle .git Projekte, die Sie unter Ihrem $ HOME haben: es wird eine Sicherungsdatei (immer noch unter $ HOME)
git bundle für mehr Siehe produzieren.

Und dann können Sie hinzufügen/aktualisieren diese Sicherungs (oder „Bündel“) Dateien auf Ihrem Haupt-Git-Repo (die alle Ihre $HOME mit Ausnahme der .git Projekte enthält)

Schließlich können Sie alle exportieren Ihr $ HOME als eine Datei mit der gleichen Git-Backup-Technik (git bundle).

0

In der Vergangenheit habe ich gibak, ein Git-Backup-Tool verwendet. Neben der Pflege von Dateiattributen kümmert es sich auch um Git-Repositories in Ihrem Home-Verzeichnis.

Ein Disclaimer obwohl. Ich habe es eine Weile benutzt, aber manchmal wurde das Backup korrupt. Ich habe das nicht untersucht, aber ich vermute, dass es damit zu tun hat, dass laufende Anwendungen ständig Daten in Ihr Home-Verzeichnis schreiben. Irgendwann stimmt der Hash nicht mehr, und Sie müssen einige clevere Dinge tun, um es zu reparieren (oder ein neues Backup zu starten).

Zumindest versuchen Sie es, es kann für Sie arbeiten. Das Problem, das ich erwähnte, könnte auch von Git verursacht werden. Da ich dies vor 1,5 Jahren versucht habe, könnte es in der Zwischenzeit behoben sein.

2

Tun Sie es nicht. Dies ist eine schlechte Idee, da Sie eine versionierte Sicherung eines versionierten Repositorys erstellen. Erstellen Sie einfach eine Sicherungskopie von rsync (Sie können die Eltern immer noch mit git versionieren)

2

Ich persönlich benutze Git, um einige dot-Dateien wie. Profile oder .vimrc zu synchronisieren. Um Probleme wie deins zu vermeiden, befindet sich mein Git in $ HOME/dot und die einzelnen Dateien sind in $ HOME symbolisiert.

Verwandte Themen