Estou tentando fazer com que o TravisCI implante automaticamente meu site estático Hakyll, de acordo com este guia .
Veja como meu repo está configurado. Eu tenho minha ramificação de origem, que contém meus arquivos hakyll e markdown. Ele cria o html no _site
diretório, que é configurado como um submódulo, vinculado ao meu master
ramo.
cd
Crio o site sem problemas e depois no diretório _site. No entanto, quando tento git add ./*
os arquivos HTML recém-gerados, obtenho o seguinte erro:
fatal: Pathspec './about.html' is in submodule '_site'
Quando tento git add --all
, recebo este erro:
git: pathspec.c:317: prefix_pathspec: Assertion `item->nowildcard_len <= item->len && item->prefix <= item->len' failed.
/home/travis/build.sh: line 245: 1566 Aborted git add --all
O que está causando isso e como posso evitar isso?
Você pode ver o repositório aqui .
Parece que o
git add
contexto é o repositório pai ("pai" significa aquele incluindo o submódulo), que aciona o aviso.Tente mudar seu contexto com:
Não esqueça que, se isso funcionar, você ainda precisará retornar ao
git add _site
repositório pai e , uma vez que o subrepo terá alterações.E você teria que empurrar os dois.
Atualização em janeiro de 2017 (mais de 2 anos depois)
Com o Git 2.12, você não verá
prefix_pathspec: Assertion
mais isso .Veja commit 2d81c48 (09 de janeiro de 2017) de Stefan Beller (
stefanbeller
) .Ajudado por: Jeff King (
peff
) e Junio C Hamano (gitster
) .(Mesclado por Junio C Hamano -
gitster
- na confirmação 00880a1 , 18 de janeiro de 2017)fonte
error: unknown option
git-dir = .git ''. Além disso, eu não posso comprometer meu repo pai de dentro de Travis, que irá causar um loop infinito de Travis correndo ...--git-dir
e--work-tree
são dogit
comando, não ogit add
comando. Tente pelo menos agit add
parte, segit commit
não for prático.Parece que meu problema é que eu estava excluindo acidentalmente a
.git
pasta do submódulo.fonte
git remote
comando.Parece que você está operando em submódulos não inicializados (basicamente faltam
.git
diretórios), portanto, você deve inicializá-los primeiro e atualizar:Caso contrário, se você não precisar mais desse submódulo, remova-o:
ou:
e adicione-o novamente:
Verifique os seus atuais submódulos pendentes por:
git submodule status
.Veja também: Por que o git comete erros com 'Falha na asserção' no git add.?
fonte
Correção de 100% para esse problema, mesmo se você tiver mais de um diretório de sub-módulo dentro do projeto:
fonte