Como posso colocar minha configuração pessoal do Windows sob controle de versão ?
Resumo (detalhes e exemplos a seguir):
- Configuração pessoal (por exemplo, preferências da área de trabalho), não configuração do sistema (por exemplo, drivers); deve funcionar sem direitos de administrador
- Controle de versão, não backups ou imagem de disco
Aqui estão algumas coisas que eu quero poder fazer:
- Confirme o estado atual da minha configuração em um repositório, de preferência com alguma granularidade (se eu tiver feito duas alterações, gostaria de poder confirmar uma sem confirmar a outra).
- Escreva uma entrada no registro de alterações sempre que eu confirmar, e veja a lista de entradas para cada arquivo de configuração.
- Veja as diferenças entre o estado atual e uma versão do repositório.
- Faça check-out no meu repositório em uma nova máquina Windows e reproduza minha configuração (pelo menos se a nova máquina tiver a mesma versão do Windows).
<added1> Não tentarei dar uma definição completamente precisa de "configuração"; Estou tentando cobrir todos os tipos de preferências pessoais (por exemplo, qualquer coisa configurável no painel de controle sem direitos de administrador, atalhos no menu “Programas” específicos do usuário,…). Não quero incluir meus documentos ou aplicativos instalados. </added1>
<added2> Observe que estou direcionando minha configuração pessoal, não a configuração do sistema (isso seria útil também, mas não é o objetivo desta pergunta). Por exemplo, espero que uma solução funcione sem direitos de administrador. </added1>
O que faço no unix é colocar (uma seleção de) meus arquivos de ponto sob controle de versão . No Windows, presumo que devo confirmar o registro e alguns arquivos (quais?) Application Data
. Gostaria de algo melhor do que colocar todo o arquivo do Registro sob controle de versão (isso não é granularidade suficiente e receio bloquear problemas). <added1> Idealmente, eu usaria wrappers ou scripts com algum software de controle de versão comum (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), mas isso não é um requisito absoluto. </added1>
Atualmente, preciso trabalhar com o Windows 2000 e Windows XP. Como isso é para uma máquina de trabalho, o payware não funciona (código aberto seria o ideal). Estou mais à vontade com a linha de comando do que com as GUIs.
<added1> Veja um exemplo de fluxo de trabalho:
- Um dia, decido que quero que o fundo da minha área de trabalho seja rosa. Então, eu faço a alteração através da GUI. Isso modifica uma
linha em umachave doarquivo de configuraçãono registro. Em seguida, comprometo a alteração, para acompanhá-la. - Mais tarde, eu me pergunto por que meu plano de fundo da área de trabalho é rosa. Então, eu procuro por "cor da área de trabalho" no registro de alterações.
- Um dia eu preciso usar uma nova máquina. Então, eu saio do meu repositório de configuração e voilà, desktop rosa.
Aqui estão algumas coisas que não estou tentando fazer:
Não estou tentando fazer backups. Quero poder rastrear alterações (por semântica, ou pelo menos sintaxe, não apenas por data) e compartilhar informações entre máquinas (um repositório, vários checkouts).
Não estou tentando replicar uma instalação do Windows. Não quero manter dependências de hardware, aplicativos instalados ou documentos.
</added1>