Introdução

editar

Assim como Git e Subversion, o Darcs (Darcs Advanced Revision Control System) é um sistema de controle de versão, ou seja, ele mantém o controle de diversas revisões e ramos de um projeto, permitindo que alterações sejam feitas de um ramo para outro. O sistema foi desenvolvido por David Roundy, utilizando a linguagem de programação Haskell, tendo sua primeira release lançada em 2003.[1] Trata-se de um sistema multiplataforma e com licença GNU GPL. [1]

O sistema Darcs possui duas características distintas que o diferem de outros sistemas de controle de revisão, sendo elas:

  • Cada árvore fonte é uma branch

Diferente do Subversion, onde o código fonte é armazenado em um repositório central, no Darcs cada cópia do código fonte é um repositório completo. Isto traz diversas vantagens, podendo acessar todas as funções do Darcs a partir de qualquer cópia do seu código, sem commitar mudanças instáveis para um repositório central.[2]

  • Darcs mantém controle das mudanças, não de versões

No Darcs, a árvore fonte não é o objeto fundamental, e sim os patches. De modo geral,  um repositório pode ser visto como um conjunto de patches que podem ser reordenados sem que a árvore seja modificada.[1] Isso faz com que várias operações, como "cherry-picking" ou "merge", sejam muito mais simples.[2]

Features[2]

editar
  • Salva mudanças localmente
  • Registros interativos
  • Desfaz mudanças localmente
  • Suítes de testes
  • Funciona em qualquer servidor
  • Você decide as permissões de escrita
  • Move arquivos e diretórios
  • Substituição de token
  • Padrões configuráveis

Instalação

editar

Para instalar Darcs é necessário que tenha instalado o Stack (Ferramenta de desenvolvimento Haskell).[3]

Para baixar e instalar o Stack:

curl -sSL https://get.haskellstack.org/ | sh

Para instalar o Darcs:

stack install darcs

Comandos Darcs

editar

Os principais comandos do sistema Darcs são: [4]

darcs init

Comando utilizado para inicializar um novo repositório. O diretório pode atual de trabalho pode conter arquivos, mas neste ponto o darcs ainda não está rastreando-os.

 
darcs add

Comando diz ao Darcs que deve restrear os arquivos selecionados. É criado um Patch especial temporário chamado de Patch pendente.

 
darcs whatsnew

Compara o diretório de trabalho com a árvore primitiva.

 
darcs record

Comando para salvar o trabalho. Copia as mudanças selecionadas do diretório de trabalho para a árvore primitiva, e o mais importante, cria um novo Patch que representa essas mudanças.

 
darcs replace

Esse comando substitui uma determinada palavra por outra (por exemplo, um nome de variável) no código fonte.

darcs mv

Permite renomear um arquivo ou coloca-lo em outro diretório.

darcs remove

Não apaga um arquivo do diretório, apenas informa ao Darcs que não deve mais rastrear mudanças neste arquivo.

darcs get

Faz uma cópia completa do repositório (Árvore primitiva e patches não pendentes)

 
darcs pull/push

Copia de algum outro repositório os patches que o repositório atual não possui.

 

Vantagens

editar
  • Toda cópia de trabalho do repositório é um repositório completamente funcional - Enquanto no SVN existe um repositório central e uma ou mais cópias de trabalho que necessitam acessar o repositório para operações me comum.
  • Darcs se comporta muito bem quando o servidor/repositório central falha - Com darcs, se o servidor fica fora do ar, os usuários ainda podem trocar patches entre si.
  • Usuários de Darcs podem trabalhar offline e ainda assim salvar as mudanças conforme são feitas - Ao contrário do SVN que não fornece uma opção para se salvar o trabalho quando não se tem acesso ao servidor.
  • Merge e Branch simples - Uma branch é apenas uma outra cópia local de seu repositório. Pode-se mover determinados patches entre as branches, e para o servidor. Na maioria dos casos, o merge não requer interação do usuário.
  • Darcs é mais interativo, criando fluxos de trabalho mais eficientes - Darcs é de fácil aprendizado e agradável de usar por ser mais interativo. Enquanto se salva, envia ou recebe Patches, você tem a oportunidade de revisar detalhes, ser mais seletivo e criar fluxos de trabalho que convém.
  • Darcs torna mais fácil de se aceitar contribuições de não-commiters - Enviar patches por e-mail é a alternativa usual para se commitar diretamente em um projeto. Esse processo é automático, com o comando darcs send só é necessário escolher quais patches devem ser enviados.

Desvantagens em relação ao SVN[5]

editar
  • SVN possui mais ferramentas e interfaces gráficas - Projetos como TortoiseSVN torna mais fácil a utilização por parte de usuários menos técnicos. Darcs não é tão bem integrado com repositórios web populares e ferramentas de visualização de patches.
  • SVN é mais rápido em grandes projetos - Darcs ainda falha quando se trata de velocidade em projetos grandes.
  • Melhor manejo de arquivos binários - Darcs consegue manipular arquivos binários, porém ele salva cada versão de um arquivo binário como um arquivo completo, enquanto o SVN apenas armazena a diferença entre os arquivos.

Referências

editar
  1. 1,0 1,1 1,2 Darcs https://en.wikipedia.org/wiki/Darcs
  2. 2,0 2,1 2,2 Darcs Manual http://darcs.net/manual/Introduction.html
  3. http://darcs.net/
  4. https://en.wikibooks.org/wiki/Understanding_Darcs/Getting_started
  5. http://darcs.net/DifferencesFromSubversion