Como manter os arquivos de ponto atualizados?

2

Eu tenho dois computadores, um no trabalho e outro em casa. O trabalho tem uma VM rodando Arch, e a home executa Arch nativamente. O trabalho geralmente fica no trabalho, mas empurra um monte de coisas de um lado para o outro com o git, então quando eu trabalho em algo em um lugar, eu posso continuar de onde parei em outro.

Uma coisa que eu faço bastante é ajustar arquivos de configuração, para coisas como Vim, ZSH, i3, blá blá blá, e estou ficando realmente doente e cansado de ter que lembrar o que eu fiz na noite anterior para manter o próxima máquina que estou usando até a velocidade!

Eu sei que este é um trabalho para o Git, mas como devo gerenciar isso? Por exemplo, eu tenho um monte de arquivos dot em todo o meu diretório home em subdiretórios diferentes. Eu precisaria não apenas acompanhar as alterações, mas também gerenciar a localização desses arquivos em relação a onde eles estão em qualquer repositório que eu pudesse criar.

A outra coisa é que alguns desses arquivos de pontos exigiriam que o software fosse instalado ... Então, pegue o i3, por exemplo: Eu instalei o i3 na minha máquina doméstica e obtive-o ao meu gosto com o arquivo de configuração. Mas simplesmente puxar os arquivos de ponto quando eu começar a trabalhar não fará muito sentido, porque o laptop de trabalho não teria o i3 instalado nele! Eu teria que lembrar de instalar tal e tal como bem. Outro bom exemplo disso são os módulos python ... Às vezes, eu faço algo e esqueço os nomes exatos dos módulos que tive que instalar como dependências python para colocá-lo em funcionamento. Nesse caso, simplesmente puxar os arquivos de configuração é apenas metade da história ... Eu precisaria de um script ou algo assim para garantir que o backend para esses arquivos de configuração esteja atualizado e em vigor.

Eu sei que esta é uma pergunta menos específica que as pessoas gostam de ver aqui, mas também sinto que essa questão tem uma quantidade de documentação disponível sobre como os usuários de Unix / Linux de alta qualidade lidam com essa administração aparentemente realista tarefa. Todo mundo sugere algo muito diferente, e a maioria dos problemas parece estar relacionada à recuperação de uma falha total do sistema, em vez de simplesmente manter-se atualizado entre duas máquinas usadas com frequência.

    
por testname123 16.08.2016 / 17:16

2 respostas

0

Eu recomendaria usar o armazenamento seguindo este guia .

Com essa abordagem, todos os dotfiles estarão em uma pasta, que pode ser controlada por versão / sincronizada. Cria links simbólicos, para que os arquivos de pontos possam ser facilmente atualizados.

Quanto a instalar o software que é necessário, a maneira mais simples seria simplesmente criar um script ou arquivo com anotações sobre o que fazer ao lado da configuração:

/home/user/
    dotfiles/
        bash/
            .bashrc
            .bash_profile
            .bash_logout
        i3/
            .config/
                i3/
                    [...some files]
        i3.install.sh

$ cd ~/dotfiles
$ stow bash
$ ./i3.install.sh
$ stow i3
    
por 16.08.2016 / 18:00
0

Eu resolvi isso colocando (a maioria) meus arquivos de ponto em ~/dotfiles , que é um repositório git que eu uso regularmente no github .

Neste repositório, também tenho um script que define links no local certo:

#!/bin/bash
for f in $(find -name ".*" -type f); do
    if [[ -e $HOME/$f ]]; then
        mv $HOME/$f $HOME/$f.old
    fi
    ln $f $HOME/$f
done

Até agora, o "local certo" é apenas $HOME , mas cabe a você fazer com que o script crie links para outros lugares.

Eu usei hardlinks porque o git salva links simbólicos como links por padrão, mas tenho certeza que existe uma maneira de corrigi-lo para links simbólicos.

Em uma nova versão, estendi o script para remover arquivos de configuração interferentes, como ~/.config/git/gitk . Eu poderia muito bem ter definido links lá em vez de em $HOME .

Soa como o stow , pareceu fácil o suficiente para pular mais uma ferramenta.

Estou pensando em colocar meus .emacs.d e .xmonad repos como sub-módulos no meu dotfiles repo ... Talvez não valha a pena, e não é improvável que eu esqueça o --recursive durante a clonagem .

    
por 25.10.2016 / 15:15