2011-01-21 66 views
5

我正在为Plastic SCM写一个fast-export/fast-import,但我在处理目录和文件中含​​有空格的问题。git快速导出格式和空格

例如,东西像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 

所以,我理解它不不支持目录移动,然后移动文件内的文件......这有点奇怪,不是吗?

回答

2

git fast-import不提“Handling rename”部分中:

当导入重命名的文件或目录,只需将对应的提交过程中删除旧的姓名(或名称)和修改新的姓名(或名称)。 Git会在事后执行重命名检测,而不是在提交期间显式检测。

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

别忘了Git没有版本目录,只有blob(即带有关联路径的文件内容)。


要添加到您编辑的问题:

  • 目录的举动意味着,如果进口在Git中,该源(目录)将不得不被删除的所有文件已经经过处理(即导入,重命名与否)
  • 当在Git中导入文件时,文件的移动是典型的git mv

2011年,OP has posted a question on the old gmane list。问题是currently (2017) discussed in Git for Windows (git-for-windows/git issue 908)

+0

这很混乱,因为“重命名”操作也受支持:filerename 将现有文件或子目录重命名为分支中的其他位置。现有的文件或目录必须存在。如果目标存在,它将被源目录取代。 'R'SP SP LF – pablo 2011-01-21 10:47:04