如何删除git-svn中的空目录?

时间:2013-07-25 18:09:35

标签: git svn git-svn

我有一个特定的问题,我没有在这里或其他任何地方找到解决方案。我有一个Subversion存储库,我正在使用git-svn来访问它并对其进行处理。

前一段时间,Subversion存储库中有一些空目录(空,只有子文件夹)。 Git没跟踪那些。然后将它们从Subversion存储库中删除。但即使在运行此命令后我仍然拥有它们:

git svn rebase

当我手动删除它们时,它们会在下一个命令中重新创建:

git svn rebase

我怎样摆脱它们?

我使用纯Subversion进行了检查,但它们不在存储库中。

4 个答案:

答案 0 :(得分:12)

我想你会在this blog post找到答案。

  

[...]

     

如果没有文件,则从SVN树中删除目录   背后。 SVN可以对空目录进行版本控制,不会删除它们   默认情况下,如果没有文件。 git不能版本   空目录。启用此标志将使提交SVN行为   像git。 config key: svn.rmdir

     

要修复问题的根源,请设置全局git配置:

     

git config --global svn.rmdir true

     

[...]

答案 1 :(得分:2)

这有点粗糙,但我发现以下内容解决了我的问题:

rm .git/svn/refs/remotes/trunk/unhandled.log
git clean -df

任何后续

git svn rebase

不会重新创建任何内容。

由于我不知道如何在不重新克隆存储库的情况下重新生成此文件,我建议先备份它。它是一个文本文件,所以我想您也可以编辑其内容以删除最终创建的条目

答案 2 :(得分:2)

告诉git svn它不应该尝试重新创建空目录:

git config svn-remote.svn automkdirs false

这是手册页的相关部分:

  

SVN-远程<名称> .automkdirs

     

通常,“git svn clone”和“git svn rebase”命令会尝试重新创建Subversion存储库中的空目录。如果此选项设置为“false”,则只有在显式运行“git svn mkdirs”命令时才会创建空目录。如果未设置,git svn假定此选项为“true”。

请注意,很容易将此主题与提交/不提交空目录的主题混淆为svn(这是svn.rmdir的用途)。

答案 3 :(得分:1)

通过https://spin.atomicobject.com/2014/08/17/git-svn-empty-directories/回答:

修改您的~/.gitconfig,将其添加为默认行为。

  [svn]
  # push empty directory removals back to svn as directory deletes
  rmdir = true

这将使删除目录成为默认目录。