Я пытаюсь заставить TravisCI автоматически развернуть мой статический сайт Hakyll в соответствии с этим руководством .
Вот как устроено мое репо. У меня есть исходная ветка, содержащая мои файлы hakyll и markdown. Он встраивает html в _site
каталог, который настроен как подмодуль, связанный с моей master
веткой.
Я создаю сайт без проблем, затем cd
в каталог _site. Однако, когда я пытаюсь открыть git add ./*
вновь сгенерированные файлы HTML, я получаю следующую ошибку:
fatal: Pathspec './about.html' is in submodule '_site'
При попытке git add --all
я получаю такую ошибку:
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
Что вызывает это и как этого избежать?
Посмотреть репозиторий можно здесь .
Кажется, что
git add
контекст - это родительский репо («родительский» означает тот, который включает подмодуль), который вызывает предупреждение.Попробуйте изменить его контекст с помощью:
Не забывайте, что если это сработает, вам все равно придется вернуться к родительскому репо, и
git add _site
, поскольку в подрепо будут изменения.И вам придется подтолкнуть оба.
Обновление от января 2017 г. (2+ года спустя)
С Git 2.12 вы этого больше не увидите
prefix_pathspec: Assertion
.См. Commit 2d81c48 (9 января 2017 г.) Стефан Беллер (
stefanbeller
) .При поддержке: Джефф Кинг (
peff
) и Джунио С. Хамано (gitster
) .(Объединено Junio C Hamano -
gitster
- в коммите 00880a1 , 18 января 2017 г.)источник
error: unknown option
git-dir = .git ''. Кроме того, я не могу зафиксировать свое родительское репо изнутри Трэвиса, это вызовет бесконечный цикл работы Трэвиса ...--git-dir
и--work-tree
являются параметрамиgit
команды, а не самойgit add
команды. Попробуйте хотя быgit add
часть, еслиgit commit
это непрактично.Кажется, моя проблема в том, что я случайно удалил
.git
папку подмодуля.источник
git remote
команду.Похоже, вы работаете с неинициализированными подмодулями (у них в основном отсутствуют
.git
каталоги), поэтому вы должны сначала их инициализировать и обновить:В противном случае, если вам больше не нужен этот подмодуль, удалите его:
или:
и снова добавляем:
Проверьте текущие выдающиеся подмодулях по:
git submodule status
.См. Также: Почему git выдает ошибку «Ошибка утверждения» в git add.?
источник
100% исправление этой проблемы, даже если у вас есть более одного каталога подмодулей внутри проекта:
источник