【问题标题】:git svn importing a branch with a trailing spacegit svn 导入带有尾随空格的分支
【发布时间】:2012-11-19 16:21:07
【问题描述】:

我正在使用 git svn 将 svn 存储库导入 git。我在 Windows Server 2008 R2 上使用 Git-1.8.0-preview20121022。

导入已经运行了一段时间,并且顺利获取了前 4000 个修订版本。但是,现在似乎遇到了一个带有尾随空格的分支名称,并且已经倒下。

$ git svn fetch
Found possible branch point: https://10.10.10.2/svn/project/trunk => https://10.10.10.2/svn/project/branches/Release%2020110929%20, 3976
Found branch parent: (refs/remotes/Release 20110929 ) 691fb7f7d11cbb1afe35106f60a1d117ba415f4c
fatal: Unable to create 'd:/GitMigration/project/.git/svn/refs/remotes/Release 20110929 /index.lock': No such file or directory
read-tree 691fb7f7d11cbb1afe35106f60a1d117ba415f4c: command returned error: 128

这个分支不再存在,所以我不能以正常方式更改名称。该目录的名称中没有尾随空格,但我找不到重命名它以保留空格的方法。

对此我有什么办法吗?

【问题讨论】:

    标签: git svn


    【解决方案1】:

    问题的根本原因 - GIT 创建了一个带有尾随空格的目录,但实际上它的名称被截断了。例如,Windows mkdir 喜欢这样做。 GIT 没想到会继续使用带空格的名称,但找不到目录。

    它可以手动修复。使用 FAR、GnuWin 或任何其他可以创建带有尾随空格的目录的工具。然后将“d:/GitMigration/project/.git/svn/refs/remotes/Release 20110929”重命名为“d:/GitMigration/project/.git/svn/refs/remotes/Release 20110929”。如您所见,这是 GIT 期望找到的目录。

    然后再次运行git svn fetch

    【讨论】:

    • 我的回答中的空格也被截断了。重命名为带有尾随空格的目录。只需复制/粘贴“无法创建”和“/index.lock”之间的所有内容(包括空格)。
    【解决方案2】:

    最后我放弃了在 Windows 中导入这个。我敢肯定,那里有一些 hacky 解决方案,但是在 Linux 中执行此操作然后将其从那里拉到 Windows 要容易得多。只要分支不是最新的,这应该可以正常工作。

    【讨论】:

      【解决方案3】:

      有一个手动解决此问题的方法。尝试手动创建 DIR。 为了避免修剪白色尾随空格,您可以在 cmd 命令中添加“\?\ at the beginning of the path”。例如

      mkdir "\\?\d:\GitMigration\project\.git\svn\refs\remotes\Release 20110929 "
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        • 1970-01-01
        • 2018-11-17
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        相关资源
        最近更新 更多