Eu venho fazendo isso há algum tempo usando o git. Não rastreio o diretório pessoal inteiro, apenas as partes que estou mudando ativamente. Isso inclui meu diretório home / bin, que contém muitos scripts pequenos, meu diretório .vim e alguns projetos maiores em outros diretórios. Também existem algumas configurações para terminais e openbox, além de vários outros aplicativos, adicionados ao repositório.
Isso funciona bem o suficiente, pois todas essas coisas têm a mesma permissão definida e eu não me importo com o carimbo de data / hora original. Está chegando ao ponto em que estou planejando dividi-lo em submódulos usando git filter-branch
. Isso é um pouco complicado, já que existem interdependências entre arquivos em diferentes subdiretórios (por exemplo, alguns scripts .vim podem chamar scripts do meu diretório bin ... não é um exemplo muito bom, mas espero que você entenda bem).
Não encontrei soluções mais abrangentes, mas também não procurei, incluindo o git-home-history. Parece que seria bastante complicado colocar todo o diretório inicial sob controle de revisão, e haveria muitas variáveis. Por exemplo, se você colocar seu (s) perfil (s) do firefox sob controle de revisão, acabará acumulando grandes quantidades de diferenciais binários. Também existem coisas como chaves ssh que geralmente são melhor perdidas do que duplicadas.
Se você deseja rastrear permissões (além do bit executável, que o git já rastreia), aparentemente existe um gancho que fará isso. É mencionado neste segmento de falha do servidor .
filter-branch
e configurando um clone de 'trabalho em andamento' em um subdiretório ~. Essa parece ser uma estratégia geralmente útil: espero que seja igualmente útil clonar todo o meu repositório de diretórios pessoais e testá-los depois de definir $ HOME no diretório do clone. Não tenho certeza de quão universalmente respeitada é essa variável de ambiente, mas verei.Você pode usar o git em seu diretório pessoal e, em seguida, usar os submódulos do git ou a árvore de revisão para os projetos externos do git nos quais você trabalha.
fonte