[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help: config Management]
[Thread Prev] | [Thread Next]
- Subject: Re: [Help: config Management]
- From: Stefan Hagen <sh+uugrn@xxxxxxxxxxx>
- Date: Wed, 20 Mar 2019 15:45:35 +0100
- To: uugrn@xxxxxxxxxxxxxxx
Hi Christian, Christian Nitschke wrote: > Ich wollte mal fragen, wie Ihr eure Config Dateien handhabt. > was waeren 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 fuer dein Home. Im Verzeichnis $HOME/.cfg liegen nur die Git-Verwaltungsdaten. Als naechstes legst du dir ein Alias an: $ alias config="git --git-dir=$HOME/.cfg/ --work-tree=$HOME" Nun solltest du "einmal" folgendes ausfuehren: $ config config --local status.showUntrackedFiles no (sonst wuerde "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 fuege es einfach hinzu: $ config add .vim $ config commit -m "Meine Vim Konfiguration" $ config push Du kannst natuerlich 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@xxxxxxxxxxx:dotfiles.git $HOME/.cfg config config --local status.showUntrackedFiles no config checkout -f } ----- Alles gibt's natuerlich 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 hinzugefuegt. Spaeter fuegst du ein neues Plugin ein - z.B. .vim/bundle/vim-fugitive dann wird das von git nicht automatisch aufgepickt. Das muss mit "config add" hinzugefuegt werden. Als Tippfauler Mensch ist man verleitet dann einfach nochmal "config add .vim" zu tippen. Das fuehrt dann unter Umstaenden dazu, dass viel zu viel hinzugefuegt wird. (undo files, swapfiles, passwoerter...). Oder im Falle von .mutt z.B. der komplette header cache ;) # Keine Passwoerter committen Klingt logisch, ist manchmal aber gar nicht so einfach. Viele Programme erlauben es Passwoerter aus Konfigurationsdateien raus zuhalten indem sie Programme wie "pass" (password-store) oder gpg rufen koennen um sich ein passwort abzuholen. Wenn das nicht moeglich ist, dann commite ich eine Datei namens .configfile.sample mit "****" statt Passwort. Das ist aber nur mein persoenlicher Workaround. # Mit pull mit --rebase, stash kennen lernen Man aendert 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 Aenderungen "rumhaengen": $ config stash $ config pull --rebase $ config stash apply *Ich* bin mit meiner Loesung _sehr_ zufrieden. Viele Gruesse, 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/