Mettre le répertoire de la maison sous le contrôle des sources (HG)
-
29-10-2019 - |
Question
Pendant un certain temps, je n'avais que mon code sous le contrôle source, mais j'ai décidé que ce serait cool de mettre des choses comme mes affaires dans mon dossier .vim entre autres dans un repo. (Je ne vais évidemment pas tout stocker dans mon dépôt, juste divers fichiers de configuration, mon répertoire SRC et peut-être aussi quelques autres choses)
J'ai pu configurer un repo très bien, puis le pousser vers mon serveur où je peux y accéder depuis mes autres ordinateurs, mais je ne peux pas le cloner à mes autres ordinateurs. Lorsque j'essaie de le cloner, cela échoue car le répertoire de la maison n'est pas vide. Existe-t-il un moyen de faire ce que je veux ici?
La solution
Étant donné que les fichiers versés entre mes ordinateurs sont les mêmes, ce que j'ai fait était:
~$ hg clone ssh://myserver/hg/dotfiles mydotfiles
~$ mv mydotfiles/.hg .
~$ rm -rf mydotfiles
Et c'est tout, maintenant votre dossier à domicile est sous le contrôle de version, mais bien sûr, si vos fichiers DOT ne sont pas identiques entre les ordinateurs, vous devrez faire quelque chose.
Comme je ne veux que verser des fichiers et pas tout dans mon dossier à domicile, j'ai cette règle simple dans ~/.hgignore
# This .hgignore is for the dotfiles repository only,
# the rest of my HG repositories use the file
# .hgignore_global as referenced by [ui]'s ignore setting.
syntax:glob
*
De cette façon, je n'ai pas un océan de fichiers quand je le fais hg status
et ne voyez que ces fichiers que j'ai sous le contrôle de version qui ont été modifiés.
Mais comme je veux voir des fichiers non versés lorsque je travaille dans un autre référentiel HG, j'ai ceci dans mon ~/.hgrc
dossier
[ui]
ignore=/home/gajon/.hgignore_global
Et ~/.hgignore_global
Contient certains filtres pour les fichiers transitoires communs:
syntax: glob
*.pyc
*~
.*.swp
.svn*
*.svn*
*.fasl
syntax: regexp
^\.pc/
Autres conseils
Supposons que tu as proj1 et proj2. proj1 est un repos mercurial que vous voulez cloner proj2, mais proj2 a déjà des fichiers.
Essaye ça:
hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip
Dans les autres répertoires qui existent déjà, vous pourriez hg init
, hg add
ce que tu veux, hg commit
ce, hg pull
du dépôt central et traitez la fusion qui en résulte.