формат быстрого экспорта git и пробелы - PullRequest
5 голосов
/ 21 января 2011

Я пишу fast-export / fast-import для Plastic SCM , но у меня возникают проблемы, связанные с каталогами и файлами, содержащими пробелы в их именах.

Например, git fast-export чего-то вроде:

git mv "new directory" "second directory"

заканчивается экспортом в виде:

D new directory/hello.c
M 100644 :1 second directory/hello.c

Вместо операции "move" (R),То же самое происходит с файлом с пробелами в имени.

Есть ли способ обработать его правильно?
Означает ли это, что Git не может обрабатывать переименования в путях с пробелами?

Отредактировано с реальным примером ниже:

У меня что-то подобное в коммите:

  R src/samples/sampledata src/samples/samplebase
* R src/samples/samplebase/Test.Workflow.xml src/samples/samplebase/new/Test.Workflow.xml

, и он не может импортировать поговорку

fatal: Path src/samples/samplebase/Test.Workflow.xml not in branch

Итак, я понимаюон не поддерживает перемещение каталога, а затем перемещение файла внутри него ... Это немного странно, не правда ли?

1 Ответ

2 голосов
/ 21 января 2011

git fast-import упоминается в разделе « Обработка переименования »:

При импорте переименованного файла или каталога просто удалите старое имяи измените новые имена во время соответствующего коммита.Git выполняет обнаружение переименования не в явном виде, а в явном виде во время фиксации.

Итак, ваш пример следует этой логике.

Не забывайте, что Git не версикаталоги, только BLOB-объекты (т. е. содержимое файла со связанным путем).


Чтобы добавить в отредактированный вопрос:

  • перемещение каталога означает, что при импорте в Git источник (каталог) должен быть удален после обработки всех файлов (то есть импортированных, переименованных или нет)
  • перемещение файла при импорте в Git является классическим git mv.

В 2011 году OP разместил вопрос в старом списке gmane .
И проблема в настоящее время (2017) обсуждалась в Git для Windows (git-for-windows/git выпуск 908) .

...