在尝试使用标准布局使用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-svn
OPTIONS手册页和
如果没有留下文件,则从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
不会导入空目录.
请注意,您可以在该警告后重新启动导入.
git的一个原因是它不跟踪目录.这都是关于git中的内容(文件).所以空目录几乎要留在当地的回购中.摆脱本地仓库中空目录的最佳方法是执行git clean -d.
结帐男人git干净更多信息.
根据标题,关于标题中的问题(是什么引起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
有所不同,这是一个不同的故事。