如何让git-svn优雅地处理空目录?

The*_*ter 31 git directory git-svn

我很高兴使用git-svn,虽然我注意到git在将空目录作为SVN时有不同的方法.我需要一种方法来解决以下特定情况:

我在我的项目的SVN存储库中有几个属于那里的空目录,不应该被触及.由于一些重构,我不得不删除另一个曾经有文件的目录.git svn dcommit删除文件,但保留目录.令我感到震惊的是,git对空目录的无知导致我的SVN仓库不一致.

我想从我的SVN存储库中删除该特定目录.git-svn能做到吗?如果没有,我该怎么做呢?(并且 - 最终 - 如何在同一变更集中同时提交其他文件时,我该怎么做?)

kan*_*kan 35

使用rmdir参数或配置参数:

--rmdir

仅与dcommit,set-tree和commit-diff命令一起使用.

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

config key:svn.rmdir

  • 如果打开参数,则不会删除现有的空目录.但是下次从目录中删除最后一个文件时,`dcommit`也会在一次提交中从svn中删除该目录.如果你想在已经提交的svn中更改带有空目录的东西,你应该直接使用SVN,`rmdir`只影响`dcommit`. (16认同)
  • @SamHendley"config key:svn.rmdir" - 所以,只需`git config --global svn.rmdir true`. (6认同)
  • _Enabling这个标志会使对SVN的提交行为像git._这正是我想要的; 我希望SVN与树中的空目录是否有区别.我只想删除一个空目录(很多现有的),特别是在SVN端,而不是全部. (3认同)

man*_*lds 13

您必须在SVN端删除它:

svn delete -m "deleting empty dir" http://path/to/deleted/dir
Run Code Online (Sandbox Code Playgroud)

  • +1,虽然我对此并不满意,原因有两个:1.我需要在每次想做这样的事情时专门输入repo路径,并且2.需要单独提交才能完成.这是唯一的选择吗? (2认同)