Ich mache das schon eine Weile nur mit Git. Ich verfolge nicht das gesamte Home-Verzeichnis, sondern nur die Teile, die ich aktiv ändere. Dies umfasst mein home / bin-Verzeichnis, das viele kleine Skripte enthält, mein .vim-Verzeichnis und einige größere Projekte in anderen Verzeichnissen. Es gibt auch einige Konfigurationen für Terminals und Openbox sowie verschiedene andere Apps, die dem Repo hinzugefügt wurden.
Dies funktioniert gut genug, da all diese Dinge den gleichen Berechtigungssatz haben und mir der ursprüngliche Zeitstempel egal ist. Es kommt zu dem Punkt, an dem ich vorhabe, einen Teil davon mithilfe von Submodulen aufzuteilen git filter-branch
. Dies ist jedoch etwas schwierig, da es Abhängigkeiten zwischen Dateien in verschiedenen Unterverzeichnissen gibt (z. B. rufen einige .vim-Skripte möglicherweise Skripte aus meinem bin-Verzeichnis auf ... kein sehr gutes Beispiel, aber hoffentlich verstehen Sie den Punkt).
Ich habe keine umfassenderen Lösungen gefunden, aber auch keine wirklich untersucht, einschließlich der Git-Home-Geschichte. Es scheint ziemlich kompliziert zu sein, das gesamte Home-Verzeichnis unter Revisionskontrolle zu stellen, und es würde viele Variablen geben. Wenn Sie beispielsweise Ihre Firefox-Profile unter Revisionskontrolle stellen, werden Sie am Ende große Mengen an binären Differentialen anhäufen. Es gibt auch Dinge wie SSH-Schlüssel, die oft besser verloren gehen als dupliziert werden.
Wenn Sie Berechtigungen verfolgen möchten (außer dem ausführbaren Bit, das Git bereits verfolgt), gibt es anscheinend einen Hook , der dies tut. Es wird in diesem Serverfehler-Thread erwähnt .
filter-branch
und einen 'work in progress'-Klon davon in einem Unterverzeichnis von ~ einrichten. Dies scheint eine allgemein nützliche Strategie zu sein: Ich gehe davon aus, dass es ähnlich nützlich sein wird, mein gesamtes Home-Dir-Repo zu klonen und dann Skripte zu testen, nachdem $ HOME in das Klonverzeichnis gesetzt wurde. Ich bin mir nicht sicher, wie allgemein anerkannt diese Umgebungsvariable ist, aber ich werde sehen.Sie können git in Ihrem Home-Verzeichnis verwenden und dann git-Submodule oder den Revisionsbaum für die externen git-Projekte verwenden, an denen Sie arbeiten.
quelle