Próbuję zmusić TravisCI do automatycznego wdrożenia mojej statycznej witryny Hakyll, zgodnie z tym przewodnikiem .
Oto jak jest skonfigurowane moje repozytorium. Mam gałąź źródłową, która zawiera moje pliki hakyll i markdown. Buduje kod HTML w _site
katalogu, który jest skonfigurowany jako podmoduł, połączony z moją master
gałęzią.
cd
Witrynę buduję bez problemu, a następnie umieszczam w katalogu _site. Jednak podczas próby git add ./*
uzyskania nowo wygenerowanych plików HTML pojawia się następujący błąd:
fatal: Pathspec './about.html' is in submodule '_site'
Kiedy próbuję git add --all
, pojawia się ten błąd:
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
Co to powoduje i jak mogę tego uniknąć?
Możesz wyświetlić repozytorium tutaj .
Wygląda na to, że
git add
kontekstem jest repozytorium nadrzędne („rodzic” oznacza to, w którym znajduje się podmoduł), które wyzwala ostrzeżenie.Spróbuj zmienić jego kontekst za pomocą:
Nie zapominaj, że jeśli to
git add _site
zadziała , nadal będziesz musiał wrócić do repozytorium nadrzędnego, a ponieważ procedura ta uległaby zmianie.I musiałbyś naciskać na oba.
Aktualizacja styczeń 2017 (ponad 2 lata później)
Z Git 2.12
prefix_pathspec: Assertion
już tego nie zobaczysz .Zobacz commit 2d81c48 (09 stycznia 2017) autorstwa Stefana Bellera (
stefanbeller
) .Pomagają: Jeff King (
peff
) i Junio C Hamano (gitster
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu 00880a1 , 18 stycznia 2017 r.)źródło
error: unknown option
git-dir = .git'`. Nie mogę też zatwierdzić repozytorium rodzica z poziomu Travisa, co spowoduje nieskończoną pętlę działania Travisa ...--git-dir
i--work-tree
są opcjamigit
polecenia, a niegit add
polecenia. Spróbuj przynajmniej tejgit add
części, jeśligit commit
nie jest to praktyczne.Wygląda na to, że mój problem polega na tym, że przypadkowo usuwałem
.git
folder podmodułu.źródło
git remote
polecenie.Wygląda na to, że pracujesz na niezainicjowanych modułach podrzędnych (w zasadzie brakuje w nich
.git
katalogów), dlatego powinieneś je najpierw zainicjować i zaktualizować:W przeciwnym razie, jeśli nie potrzebujesz już tego modułu podrzędnego, usuń go:
lub:
i dodaj ponownie:
Sprawdź aktualne wybitne submodules przez:
git submodule status
.Zobacz także: Dlaczego git wyświetla błąd „Assertion failed” na git add.?
źródło
100% poprawka dla tego problemu, nawet jeśli masz więcej niż jeden katalog podmodułów w projekcie:
źródło