Суть проблемы в том, что мне необходимо перенести несколько репозиториев с SVN на Git под Windows. В части репозиториев есть пустые папки и они критичны для проектов и эти папки нельзя удалить не поломав проект.
У команды git svn clone есть параметр --preserve-empty-dirs, я его использую с доп. параметром --placeholder-filename=.gitkeep , но это не работает, никак.
Выглядит это примерно так:
D system/drivers/twi/.gitkeep
Use of uninitialized value $rec in scalar chomp at C:/Program Files/Git/mingw64/
share/perl5/Git.pm line 557, <$fh> chunk 1.
D system/drivers/twi/
M system.svc
W: -empty_dir: system/drivers/twi
Как итог папка не добавляется не в историю коммитов что уже проблема ибо невозможно сделать откать да и после полного извлечения тоже никак не добавляется.
Я пытался наколхозить костыль на механизм, ну т. е. написать команду которая хотя бы постфактум добавляла папки и у меня получилась два куска биоразложимого кода которые даже близко не делают то что нужно:
Этот кусок создаёт файлы с нулевым размером, которые отказывается обрабатывать Git:
for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do (fsutil file createnew %%d/.gitkeep 0 && echo.>%d/.gitkeep)
Этот уже делает файл размером 2 байта:
for /f "delims=" %d in ('dir /s /b /ad ^| sort /r') do (echo.>%d/.gitkeep)
Но в обоих кусках кода есть проблема с тем, что файлы создаются во всех папках, а не только в пустых. Кроме того мне не хватает мозгов исключить папку .git и этот код гадит и туда. В общем я просто прошу более опытных людей помочь решить задачу ибо дно достигнуто, в идеале показать мне где я не прав при использовании git svn clone ну или помочь дописать костыль чтобы хоть как то закоммититься.
P.S. пока я не хочу делать решение под Linux или WSL, поэтому желательно сделать нативно из под Windows. Но если есть готовый костыль под Linux то я был бы рад и ему.