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

时间:2010-11-10 17:44:04

标签: git git-svn

在尝试使用标准布局使用git-svn克隆现有Subversion存储库时,我收到了一堆W: -empty_dir(和W: +empty_dir)警告。克隆的git存储库似乎正在工作,即我可以执行常规的git操作并且dcommit到SVN存储库。

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

我通过使用SVN检出整个存储库来查找空目录,但是没有空目录。我还通过SVN检查了存储库是否包含具有特殊属性的文件,但除了“可执行”和“mime-type”之外没有任何其他文件。

现有的存储库最初并未遵循标准布局,但我将其清理干净,以便顶级目录只是“trunk”,“tags”和“branches”。

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

3 个答案:

答案 0 :(得分:18)

在不知道这些空目录的确切位置的情况下,您可以使用git-svn命令行选项或--rmdir配置选项告诉svn.rmdir删除它们。

请参阅git-svn OPTIONS手册页和

  

如果没有留下文件,则从SVN树中删除目录   SVN可以对空目录进行编辑,如果没有文件,则默认情况下不会删除它们。 git无法对空目录进行版本化   启用此标志将使提交到SVN的行为类似于git。


警告来自git-svn不支持的SVN标签(“目录”),如“git svn interrupted, then I lost all the tags, how to fix it?”。 From this thread

  

SVN跟踪目录,git不跟踪,因此空目录无法在git中表示   对文件的这些警告似乎告诉你哪些文件被删除,导致空目录留在原地,在那个特定的svn commit被导入。

-empty_dir+empty_dir之间的区别在于空目录在SVN回购中的显示方式

-empty_dir

删除一堆文件,将目录(分支或标记)留空。

+empty_dir

刚刚导入的SVN修订版中创建了一个空分支或标记,git-svn将不会导入空目录。


请注意can restart the import after that warning

答案 1 :(得分:8)

git的一个原因是它不跟踪目录。这都是关于git中的内容(文件)。所以空目录几乎要留在当地的回购中。摆脱本地仓库中空目录的最佳方法是执行git clean -d。

结帐男人git clean以获取更多信息。

答案 2 :(得分:4)

关于标题中的问题(这是吸引谷歌关注此页面的问题),根据我的发现,使用git-svn 1.7.1或git 1.8.5:警告W: -empty_dir: x/y/z意味着文件或文件夹x / y / z已在SVN变更集中删除。除非您指定了-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不同,这是一个不同的故事。