Não estou familiarizado com o formato de arquivo usado no HDF5, mas gostaria de saber se os arquivos HDF5 são adequados para o controle de revisão com o git (ou, por exemplo, Mercurial ou Subversion)? Acho que o que quero dizer é: os arquivos HDF5 são adequados para diferenças baseadas em linhas ou o git terá que tratar um HDF5 como um grande binário e armazenar uma cópia inteira para cada revisão?
data-management
data-storage
Thomas Arildsen
fonte
fonte
Respostas:
Você obterá uma resposta muito melhor se fornecer mais alguns detalhes técnicos sobre que tipo de dados você está tentando colocar sob controle de versão, como deseja armazenar versões diferentes dos dados, quais componentes provavelmente serão alterados e quais componentes não são e se você realmente terá um histórico semelhante a uma árvore (ramificações, mesclagens).
Os arquivos HDF5 não são adequados para o controle de versão baseado em diff no git.
O git usa um banco de dados baseado em hash sob o capô, portanto, é possível armazenar o hash do seu arquivo de dados HDF5 sem realmente armazenar o próprio arquivo. Três projetos, git-fat , git-anexo e git-media , simplificam bastante esse processo para você. Eu sugeriria usar essa abordagem se você tiver grandes e completamente independentes pedaços de dados que gostaria de versão explicitamente.
Se você pode separar seu armazenamento de dados em regiões não voláteis e voláteis, isso melhorará bastante a eficiência de sua interação com o banco de dados de controle de versão. Você também pode considerar o uso explícito de um banco de dados para seus dados, se não precisar dos recursos DVCS que o git oferece.
fonte
A resposta literal a esta pergunta é que o git não tratará os arquivos HDF5 com eficiência.
Para obter respostas mais úteis sobre o controle de versão para projetos que possuem alguns arquivos binários, consulte esta pergunta do stackoverflow: /programming/540535/managing-large-binary-files-with-git
fonte
Como outros disseram, seria mais fácil fazer sugestões úteis se você descrevesse seu objetivo geral em vez de um ponto técnico preciso. Aqui está mais uma sugestão que pode ajudá-lo, dependendo do seu objetivo.
O projeto ActivePapers ( http://www.activepapers.org/ ) fornece um sistema de gerenciamento de código e dados sobre o HDF5. Um ActivePaper é um arquivo HDF5 que contém conjuntos de dados E o código que funciona neles, com metadados que controlam qual trecho de código calculou qual conjunto de dados e usando quais dados de entrada. Em combinação com o controle de versão no código fonte e / ou controle de versão em todo o arquivo HDF5 (usando ferramentas como o anexo git, mencionado em outra resposta), o ActivePapers pode ser usado para cálculos de versão em vez de arquivos ou conjuntos de dados isolados.
Isenção de responsabilidade: sou o autor do ActivePapers.
fonte