Ich versuche, TravisCI dazu zu bringen, meine statische Hakyll-Site gemäß diesem Handbuch automatisch bereitzustellen .
So wird mein Repo eingerichtet. Ich habe meinen Quellzweig, der meine Hkyll- und Markdown-Dateien enthält. Es baut das HTML in das _site
Verzeichnis ein, das als Submodul eingerichtet ist und mit meinem master
Zweig verknüpft ist .
Ich baue die Site ohne Probleme und dann cd
in das Verzeichnis _site. Wenn ich jedoch versuche, git add ./*
die neu generierten HTML-Dateien zu verwenden, wird folgende Fehlermeldung angezeigt:
fatal: Pathspec './about.html' is in submodule '_site'
Wenn ich es versuche git add --all
, erhalte ich folgende Fehlermeldung:
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
Was verursacht das und wie kann ich das vermeiden?
Sie können das Repository hier anzeigen .
Es scheint , der
git add
Kontext ist die Mutter Repo ( „parent“ bedeutet das eine mit dem Modul), der die Warnung auslöst.Versuchen Sie, den Kontext zu ändern mit:
Vergessen Sie nicht, dass Sie, wenn dies funktioniert, immer noch zum übergeordneten Repo
git add _site
zurückkehren müssten , und da sich das Subrepo ändern würde.Und Sie müssten beide pushen.
Update Januar 2017 (2+ Jahre später)
Mit Git 2.12 werden Sie das nicht
prefix_pathspec: Assertion
mehr sehen.Siehe Commit 2d81c48 (09. Januar 2017) von Stefan Beller (
stefanbeller
) .Unterstützt von: Jeff King (
peff
) und Junio C Hamano (gitster
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 00880a1 , 18. Januar 2017)quelle
error: unknown option
git-dir = .git'`. Außerdem kann ich mein Eltern-Repo nicht aus Travis heraus--git-dir
und--work-tree
sind Optionen desgit
Befehls, nicht desgit add
Befehls. Versuchen Sie zumindest dasgit add
Teil, wenn dasgit commit
nicht praktikabel ist.Mein Problem scheint zu sein, dass ich versehentlich den
.git
Ordner des Submoduls gelöscht habe .quelle
git remote
Befehl an.Es hört sich so an, als würden Sie mit nicht initialisierten Submodulen arbeiten (ihnen fehlen im Grunde
.git
Verzeichnisse). Daher sollten Sie sie zuerst initialisieren und aktualisieren:Wenn Sie dieses Submodul nicht mehr benötigen, entfernen Sie es durch:
oder:
und füge es noch einmal hinzu:
Überprüfen Sie Ihre aktuell ausstehenden Submodule durch :
git submodule status
.Siehe auch: Warum ist ein Git-Fehler mit 'Assertion failed' bei git add.?
quelle
100% ige Behebung dieses Problems, auch wenn Sie mehr als ein Submodulverzeichnis im Projekt haben:
quelle