J'essaie de faire en sorte que TravisCI déploie automatiquement mon site statique Hakyll, selon ce guide .
Voici comment mon repo est configuré. J'ai ma branche source, qui contient mes fichiers hakyll et markdown. Il construit le html dans le _site
répertoire, qui est configuré comme un sous-module, lié à ma master
branche.
Je construis le site sans problème, puis cd
dans le répertoire _site. Cependant, lorsque j'essaye git add ./*
les fichiers HTML nouvellement générés, j'obtiens l'erreur suivante:
fatal: Pathspec './about.html' is in submodule '_site'
Lorsque j'essaye git add --all
, j'obtiens cette erreur:
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-ce qui cause cela et comment puis-je éviter cela?
Vous pouvez afficher le référentiel ici .
Il semble que le
git add
contexte soit le référentiel parent ("parent" signifie celui qui inclut le sous-module), qui déclenche l'avertissement.Essayez de changer son contexte avec:
N'oubliez pas que si cela fonctionne, vous devrez toujours revenir au
git add _site
référentiel parent et , puisque l'assignation aurait des modifications.Et il faudrait pousser les deux.
Mise à jour janvier 2017 (2+ ans plus tard)
Avec Git 2.12, vous ne verrez
prefix_pathspec: Assertion
plus cela.Voir commit 2d81c48 (09 janvier 2017) par Stefan Beller (
stefanbeller
) .Aide: Jeff King (
peff
) et Junio C Hamano (gitster
) .(Fusionné par Junio C Hamano -
gitster
- dans commit 00880a1 , 18 janvier 2017)la source
error: unknown option
git-dir = .git'`. De plus, je ne peux pas valider mon dépôt parent depuis Travis, cela provoquera une boucle infinie de Travis en cours d'exécution ...--git-dir
et--work-tree
sont de lagit
commande, pas lagit add
commande. Essayez au moins lagit add
partie, si cegit commit
n'est pas pratique.Il semble que mon problème soit que je supprimais accidentellement le
.git
dossier du sous-module.la source
git remote
commande.Il semble que vous travaillez sur des sous-modules non initialisés (il manque essentiellement des
.git
répertoires), vous devez donc les initialiser d'abord et mettre à jour:Sinon, si vous n'avez plus besoin de ce sous-module, supprimez-le en:
ou:
et ajoutez-le à nouveau:
Vérifiez vos sous-modules actuels en suspens en:
git submodule status
.Voir aussi: Pourquoi git génère-t-il une erreur avec 'Échec de l'assertion' sur git add.?
la source
Correction à 100% de ce problème, même si vous avez plus d'un répertoire de sous-modules dans le projet:
la source