Portanto, estou muito confortável com o controle de versão e pensei em começar a rastrear versões do meu perfil do bash: ~/.bash_profile
com o benefício adicional de poder compartilhar meus vários aliases e outros no GitHub.
Supondo que meu arquivo .bash_profile precise permanecer no meu diretório pessoal (não consigo agrupá-lo em um diretório para acompanhá-lo sozinho como um arquivo normal), qual seria a melhor maneira de fazer isso? Não quero inicializar um repositório git no meu diretório pessoal e preciso ignorar todos os outros arquivos presentes.
Então, o que pode ser uma boa solução?
Suponho que eu poderia simplesmente fazer uma cópia dele em um diretório separado e atualizá-lo / confirmar periodicamente, mas estou curioso para saber se existe uma boa maneira de controlar a versão de um único arquivo em um diretório preenchido?
fonte
Respostas:
No entanto, normalmente existem duas maneiras de fazer isso: a) link simbólico b) script de sincronização. Nos dois casos, é necessário criar outro repositório (nomeie-o
dotfile
abaixo) parabash_profile
ser controlado por versão.Use links simbólicos
bash_profile
é movido para o diretório controlado por versão (contendo.git
),$HOME/.bash_profile
é um link simples soft$HOME/dotfile/bash_profile
.$HOME/dotfile/bash_profile
é ondebash_profile
reside o seu real , veja holman dotfile como um exemplo.Usar script de sincronização
bash_profile
permanece no seuHOME
diretório, mas é apenas uma cópia do 'mais recente'. O mais recentebash_profile
ainda vive$HOME/dotfile
.Sim, é uma abordagem de copiar e colar, é por isso que você precisa de algumas
syncing script
para salvá-lo do trabalho DRY . veja mathiasbynens dotfiles como um bom exemplo. Seusyncing script
https://github.com/mathiasbynens/dotfiles/blob/master/bootstrap.sh .além disso
Como você suspeita:
A versão que controla um único arquivo não faz muito sentido, copie e cole ou simplesmente solte-o em algumas unidades de nuvem, economizando muito trabalho.
O ponto real é que as coisas não são escalados Desta forma, quando a
dotfiles
sua$HOME
cresce, quando você quer controle de versão o seu favorito de configuração do editor de texto (digamosvimrc
), quando você usaSSH
para trabalhar com vários shell remotamente, você pode terzshrc
,bashrc
,fishrc
etc.Isso significa que, a longo prazo, você pode querer controlar a versão de todos os seus
dotfile
s. O arquivo de pontos do Github é um bom ponto de partida.fonte
Por que não? Você deseja rastrear um arquivo em seu diretório pessoal, portanto, seu diretório pessoal também deve estar sob controle de versão.
Isso não significa que seu diretório pessoal precise ser um repositório git. Deixe-me explicar:
Os repositórios git consistem em duas partes: uma árvore de trabalho (a menos que seja um repositório simples, é claro) e o
.git
diretório "database". Normalmente, o posterior é apenas um subdiretório (oculto) do anterior, mas isso não é estritamente necessário. O git suporta o uso de uma árvore de trabalho desanexada . Assim, você pode manter seu diretório pessoal sob controle de versão, mas não precisa que ele contenha um.git
diretório que possa confundir ferramentas (vim, emacs, ...) ou o próprio git.Configurando:
Agora há um
~/.dotfiles/.git
diretório. Use isso, mas especifique o diretório inicial como árvore de trabalho. Isso requer uma linha de comando bastante longa, portanto, um alias é uma boa idéia:Para usá-lo, use o apelido acima em vez de
git
, por exemplodotfiles status
.Benefícios:
Eu peguei isso neste post do blog (que tem algumas informações adicionais) e estou usando sem problemas. Eu não, mas com uma linha simples
*
em.gitignore
que você pode se livrar do possivelmente enorme quantidade de arquivos untracked e proteger-se um pouco contra a adição de arquivos ao repositório que não são destinadas a ser adicionado.fonte
Outra solução seria deportar sua configuração específica (como definir seus próprios aliases ou definir suas próprias funções) para um arquivo diferente de
.bash_profile
. Dessa forma, somente sua configuração específica será versionada e você somente precisará obtê-la da sua.bash_profile
.Faça manualmente
Digamos que esse
.bash_profile
arquivo de extensão seja nomeadobash_profile_ext
e contido no/path/to/bash/profile/ext/
diretório:No final do seu
.bash_profile
arquivo, você terá:E somente seu
/path/to/bash/profile/ext
diretório será versionado.Faça isso usando um aplicativo de terceiros
Ainda mais simples (eu acho :-)), estou desenvolvendo shprofile que ajuda você a gerenciar seu perfil de shell, concentrando-se apenas na sua configuração de perfil específica. O shprofile permite definir toda a sua configuração de perfil específica em um único diretório, que pode ser versionado. Observe que você também pode gerenciar vários perfis para o mesmo usuário.
Novamente, não há necessidade de versão toda sua
.bash_profile
configuração, mas apenas seus valores adicionados.fonte
Para gerenciamento de configuração de TI em nível empresarial, muitos estão usando o Puppet. Eu recomendo o Puppet aos clientes como uma medida de contenção de custos e confiabilidade. Aqui no laboratório, mantemos as coisas simples.
Nosso repositório principal contém arquivos necessários para reconstruir completamente um sistema com falha ou criar uma nova conta de usuário, e o controle de versão foi útil em várias ocasiões. O Git funciona bem com arquivos e diretórios que começam com um período, desde que o git não esteja configurado para ignorá-los.
Esses são os caminhos do repositório para instalação e configuração do sistema e aplicativo.
Esses são arquivos de configuração geral do usuário.
Estes são para contas remotas em servidores.
Estes são para a conta raiz.
Eu uso arquivos de tamanho zero chamados use.ls.al.to.see.dot.files.here para me lembrar que o diretório apenas parece vazio.
fonte