5

我正在为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

所以,我知道它不支持移动目录,然后移动其中的文件......这有点奇怪,不是吗?

4

1 回答 1

2

git fast-import在“处理重命名”部分中确实提到:

导入重命名的文件或目录时,只需在相应的提交期间删除旧名称并修改新名称即可。Git 在事后执行重命名检测,而不是在提交期间显式执行。

所以你的例子似乎遵循这个逻辑。

不要忘记Git 没有版本目录,只有blob(即具有关联路径的文件内容)。


要添加到您编辑的问题:

  • 目录的移动意味着,如果在 Git 中导入,则必须在处理完所有文件后删除源(目录)(即是否导入、重命名)
  • 文件的移动,当导入 Git 时,是一个经典的git mv.

2011年,OP在旧的gmane列表上发布了一个问题
该问题目前(2017 年)在 Git for Windows(git-for-windows/git问题 908)中讨论。

于 2011-01-21T10:08:54.727 回答