`git-p4 clone` falha" nova dica ... não contém ... "
Pergunta
Estou correndo no Windows, com o cliente Windows P4, e o Git instalado via Cygwin. O cliente P4 anuncia como sua sintaxe é regular entre plataformas e tudo isso, de modo que isso deve ser bengal-diário.
Então, quando eu for para git-p4 clone --verbose //depot/path/to/source
, ele lista todos os arquivos no repositório como se estivessem sendo checados, depois morre dizendo
Exceção: FAST-IMPORT Falha: Aviso: Não atualizando refs/remotos/p4/mestre (nova dica CD601B92DA8625C90AF05685E450E55B6D19C9E9 não contém 3A512C9408E3CBEEF 94C78DFD7115F812C9408E3CBEEF 94C78DFD711111111212C9408E3CBeef
e conclui com um grande bloco de "estatísticas Git-Fast-Import". Olhando para o erro: nova dica? Huh? O que precisa contê -lo?
O que me resta é um repo .git que é um par de megs (muito, muito menor que a árvore de origem completa seria). Alguma ideia?
Solução
Eu tive um problema semelhante e geralmente posso ser atribuído ao invólucro em caminhos, nomes de ramificações etc. Não tenho certeza sobre o P4, mas garante que você não tenha uma filial mestre - ela deve ser mestre. Siga o mesmo regimento em geral. Além disso, evite nomes de diretórios e arquivos com espaços neles. Muitas ferramentas centradas no Git não gostam disso. Gitolite é um exemplo. Não permitirá um repositório que tenha um espaço nele.
Outras dicas
Semelhante à resposta aceita, tive o mesmo problema ao tentar sincronizar com um ramo Git no formulário:
git p4 sync --branch=feature/f1 //depot/path/to/code
O nome / no nome da filial parecia causar o mesmo aviso fracassado do Import Fast-mail enigmático. Infelizmente, o Git-P4 não parece suportar nomes padrão de ramificação Git-Flow.
Mudando para um ramo como esse funcionou:
git p4 sync --branch=f1 //depot/path/to/code
Você obtém "ignorando a revisão XYZ, pois produziria uma confirmação vazia" para que o primeiro CL fosse importado?
Nesse caso, você está acertando um bug no git-p4.py, onde limpa a configuração "InitialParent" (necessária para que o Git Fast-Import possa ingressar nas novas confirmações da importação anterior) antes de realmente comprometer qualquer coisa. O novo fluxo de arquivos importados é, portanto, deixado desconectado para o antigo.
Atualmente, estou trabalhando em torno disso usando -ChangesFile e trabalhando explicitamente qual a necessidade de CL para ser importada.
Eu tive problemas semelhantes. O que funcionou para mim foi atualizar o código Python Git-P4. Você pode dar uma olhada no commit aqui, mas espero que seja puxado em breve.
Eu também encontrei o erro "nova dica x não contém o erro Y" em execução rápida.
No meu caso, isso foi causado por um compromisso preexistente não relacionado no ramo principal do repo em que estava tentando importar. Eu tinha inicializado o repo com o cliente Github, que adicionou uma confirmação inicial (para adicionar um arquivo .gitignore). Presumivelmente, a ferramenta Fast-Import não pôde reconciliar os compromissos importados com o estado atual da filial, já que o compromisso da ferramenta do Github não tinha relação com as confirmações sendo importadas.
A solução para mim foi inicializar um repositório vazio com "git init" e depois executar o Import rápido.