it-swarm.com.de

Wie verwalte ich Dotfiles mit Github?

Ich habe meine Punktedateien in Github gespeichert, ohne Automatisierung. Ich muss es selbst aktualisieren.

Gibt es eine Möglichkeit, Dotfiles automatisch zu installieren/zu aktualisieren/zu synchronisieren? Ich meine, auf einem neuen Server lade ich Punktedateien herunter und führe ein install-Skript aus, um Punktedateien nach local zu kopieren. Nach einiger Zeit kann ich ein updateToRemote-Skript ausführen, um lokale Änderungen an Remote-Repository zu übertragen, und auf einem anderen Server kann ich ein updateToLocal-Skript ausführen, um Remote-Änderungen an Local zu übertragen.

Sowas in der Art.

23
nfpyfzyf

Die Hauptinformationsquelle für Punktdateien ist dotfiles.github.io .

Es verweist auf Blogbeiträge wie Git und Github verwenden, um Ihre Dotfiles zu verwalten , basierend auf einer Symlink-Methode.

Für den Anfang legen wir alle unsere Dotfiles in einen Ordner namens Dotfiles, wie: /home/smalleycreative/dotfiles/vimrc.
Dann werden wir einfach von unserem Home-Verzeichnis aus mit ihnen verlinkt. 


Jaime erwähnt das Atlassian-Tutorial " Der beste Weg, um Ihre Punktdateien zu speichern: Ein bloßes Git-Repository "

Die Technik besteht darin, ein Git-Bare-Repository in einem "Side" -Ordner (wie $HOME/.cfg oder $HOME/.myconfig) mit einem speziell gestalteten Alias ​​zu speichern, so dass Befehle für dieses Repository ausgeführt werden und nicht der übliche .git/-Ordner, der andere Git-Repositorys stören könnte um.
(und der Ordner dotfiles wird als git repo verwaltet)

30
VonC

Die obigen Antworten sind ausgezeichnet und genau so, wie ich es auf "echten Betriebssystemen" tun würde.

Bei einem bekannten kommerziellen Betriebssystem mit cygwin/msys bin ich auf ein Problem gestoßen, bei dem die Verwendung von Symlinks manchmal mit "nativen" Ports einiger meiner Lieblingssoftware problematisch sein kann.

Um dies zu umgehen, experimentierte ich damit, den Ordner $ HOME direkt zu einem Git-Repository zu machen. Nach einigen Fehlern habe ich festgestellt, dass sich der Schlüssel in der .gitignore-Datei befindet.

Das Setup, das ich seit einiger Zeit verwende, wurde erstellt, indem aus $ HOME ein Repository erstellt, eine .gitignore-Datei erstellt und die erforderlichen "dotfiles" -Dateien einzeln hinzugefügt wurden. Ich habe auch ein Repository auf einem Backup-Laufwerk (z: in diesem Fall) als Upstream hinzugefügt, um die automatischen Backups zu erhalten. Wenn Ihr Ordner bereits gesichert ist, ist das Hinzufügen eines Upstreams eine unnötige Komplikation. Angenommen, "/z/Backups/Dotfiles.git" ist ein bereits vorhandenes "bloßes" Repository. In msys Shell sind die folgenden Schritte zum Einrichten der Schritte erforderlich:

$ cd $HOME
$ git init
Initialised empty Git repository in $HOME
$ git add .bashrc .emacs .gitconfig # for example
$ git commit -m "Initial import of dotfiles"
[master (root-commit) xxxxxxxx] Initial import for dotfiles
 3 files changed, xxx instertions(+)
 create mode 100644 .bashrc
 create mode 100644 .emacs
 create mode 100644 .gitconfig

# The following two lines just add an "upstream" purely for backup purposes.
$ git remote add Origin /z/Backups/Dotfiles.git
$ git Push -u Origin master
<< snip >>

Als nächstes habe ich folgendes in $ HOME/.gitignore eingefügt:

# First exclude everything.
*
# then re-include all "dotfiles"
!/.*
# then a bunch of specific excludes as they are more-or-less "cache" data rather than configuration.
/.bash_history
/.dbus-keyrings/
/.emacs.d/
/.gimp-2.8/
/.git/
/.gitk
/.idlerc/
/.lesshst
/.saves/
/.thumbnails/

Schließlich fügen die folgenden Befehle (entschuldigt, dass ich die Ausgabe nicht erfasst habe) das .gitignore selbst dem Repository hinzu:

$ cd $HOME
$ git add .gitignore
$ git commit -m "Added some rules so git status on the dotfiles is useful."
$ git Push

Jetzt werden alle "normalen" Dateien, die Sie zu Ihrem Heimatverzeichnis hinzufügen, vom Dotfiles-Repo ignoriert, aber alle neuen Dotfiles werden im git-Status angezeigt, z.

$ cd $HOME
$ touch NewFile.txt
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

nothing to commit, working directory clean

$ touch .funkychicken
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .funkychicken

nothing added to commit but untracked files present (use "git add" to track)

Bisher hat dies gut funktioniert, auch wenn einige Subdirs ihr eigenes (nicht verwandtes) Git-Repository sind. Manchmal gibt es "Macken" mit Nicht-Git-Subdiren, aber bisher nichts problematisch.

5
user6092647

Nun, es ist drei Jahre später und niemand hat sich etwas Großes einfallen lassen, also habe ich dieses Problem erstochen. Es ist plattformunabhängig und Shellagnostiker ohne andere Abhängigkeiten als die von Bourne kompatible Shell, die Sie zur Verfügung haben (bash, zsh, ksh usw.). Es funktioniert auf Mac, Linux & Windows:

dotsys

Es synchronisiert automatisch Änderungen an Ihren Punktedateien mit github und mehreren Maschinen sowie vielen anderen Funktionen.

3
arctelix

Ich verwende git Repository (github) und das bash-Skript zum Erstellen von Symlinks. Jetzt habe ich dieses Werkzeug gefunden, das mächtiger zu sein scheint. Check it out: https://github.com/shanx/python-dotfiles .

1
Marek Fajkus

Sie aktualisieren/synchronisieren Ihre dotfiles mit git Push/pull-Befehlen (GitHub fungiert als "zentrales" Repository). Wenn es um das Verknüpfen von dotfiles geht, habe ich einen Artikel darüber geschrieben. Überprüfen Sie es heraus: Verwalten Sie Ihre Dotfiles mit Leichtigkeit .

0
Gee-Bee

Ich habe eine interessante Möglichkeit gefunden, mit einfachen Gits Ihre Dotfiles zu verwalten, es sind keine Symlinks erforderlich. Auf diese Weise sollten Sie Push und Pull wie üblich ausführen können:

Setup

git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no

wobei mein ~/.myconf-Verzeichnis ein gare Bare-Repository ist. 

Verwendung

Die üblichen Git-Befehle können dann mit dem Git-Alias ​​verwendet werden, z. config oder was auch immer Sie wählen.

config status
config add .vimrc
config commit -m "Add vimrc"
config Push

Vorteile

  • Keine zusätzlichen Werkzeuge
  • keine symlinks

Weitere Infos

0
lorey

Die Hauptidee ist, ein separates Verzeichnis (normalerweise .dotfiles) mit allen echten Dotfiles zu haben, die Sie in git verfolgen möchten und symbolische Links im Ausgangsverzeichnis haben.

Für diesen Ansatz wurde bereits viel Arbeit geleistet, daher empfehle ich Ihnen,DFM(dotfiles manager) zu überprüfen:

  • Hier ist meine Auswahl von dotfiles mit dfm (Sie können es als Beispiel betrachten): vicente's dotfiles
  • Offizielles Repository von Github DFM-Site