git fast-import - как обрабатывать подкаталоги при импорте из файлов резервных копий

Я пишу интерфейс импорта для git-import, чтобы создать репозиторий из нашего "контроля версий плоских файлов".

Мне удалось пройти мои каталоги, и я генерирую коммит-вывод для всех файлов, которые я могу найти в каталогах.

Но я не понимаю, как обращаться с подкаталогами. Что-то вроде этого:

/dir
|
+-- file
|
+-- /subdir
    |
    +-- another_file

Насколько я понимаю, мне придется сначала импортировать subdir, а затем другой_файл. Но я не понимаю из документации, как этого добиться.

Документация 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

Вы можете просто проверить семантику / синтаксис быстрого импорта при создании необходимой структуры git вручную и выполнить быстрый экспорт в файл. В этом случае я наткнулся на тот факт, что для быстрого импорта нужны "/", а Windows использует "\"...

Другие вопросы по тегам