我有一个特定的问题,我没有在这里或其他任何地方找到解决方案。我有一个Subversion存储库,我正在使用git-svn来访问它并对其进行处理。
前一段时间,Subversion存储库中有一些空目录(空,只有子文件夹)。 Git没跟踪那些。然后将它们从Subversion存储库中删除。但即使在运行此命令后我仍然拥有它们:
git svn rebase
当我手动删除它们时,它们会在下一个命令中重新创建:
git svn rebase
我怎样摆脱它们?
我使用纯Subversion进行了检查,但它们不在存储库中。
答案 0 :(得分:12)
我想你会在this blog post找到答案。
[...]
如果没有文件,则从SVN树中删除目录 背后。 SVN可以对空目录进行版本控制,不会删除它们 默认情况下,如果没有文件。 git不能版本 空目录。启用此标志将使提交SVN行为 像git。
config key: svn.rmdir
要修复问题的根源,请设置全局git配置:
git config --global svn.rmdir true
[...]
答案 1 :(得分:2)
这有点粗糙,但我发现以下内容解决了我的问题:
rm .git/svn/refs/remotes/trunk/unhandled.log
git clean -df
任何后续
git svn rebase
不会重新创建任何内容。
由于我不知道如何在不重新克隆存储库的情况下重新生成此文件,我建议先备份它。它是一个文本文件,所以我想您也可以编辑其内容以删除最终创建的条目
答案 2 :(得分:2)
告诉git svn它不应该尝试重新创建空目录:
git config svn-remote.svn automkdirs false
这是手册页的相关部分:
SVN-远程<名称> .automkdirs
通常,“git svn clone”和“git svn rebase”命令会尝试重新创建Subversion存储库中的空目录。如果此选项设置为“false”,则只有在显式运行“git svn mkdirs”命令时才会创建空目录。如果未设置,git svn假定此选项为“true”。
请注意,很容易将此主题与提交/不提交空目录的主题混淆为svn(这是svn.rmdir
的用途)。
答案 3 :(得分:1)
通过https://spin.atomicobject.com/2014/08/17/git-svn-empty-directories/回答:
修改您的~/.gitconfig
,将其添加为默认行为。
[svn]
# push empty directory removals back to svn as directory deletes
rmdir = true
这将使删除目录成为默认目录。