A minha pergunta: existe um sistema de controlo de versões confiável e simples / mechanism / platform / ... para projetos com conteúdo que seja eficaz coisas monolíticas e opacas?
A maioria dos projetos em que trabalho contém uma mistura dos seguintes tipos de arquivos:
- Conteúdo de texto simples (C, Java, ..., arquivos de dados, scripts bash, ...)
- documentos do MS Office (Word, Excel, Visio, ...)
- Arquivos gráficos vetoriais (SVG, EPS, ...)
- arquivos do modelo Simulink® (.mdl, semelhante em formato ao JSON)
- Nossa estrutura de teste de unidade personalizada (arquivos XML gerados)
- ... misc. outras coisas com limitações semelhantes
Atualmente, colocamos tudo em um grande repositório do subversion. Obviamente, isso só funciona bem para os arquivos de texto simples. Todo o resto é imerecido quando tratado como texto simples.
Para alguns deles, existem sistemas de controle de versão "gerenciados", que de fato usamos em cima da subversão. Por exemplo, para documentos do MS Word, usamos o recurso "alterar alterações". Isso se tornou efetivamente nosso sistema de controle de versão específico para documentos do MS Word. Em seguida, criamos cópias do documento no repositório do subversion sempre que alguma versão do documento precisa ser marcada / entregue.
Da mesma forma, existem maneiras gerenciadas de desenvolver simultaneamente modelos Simulink, gráficos vetoriais de autor, etc.
Mas, como você pode imaginar, estou bastante infeliz com esse fluxo de trabalho. Algo como "acompanhar alterações" não impede que dois usuários editem o mesmo documento ao mesmo tempo. As alterações de ambos não podem ser mescladas e a mesclagem precisa ser feita manualmente (não vou mencionar a corrupção de documentos). O mesmo com o framework Simulink; A simultaneidade é impossível.
É apenas uma dor isso, para não mencionar completamente ineficiente, já que é necessária muita cópia manual e movimentação de arquivos para manter tudo corretamente versionado - ter tudo em um repositório de subversão não se tornou muito mais do que uma alternativa conveniente ao envio de documentos por e-mail (o que é conveniente apenas para as pessoas que não o gerenciam ...).
Algo como o Sharepoint poderia resolver o problema dos documentos do MS Word, mas não é uma solução geral; Ainda temos esses outros tipos de arquivos para lidar. Algo como plugins de subversão / ganchos / etc. poderia funcionar, mas pode ser difícil acertar e também é difícil manter-se atualizado, além de poder ser um investimento significativo, já que provavelmente precisaríamos desenvolver plugins personalizados para coisas como arquivos de modelo do Simulink ...
Então, minha pergunta: existe um sistema de controle de versões confiável e simples / mechanism / platform / ... para projetos com conteúdo que seja efetivamente material monolítico e opaco?