Qual sistema de controle de versão usar?

5

Estou pensando em usar um sistema de controle de versão para garantir que eu possa voltar no tempo para uma versão específica de todos os documentos em ~, se for necessário.

Qual é a ferramenta mais adequada para isso, desde que:

  • Estou sem muita experiência em sistemas de controle de versão
  • Vários arquivos serão arquivos de texto simples, mas também haverá alguns arquivos do Libre-Office

A ferramenta deve:

  • Seja fácil de configurar, executar e manter
  • É fácil entender as opções de configuração (quais diretórios devem ser controlados, por quanto tempo, com que frequência as alterações devem ser capturadas, etc.)
  • O ideal é ter uma interface gráfica de usuário também
  • Consiga recuperar arquivos excluídos

Qual é a melhor / mais usada ferramenta que será adequada para mim?

    
por deshmukh 27.10.2012 / 16:50

8 respostas

8

Eu usei CVS , Subversion , git e alguns pacotes comerciais. Acabei de migrar meu VCS pessoal do CVS para o git (achei que seria mais difícil do que realmente era, eu deveria ter feito isso há muito tempo).

Eu recomendaria git. Baseado no que você está procurando.

  

Eu sou um noob sem muita experiência em sistemas de controle de versão

O

git pode ter uma curva de aprendizado mais longa, especialmente se você tiver experiência com um VCS anterior. Sem ter sido exposto a um VCS anterior, sua curva de aprendizado pode ser mais curta.

A melhor maneira de aprender git é baixar o livro Pro Git de Scott Chacon (de graça), criar um repositório de teste ( mkdir <project name>; cd <project name>; git init ), e cortar isso. Não há realmente nenhum esforço para criar um repositório e não se preocupe em enroscar algo em um repositório de teste, já que cada repositório é independente. Um repositório pode ser facilmente removido ( cd <project name>; rm -rf .git ).

  

Vários arquivos serão arquivos de texto simples, mas haverá alguns arquivos do Libre-Office

Não há diferenciação com o git nos tipos de arquivo (ASCII vs binário), no entanto, os arquivos ASCII são ideais para ver os diffs e os conflitos de mesclagem.

  

Seja fácil de configurar, executar e manter

O

git pode ser configurado de várias maneiras, tudo depende das suas necessidades. Para começar, um show, basta você instalar o git ( sudo apt-get install --install-recommends git-core ) e criar um repositório (mostrado acima). Se você trabalha em várias máquinas, você pode configurar o git sobre o ssh (está no livro). Melhor ainda, conforme suas necessidades se expandem, você não perde o que já fez.

  

É fácil entender as opções de configuração (quais diretórios devem ser rastreados, por quanto tempo, com que frequência as alterações devem ser capturadas, etc.)

Você pode ter um grande repositório ou dividi-los em projetos individuais ou em arquivos únicos. Novamente crie um repositório git e brinque com ele, veja o que funciona e o que não funciona.

  

O ideal é ter uma interface gráfica também

Existem muitos git guis especializados em muitas tarefas diferentes. No entanto, o aprendizado do git na linha de comando é altamente recomendado. Para começar, você só precisa aprender alguns comandos ( git init , git status git diff , git add , git rm , git commit , git push , git pull ). Além disso, a linha de comando ajuda você com tarefas que você precisa fazer. Por exemplo: git status

# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   systems/ion/setup.txt
#   modified:   systems/dogstar/teardown.txt
#   modified:   applications/help.html
#   modified:   applications/readme.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   applications/faq.html
no changes added to commit (use "git add" and/or "git commit -a")

Se você estiver mais confortável com uma GUI, SmartGit é amigável para novatos.

  

Ser capaz de recuperar arquivos excluídos

Sim, o git pode recuperar qualquer versão de qualquer arquivo, desde que tenha sido confirmado.

  

Qual é a melhor / mais usada ferramenta que será adequada para mim?

git é amplamente utilizado. Quanto ao melhor, é um dos melhores, se não o melhor. Mas sendo o melhor, é mais uma opinião pessoal e também é baseada na situação.

    
por mmorris 30.10.2012 / 19:40
6

Do jeito que parece, acho que usar um controle de versão como git , Mercurial hg , bzr ou svn não é um ajuste perfeito para suas necessidades, pois elas são direcionadas principalmente para arquivos de origem, não dados binários. Assim, quero adicionar algumas possibilidades adicionais aqui.

Eu acho que uma boa solução seria um serviço de backup baseado em nuvem. Eu pessoalmente uso o SpiderOak , que funciona muito bem.

Déjà Dup

Usa duplicity como seu back-end.

Prós

  • Solução de backup própria da Ubuntus
  • Muito fácil
  • Muitas opções para onde você deseja que os backups sejam enviados

Contras

  • Mais de uma solução de backup, não de controle de versão
  • Controle limitado

Se não estiver lá, instale-o:

sudo apt-get install deja-dup 

Você pode encontrá-lo em traço se digitar backup .

SpiderOak

Prós

  • Pacotes do Ubuntu disponíveis, adiciona repositório a sources.list (atualizações automáticas)
  • Você pode selecionar qualquer pasta para backup (ao contrário da caixa de depósito)
  • É executado em segundo plano, observa as alterações nessas pastas e só faz o upload das alterações (economiza largura de banda), isso é automático & amp; imediatamente
  • Criptografia do lado do cliente (ao contrário da caixa de depósito)
  • Reconhece duplicatas
  • Compacta arquivos no servidor
  • Mantém os arquivos excluídos e versões mais antigas em seu servidor (contanto que você tenha espaço de armazenamento gratuito), a menos que você os exclua explicitamente
  • Nice GUI
  • Possibilidade de sincronizar entre computadores (Linux / Windows / OS X, Clientes móveis para somente leitura)
  • Baseado na nuvem - mesmo que o seu disco rígido falhe, você ainda tem um backup

Contras

  • Cloud based - conexão à internet necessária
  • Não totalmente open source
  • Apenas 2 GB (plugue sem vergonha: se você quiser um GB adicional, pode usar meu link de referência )

Faça o download aqui: Download do SpiderOak

rdiff-backup

Prós

  • Possível backup local ou remoto
  • Controle granulado fino
  • O algoritmo rsync , apenas acompanha as alterações
  • Espaço eficiente (arquivos inalterados não são alterados)
  • Os permissios de arquivo também podem ser armazenados
  • Pode manter as últimas n versões ou os últimos n dias dos seus backups

Contras

  • Deve ser executado por um cronjob ou explicitamente
  • Utilitário de linha de comando (se isso não é sua opção), mas há uma GUI disponível: Pybackpack

Instale via:

sudo apt-get install rdiff-backup pybackpack

Snapshots de BTRFS

Embora não seja de coração fraco, existe a possibilidade de ter seu diretório /home em uma partição BTRFS separada e criar instantâneos disso de vez em quando

Prós

  • Muito eficiente em termos de espaço, apenas os arquivos alterados são armazenados novamente
  • Mantém o controle de todos dados da partição
  • Rápido
  • Monte os instantâneos mais antigos para acessar as versões anteriores

Contras

  • O BTRFS ainda é relativamente novo
  • Não é novato amigável
  • Apenas linha de comando
  • Requer alguns ajustes no sistema
  • Não é uma solução de backup - se seu disco rígido travar, todas as versões serão perdidas

Existe um howto em páginas de ajuda do Ubuntus .

    
por phoibos 31.10.2012 / 13:44
2

Sistemas de controle de versão bem conhecidos são CVS, SVN (subversão) e GIT. Não há necessidade de pensar no vosso CVS, o que nos deixa SVN e GIT.

Para o seu uso limitado, eu não acho que realmente importa o que você escolher, então meu conselho seria para ver quem você sabe que usa um deles, e escolher isso:)

Se você está procurando facilidade de uso para as coisas mais complicadas (controle de versão real para código, etc.), sugiro usar o GIT. Basicamente, "eles" dizem que o SVN foi uma atualização para o CVS, e o GIT novamente é uma "atualização" para o SVN. Eu pessoalmente acho que as vantagens do GIT sobre SVN são especificamente para múltiplos usuários e múltiplos branches, então talvez não seja algo com o qual você deva se preocupar.

Por outro lado, por que não ter alguma experiência com a melhor opção disponível, você nunca sabe o que deseja fazer no futuro.

Por favor, confira algumas informações sobre eles

por Nanne 30.10.2012 / 13:59
2

Eu recomendaria o git porque:

  1. É fácil usar
  2. Você pode hospedá-lo no github gratuitamente
  3. Para as janelas, você pode usar o github for windows , que oferece um guia.
  4. É rápido
  5. Sintaxe destacando se você precisar no site do github.
  6. Você pode executá-lo localmente, tornando-o ideal para projetos pessoais.
por orangeocelot 30.10.2012 / 13:59
2

Eu não acho que você queira fazer isso. O controle de origem é apenas para isso, controle de origem. A maioria não lida muito bem com arquivos binários (como imagens, músicas, filmes etc.).

Além disso, os SCMs fornecerão um trecho linha por linha de quais dados foram alterados. Assim, toda vez que você fizer login ou sair, você estará alterando alguns dados. Você terá que "mesclar" ou "comprometer" o tempo todo. Estou quase certo de que isso não é o que você quer.

No entanto, existem algumas ferramentas realmente boas.

O Back-In-Time é incrível e tem um visualizador de diferenças. Deja Dupe é o padrão, mas não acho que seja muito rico em recursos. O grsync pode fornecer uma lista de arquivos em um backup que foi alterado. e simples rsync antigo é uma opção.

Se você insistir em usar um SCM, recomendo o git, mas hospedado localmente. Adicione um .gitignore que exclua todos os arquivos binários. Melhor ainda, você poderia tentar apenas controlar seus diretórios de configuração. Novamente, você terá que tomar cuidado com os arquivos binários.

    
por coteyr 03.11.2012 / 16:11
2

Ao ler sua pergunta novamente, acho que você quer um repositório local criado com uma ferramenta como svn e mantido com seu frontend, rapidsvn . Isso parece se adequar particularmente bem ao seu propósito: o repositório local pode estar em seu disco rígido principal ou em uma unidade externa. É importante observar que o controle de versão é mais adequado para o código-fonte ou arquivos de texto ou documentos e não é adequado para arquivos de multimídia. Dropbox ou Ubuntu One seria melhor para esse tipo de backup. Além disso, você pode voltar para versões anteriores de arquivos com dropbox .

De qualquer forma, mostrarei brevemente como a ferramenta de gui rapidsvn funciona e como svn é usado a partir da linha de comando.

Primeiramente, instale os arquivos necessários com

sudo apt-get install subversion rapidsvn

Mais informações estão disponíveis no site oficial para rapidsvn , embora seja importante note que você deve ainda criar seu repositório svn com a linha de comando primeiro. Certifique-se de estar no nível superior de sua pasta pessoal (digite cd para acessá-lo, se necessário) e digite:

svnadmin create --fs-type fsfs ~/svn

Em seguida, crie uma pasta inicial com

svn mkdir file:///home/mike/svn/folder -m "initial folder"

Usando o guia de início rápido , podemos carregar rapidsvn , clicar com o botão direito do mouse nos favoritos e adicionar seu repositório clicando em Checkout New Working Copy e a partir daí você pode manipular seus arquivos como você deseja com checkouts, importações e commits.

Eu acho que este é provavelmente apenas o gui que você estava procurando, pois ele pode gerenciar facilmente todos os seus arquivos, e é mais fácil configurar as opções do que usar svn na linha de comando.

    
por user76204 03.11.2012 / 16:44
1

Você pode usar Codebase .

  1. É uma ferramenta de gerenciamento de projetos de software com recursos rápidos e confiáveis & amp; secure Git, Mercurial & amp; O serviço de hospedagem do Subversion foi feito diretamente.
  2. Ele pode acompanhar todo o projeto da web e implantar repositórios diretamente nos servidores.
  3. Possui recursos poderosos de gerenciamento de projetos com gerenciamento avançado de tickets, feeds de atividade e controle de dados com permissões personalizáveis, funcionalidade de pesquisa completa e API do desenvolvedor
por frisky 02.11.2012 / 12:17
0

O GNU RCS (Revision Control System) gerencia várias revisões de arquivos. O RCS pode armazenar, recuperar, registrar, identificar e mesclar revisões. É útil para arquivos revisados com frequência, por exemplo, programas, documentação, gráficos e documentos. Ele pode manipular texto e arquivos binários, embora a funcionalidade seja reduzida para o último.

A interface básica do usuário é extremamente simples. O novato só precisa aprenda dois comandos: ci e co. ci, abreviação de checkin deposita o conteúdo de um arquivo em um arquivo chamado RCS Arquivo. Um arquivo RCS contém todas as revisões de um arquivo específico. co é curto para checkout.

Precisa diferenciar suas alterações? rcsdiff.

Página do projeto: link

Manual: link

Eu "preciso de pelo menos 10 de reputação para postar mais de dois links", então o seguinte precisará ser alterado pelo leitor para chegar ao link. Escrita pelo autor que você pode querer ler eventualmente:

link

Um bom resumo e genética de vários softwares de sistema de controle de revisão disponíveis:

link

    
por user171154 29.06.2013 / 05:01