git para projetos pessoais (one-man). Exagero?

83

Eu sei e uso dois sistemas de controle de versão: Subversion e git. O Subversion, a partir de agora, é usado para projetos pessoais, onde eu sou o único desenvolvedor e o git é usado para projetos e projetos de código aberto, nos quais acredito que outros também trabalharão no projeto. Isto é principalmente devido aos incríveis recursos de bifurcação e fusão, onde todos podem trabalhar em sua própria filial; muito útil.

Agora, eu uso o Subversion para projetos pessoais, já que acho que faz pouco sentido lá. Parece ser um pouco exagerado. Está tudo bem para mim se estiver centralizado (no meu servidor doméstico, geralmente) quando eu for o único desenvolvedor; Eu faço backups regulares de qualquer maneira. Eu não preciso da habilidade de criar meu próprio branch, o branch principal é meu branch. Sim, o SVN tem suporte simples para ramificação, mas muito mais suporte para isso não faz sentido, eu acho. Mesclar pode ser uma dor com isso, ou pelo menos da minha pequena experiência.

Existe algum bom motivo para eu usar o git em projetos pessoais, ou é simplesmente um exagero?

    
por Anto 18.04.2011 / 20:13
fonte

11 respostas

154

Não é exagero. A principal razão pela qual eu comecei a usar o Git e o Mercurial sobre o Subversion para projetos pessoais é que iniciar um repositório é muito mais fácil.

Quer começar um novo projeto?

> git init

BAM! Não é necessário configurar um servidor de repositório nem fazer check-in de uma estrutura de pastas para suportar ramificações e tags em um repositório do subversion.

Compartilhar seu projeto mais tarde é apenas uma questão de: git push (diferente de ter um repositório remoto). Tente fazer isso rapidamente com a subversão!

    
por 18.04.2011 / 21:09
fonte
46

Eu diria que usar o Subversion para projetos pessoais locais é um exagero, enquanto o Git decididamente não é. O Git ocupará menos espaço (por causa do conceito de "revisões" ineficiente do SVN versus instantâneos de objeto do Git), requer menos configuração ( git init versus uma dúzia de svnadmin de comandos e configuração de permissões e assim por diante), é mais fácil de fazer backup ( git clone --bare [ou git push origin se você usa o Github ou algo semelhante] e pronto), e possui ferramentas melhores para gerenciar seu código (a ramificação é gratuita e a mesclagem é mais fácil e mais limpa). Só porque ninguém mais tem um clone do seu repositório não significa que os benefícios de qualquer DVCS sejam "exagerados".

Além disso, eu diria que o suporte de ramificação do Git é menos complexo que o do SVN, com maiores recompensas.

    
por 18.04.2011 / 20:22
fonte
34

Pensar que você nunca irá ramificar seu próprio código é um pouco míope. Eu tenho ramificado meu próprio código várias vezes, particularmente quando eu estava experimentando uma nova abordagem que eu não estava totalmente convencido ainda. Você eventualmente desejará o recurso.

Isso vem de um usuário de longa data do Subversion. A consolidação em uma ferramenta pode realmente ajudar a tornar sua vida mais fácil.

    
por 18.04.2011 / 20:26
fonte
9

O excesso é reservado para quando há danos colaterais causados pela "solução". Usando uma arma para matar uma mosca significa que há danos causados pela bala indo para outro lugar. É um exagero. Usar algo mais poderoso do que o necessário que não cause um problema não é um exagero e pode ser uma coisa boa se ajudar a simplificar seu processo de desenvolvimento. Não causa danos e permite que você tenha apenas que atualizar um conjunto de software em vez de dois. Então, por que se preocupar com dois sistemas em vez de um?

    
por 18.04.2011 / 20:21
fonte
7

Eu uso o Git para meus projetos de um homem e adoro isso. Eu estava usando anteriormente o Subversion e ainda estou vendo uma desvantagem em usar o Git. É mais poderoso, mas não de uma maneira que torne as coisas simples mais complicadas. Tornar as coisas simples desnecessariamente complicadas / caras / lentas / etc. é IMHO uma condição necessária para chamar algo exagerado. Além disso, no Github, eu bifurfei anteriormente projetos de um homem só para adicionar um recurso que eu queria e, em seguida, enviei-os puxar pedidos. Eu acharia bem legal se alguém interessado em meus projetos fizesse a mesma coisa.

    
por 18.04.2011 / 20:40
fonte
7

Eu nunca usei controle de origem em projetos pessoais antes do DVCS, então é um pouco estranho imaginar alguém tendo uma visão oposta. Algumas das minhas razões são:

  • Fácil de configurar e desmontar. Por exemplo, um colega me deu um quebra-cabeça de programação na semana passada que resolvi em vários pequenos passos. Eu fiz um repositório de gits que durou todos os 45 minutos para manter o meu trabalho, e depois desapareceu. Eu não sei o quão fácil algo assim está na subversão, mas eu nunca ouvi falar de ninguém fazendo isso.
  • Desconectado. Para mim, ser capaz de trabalhar off-line é muito mais benéfico para um projeto de hobby do que para um trabalho. Eu não preciso abrir um buraco no firewall da minha casa ou hospedar um projeto publicamente. Posso colocar um repo temporariamente em um pen drive ou em um laptop e ainda manter tudo sincronizado.
  • Tudo colocado. Ter o repositório e a árvore de trabalho juntos torna os pequenos projetos mais fáceis de acompanhar durante coisas como atualizações de SO.
  • Recursos poderosos. Claro, eu não preciso do poder o tempo todo, mas está lá quando eu preciso, e não consome nenhum recurso quando não preciso.
por 18.04.2011 / 21:29
fonte
6

Foi-me dito que git-bisect é realmente bom para encontrar o commit exato que introduziu um determinado comportamento, navegando para frente e para trás nos commits, dependendo da sua entrada.

Você terá de fazer isso algum dia para coisas que simplesmente não consegue descobrir o que aconteceu.

EDIT: Além disso, a capacidade de ramificar é muito importante quando você tem que fazer correções de bugs em versões antigas que os clientes usam. Você deve ser capaz de gerenciar "apenas conserte esta pequena coisa, mas eu não quero a versão mais recente, porque eu não quero testar tudo de novo agora".

    
por 18.04.2011 / 21:29
fonte
2

Depende da seriedade com que você deseja obter uma versão do seu próprio código. Se o que você está construindo é, por exemplo, uma biblioteca simples que só terá a versão atual (ou pelo tempo que for verdade), eu pessoalmente apenas usaria uma opção básica de backup como o Dropbox. Se você perder todo o seu código, poderá recuperá-lo da Web, e o Dropbox terá um backup de 30 dias, se você realmente fizer algo estúpido.

No entanto, se você, por exemplo, precisar manter os ramos Production e Dev, então o git é absolutamente uma ótima ferramenta - e muito mais rápido que o svn. Lembre-se do risco de falha no disco rígido, se você armazenar apenas os dados localmente.

    
por 19.04.2011 / 02:20
fonte
2

Eu sempre, sempre, sempre uso um sistema de controle de versão para qualquer tipo de projeto de desenvolvimento. Grande ou pequeno realmente não importa. Não importa se estou jogando em casa com algum tipo de nova tecnologia, escrevendo um pequeno auxílio para facilitar minha vida ou me desenvolver profissionalmente em uma equipe grande e distribuída - sempre quero um sistema de controle de versão para me apoiar.

Claro, a maior parte do tempo para pequenos projetos pessoais você não usará a maioria dos recursos, mas configurar um repositório git (ou até mesmo um repositório local do Subversion) não é grande coisa, então vá em frente! E antes que você saiba, você vai querer saber "droga, qual foi o conteúdo do arquivo X na última sexta-feira?". Sem controle de versão - boa sorte; -)

Então, não importa se você usa o git ou o SVN - pessoalmente estou começando a migrar mais e mais coisas do SVN para o git, mas o principal é usar o controle de versão - mesmo para as pequenas coisas .

    
por 19.04.2011 / 14:59
fonte
1

Somente porque ninguém mencionou: para projetos pessoais, darcs é muito bom e menos envolvido do que fazer um simples controle de versão. Não é tão rápido para projetos maiores, mas nem o Subversion!

    
por 19.04.2011 / 03:54
fonte
0

Pode ser uma poderosa mudança de paradigma mental para entender que o que fazemos é experimentação. Ter uma ferramenta barata / fácil para suportar isso aumenta sua capacidade de avançar, em parte porque aumenta sua capacidade de desistir de qualquer experiência quando ela acaba mal.

Muitos desenvolvedores dizem: "Bem, eu apenas faço cópias do meu código". Mas essas cópias tornam-se difíceis de gerenciar e acabam como desordem. Você tem várias cópias e não consegue se lembrar de qual cópia para quê e, em seguida, tenta descobrir quando é seguro excluí-las.

Tudo isso se torna ainda mais valioso quando o experimento envolve mudanças coordenadas em vários arquivos. E quando é um objeto solitário usando o Git se torna ainda mais simples.

Em vez de pensar se devo usá-lo em um projeto solo, agora acho uma pena não ter descoberto isso antes.

    
por 02.09.2012 / 18:08
fonte