Somos uma consultoria de software com uma infinidade de projetos para diferentes clientes. Tradicionalmente usamos o Subversion, mas atualmente estamos pensando em mudar para o Git.
Uma parte significativa dos documentos que produzimos é compartilhada com nossos clientes (requisitos, projetos globais, especificações de teste, etc.) e usamos o MS Office para produzi-los. No Subversion, poderíamos usar o recurso "Bloquear" para garantir que ninguém estivesse editando o mesmo documento ao mesmo tempo. No Git, você não pode fazer isso, pois, por sua natureza distribuída, o git não possui bloqueios.
Os bloqueios são realmente pouco mais que um mecanismo de comunicação, mas são muito eficazes.
Atualmente, nosso código e documentos voltados para o cliente estão tipicamente em subpastas diferentes de um repositório svn diferente. Ao mudar para o git, o que você recomendaria que fizéssemos? Eu vejo um conjunto de opções:
Nós movemos os repositórios svn para o git 1-on-1. Em vez de usar bloqueios nos arquivos do Office, fazemos o que o pessoal do git sugere e, de alguma forma, tentamos alterar nosso fluxo de trabalho para corrigi-lo. Isso pode estar funcionando em uma ramificação em qualquer edição de documento e mesclando isso na revisão. Essa abordagem é interrompida, por exemplo, em planilhas do Excel que contêm informações de gerenciamento de projetos; eles são editados facilmente pelos membros da equipe (e recomendamos que isso seja feito), mas não estão sujeitos a nenhum processo formal de revisão
Usamos git para código e svn para documentos e gerenciamento de projetos. Isso tem a desvantagem de que alguns documentos mais sofisticados não estarão "próximos" do código especificado, aumentando a chance de as pessoas esquecerem de atualizá-los. Além disso, todo mundo precisa usar e entender dois conjuntos de ferramentas. Dito isto, talvez seja uma ótima oportunidade para migrar para ferramentas de documentos baseadas em texto (látex, descontos, HTML, o que for) para documentos de design que não sejam voltados para o cliente.
Como o 1, mas criamos um
git lock
comando que faz o que o svn lock faz por nós (alterne o sinalizador somente leitura de forma apropriada e sincronize com o servidor por alguns meios).
Não acredito no argumento de que os bloqueios não funcionam em um DVCS porque o sistema deve funcionar mesmo quando você está totalmente offline. Os bloqueios de SVN também podem ser substituídos; eles são um mecanismo de comunicação . Sem algum tipo de conexão de rede, o computador não se comunica muito.
Não podemos ser a única loja que está muito feliz com a forma como svn lock
se encaixa no nosso fluxo de trabalho, certo?
Alguma idéia ou dicas?
Encontrei /programming/119444/locking-binary-files-using-git-version-control-system, mas a discussão é bastante técnica; Estou procurando maneiras de resolver ou evitar o problema prático de dois membros da equipe editando o mesmo arquivo binário ao mesmo tempo.