sono stato successo in grado di convertire moduli di sottodirectory utilizzando comandi quali i metodi descritti in questi due esempi:Git: conversione di una sottodirectory a un sottomodulo
L' la sfida è riuscire a raggiungere questo risultato su una directory, preservando la sua cronologia attraverso ogni conversione.
Questi due metodi descritti sopra hanno funzionato bene su un repository sperimentale banale, ma non gestiscono un repository più complesso. ad esempio, un repository con un modello di commit arbitrario.
Il problema si espone quando si esegue
git filter-branch --subdirectory-filter <lib-directory> -- --all
quando si cerca di convertire una directory (che in precedenza era un modulo) per un modulo. Se capisco correttamente. Questo stava gettando:
Rewrite c95281d27e4602e9af50146eefcf7c28f5bb4f35
(2/11)a989b207d3757f9803fd50fa2d77908a4dc1330e
fatal: failed to unpack tree object
c95281d27e4602e9af50146eefcf7c28f5bb4f35:lib/test_submodule
Could not initialize the index`
di cui non erano assolutamente non ha prodotto risultati simili in linea.
È stato calcolato che ciò si è verificato a causa del riferimento ricorrente al sottomodulo all'interno dell'INDICE, per cui quando il sottomodulo è stato convertito, si sarebbe verificato l'errore precedente.
Esiste un modo per eseguire uno filter-branch
che consenta di evitare questi precedenti riferimenti al sottomodulo ??
Edit: Sono tornato a guardare questo problema di nuovo, e non ho ancora trovato un modo per risolverlo. L'utilizzo del metodo Subdir-> Submodule con git filter-branch
funziona correttamente per una directory normale; ma si blocca quando colpisce un sottomodulo. L'incidente che continua a succedere in questa sezione all'interno git:
https://github.com/github/git-msysgit/blob/master/git-filter-branch.sh#L300
non riesco molto senso di esso, però.