git-svn 变基"文件名太长"



我正在运行

$ 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 签出索引:无法创建文件(文件名太长)"

它与我密切相关,但不能解决我的问题。

也不

git ls-files --stage

也不

git ls-files

未找到有问题的"$180_chars_file_name_looks_cutted_with_spaces_too"文件。此外,我无法重命名文件(通过某种政治决策),正如 bdonlan 在他的解决方案中所说的那样。

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

更新

我已经尝试了以上所有内容

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"文件时消失了。

现在我想我找到了问题的根源,但在那之后生活并不容易)

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

另外,我尝试使用NTFS,但我失败了。NTFS-3G和Tuxero驱动程序也不支持长UTF名称。Linux和ReiserFS也是如此。

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

MsysGit 和 Cygwin 都可以正常处理该文件。

因此,我得到了VirtualBox,并在其中安装了带有MSysGit-utf8的Windows。

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

Git SVN Rebase 就像一个魅力一样工作。

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

最新更新