SHA in geänderten Dateien während des Git Fast-Export
-
26-10-2019 - |
Frage
Ich schreibe einen Importeur von Git zu Plastic SCM und fand einen Fall, von dem ich nicht wusste:
M 100644 :31624 activesupport/lib/active_support/core_ext/array/conversions.rb
M 100644 :31625 activesupport/lib/active_support/vendor.rb
M 160000 70ab0f3cc5921cc67e09741939a08b2582d707cb activesupport/lib/active_support/vendor/i18n-0.0.1
Wie Sie sehen können, gelangt das letzte Element (exportiert mit Fast-Export aus dem Git Repo selbst) in einen Blob anstelle einer Marke. Warum passiert das? Gibt es eine Möglichkeit, alle Objekte als Markierungen zu "erzwingen"?
Vielen Dank
Lösung
In Git -Bäumen ein Dateimodus von 1600000
zeigt an, dass ein Eintrag, activesupport/lib/active_support/vendor/i18n-0.0.1
In diesem Fall ist ein Submodul. Submodule werden in Bäumen als Objektname (dh das SHA1SUM) des Commits gespeichert, dass sich das Submodul befinden sollte, und das ist der Wert, den Sie in der Ausgabe sehen. Was fast-export
Ausgabe ist ausreichend für fast-import
Um den Baum so zu rekonstruieren, dass git submodule update --init
Im neuen Repository wird das Submodul auf die richtige Version initialisiert und aktualisiert. Ich fürchte, ich bin mir nicht sicher, ob in Ihrem Traget SCM ein gleichwertiges Konzept zu Gits Submodules vorhanden ist.