Existem muitos sistemas de controle de versão disponíveis, incluindo os de código aberto, como Subversion , Git e Mercurial , além de sistemas comerciais, como o Perforce .
Quão bem eles apóiam o processo de desenvolvimento de jogos? Quais são os problemas com o VCS, no que diz respeito a arquivos não-texto (arquivos binários), grandes projetos, etc. Quais são as soluções para esses problemas, se houver?
Para organização das respostas, vamos tentar por pacote. Atualize cada pacote / resposta com seus resultados.
Além disso, liste alguns breves detalhes em sua resposta, sobre se o seu VCS é gratuito ou comercial, distribuído versus centralizado etc.
Atualização : Encontrei um bom artigo comparando dois dos VCS abaixo - aparentemente, Git é MacGyver e Mercurial é Bond . Bem, estou feliz que esteja resolvido ... E o autor fez uma bela citação no final:
Não há problema em fazer proselitismo para aqueles que ainda não mudaram para um VCS distribuído, mas tentar converter um usuário do Git para Mercurial (ou vice-versa) é um desperdício de tempo e energia de todos.
Especialmente porque o verdadeiro inimigo de Git e Mercurial é o Subversion . Dang, é um mundo de código-comer-código lá fora, na terra FOSS ...
fonte
Respostas:
Git
Recentemente, participei do Git (usei SVN e Mercurial). Até agora, eu realmente gosto do que recebo com o Git. Está longe de ser difícil de configurar e mais ferramentas de desenvolvimento estão começando a adotar o uso.
É um sistema de controle de versão distribuído. Isso nos permite ter nossa própria área independente de tronco. Eu posso trabalhar na minha própria área e convidá-lo para ver os changesets com muita facilidade. Posso reverter no meu próprio espaço sem estragar o repositório central. Posso confirmar, ramificar e fazer tudo o que você pode fazer com o SVN localmente. Eu realmente gosto de ter esse controle.
Com o SVN, você precisa acessar seu repositório para confirmar. E se você estiver na estrada ou em um café sem internet? Não é bom.
Certamente, o SVN é muito mais simples de aprender, mas acho que as vantagens do controle de fonte distribuído superam amplamente o fato de ele ter uma pequena curva de aprendizado.
Também gosto que seja mais inteligente a fusão.
Uma desvantagem importante do GIT é que ele armazena toda a história localmente. (Sim, você pode realizar uma cirurgia para reduzir isso, mas é o comportamento padrão). Não é um problema para os arquivos de origem, mas se você tiver um projeto grande com gigabytes de dados de ativos, isso se tornará um problema rapidamente. Na minha experiência atual, eu recomendaria o GIT apenas para repositórios menores ou somente de origem.
Se você ainda está curioso sobre o GIT, consulte http://thkoch2001.github.io/whygitisbetter/ para obter boas informações / métricas. Verifique também https://git.wiki.kernel.org/index.php/GitSvnComparsion
fonte
Mercurial
Características principais:
Com relação ao uso de arquivos que não são de texto, as últimas versões do Mercurial (> = 2.0) fornecem a extensão do arquivo grande por padrão :
Existem outras extensões que fornecem soluções semelhantes, como a extensão bigfiles, que permite armazenar seus ativos no mesmo repositório Mercurial, mas apenas buscar os binários necessários quando você precisar deles.
Não estou ciente de nenhum problema com relação a grandes projetos além daqueles relacionados a ter arquivos binários grandes. O projeto Python é um projeto grande e usa o Mercurial .
Joel Spolsky escreveu um mini-tutorial sobre o uso do Mercurial na reeducação do Subversion
fonte
svn:needs-lock
, e como também não há como saber quem está trabalhando localmente em quais arquivos , você volta a passar uma tigela pela equipe, literalmente (você não pode editar sem o tigela na sua mesa). Com extensão BigFiles ou não, este VCS é inútil para arquivos binários sem uma solução prática para isso.Perforce
O Perforce (comercial / de código fechado, centralizado) é o padrão do setor por vários motivos.
Dito isto, é dolorosamente óbvio quase diariamente que a Perforce não sente que sua posição no setor esteja ameaçada. Suas ferramentas visuais, incluindo P4V e P4SCC (integram-se ao Visual Studio), são lentas e com erros, sendo que este último congela o congelamento do Visual Studio para sua total diversão. AnkhSVN está milhas à frente do Perforce.
Comentário de xan: No entanto, vale a pena notar que a ferramenta de mesclagem deles, o P4Merge (usada para difusão e mesclagem), é excelente e muito superior aos do Tortoise Merge. Surpreendentemente, esse componente está disponível gratuitamente como parte do pacote P4 Visual Tools.
Comentário por slicedlime: Outra desvantagem do Perforce é que a ramificação nele tende a ser uma dor enorme, especialmente se você tiver árvores grandes. Quase todos os outros vcs são melhores em ramificação e fusão. Geralmente, esse é um preço pequeno a pagar pelas vantagens acima.
Comentário de roe: O Perforce é extremamente falador. Não há muita coisa acontecendo sem o servidor envolvido. O mais importante é que você precisa do servidor para poder abrir para edição, o que significa que você precisa passar por alguns obstáculos caso pretenda interromper a conexão com o servidor.
Comentário de jrista: Como usuário diário do Perforce há mais de dois anos, com uma equipe de engenharia de desenvolvimento e qualidade de mais de 100 pessoas, me familiarizei intimamente com ele. Embora seja um sistema de controle de origem decente, ele tem suas desvantagens de que aqueles que avaliam sistemas SCC devem estar cientes de:
fonte
Subversão
Código aberto, centralizado
Arquivos do Blender - Não tenho certeza se os arquivos .blend são binários (eles se parecem), mas não tive problemas para adicioná-los ao Subversion. Depois de fazer algumas experiências, o aumento do tamanho dos arquivos alterados parece nominal, por isso não é simplesmente copiar o arquivo inteiro.
Projetos grandes - Funciona, embora possa ficar peculiar. É definitivamente capaz de lidar com repositórios de pelo menos 5,5 GB (tamanho total do diretório do repositório no servidor; principalmente ativos binários).
Dados duplicados no cliente - O Subversion mantém uma cópia duplicada de todos os arquivos na área de trabalho do usuário como uma cópia original. A vantagem disso é que você pode fazer uma diferença ou reverter sem voltar ao servidor. A desvantagem é que seus 10 GB de arquivos de trabalho ocupam 20 GB de espaço em disco.
A lista de ignorados é uma propriedade de um diretório (simples com uma GUI, irritante na linha de comando).
O Subversion permite o bloqueio de arquivos / ativos - o que é realmente útil se vários artistas e designers trabalharem nos mesmos arquivos.
Externos são uma ótima maneira de lidar com código compartilhado (por exemplo, biblioteca ou base) entre projetos.
fonte
AlienBrain
De Avid :
Eu tenho nenhuma experiência com Alienbrain, e só ouviu falar sobre isso a partir do livro Jogo codificação completa por Mike McShaffry. Ele parece pensar muito sobre isso, no entanto:
Claro que ele também descreve como:
fonte
Team Foundation Server
da Microsoft
Eu usei o TFS extensivamente em projetos de simulador MILSPEC, e é muito bom. Provavelmente não é o melhor se você estiver em um Mac, embora exista um plug-in do eclipse atualmente. A versão hospedada na nuvem suporta repositórios git para o backend de controle de origem.
É gratuito para até cinco usuários no Visual Studio Online (permite código fechado; sem limite de tamanho de repositório), onde está hospedado na nuvem. Se você deseja hospedá-lo localmente, pode ser caro.
O que mais gosto nele são os recursos de gerenciamento de engenharia de software e o fato de ele lidar com arquivos grandes e arquivos binários com bastante satisfação.
fonte