Saya mencoba membuat TravisCI menggunakan situs statis Hakyll saya secara otomatis, menurut panduan ini .
Begini cara repo saya diatur. Saya memiliki cabang sumber saya, yang berisi file hakyll dan markdown saya. Itu membangun html ke _site
direktori, yang diatur sebagai submodule, ditautkan ke master
cabang saya .
Saya membangun situs tanpa masalah, lalu cd
ke direktori _site. Namun, ketika saya mencoba git add ./*
file HTML yang baru dibuat, saya mendapatkan kesalahan berikut:
fatal: Pathspec './about.html' is in submodule '_site'
Ketika saya mencoba git add --all
, saya mendapatkan kesalahan ini:
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
Apa yang menyebabkan ini, dan bagaimana saya bisa menghindari ini?
Anda dapat melihat repositori di sini .
sumber
Tampaknya
git add
konteksnya adalah repo induk ("parent" berarti yang termasuk submodule), yang memicu peringatan.Coba dan ubah konteksnya dengan:
Jangan lupa bahwa, jika ini berhasil, Anda masih harus kembali ke induk repo, dan
git add _site
, karena subrepo akan mengalami perubahan.Dan Anda harus mendorong keduanya.
Perbarui Januari 2017 (2+ tahun kemudian)
Dengan Git 2.12, Anda tidak akan melihatnya
prefix_pathspec: Assertion
lagi.Lihat komit 2d81c48 (09 Jan 2017) oleh Stefan Beller (
stefanbeller
) .Dibantu-oleh: Jeff King (
peff
) , dan Junio C Hamano (gitster
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 00880a1 , 18 Jan 2017)sumber
error: unknown option
git-dir = .git'`. Juga, saya tidak dapat melakukan repo orang tua saya dari dalam Travis, yang akan menyebabkan loop tak terbatas dari Travis berjalan ...--git-dir
dan--work-tree
merupakan opsi darigit
perintah, bukangit add
perintah. Cobalah setidaknyagit add
bagian, jikagit commit
tidak praktis.Sepertinya masalah saya adalah saya tidak sengaja menghapus
.git
folder submodule.sumber
git remote
perintahnya.Sepertinya Anda beroperasi pada submodula yang tidak diinisialisasi (pada dasarnya
.git
direktori tersebut hilang ), oleh karena itu Anda harus menginisialisasi mereka terlebih dahulu dan memperbarui:Kalau tidak, jika Anda tidak membutuhkan lagi submodule ini, hapus dengan:
atau:
dan tambahkan lagi:
Periksa submodul luar biasa Anda saat ini dengan:
git submodule status
.Lihat juga: Mengapa kesalahan git dengan 'Pernyataan gagal' di git add.?
sumber
Perbaikan 100% untuk masalah ini, bahkan jika Anda memiliki lebih dari satu direktori submodule di dalam proyek:
sumber