Re: [Help: config Management]

From: Stefan Hagen <sh+uugrn_at_codevoid.de>
Date: Wed, 20 Mar 2019 15:45:35 +0100
Hi Christian,

Christian Nitschke wrote:
> Ich wollte mal fragen, wie Ihr eure Config Dateien handhabt.
> was wären denn so eure Gedanken dazu?

Ich mache das seit einigen Jahren mit git. Und zwar ohne Symlinks.
Das ist eigentlich mega einfach, wenn man es mal gemacht hat.

Lege dir ein Bare Repository an:
$ git init --bare $HOME/.cfg

Damit hast du ein Repository für dein Home. Im Verzeichnis $HOME/.cfg 
liegen nur die Git-Verwaltungsdaten.

Als nächstes legst du dir ein Alias an:
$ alias config="git --git-dir=$HOME/.cfg/ --work-tree=$HOME"

Nun solltest du "einmal" folgendes ausführen:
$ config config --local status.showUntrackedFiles no
(sonst würde "config status" immer alle Dateien deines Homes als 
untracked auflisten)

Ab jetzt hast du das Kommando "config" welches du ganz genauso wie git 
benutzen kannst.

$ config status / commit / pull / push ... merge, rebase, reset... :)

Wenn du irgendwo in deinem Home jetzt eine Datei oder ein Verzeichnis 
hast, welches du in deine Dotfiles aufnehmen willst, dann füge es 
einfach hinzu:

$ config add .vim
$ config commit -m "Meine Vim Konfiguration"
$ config push

Du kannst natürlich auch ne Upstream URL setzen und das Repository auf 
Github oder Anderso hin puschen.

Wenn du es auf einer anderen Maschine Clonen willst, dann geht das so:

$ git clone --bare https://...../dotfiles.git $HOME/.cfg

-----

Ich habe mir in meiner .kshrc (sollte auch in bash funktionieren) 
folgende Funktionen und Aliase angelegt:

# config command
alias config='git --git-dir=$HOME/.cfg/ --work-tree=$HOME'

# I'm lazy, so just commit with some machine info
function dotfiles_autoupdate {
    config add -u && \
    config commit -m "Update $(date +"%Y-%m-%d %H:%M") $(uname -s)/$(uname -m)" && \
    config push
}

# please give me my dotfiles...
function dotfiles_init {
    git --no-replace-objects clone --bare \
        git_at_codevoid.de:dotfiles.git $HOME/.cfg
    config config --local status.showUntrackedFiles no
    config checkout -f
}

-----

Alles gibt's natürlich in meinen Dotfiles:
https://codevoid.de/?q=/1/git/dotfiles/files.gph

Erfahrungswerte (eigentlich generell zu git):

# Aufassen mit config add <verzeichnis>

Sagen wir du hast .vim deinem Git-Repository hinzugefügt. Später fügst 
du ein neues Plugin ein - z.B. .vim/bundle/vim-fugitive dann wird das 
von git nicht automatisch aufgepickt. Das muss mit "config add" 
hinzugefügt werden. Als Tippfauler Mensch ist man verleitet dann einfach 
nochmal "config add .vim" zu tippen. Das führt dann unter Umständen 
dazu, dass viel zu viel hinzugefügt wird. (undo files, swapfiles, 
passwörter...). Oder im Falle von .mutt z.B. der komplette header cache 
;)

# Keine Passwörter committen

Klingt logisch, ist manchmal aber gar nicht so einfach. Viele Programme 
erlauben es Passwörter aus Konfigurationsdateien raus zuhalten indem sie 
Programme wie "pass" (password-store) oder gpg rufen können um sich ein 
passwort abzuholen. Wenn das nicht möglich ist, dann commite ich eine 
Datei namens .configfile.sample mit "****" statt Passwort. Das ist aber 
nur mein persönlicher Workaround.

# Mit pull mit --rebase, stash kennen lernen

Man ändert ja doch immer mal wieder was auf nem nicht-aktuellen branch. 
Daher empfehle ich eigentlich generell:
$ config pull --rebase # statt config pull

Wenn noch nicht committete Änderungen "rumhängen":
$ config stash
$ config pull --rebase
$ config stash apply

*Ich* bin mit meiner Lösung _sehr_ zufrieden.

Viele Grüße,
Stefan

PS: Schnell getippt - bitte mit Autokorrektur lesen :)

-- 
Stefan Hagen | (gopher|https)://codevoid.de(/gpg)
CBD3 C468 64B4 6517 E8FB B90F B6BC 2EC5 52BE 43BA
-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Received on 20.03.2019

This archive was generated by hypermail 2.3.0 : 20.03.2019 CET