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

Bar*_*Rho 36 git git-svn

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

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

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

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

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

Von*_*onC 19

如果不知道这些空目录的确切位置,您可以git-svn使用--rmdir命令行选项或svn.rmdir配置选项来删除它们.

请参见git-svnOPTIONS手册页和

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


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

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

-empty_dir和之间的区别+empty_dir是关于空目录在SVN仓库中的显示方式:

-empty_dir

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

+empty_dir

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


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


JNo*_*ice 8

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

结帐男人git干净更多信息.


Ste*_*ein 5

根据标题,关于标题中的问题(是什么引起google重视此页面),根据我的发现,使用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有所不同,这是一个不同的故事。