Daher bin ich mit der Versionskontrolle sehr vertraut und habe mir überlegt, Versionen meines Bash-Profils zu verfolgen: ~/.bash_profile
mit dem zusätzlichen Vorteil, dass ich meine verschiedenen Aliase und dergleichen auf GitHub teilen kann.
Angenommen, meine .bash_profile-Datei muss in meinem Ausgangsverzeichnis bleiben (ich kann sie nicht in ein Verzeichnis einbinden, um sie wie eine normale Datei alleine zu verfolgen). Was wäre der beste Weg, dies zu tun? Ich möchte kein Git-Repo in meinem Home-Verzeichnis initialisieren und muss jede andere vorhandene Datei ignorieren.
Was könnte also eine gute Lösung sein?
Ich nehme an, ich könnte einfach eine Kopie davon in einem separaten Verzeichnis erstellen und es von Zeit zu Zeit aktualisieren / festschreiben, aber ich bin gespannt, ob es eine gute Möglichkeit gibt, eine einzelne Datei in einem aufgefüllten Verzeichnis zu versionieren.
quelle
Antworten:
Afaik, normalerweise gibt es zwei Möglichkeiten, dies zu tun: a) symbolische Verknüpfung b) Synchronisierungsskript. In beiden Fällen müssen Sie ein weiteres Repo erstellen (nennen Sie es
dotfile
unten)bash_profile
, um die Version steuern zu können.Verwenden Sie symbolische Links
bash_profile
wird in Ihr versioniertes Verzeichnis verschoben (enthält.git
),$HOME/.bash_profile
ist ein Softlink ⇢$HOME/dotfile/bash_profile
.$HOME/dotfile/bash_profile
Hier befindet sich Ihr tatsächlicherbash_profile
Wohnsitz, siehe Holman Dotfile als Beispiel.Verwenden Sie das Synchronisierungsskript
bash_profile
bleibt in deinemHOME
Verzeichnis, aber es ist nur eine Kopie der 'neuesten'. Das Neuestebash_profile
lebt noch in$HOME/dotfile
.Ja, es ist ein Copy-and-Paste-Ansatz. Deshalb benötigen Sie einige
syncing script
, um sich vor der DRY- Arbeit zu schützen . siehe mathiasbynens dotfiles als gutes Beispiel. Seinesyncing script
https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh .Außerdem
Wie Sie vermuten:
Die Versionskontrolle einer einzelnen Datei ist nicht sehr sinnvoll. Das Kopieren und Einfügen oder das einfache Ablegen auf einigen Cloud-Laufwerken erspart Ihnen viel Aufwand.
Der eigentliche Punkt ist , dass die Dinge nicht so skaliert erhalten, wenn die
dotfiles
in Ihrem$HOME
wächst, wenn Sie die Versionskontrolle Ihre Lieblings - Config (zB Text - Editors wollenvimrc
), wenn SieSSH
zur Arbeit mit mehreren Shell - Remote, die Sie haben könntenzshrc
,bashrc
,fishrc
usw.Dies bedeutet, dass Sie auf lange Sicht möglicherweise alle Ihre
dotfile
s versionieren möchten . Githubs Dotfile ist ein guter Ausgangspunkt.quelle
Warum nicht? Sie möchten eine Datei in Ihrem Home-Verzeichnis verfolgen, daher sollte auch Ihr Home-Verzeichnis unter Versionskontrolle stehen.
Das bedeutet nicht, dass Ihr Home-Verzeichnis ein Git-Repository sein muss. Lassen Sie mich erklären:
Git-Repositorys bestehen aus zwei Teilen: einem Arbeitsbaum (es sei denn, es handelt sich natürlich um ein nacktes Repository) und dem
.git
Verzeichnis "Datenbank". Normalerweise ist das letztere nur ein (verstecktes) Unterverzeichnis des ersteren, aber das ist nicht unbedingt notwendig. Git unterstützt die Verwendung eines getrennten Arbeitsbaums . Auf diese Weise können Sie Ihr Home-Verzeichnis unter Versionskontrolle halten, müssen jedoch kein.git
Verzeichnis enthalten , das Tools (vim, emacs, ...) oder git selbst verwirren könnte.Einrichten:
Jetzt gibt es ein
~/.dotfiles/.git
Verzeichnis. Verwenden Sie das, aber geben Sie das Ausgangsverzeichnis als Arbeitsbaum an. Dies erfordert eine ziemlich lange Befehlszeile, daher ist ein Alias eine gute Idee:Um es zu verwenden, verwenden Sie einfach den obigen Alias anstelle von
git
zdotfiles status
.Leistungen:
Ich habe dies von diesem Blog-Beitrag (der einige zusätzliche Infos enthält) erhalten und benutze es ohne Probleme. Ich nicht, aber mit einer einfachen Zeile
*
in können.gitignore
Sie die möglicherweise große Menge an nicht verfolgten Dateien loswerden und sich ein wenig vor dem Hinzufügen von Dateien zum Repository schützen, die nicht zum Hinzufügen vorgesehen sind.quelle
Eine andere Lösung wäre, Ihre spezifische Konfiguration (wie das Festlegen eigener Aliase oder das Definieren eigener Funktionen) in eine andere Datei als zu deportieren
.bash_profile
. Auf diese Weise wird nur Ihre spezifische Konfiguration versioniert und Sie müssen sie nur von Ihrem beziehen.bash_profile
.Mach es manuell
Angenommen, diese
.bash_profile
Erweiterungsdatei ist benanntbash_profile_ext
und im/path/to/bash/profile/ext/
Verzeichnis enthalten:Am Ende Ihrer
.bash_profile
Datei haben Sie:Und nur Ihr
/path/to/bash/profile/ext
Verzeichnis wird versioniert.Verwenden Sie dazu eine Drittanbieter-App
Noch einfacher (ich denke :-)) entwickle ich ein shprofile , mit dem Sie Ihr Shell-Profil verwalten können, indem Sie sich nur auf Ihre spezifische Profilkonfiguration konzentrieren. Mit shprofile können Sie alle Ihre spezifischen Profilkonfigurationen in einem einzigen Verzeichnis definieren, das dann versioniert werden kann. Beachten Sie, dass Sie auch mehrere Profile für denselben Benutzer verwalten können.
Auch hier müssen Sie nicht Ihre gesamte
.bash_profile
Konfiguration versionieren, sondern nur Ihre zusätzlichen Werte.quelle
Für das IT-Konfigurationsmanagement auf Unternehmensebene verwenden viele Puppet. Ich empfehle Puppet Kunden als Kostensenkungs- und Zuverlässigkeitsmaßnahme. Hier im Labor halten wir es einfach.
Unser Haupt-Repository enthält Dateien, die zum vollständigen Wiederherstellen eines abgestürzten Systems oder zum Erstellen eines neuen Benutzerkontos erforderlich sind. Die Versionskontrolle war bereits mehrfach hilfreich. Git ist in Ordnung mit Dateien und Verzeichnissen, die mit einem Punkt beginnen, solange Git nicht so konfiguriert ist, dass sie ignoriert werden.
Dies sind Repository-Pfade für die Installation und Konfiguration von Systemen und Anwendungen.
Dies sind allgemeine Benutzerkonfigurationsdateien.
Diese sind für Remote-Konten auf Servern.
Diese sind für das Root-Konto.
Ich verwende Dateien mit der Größe "use.ls.al.to.see.dot.files.here", um mich daran zu erinnern, dass das Verzeichnis nur leer aussieht.
quelle