Wie halte ich Dot-Files auf dem neuesten Stand?

2

Ich habe zwei Computer, einen bei der Arbeit und einen zu Hause. Bei der Arbeit hat man eine VM, auf der Arch ausgeführt wird, und bei der Heim-VM wird Arch nativ ausgeführt. Die Arbeit, die man normalerweise macht, bleibt bei der Arbeit, aber wenn ich an einem Ort an etwas arbeite, kann ich dort weitermachen, wo ich aufgehört habe.

Eine Sache, die ich ziemlich oft tue, ist die Optimierung von Konfigurationsdateien für Dinge wie Vim, ZSH, i3, bla bla bla, und ich bin es leid, mich daran erinnern zu müssen, was ich in der Nacht zuvor getan habe, um die nächste Maschine zu behalten benutze die Geschwindigkeit!

Ich weiß, dass dies ein Job für Git ist, aber wie soll ich das schaffen? Zum Beispiel habe ich eine Reihe von Punktedateien in meinem Home-Verzeichnis in verschiedenen Unterverzeichnissen. Ich müsste nicht nur die Änderungen verfolgen, sondern auch den Speicherort dieser Dateien im Verhältnis zu dem Ort verwalten, an dem sie sich in einem von mir erstellten Repository befinden.

Die andere Sache ist, dass für einige dieser Punktedateien die Installation von Software erforderlich ist. Also, nehmen Sie zum Beispiel i3: Ich habe i3 auf meinem Heimcomputer installiert und es mit seiner Konfigurationsdatei nach meinen Wünschen angepasst ... Aber, Einfach die Punktedateien zu ziehen, wenn ich zur Arbeit komme, macht nicht viel Sinn, weil auf dem Arbeits-Laptop nicht i3 installiert wäre! Ich müsste daran denken, auch so und so zu installieren. Ein weiteres gutes Beispiel hierfür sind Python-Module. Manchmal werde ich etwas erledigen und die genauen Namen der Module vergessen, die ich als Python-Abhängigkeiten installieren musste, um sie zum Laufen zu bringen. In diesem Fall ist das Abrufen der Konfigurationsdateien nur die halbe Miete ... Ich würde ein Skript oder etwas anderes benötigen, um sicherzustellen, dass das Backend für diese Konfigurationsdateien auf dem neuesten Stand und an der richtigen Stelle 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 in dieser Ausgabe eine Menge Stammeswissen zur Verfügung steht, wie hochqualitative Unix / Linux-Benutzer diese scheinbar realistische Administrationsaufgabe bewältigen. Jeder schlägt etwas ganz anderes vor, und die meisten Probleme scheinen mit der Wiederherstellung nach einem vollständigen Systemausfall zu zusammenhängen, anstatt einfach zwischen zwei häufig verwendeten Computern auf dem neuesten Stand zu bleiben.

testname123
quelle

Antworten:

0

Ich würde empfehlen verstauen im Anschluss daran führen .

Bei diesem Ansatz befinden sich alle Punktedateien in einem Ordner, der versionsgesteuert / synchronisiert werden kann. Es werden Symlinks erstellt, damit die Punktedateien problemlos aktualisiert werden können.

Für die Installation der benötigten Software ist es am einfachsten, ein Bash-Skript oder eine Bash-Datei mit Hinweisen zu erstellen, die neben der Konfiguration zu tun sind:

/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
sitic
quelle
2
Bitte tragen Sie die relevanten Teile des Leitfadens direkt in Ihre Antwort ein. Dies ist so, dass die Antwort möglicherweise weiterhin hilfreich ist, wenn die ursprüngliche Referenz nicht mehr verfügbar ist. Hinweis für den Fall: Zum jetzigen Zeitpunkt kann ich den Leitfaden aufgrund von a nicht erreichen 403 Verboten Error. (Dies scheint in diesem Fall der Fall zu sein, um direkte Links von externen Seiten zu verhindern. Zum Leitfaden gelangen Sie, indem Sie die URL kopieren, anstatt zu klicken, oder indem Sie von der Hauptseite aus zu ihr navigieren.)
Adaephon
0

Ich habe dies gelöst, indem ich (die meisten) meiner Punktedateien darin abgelegt habe ~/dotfiles, die ein git repo, das ich regelmäßig zum 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 ist nur der "richtige Ort" $HOMEEs liegt jedoch an Ihnen, das Skript dazu zu bringen, Links zu anderen Orten zu erstellen.

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

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

Es klingt wie was stow Dabei schien es einfach genug zu sein, auf ein weiteres Tool zu verzichten.


Ich denke darüber nach, meine .emacs.d und .xmonad Repos als Submodule in meinem dotfiles repo ... Vielleicht ist es die Mühe nicht wert, und ich werde die wahrscheinlich nicht vergessen --recursive während des Klonens.

Gauthier
quelle