Ajouter un file en dehors du repository git

Supposons que j'ai un post de travail local avec un access root et un server sans access root. Je veux partager (principalement la configuration) des files entre ces deux ordinateurs. J'ai donc mis en place un référentiel git avec le plus haut niveau dans mon directory personnel et j'ajoute ces files. Jusqu'ici tout va bien.

Supposons en outre qu'il existe un file dont j'ai besoin sur les deux ordinateurs. Il vient avec le gestionnaire de packages et en tant que tel sera installé en dehors de mon directory personnel. Il n'est pas installé sur le server et ne sera pas installé sur le server. J'ai maintenant deux options:

  1. Je l'installe localement avec le gestionnaire de packages et l'installe sur le server distant à la main. De cette façon, les files ne sont pas synchronisés. C'est un peu correct, puisque le file provient du gestionnaire de packages, ce n'est pas vraiment un file sur lequel je travaille. Cependant, j'ai toujours besoin de l'installer séparément lors du passage à un nouveau server, et cela arrive fréquemment. Je pourrais append un script shell qui installe le package et append ce script shell au repository git, cependant.

  2. Je l'installe localement dans mon directory personnel et l'ajoute au référentiel. De cette façon, je n'ai pas à l'installer séparément sur différentes machines, il est synchronisé, mais il n'est plus mis à jour via le gestionnaire de packages. C'est ce que je fais en ce moment.

Et voici la question: Y a-t-il un troisième – mieux – comment faire? tout lien magique symbolique git ?

De votre description, je l'ai pris que vous vouliez exécuter le script shell sur la machine distante. Mais il serait peut-être plus pratique de configurer un script shell pour qu'il s'exécute simplement sur votre machine locale, en poussant le package de votre directory de packageage local vers votre repo git local. Ensuite, vous pouvez utiliser cron ou, plus simplement encore, un hook de commit git, pour exécuter ce script afin que vous soyez toujours synchronisé.

[Déplacé du commentaire à la réponse sur request]

J'utilise maintenant le crochet pré-push suivant:

 #!/usr/bin/env bash # Copy local files that are outside the repository (because they are controlled # by the package manager) into the repository and commit them # Although this is a pre-push hook, the files are not included in this push # See also: http://unix.stackexchange.com/q/321328/58056 #remote="$1" #url="$2" localFiles=( /usr/bin/rg /usr/share/man/man1/rg.1.gz /usr/share/vim/vimfiles/autoload/pathogen.vim ) remoteFiles=( /home/foo/pkg/bin/rg /home/foo/pkg/man/man1/rg.1 /home/foo/.vim/autoload/pathogen.vim ) echo "Execute git pre-push hook" for idx in "${!localFiles[@]}"; do localFile="${localFiles[$idx]}" remoteFile="${remoteFiles[$idx]}" echo -n "Copy ${localFile} to ${remoteFile}... " cp "${localFile}" "${remoteFile}" echo "Done." echo -n "Add ${remoteFile} to repository... " git add -f "${remoteFile}" echo "Done." done echo "Commit if there is anything to commit... " git commit -m "Automatically add files by git pre-push hook" \ && echo -n "Some files were added and commited (but not pushed) " \ && echo "by the git pre-push hook" # Don't interfere with the push, so always exit with success exit 0