git-svn rebase“文件名太长”

时间:2012-04-23 13:02:11

标签: git svn version-control git-svn dvcs

我正在运行

$ git svn rebase

几分钟后,它完成了取件并开始变装。 我收到了下一条错误消息:

First, rewinding head to replay your work on top of it...
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_looks_cutted_with_spaces_too': File name too long
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_looks_cutted_with_spaces_too': File name too long
error: cannot stat '$73_chars_4_deep_levels_path_with_spaces/$180_chars_file_name_looks_cutted_with_spaces_too': File name too long
could not detach HEAD
rebase refs/remotes/git-svn: command returned error: 1

我读了以下问题 “git checkout-index: unable to create file (File name too long)

这与我密切相关,但并没有解决我的问题。

Nor

git ls-files --stage

,也不

git ls-files

未找到问题“$ 180_chars_file_name_looks_cutted_with_spaces_too”文件。 我也不能重命名文件(通过某种政治决定),正如bdonlan在他的解决方案中所说的那样。

除了下载每个文件夹以分离SVN-repo并通过移植进行合并之外,是否有任何变通方法或解决方案?

更新

我在

尝试了以上所有内容
MacOsX 10.6
git version 1.7.9.6
svn, version 1.7.4 (r1295709)

并且通勤者正在使用NTFS

从Windows工作

更新2

我做了一些研究。 我认为问题在于UTF-8字符。 我试图创建新文件

$ touch "$180_chars_file_name_looks_cutted_with_spaces_too"
$ ls
132_chars_file_name_with_numbers_at_the_end

文件看起来已损坏。它最后有一些数字。您可以复制它,例如:

$ touch "яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяяяяяяяяяяя яяяяяяяя яяяяя яяяяяя я яяя яяяяя яяя"
$ ls
яяяяяяяяя яя яяяя яя яяяяяяяяяя яяяяяяяяя я яяяяяя я яяя яяяяяяяяя яяяяяяяяяяяяя яяяяяяяя я яяяяяяяяяяяяяяяяяя яяяяяя яя яяяяяя яяяя#464CDD8

由vim编辑器成功打开“132_chars_file_name_with_numbers_at_the_end”并进行编辑。 但是当我输入“:wq”文件时就消失了。

现在我觉得我找到了问题的根源,但在那之后生活变得不那么容易了)

2 个答案:

答案 0 :(得分:1)

最后,我发现在我的情况下尽可能优雅的解决方案。 我已经通过MacOs Disk实用程序创建了ExFat dmg-image。 之后我安装了新的图像文件并将我的git-repo复制到其中。 它在VirtualBox下比Cygwin更好。

另外,我试过使用NTFS,但我已经采取了惨败。 NTFS-3G或Tuxero驱动程序也不支持长UTF名称。 与Linux和ReiserFS相同的故事。

答案 1 :(得分:0)

这是我发现的一个可怕但有效的解决方法。

MsysGit和Cygwin都正常使用这些文件。

所以,我得到了VirtualBox并安装了带有MSysGit-utf8的Windows。

然后我将我的项目复制到VirtualBox中。

git svn rebase 这就像魅力一样。

之后,我能够将更新的项目(或从中重新绑定)复制回MacOs主机。 当然,没有复制具有长名称的文件,但我现在可以跳过它们并添加到忽略列表。