Git-svn W:-empty_dir警告。 他们的意思是什么?

在使用标准布局使用git-svn来克隆现有的Subversion版本库时,我得到了一堆W: -empty_dir (和W: +empty_dir )警告。 克隆的git仓库似乎正在工作,即我可以做通常的git操作和dcommit到SVN仓库。

真正的问题是,最初的克隆和rebase会创build一些SVN仓库中不存在的空目录,位于仓库顶部(以及其他目录在trunk中)。 这些目录不包含文件,而只包含一些空目录。 看来“W:-empty_dir”警告对应于这些空目录。

我通过使用SVN检查整个存储库查找空目录,但没有空目录。 我也通过SVN检查,如果存储库具有特殊属性的文件,但没有任何比“可执行”和“MIMEtypes”以外。

现有的存储库并不是最初遵循标准布局,而是将其清理完毕,以便顶层目录只是“主干”,“标签”和“分支”。

什么可能导致创build这些Subversion下不存在的空目录?

不知道这些空目录的确切位置,可以通过使用--rmdir命令行选项或svn.rmdirconfiguration选项来告诉git-svn删除它们。

请参阅git-svn OPTIONS手册页和

如果没有留下任何文件,请从SVN树中删除目录。
SVN可以对空目录进行版本化,如果没有文件,SVN默认不会被删除。 git不能版本空目录。
启用这个标志将使SVN的提交行为像git。


警告来自SVN标签(这是“目录”)不支持git-svn,如“ git svn中断,然后我失去了所有的标签,如何修复? ”。
从这个线程 :

SVN跟踪目录,git不会,所以空的目录不能在git中表示。
这些文件警告似乎告诉你哪些文件被删除,导致一个空的目录留在原地,在特定的svn commit被导入。

-empty_dir+empty_dir之间的差异是关于如何在SVN回购中出现空目录

-empty_dir

一堆文件被删除,留下一个目录(分支或标签)为空。

+empty_dir

刚刚在导入的SVN版本中创build了一个空分支或标签,而git-svn不会导入一个空目录。


请注意,您可以在该警告之后重新启动导入 。

与git的一件事是它不跟踪目录。 这是所有关于内容(文件)在混帐。 所以空的目录几乎是在你的本地回购中被搁置。 摆脱本地回购空目录的最好方法是做git clean -d。

签出男人干净的更多信息。

关于标题中的问题(这引起了谷歌对这个页面的关注),根据我的发现,使用git-svn 1.7.1或者git 1.8.5:警告W: -empty_dir: x/y/z表示在SVN更改集中删除了文件或文件夹x / y / z。 除非你指定-q(–quiet),否则这个事实已经被报告为D x/y/z 。 我想说的是,结果是,文件夹x / y 可能已经变成空的,因此被从git视图中删除。 X / Y没有变得空虚,也没有什么特别的事情发生。

在实践中,如果删除x / y / z会使x / y空,那么可能已经删除了SVN变更集中的整个x / y,并且不会单独报告x / y / z的删除。 所以你不会得到这个警告,而是W: -empty_dir: x/y警告你x可能已经变空了,你知道它没有,因为那样你会删除x …

另一方面,如果你没有留下空白的目录并且想保留它们,我想你会使用–preserve-empty-dirs,并且我也没有在警告中看到任何一点(如果它仍然出现在这种情况下)。

所以总之,忽略它。 不像W: +empty_dir ,这是一个不同的故事。