O que o OSX Lion usa para versionar?

4

Li recentemente que o Lion usa controle de versão que rastreia alterações (deltas), não arquivos (SVN) . A tecnologia por trás desse recurso foi publicada? Eu diria que é Git, Hg, Bazaar ou uma variante personalizada deles, mas isso é completamente especulativo.

Citação do link acima:

O OS X Lion é inteligente o suficiente para rastrear e registrar apenas as alterações entre diferentes cópias de documentos. Isso significa que 400 cópias completas não são salvas, apenas as alterações parciais de versão para versão.

Nic
fonte

Respostas:

7

Algo completamente diferente.

A Lion Review da Ars Technica aborda isso em detalhes. ( Veja aqui )

Basicamente, ele divide os arquivos, procura os que diferem e os armazena em um banco de dados SQLite. (CoreData usa SQLite) Um banco de dados separado é usado para rastrear todas as diferentes revisões e quais blocos acompanham quais revisões.

O mecanismo que lida com o chunking também é semi-inteligente. Ele pode quebrar alguns formatos de arquivo (por exemplo, imagens JPEG, arquivos PDF, arquivos de áudio / vídeo MPEG, etc.), separar os vários blocos existentes e procurar alterações dentro deles. Isso impede que uma alteração no cabeçalho do vídeo gere uma cascata de alterações que incham desnecessariamente no armazenamento delta.

Observe também: um aplicativo que deseja usar esse sistema de controle de versão deve ser criado para isso. Por padrão, não é automagic, nem todos os arquivos no sistema de arquivos são versionados nesta estrutura.

Uma coisa que pensei que ainda não vi abordada: é possível "fixar" versões específicas de arquivos? A revisão do Ars indica que a estrutura de armazenamento geracional do Lion envelhece automaticamente as revisões antigas. Existe uma maneira de dizer ao sistema operacional que uma versão específica é importante o suficiente para ser mantida indefinidamente?

afrazier
fonte
11
Resposta incrível. Eles basicamente prepararam o versionamento para o horário nobre, aliviando os problemas com arquivos que não são de texto. Muito interessante!
Nic
3
@melee: hashes rolantes, janelas deslizantes / variáveis ​​e formatos de arquivos rachados para um tratamento delta eficiente não são novos. No entanto, parece estar bem feito , que tem sido o forte da Apple recentemente. Se a API for sensata, acho que veremos os desenvolvedores entrando nisso rapidamente.
afrazier
11
@afrazier Até onde eu sei: desde que o sistema de arquivos suporte o armazenamento permanente da versão, os comandos Salvar uma versão devem ser suficientes. Se um sistema de arquivos não tiver suporte para permanência, o aplicativo ou sistema operacional deve apresentar conselhos. Nas comunidades de suporte da Apple, publiquei um pouco sobre o ciclo de vida do aplicativo transparente (salvamento automático, versões, currículo) e armazenamento permanente de versões .
Graham Perrin
2
@melee: “Os problemas com arquivos que não são de texto” no controle de versão não são necessariamente sobre o armazenamento de deltas! Em vez disso, os arquivos que não são legíveis por humanos e não têm quebras de linha úteis são difíceis de diferenciar (revisar o que mudou) e mesclar em três direções (para combinar alterações independentes em uma nova versão). Nenhum algoritmo inteligente pode resolver isso; requer que os sistemas responsáveis ​​pelo diff / merge sejam extensíveis para trabalhar com o formato não textual. Ou, pode-se omitir diff e mesclar e apenas apresentar instantâneos históricos, como presumo que o sistema da Apple o faça.
Kevin Reid