Colocar o diretório para a casa sob controle de origem (HG)
-
29-10-2019 - |
Pergunta
Por um tempo eu tinha apenas meu código sob controle de origem, mas decidi que seria legal colocar coisas como minhas coisas na minha pasta .vim entre outras coisas em um repo.(Eu obviamente não vou armazenar tudo no meu repo, apenas vários arquivos de configuração, meu diretório SRC, e talvez algumas outras coisas também)
Eu fui capaz de configurar um repomo, em seguida, empurre-o para o meu servidor onde posso acessá-lo de meus outros computadores, mas não consigo clonar para meus outros computadores.Quando tento clonar, ele falha porque o diretório home não está vazio.Existe uma maneira de fazer o que eu quero aqui?
Solução
Como os arquivos versionados entre meus computadores são os mesmos, o que fiz foi:
~$ hg clone ssh://myserver/hg/dotfiles mydotfiles
~$ mv mydotfiles/.hg .
~$ rm -rf mydotfiles
e é isso, agora sua pasta de início está sob controle de versão, mas é claro que se seus arquivos dot não forem idênticos entre os computadores, você terá que fazer algo a respeito.
Como desejo apenas a versão de alguns arquivos e não tudo em minha pasta de início, tenho esta regra simples em ~/.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
*
Dessa forma, não obtenho um oceano de arquivos quando executo hg status
e vejo apenas os arquivos que tenho sob controle de versão que foram modificados.
Mas como desejo ver arquivos não versionados ao trabalhar em outro repositório hg, tenho isso em meu arquivo ~/.hgrc
[ui]
ignore=/home/gajon/.hgignore_global
E ~/.hgignore_global
contém alguns filtros para arquivos transitórios comuns:
syntax: glob
*.pyc
*~
.*.swp
.svn*
*.svn*
*.fasl
syntax: regexp
^\.pc/
Outras dicas
Suponha que você tenha proj1 e proj2 . proj1 é um repositório mercurial que você deseja clonar em proj2 , mas proj2 já contém arquivos.
Experimente isto:
hg clone proj1 proj3
mv proj3/.hg proj2
rmdir proj3
cd proj2
hg update -C -r tip
Nos outros diretórios que já existem, você pode hg init
, hg add
o que quiser, hg commit
isso, hg pull
do repo central e lidar com a fusão resultante.