#git #git-fast-import
#git #git-fast-import
Вопрос:
Я пишу интерфейс-импортер для git-import для создания репозитория из нашего «flat-file-version-control».
Мне удалось обойти мои каталоги, и я генерирую выходные данные фиксации для всех файлов, которые я могу найти в каталогах.
Но я не понимаю, как обрабатывать подкаталоги. Что-то вроде этого:
/dir
|
-- file
|
-- /subdir
|
-- another_file
Насколько я понимаю, мне пришлось бы сначала импортировать subdir, а затем another_file . Но я не понимаю из документации, как этого добиться.
Документация git о встроенном формате данных во время фиксации сообщает мне:
040000: подкаталог. Подкаталоги могут быть указаны только с помощью SHA или через метку дерева, установленную с помощью —import-marks .
Как мне получить этот SHA-хэш?
Или я здесь все усложняю? Я помню, что мне не нужно было делать git add для каталогов, поскольку они добавляются вместе с файлами в них. Достаточно ли добавлять файлы только из моего исходного каталога?
Ответ №1:
В этом нет ничего особенного, просто укажите полный путь от корня в коммите:
blob
mark :14
data 34
File 6 - rev 1
SubDir: TestFiles1
commit refs/heads/master
mark :15
author abc <a.bc@xxx.com> 1507618733 0200
committer abc <a.bc@xxx.com> 1507618733 0200
data 3
C3
from :10
M 100644 :11 TF1.txt
M 100644 :12 TF3.txt
M 100644 :13 TF5.txt
M 100644 :14 TestFiles1/TF6.txt
Вы можете просто проверить семантику / синтаксис fast-import при создании необходимой структуры git вручную и выполнить быстрый экспорт в файл. В этом случае я наткнулся на тот факт, что для быстрого импорта требуется ‘/’, а Windows использует »…