Eu sinto que a resposta para sua pergunta é um retumbante sim - os benefícios de gerenciar seus arquivos com um sistema de controle de versão superam os custos de implementação desse sistema.
Vou tentar responder em detalhes a alguns dos pontos que você levantou:
- Backup: Eu já tenho um sistema de backup.
Sim, e eu também. No entanto, há algumas questões a serem consideradas em relação à adequação de contar com um sistema de backup de uso geral para rastrear adequadamente arquivos importantes e ativos relacionados ao seu trabalho. No lado do desempenho:
- Em que intervalo seu sistema de backup tira instantâneos?
- Quanto tempo leva para criar um instantâneo?
- Ele precisa criar uma imagem de todo o seu disco rígido ao tirar uma foto instantânea ou pode ser dito facilmente que você faça backup de apenas dois arquivos que receberam atualizações críticas?
- O seu sistema de backup pode mostrar, com precisão exata, o que mudou nos seus arquivos de texto de um backup para o outro?
E o mais importante:
- Em quais locais os backups são salvos? Eles estão no mesmo local físico do seu computador?
- Quão fácil é restaurar uma determinada versão de um único arquivo do seu sistema de backup?
Por exemplo, tenha um Mac e use o Time Machine para fazer backup em outro disco rígido do meu computador. O Time Machine é ótimo para recuperar arquivos estranhos ou restaurar meu sistema, se tudo der errado. No entanto, simplesmente não tem o que é preciso para ser confiável com meu importante trabalho:
Ao fazer backup, o Time Machine precisa criar uma imagem de todo o disco rígido, o que leva uma quantidade considerável de tempo. Se eu continuar trabalhando, não há garantia de que meu arquivo será capturado no estado em que estava quando iniciei o backup. Também posso chegar a outro ponto que gostaria de salvar antes da conclusão do primeiro backup.
O disco rígido no qual meus backups do Time Machine são salvos está localizado na minha máquina - isso torna meus dados vulneráveis a roubo, incêndio e outros desastres.
Com um sistema de controle de versão como o Git, posso iniciar um backup de arquivos específicos sem mais esforço do que solicitar um salvamento em um editor de texto - e o arquivo é visualizado e armazenado instantaneamente. Além disso, o Git é distribuído para que cada computador em que trabalho tenha uma cópia completa do repositório.
Isso equivale a ter meu trabalho espelhado em quatro computadores diferentes - nada menos que um ato de Deus poderia destruir meus arquivos e dados, e nesse ponto eu provavelmente não me importaria muito.
- Bifurcação e rebobinagem: nunca senti a necessidade de fazer isso, mas posso ver como isso poderia ser útil (por exemplo, você está preparando vários artigos de periódicos com base no mesmo conjunto de dados; você está preparando um relatório que é atualizado mensalmente etc.) )
Como solista, eu também não garfo tanto. No entanto, o tempo que economizei com a opção de retroceder pagou sozinho meu investimento em aprender um sistema de controle de versão muitas e muitas vezes. Você diz que nunca sentiu a necessidade de fazer isso, mas retroceder qualquer arquivo no seu sistema de backup atual foi realmente uma opção indolor e viável?
Às vezes, o relatório parecia melhor 45 minutos, uma hora ou dois dias atrás.
- Colaboração: na maioria das vezes eu mesmo estou analisando dados, portanto, não recebia os benefícios de colaboração do controle de versão.
Sim, mas você aprenderia uma ferramenta que pode ser indispensável se acabar colaborando com outras pessoas em um projeto.
- Hora de avaliar e aprender um sistema de controle de versão
Não se preocupe muito com isso. Os sistemas de controle de versão são como linguagens de programação - eles têm alguns conceitos-chave que precisam ser aprendidos e o resto é apenas açúcar sintático. Basicamente, o primeiro sistema de controle de versão que você aprender exigirá investir mais tempo para mudar para outro, apenas aprender como o novo sistema expressa os principais conceitos.
Escolha um sistema popular e vá em frente!
- Um possível aumento de complexidade em relação ao meu sistema de gerenciamento de arquivos atual
Você tem uma pasta, por exemplo, Projects
que contém todas as pastas e arquivos relacionados às suas atividades de análise de dados? Nesse caso, aplicar um controle de versão aumentará exatamente a complexidade do seu sistema de arquivos 0
. Se seus projetos estão espalhados pelo seu computador - você deve centralizá-los antes de aplicar o controle de versão e isso acabará diminuindo a complexidade do gerenciamento de seus arquivos - é por isso que temos uma Documents
pasta, afinal.
- O controle de versão vale o esforço?
Sim! Ele oferece um enorme botão de desfazer e permite transferir facilmente o trabalho de uma máquina para outra sem se preocupar com coisas como perder a unidade USB.
2 Quais são os principais prós e contras da adoção do controle de versão?
O único truque que consigo pensar é um ligeiro aumento no tamanho do arquivo - mas os modernos sistemas de controle de versão podem fazer coisas absolutamente incríveis com compactação e economia seletiva, portanto esse é um ponto discutível.
3 Qual é uma boa estratégia para iniciar o controle de versão para análise de dados com R (por exemplo, exemplos, idéias de fluxo de trabalho, software, links para guias)?
Mantenha os arquivos que geram dados ou relatórios sob controle de versão, seja seletivo. Se você estiver usando algo parecido Sweave
, armazene seus .Rnw
arquivos e não os .tex
arquivos que são produzidos a partir deles. Armazene dados brutos se for difícil recuperar novamente. Se possível, escreva e armazene um script que adquira seus dados e outro que os limpe ou modifique, em vez de armazenar alterações nos dados brutos.
Quanto à aprendizagem de um sistema de controle de versão, eu recomendo o Git e este guia .
Esses sites também têm dicas e truques interessantes relacionados à execução de ações específicas com o Git: