Melhor sistema de controlo de versões

ThatsMe

Portugal@Home Member
Viva.

Após uma pesquisa por aqui, reparei que recentemente (há uns bons anos, vá) não tem havido aqui discussão sobre controlo de versões para desenvolvimento de software.

Como estou prestes a começar um projecto académico de grandeza considerável (6 programadores), lanço aqui a discussão para também me servir de ajuda e ponto de partida:

Qual o melhor software para o efeito? As linguagens a utilizar serão maioritariamente .net (asp e c#), c++ e Prolog. Muito se fala do Git, Mercurial, etc mas a oferta é tanta que se torna complicado escolher. O que recomendam?

E já agora aproveito para perguntar se aconselham algum software para gestão de projecto que sirva para gerir o tempo, milestones, entregas, etc.
 
Boas,

Dos sistemas mais usados acredito que seja o SVN. Em java uso o subversion da tigris, um plugin para o eclipse. Fora do eclipse uso o tortoiseSVN.

Em relação a gestão de projecto, se queres investir tempo num software que seja usado a nivel profissional... Diria o MS Project. Se fores usar uma metodologia ágil como Scrum, dá um olho neste: rallydev.com
 
Eu recomendo o Git. Tem algumas vantagens importantes em relação ao subversion, embora a maior parte delas só se notem com projetos grandes (performance, facilidade de branching). O que eu mais gosto no git (e na nova geração de CVSs distribuídos) é que podes ir trabalhando no teu computador, com o repositório completo, mesmo sem ligação à internet, e quando queres fazes um pull/push das modificações. Sugiro o Git porque é o que conheço melhor, já usei pontualmente o Mercurial e o Darcs, e sei que há outros, mas não conheço bem as diferenças.
 
Dos que usei até hoje (CVS, SVN, Mercurial e git), o SVN é para mim o melhor.
CVS já está completamente desactualizado, nem vale a pena comentar.
Mercurial deu vários problemas nos projectos que usei. Desde erros mais simples a fazer merges, a bases de dados corruptas.
git é bom mas as GUI deixam 1 bocado a desejar (a melhor ainda é a git extensions).
SVN apesar de precisar de ser centralizado, ainda é o mais maduro.
 
É de notar que Git, Mercurial, Bazaar, etc... são sistemas de controlo de versão distribuidos, o CVS, SVN, etc já não são. Acho que isto é uma diferença relevante quando da escolha, sobretudo porque a gestão é diferente. Se estás a trabalhar num projecto pequeno, com pouca gente, o SVN será melhor, já o Git, Mercurial é mais adequado a projectos de larga escala (tipo, open-source)...
 
É de notar que Git, Mercurial, Bazaar, etc... são sistemas de controlo de versão distribuidos, o CVS, SVN, etc já não são. Acho que isto é uma diferença relevante quando da escolha, sobretudo porque a gestão é diferente. Se estás a trabalhar num projecto pequeno, com pouca gente, o SVN será melhor, já o Git, Mercurial é mais adequado a projectos de larga escala (tipo, open-source)...

nao partilho dessa opiniao que diz que o SVN é para projectos pequenos e o Git para larga escala. Isso deve ser por causa do GitHub que dá essa ilusão. funcionam de forma diferente, é verdade, mas até para centenas de users o SVN funciona perfeitamente.

subscrevo a opinião do Ace-_Ventura. para mim é mesmo assim.

são todos bons (até o CVS: é bom, mas dá imensa dor de cabeça quando é preciso mudar alguma coisa, por isso também evito), desde que sejam bem controlados por toda a gente. merges pode dar sempre problemas, é preciso é ter cuidadinho!

o melhor mesmo de sair de CVS/SVN é para evitar as pastinhas irritantes locais para controlo (.cvs e .svn. argh!)

TFS, não aconselho. usei pela primeira e ultima vez em 2007, não sei se melhorou entretanto, mas aquele sistema de checkin/checkout era péssimo.
 
Última edição:
Boas,

Já utilizei o SVN na universidade mas nos últimos tampos tenho utilizado o GIT e confesso que não quero outra coisa, a criação de novos branches é do mais simples que existe, o facto de ficar tudo numa pasta .git e não em cada subdiretoria tambem te ajuda a ter mais controlo sobre o mesmo e fica mais organizado.

Outro ponto que podes ter em consideração é o facto de ser distribuido, sendo que com 6 pessoas a trabalhar no mesmo projecto, não terias necessidade de ter um servidor ou repositório principal para colocar o master.

Uma ferramenta que utilizado bastante é o Git-Flow que te ajuda a organizar o projecto de forma a dividires as várias versões existentes em diferentes branches, criar branches específicos para Dev, para Releases e outros como hotfix, bugfix e features.

Como o dropko disse o Git não se limita apenas a projectos grandes, nem o SVN a projectos pequenos. Penso que consegues usufruir totalmente do Git em projectos mais pequenos como é o caso do que vais realizar. A associação do Git a projectos open-source nem sempre é verdade, basta vermos o caso das App criadas no XCode que tem como base o Git, com "total" integração no o Xcode e sem serem open source.
 
Boas,

Já utilizei o SVN na universidade mas nos últimos tampos tenho utilizado o GIT e confesso que não quero outra coisa, a criação de novos branches é do mais simples que existe, o facto de ficar tudo numa pasta .git e não em cada subdiretoria tambem te ajuda a ter mais controlo sobre o mesmo e fica mais organizado.

Outro ponto que podes ter em consideração é o facto de ser distribuido, sendo que com 6 pessoas a trabalhar no mesmo projecto, não terias necessidade de ter um servidor ou repositório principal para colocar o master.

Uma ferramenta que utilizado bastante é o Git-Flow que te ajuda a organizar o projecto de forma a dividires as várias versões existentes em diferentes branches, criar branches específicos para Dev, para Releases e outros como hotfix, bugfix e features.

Como o dropko disse o Git não se limita apenas a projectos grandes, nem o SVN a projectos pequenos. Penso que consegues usufruir totalmente do Git em projectos mais pequenos como é o caso do que vais realizar. A associação do Git a projectos open-source nem sempre é verdade, basta vermos o caso das App criadas no XCode que tem como base o Git, com "total" integração no o Xcode e sem serem open source.

E não esquecer, que podem trabalhar com o GIT em Remoto entre uma equipa, apenas por partilharem uma pasta de DropBox onde fica o repositório "master" ;)
 
Back
Topo