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.rmdir
configuration选项来告诉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
,这是一个不同的故事。