Wie kann ich Dot-Files auf dem neuesten Stand halten?

520
testname123

Ich habe zwei Computer, einen bei der Arbeit und einen zu Hause. Auf der Work One läuft eine VM, auf der Arch ausgeführt wird, und auf der Home-Konsole wird Arch nativ ausgeführt. Die Arbeit bleibt normalerweise auf der Arbeit, aber ich schub viele Sachen mit Git hin und her. Wenn ich also an einem Ort an etwas arbeite, kann ich dort weitermachen, wo ich an einem anderen aufgehört habe.

Eine Sache, die ich ziemlich oft mache, ist das Filtern von Konfigurationsdateien für Dinge wie Vim, ZSH, i3, bla bla bla, und ich bin wirklich krank und müde, mich daran zu erinnern, was ich in der Nacht zuvor getan habe, um die nächste Maschine zu behalten bin bis zur Geschwindigkeit!

Ich weiß, das ist ein Job für Git, aber wie soll ich das schaffen? Zum Beispiel habe ich in meinem Unterverzeichnis in verschiedenen Unterverzeichnissen eine Reihe von Punktdateien. Ich müsste nicht nur die Änderungen nachverfolgen, sondern auch den Speicherort dieser Dateien in Bezug auf den Speicherort in einem von mir erstellten Repository verwalten.

Die andere Sache ist, einige dieser Punkt-Dateien würden Software erfordern, die installiert werden muss. Nehmen Sie zum Beispiel i3: Ich habe i3 auf meinem Heimcomputer installiert und habe es mit seiner Konfigurationsdatei nach meinem Geschmack gefällt ... Aber, Einfach die Punktedateien zu ziehen, wenn ich zur Arbeit komme, macht keinen Sinn, da auf dem Arbeitslaptop kein i3 installiert ist! Ich müsste daran denken, so und so gut zu installieren. Ein anderes gutes Beispiel dafür sind Python-Module ... Manchmal erledige ich etwas und vergesse die genauen Namen der Module, die ich als Python-Abhängigkeiten installieren musste, um sie zum Laufen zu bringen. In diesem Fall ist das Ziehen der Konfigurationsdateien nur die halbe Geschichte ... Ich würde ein Skript oder etwas benötigen, um sicherzustellen, dass das Backend für diese Konfigurationsdateien auf dem neuesten Stand ist.

Ich weiß, dass dies eine weniger als spezifische Frage ist, die die Leute hier gerne sehen, aber ich habe auch das Gefühl, dass dieses Thema über ein umfangreiches Dokumentationsmaterial verfügt, das darüber informiert, wie erstklassige Unix / Linux-Benutzer mit dieser scheinbar realistischen Verwaltungsaufgabe umgehen. Alle schlagen etwas ganz anderes vor, und die meisten Probleme scheinen mit der Wiederherstellung nach einem vollständigen Systemausfall zu tun zu haben, anstatt einfach zwischen zwei häufig verwendeten Maschinen auf dem neuesten Stand zu bleiben.

2

2 Antworten auf die Frage

0
sitic

Ich würde empfehlen, mit versenkbaren Anschluss an diese Anleitung .

Bei diesem Ansatz befinden sich alle Dotfiles in einem Ordner, der versionsgesteuert / synchronisiert werden kann. Es erstellt Symlinks, so dass die Dotfiles leicht aktualisiert werden können.

Für die Installation der benötigten Software ist der einfachste Weg, einfach ein Bash-Skript oder eine Datei mit Notizen zu erstellen, was neben der Konfiguration zu tun ist:

/home/user/ dotfiles/ bash/ .bashrc .bash_profile .bash_logout i3/ .config/ i3/ [...some files] i3.install.sh  $ cd ~/dotfiles $ stow bash $ ./i3.install.sh $ stow i3 
Bitte geben Sie die relevanten Teile des Leitfadens direkt in Ihre Antwort ein. Dies ist so, dass die Antwort immer noch hilfreich sein kann, wenn die ursprüngliche Referenz nicht mehr verfügbar ist. Punkt für den Fall: Zum Zeitpunkt des Schreibens kann ich den Leitfaden aufgrund eines Fehlers * 403 Forbidden * nicht erreichen. (Was in diesem Fall anscheinend getan wird, um direkte Links von externen Seiten zu verhindern. Das Handbuch kann durch Kopieren und Einfügen der URL erreicht werden, anstatt auf die Hauptseite zu klicken oder zu ihr zu navigieren.) Adaephon vor 8 Jahren 2
0
Gauthier

Ich löste das, indem ich (die meisten) meine Punktdateien einlegte . Dies~/dotfiles ist ein Git-Repo, das ich regelmäßig zu Github schiebe .

In diesem Repo habe ich auch ein Skript, das Links an der richtigen Stelle einrichtet:

#!/bin/bash for f in $(find -name ".*" -type f); do if [[ -e $HOME/$f ]]; then mv $HOME/$f $HOME/$f.old fi ln $f $HOME/$f done 

Bisher gibt es nur den "richtigen Ort" $HOME, aber es liegt an Ihnen, dass das Skript Links zu anderen Orten erstellt.

Ich habe Hardlinks verwendet, weil git Symlinks standardmäßig als Links speichert, aber ich bin sicher, dass es eine Möglichkeit gibt, sie für Symlinks zu korrigieren.

In einer neuen Version habe ich das Skript erweitert, um störende Konfigurationsdateien wie ~/.config/git/gitk. Ich hätte dort genauso gut Links setzen können als in $HOME.

Es klingt nach dem, was es stowtut, es schien einfach zu sein, ein weiteres Werkzeug mit einzubeziehen.


Ich überlege mir, meine .emacs.dund .xmonadRepos als Submodule in mein dotfilesRepo zu integrieren ... Vielleicht lohnt es sich aber nicht, und ich werde das --recursiveKlonen nicht unwahrscheinlich vergessen .