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 .