Estoy tratando de hacer que TravisCI implemente automáticamente mi sitio estático Hakyll, de acuerdo con esta guía .
Así es como está configurado mi repositorio. Tengo mi rama fuente, que contiene mis archivos hakyll y markdown. Construye el html en el _site
directorio, que está configurado como un submódulo, vinculado a mi master
rama.
Construyo el sitio sin problemas, luego cd
en el directorio _site. Sin embargo, cuando intento git add ./*
los archivos HTML recién generados, aparece el siguiente error:
fatal: Pathspec './about.html' is in submodule '_site'
Cuando lo intento git add --all
, me sale este error:
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
¿Qué está causando esto y cómo puedo evitarlo?
Puede ver el repositorio aquí .
Parece que el
git add
contexto es el repositorio principal ("padre" significa el que incluye el submódulo), que activa la advertencia.Intenta cambiar su contexto con:
No olvide que, si esto funciona, aún tendría que volver al repositorio principal y
git add _site
, dado que el subrepo tendría cambios.Y tendrías que empujar a ambos.
Actualización de enero de 2017 (más de 2 años después)
Con Git 2.12, ya no lo verás
prefix_pathspec: Assertion
.Ver commit 2d81c48 (09 de enero de 2017) por Stefan Beller (
stefanbeller
) .Ayudado por: Jeff King (
peff
) y Junio C Hamano (gitster
) .(Fusionada por Junio C Hamano -
gitster
- en commit 00880a1 , 18 ene 2017)fuente
error: unknown option
git-dir = .git ''. Además, no me puedo comprometer mi padre repo desde dentro de Travis, que va a provocar un bucle infinito de Travis corriendo ...--git-dir
y--work-tree
son opciones delgit
comando, no elgit add
comando. Pruebe al menos lagit add
parte, si lagit commit
no es práctica.Parece que mi problema es que estaba borrando accidentalmente la
.git
carpeta del submódulo.fuente
git remote
comando.Parece que está operando en submódulos no inicializados (básicamente faltan
.git
directorios), por lo tanto, debe inicializarlos primero y actualizar:De lo contrario, si ya no necesita este submódulo, elimínelo:
o:
y agrégalo de nuevo:
Revisar sus submódulos actuales pendientes por:
git submodule status
.Ver también: ¿Por qué git está fallando con 'Error de aserción' en git add.?
fuente
Solución al 100% para este problema, incluso si tiene más de un directorio de submódulos dentro del proyecto:
fuente