- Qualquer e todos os usados agora VCS podem armazenar e manipular arquivos binários em repositórios para quase qualquer tamanho ("não armazenar arquivos gigantes em repositório" é recomendação , não limitação). Alguns VCS apenas o fazem melhor do que outro; e alguns VCS lidam com Big Data em repo melhor, do que outro
record the reason for the change and being able to fetch the file as it existed at that check-in
é o núcleo do VCS e não pode estar governando os parâmetros
- Para alterar dados binários, armazenar nova versão como não diff é regra quase comum para VCSes (exceto aplicar truques diferentes em diferentes VCSes para reduzir deltas em armazenamentos), portanto - qual VCS usar o seu escolha e responsabilidade, só posso observar algumas discussões recentes sobre arquivos grandes sob controle de versão, em que participei do StackOverflow (três respostas principais) e repita minha opinião pessoal - Mercurial
Todos os tipos de mudanças previstas são tarefas comuns para qualquer dado, armazenados em VCS (alteração de conteúdo, armazenamento) e não são exclusivos para arquivos de áudio (a mudança está mudando independentemente de quais mudanças )
While it would be super nice to a have a unified diff view like is possible with text
Você pode, pelo menos, tentar obtê-lo: Plugin Foobar2000 com Comparador Binário (resposta encontrada aqui na SU, muito útil em um tópico comum) pode (?! ... não tentou, não testou) comparar (na GUI ?!) dois arquivos de suportados pelos formatos Foobar2000. Ou (se funcionar no projeto Win7 / antigo, não atualizado a partir de 2008 / e e será utilizável para suas tarefas) veja em Audio DiffMaker - arquivos DYF (objeto adicional para armazenar em repositório para qualquer changeset, que altere os dados de áudio)
Enquanto você pode adicionar / alterar tags MP3 por qualquer ferramenta externa, você pode comparar tags (pesquisa rápida e suja me deu nas primeiras linhas screenshot of Beyond Compare ): Beyond Compare pode ser usado como diff padrão | mergetool no Mercurial (TortoiseHG), Foobar2000 pode ser (provavelmente) atribuído como especial mergetool para arquivos mp3
Storage should be of change deltas instead of dumb wholesale copies of each commit.
Não é possível (no caso comum, veja acima p.2), mas para Git com LFS ou Mercurial com LargeFiles temos caso especial (pode atender melhor às suas necessidades do que o usual "all in repo"): all arquivos para todos os changesets armazenados em armazenamento externo independente (arquivos completos), changesets em repos têm apenas "link" para arquivos, no local de trabalho você baixou apenas um arquivo grande (não o conjunto completo para histórico completo no seu clone de repo para o caso DVCS) ... e todas as versões antigas necessárias para o diff direto (pense novamente em usar o DYF do Audio DiffMaker): você deve ter um armazenamento gigante, mas terá alguns "salvando" de espaço local, comparado ao caso "arquivos em repositório"