Etckeeper ist ein großartiges Tool, um Änderungen an Ihren Konfigurationsdateien in zu verfolgen /etc
. Ein paar wichtige Dinge sind wirklich bemerkenswert. Es kann mit einer Vielzahl von VCSs verwendet werden: Git, Mercurial, Darcs oder bzr. Es führt auch tägliche automatische Festschreibungen durch und wann immer Sie ein Paket installieren, entfernen oder aktualisieren. Außerdem werden Dateiberechtigungen und Metadaten zu Benutzer- / Gruppenbesitz erfasst.
Ich möchte auch meine "Punktedateien" in meinem Home-Verzeichnis unter Versionskontrolle halten, vorzugsweise Basar. Weiß jemand, ob es für diesen Zweck ein Tool wie Etckeeper gibt?
Im schlimmsten Fall, ich stelle ich vor , dass ein einfacher Cron - Job läuft bzr add && bzr ci
einmal oder zweimal täglich zusammen mit Zugabe ~/Documents
, ~/Music
usw. zu dem .bzrignore
jemandem schon etwas zu tun , ähnlich mit einem Skript?
Während ich Basar vorziehen würde, könnten andere Optionen interessant sein.
quelle
bzr
ist sicherlich nicht derAntworten:
Ich wusste nicht, ob es irgendetwas gab, das dies tat, also habe ich Code zusammengestellt, um genau das zu erreichen, was Sie wollen, indem ich mein Repository hier verwende: http://github.com/robertmassaioli/config-files
Ich habe eine Datei, die sagt, wo alle Dateien hingehören und das generate_links-Programm legt sie einfach alle dort ab. Wenn Sie wissen, was Sie tun, und Haskell-Code kompilieren können, ist dies wirklich einfach und unkompliziert. Seien Sie jedoch gewarnt, dass es wirklich für meinen persönlichen Gebrauch gemacht wurde.
quelle
Nun, ich habe das manuell gemacht, bis ich eine bessere Lösung gefunden habe. Ich könnte also genauso gut erklären, was ich getan habe.
Zuerst habe ich eine gemacht
bzr init ~
, aber das nächste was ich gemacht habe warbzr ignore "*"
. Ich entschied, dass ich nicht alles unter Versionskontrolle halten wollte. Es hat sich einfach nicht gelohnt, besonders wenn man bedenkt, dass es einige Dinge gibt, die man wirklich nicht in vcs wie seinen Schlüsseln behalten sollte. Also musste ich dann aufbzr add
die spezifischen Dateien, die ich wollte. Sie können auch Ausnahmen hinzufügen.bzrignore
. Auch hier sind reguläre Python-Ausdrücke nützlich. Ich halte es für jetzt ziemlich schlank. Wenn alles gut geht, könnte ich alle hinzufügen~/.config
und~/.gconf
zu.Ich habe auch ein schnelles Skript geschrieben, das ich als Cron-Job ausführe. Es wird geprüft, ob sich die Dateien geändert haben, und wenn ja, wird ein automatisches Festschreiben durchgeführt:
quelle
Ich habe mein gesamtes
~
Verzeichnis in ein Basar-Repository verwandelt . Das Speichern von Metadaten ist für Dateien im Basisverzeichnis kein Problem: Alle Dateien gehören demselben Konto und derselben Gruppe undbzr
speichern bereits das Ausführungsbit.Ich füge die "interessanten" Dateien manuell hinzu (ich möchte nicht, dass zB meine Musiksammlung oder der Firefox-Cache unter Versionskontrolle stehen), aber wenn Sie dies mit einem Skript automatisieren möchten, halte ich es für die einfache Lösung von Bei
bzr add && bzr ci
ausgewählten Verzeichnissen oder bei der Ausgabe einesfind
Befehls wird nur der Job ausgeführt.quelle
Ich behalte meine zsh- und vim-Dateien in git, put on github und in verschiedenen Repositories:
für zsh habe ich beispielsweise ".zsh" erstellt und darin zshrc und zshenv sowie ein Skript zum Verknüpfen von zshrc mit ~ / .zshrc und zshenv mit ~ / .zshenv eingefügt.
So ich mache
Für .vim ist es fast dasselbe, außer dass ich Submodule für Plugins mit Pathogen verwende, also habe ich das in der init.sh hinzugefügt
und wenn ich ein Vim-Plugin hinzufügen möchte, tue ich
beispielsweise.
ok, es würde ein bisschen zu viel Arbeit erfordern, wenn Sie mehr als ein paar Punktverzeichnisse haben, die Sie verwalten möchten, aber nichts hindert Sie daran, sie alle in dasselbe Verzeichnis zu setzen oder nach Aktivitäten zu trennen (für alle grafischen Editoren ein für) Webaktivitäten ...) oder so. Jedenfalls habe ich das getan, also nur meine zwei Cent :).
quelle
Ich verwende eine Lösung, die nicht automatisch ist wie Etckeeper (ich muss manuell festschreiben), aber es hat gut für mich funktioniert. Es ist nicht ganz so entwickelt, wie ich es mag, aber es funktioniert.
Ich habe mein eigenes Hilfsprogramm geschrieben, das GNU Stow ähnelt , da stow nicht alles getan hat, was ich wollte. Ich nenne es Stow in Home . Wenn es ausgeführt wird, sucht es nach einem Verzeichnis mit dem Namen "HOME". Dann nimmt es alles unter diesem Verzeichnis und verknüpft es mit dem entsprechenden Speicherort in $ HOME, wobei es nach Bedarf Verzeichnisse erstellt. Es werden auch Dateinamen übersetzt - wenn eine Datei mit einem '_' beginnt, wird sie durch ein '.' Ersetzt. Ich habe dies getan, weil es besser ist, meine Punktedateien zu bearbeiten, wenn sie nicht ausgeblendet sind (standardmäßig werden sie in Verzeichnislisten angezeigt). Dann würde es sie in den Namen setzen, den ihre Anwendung erwartet.
Ich habe also mehrere Git-Repositories für meine Konfiguration. Ich füge nur Punktedateien hinzu, die ich persönlich bearbeite. Dies hat den Vorteil, dass ich ein Repository für Punktedateien haben kann, das ich mit anderen teilen kann (wie z. B. meine Emacs-Konfiguration) und eines für andere, die privat sind (z. B. meine ssh-Konfiguration, mit Hostnamen und dergleichen für die Arbeit). Die Verknüpfung mit Stow-in-Home bringt alles an den richtigen Ort, aber die Quellcodeverwaltung für jedes kann separat sein.
Es hat gut für mich funktioniert. Es gibt wirklich keinen Grund, warum ich nicht festlegen konnte, dass Commits automatisch ausgeführt werden. Oder verschieben Sie alle Punktedateien in die entsprechenden Repositorys und verwenden Sie weiterhin die Funktion zum Verstauen zu Hause. Aber so habe ich es gemacht.
quelle
Können Sie das nicht
dot files
zum in Etckeeper verwendeten Repository hinzufügen?quelle
/etc
?Ich habe alle meine Dotfiles, die ich unter Versionskontrolle behalten möchte, in einen Ordner namens "dotfiles" in meinem / home / -Verzeichnis kopiert. Dies bedeutet natürlich, dass Duplikate aufbewahrt und bei Bedarf hin und her kopiert werden, aber ich finde, dass dies die einfachste Lösung für mich ist.
quelle
Ich behalte meine Dateien in einem Unterverzeichnis und erstelle symbolische Verknüpfungen. Ich habe ein Skript, das dies automatisiert. Sie können alles unter http://code.google.com/p/samking-config-files/source/browse/ nachlesen.
quelle