
Estou tentando converter um repositório Perforce (p4) para git (de preferência para Helix4Git, uma implementação de servidor git por perforce).
Reduzo meu problema a um simples caso de uso para encontrar a solução para meu problema maior.
No P4 eu tenho um arquivo//depósito/foo.txtque é 10 MB. Eu o "clonei" usando o comando merge do P4 então tenho o mesmo arquivo duas vezes em meu repositório, chamado//depósito/bar.txt.
//depot
.. foo.txt (10MB) [internal-id==> 4509b9a8.txt]
.. bar.txt (10MB, clone of foo.txt) [internal-id==> 4509b9a8.txt]
O servidor P4 armazena o arquivouma vezusando dois links internamente para reduzir o espaço em disco usado, de modo que apenas 10 MB sejam usados. Em um disco local, eu teria duas cópias físicas (10+10=20MB). Agora aqui está o problema:
eu usogit-p4para converter meu repositório P4 para git. Primeiro eu clonei-o em meu computador local e, em seguida, configurei um git-remote e enviei tudo para finalmente tê-lo em meu servidor git.
Conforme mencionado anteriormente, tenho 20 MB em meu disco local e quando o envio ao meu servidor git ele também usa 20 MB.
1) Se eu clonar um arquivo no git, ele também será clonado fisicamente no servidor?
2) Existe alguma chance de o git-p4 ou o servidor git detectar esse "clone" - que é o mesmo arquivo - e usar links internamente também? O próprio servidor git ou usando um recurso do sistema de arquivos (soft-link ou hard-link, etc).
Pergunta extra) O macOS APFS para o servidor git ajudaria aqui?
Muito obrigado!
Responder1
Quando você moveu os arquivos clonados para o Git, eles serão armazenadosseparadamente. O Git armazena apenas o conteúdo e as permissões do arquivo. Os metadados e o ID do inode não são rastreados.
Sua melhor aposta é adicionar o clone gitignore
ou.git/info/exclude
Referência:insira a descrição do link aqui