web-dev-qa-db-fra.com

Comment utiliser Github pour gérer les fichiers de points?

J'ai stocké mes fichiers de points dans github, avec beaucoup de peine, à cause de l'absence d'automatisation. Je dois le mettre à jour moi-même.

Existe-t-il un moyen d’installer/mettre à jour/synchroniser les fichiers de points automatiquement? Je veux dire sur un nouveau serveur, je télécharge dotfiles et exécute un script install pour copier les fichiers dot en local. Après un certain temps, je peux exécuter un script updateToRemote pour transmettre les modifications locales au référentiel distant et sur un autre serveur, je peux exécuter un script updateToLocal pour extraire les modifications distantes en local.

Quelque chose comme ca.

23
nfpyfzyf

La principale source d’information sur les fichiers de points est dotfiles.github.io .

Il fait référence à des articles de blog tels que Utilisation de Git et de Github pour gérer vos fichiers Dotfiles , basés sur une méthode de lien symbolique.

Pour commencer, nous allons placer tous nos fichiers dot dans un dossier appelé fichiers dot, comme ceci: /home/smalleycreative/dotfiles/vimrc.
Ensuite, nous allons simplement leur faire un lien symbolique depuis notre répertoire personnel. 


Jaime mentionne le didacticiel Atlassian " Le meilleur moyen de stocker vos fichiers dot: Un référentiel Git nu "

La technique consiste à stocker un référentiel nu Git dans un dossier "latéral" (comme $HOME/.cfg ou $HOME/.myconfig) en utilisant un alias spécialement conçu pour que les commandes soient exécutées sur ce référentiel et non sur le dossier local .git/ habituel, qui interfèrerait avec tout autre référentiel Git. autour.
(puis le dossier dotfiles est géré en tant que dépôt Git)

30
VonC

Les réponses ci-dessus sont excellentes et sont exactement ce que je ferais sur des "systèmes d'exploitation réels".

J'ai rencontré un problème avec cela sur un système d'exploitation commercial bien connu utilisant cygwin/msys, l'utilisation de liens symboliques pouvant parfois poser problème avec les ports "natifs" de certains de mes logiciels préférés.

Pour contourner ce problème, j’ai essayé de faire du dossier $ HOME un référentiel git directement. Après quelques échecs, j'ai trouvé que la clé se trouvait dans le fichier .gitignore.

Ainsi, la configuration que j'utilise depuis un certain temps a été créée en transformant $ HOME en référentiel, en créant un fichier .gitignore, puis en ajoutant les fichiers "fichiersfichiers" requis individuellement. J'ai également ajouté un référentiel sur un lecteur de sauvegarde (z: dans ce cas) en amont uniquement pour obtenir les sauvegardes automatiques. Si votre dossier est déjà sauvegardé, ajouter un fichier en amont est une complication inutile. Ainsi, en supposant que "/z/Backups/Dotfiles.git" soit un référentiel "nu" préexistant, dans msys Shell, les étapes à suivre pour configurer les éléments sont les suivantes:

$ 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 >>

Ensuite, je mets le texte suivant dans $ HOME/.gitignore:

# 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/

Enfin, les commandes suivantes (des excuses, je n'ai pas capturé la sortie de celles-ci) ajoutent le fichier .gitignore lui-même au référentiel:

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

Désormais, tous les fichiers "normaux" que vous ajoutez à votre répertoire personnel sont ignorés par le dépôt de fichiers dotfiles, mais tous les nouveaux fichiers dot apparaissent dans l'état git, par exemple:

$ 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)

Jusqu'à présent, cela fonctionnait bien, même si certains sous-répertoires étaient leur propre référentiel git (non lié). Parfois, il y a des "bizarreries" avec des sous-répertoires non-git, mais jusqu'à présent, rien ne pose problème.

5
user6092647

Trois ans plus tard, personne n’a rien trouvé d’aussi génial, j’ai donc essayé de résoudre ce problème. Elle est agnostique sur la plate-forme et agnostique sur Shell, sans aucune dépendance autre que le shell compatible avec la version disponible (bash, zsh, ksh, etc.). Cela fonctionne sur mac, linux et windows:

dotsys

Il synchronisera automatiquement les modifications apportées à vos fichiers de points avec github et plusieurs machines, ainsi que de nombreuses autres fonctionnalités.

3
arctelix

J'utilise git repository (github) et le script bash pour créer des liens symboliques. Mais maintenant, j'ai trouvé cet outil qui semble être plus puissant. Vérifiez-le: https://github.com/shanx/python-dotfiles .

1
Marek Fajkus

Vous mettez à jour/synchronisez vos fichiers de points avec les commandes git Push/pull (GitHub jouant le rôle de référentiel «central»). En ce qui concerne la création de liens symboliques entre fichiers de points, j’ai écrit un article à ce sujet. Découvrez-le: gérez vos fichiers de points avec facilité .

0
Gee-Bee

J'ai trouvé un moyen intéressant d'utiliser plain git pour gérer vos fichiers de points, aucun lien symbolique nécessaire. De cette façon, vous devriez être capable de faire Push and pull de la manière habituelle:

Configuration

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

où mon répertoire ~/.myconf est un référentiel git bare. 

Utilisation

Les commandes git habituelles peuvent ensuite être utilisées avec l'alias git, par ex. config ou ce que vous choisissez.

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

Avantages

  • Pas d'outillage supplémentaire
  • pas de liens symboliques

Plus d'infos

0
lorey

L'idée principale est d'avoir un répertoire séparé (généralement appelé .dotfiles) avec tous les fichiers dot réels que vous voulez garder dans git et d'avoir des liens symboliques dans le répertoire personnel.

Il y a déjà beaucoup de travail fait pour cette approche, donc je vous recommanderai de vérifierDFM(gestionnaire de fichiers de fichiers):