O Etckeeper é uma ótima ferramenta para acompanhar as alterações nos seus arquivos de configuração /etc
. Algumas coisas importantes realmente se destacam. Pode ser usado com uma ampla variedade de VCSs: git, mercurial, darcs ou bzr. Ele também faz confirmações automáticas diariamente e sempre que você instala, remove ou atualiza o pacote. Ele também controla as permissões de arquivo e os metadados de propriedade do usuário / grupo.
Eu também gostaria de manter meus "arquivos de ponto" no meu diretório pessoal também sob controle de versão, de preferência bazar. Alguém sabe se existe uma ferramenta como o etckeeper para esse fim?
Pior caso, imagino que um trabalho cron simples em execução bzr add && bzr ci
uma ou duas vezes por dia, juntamente com a adição ~/Documents
, ~/Music
, etc à .bzrignore
Alguém já fazer algo semelhante com um script?
Embora eu prefira bazar, outras opções podem ser interessantes.
fonte
bzr
certamente não é o caminho a seguir em 2015.Respostas:
Eu não sabia se havia algo que fizesse isso, então criei um código para obter exatamente o que você deseja usando meu repositório aqui: http://github.com/robertmassaioli/config-files
Eu tenho um arquivo que diz onde todos os arquivos pertencem e o programa generate_links apenas os coloca lá. Se você sabe o que está fazendo e pode compilar algum código Haskell, é realmente simples e fácil. Embora esteja avisado de que realmente foi feito para meu uso pessoal.
fonte
Bem, fui em frente e fiz isso manualmente até encontrar uma solução melhor. Então, eu também poderia explicar o que fiz.
Primeiro eu fiz um
bzr init ~
, mas a próxima coisa que fiz foibzr ignore "*"
. Decidi que não queria manter tudo sob controle de versão. Simplesmente não valeu a pena, especialmente quando você considera que existem algumas coisas que você realmente não deve manter em vcs como suas chaves. Então, eu tinhabzr add
os arquivos específicos que queria. Você também pode adicionar exceções a.bzrignore
. As expressões regulares do Python também são úteis. Eu estou mantendo-o bem magro por enquanto. Se tudo correr bem, devo acrescentar tudo~/.config
e~/.gconf
também.Também escrevi um script rápido que executei como um trabalho cron. Ele verifica se os arquivos foram alterados e, em caso afirmativo, uma confirmação automática:
fonte
Transformei meu
~
diretório inteiro em um repositório do Bazaar. O armazenamento de metadados não é um problema para arquivos no diretório inicial: tudo pertence à mesma conta e grupo ebzr
já armazena o bit de execução.Eu adiciono manualmente os arquivos "interessantes" a ele (não quero que, por exemplo, minha coleção de músicas ou o cache do firefox esteja sob controle de versão), mas se você deseja automatizar isso com um script, acho que é a solução simples de fazer
bzr add && bzr ci
nos diretórios selecionados ou na saída de umfind
comando apenas fará o trabalho.fonte
Eu mantenho meus arquivos zsh e vim no git, colocados no github, em diferentes repositórios:
para zsh, por exemplo, criei ".zsh" e coloquei zshrc e zshenv nele, além de um script para vincular zshrc a ~ / .zshrc e zshenv a ~ / .zshenv, algo assim.
então eu faço
para .vim, é quase o mesmo, exceto que eu uso submódulos para plugins, com patógeno, então eu adicionei isso no init.sh
e quando eu quero adicionar um plugin vim, eu faço
por exemplo.
ok, exigiria muito trabalho se você tiver mais do que alguns dirs de ponto que deseja gerenciar, mas nada impede que você os coloque todos no mesmo diretório ou separados por atividades (ativada para todos os editores gráficos, um para atividades na web ...) ou mais. enfim, foi o que eu fiz, então apenas meus dois centavos :).
fonte
Eu uso uma solução que não é automática como o etckeeper (eu tenho que confirmar manualmente), mas funcionou bem para mim. Não é tão desenvolvido quanto eu gosto, mas funciona.
Eu escrevi meu próprio utilitário que é semelhante ao GNU Stow , pois o stow não fez tudo o que eu queria. Eu chamo de Stow in Home . Quando executado, procura um diretório chamado "HOME". Ele pega tudo no diretório e o vincula ao local correspondente em $ HOME, criando os diretórios conforme necessário. Ele também converterá nomes de arquivos - se um arquivo começar com um '_', ele será substituído por um '.'. Fiz isso porque é melhor editar meus arquivos de ponto quando eles não estão ocultos (veja-os nas listagens de diretórios por padrão). Em seguida, os colocaria no nome que o aplicativo espera.
Então, eu tenho vários repositórios git para minha configuração. Eu só coloco arquivos de ponto que eu edito pessoalmente. A vantagem disso é que eu posso ter um repositório para arquivos de ponto que posso compartilhar com outras pessoas (como minha configuração do Emacs) e um para outras que são privadas (por exemplo, minha configuração do ssh, com nomes de host e outros itens de trabalho). A ligação simbólica com armazenamento em casa coloca tudo no lugar certo, mas o controle de origem para cada um pode ser separado.
Funcionou bem para mim. Realmente não há razão para eu não conseguir configurar algo para fazer confirmações automaticamente. Ou mova todos os arquivos de ponto para os repositórios apropriados e ainda use o armazenamento em casa. Mas foi assim que fiz as coisas.
fonte
Você não pode adicionar o
dot files
arquivo ao repositório usado no Etckeeper?fonte
/etc
?Eu fiz isso copiando todos os meus arquivos de pontos que eu gosto de manter sob controle de origem para uma pasta chamada "arquivos de pontos" no meu diretório / home /. Obviamente, isso significa manter duplicatas e copiar quando necessário, mas acho que essa é a solução mais fácil para mim.
fonte
Eu mantenho meus arquivos em um subdiretório e faço links simbólicos. Eu tenho um script que automatiza isso. Você pode conferir tudo em http://code.google.com/p/samking-config-files/source/browse/
fonte