我有一个非常大的subversion存储库(超过200,000次提交),我们最近迁移到了git。
多年来,许多人犯了一些小错误,比如添加了iso或msi包,添加了不应该添加的文件夹,等等。我们通过删除文件/文件夹并提交来进行清理。存储库增长了,但这不是问题,因为SVN做了很好的稀疏签出。
现在,在git上,客户端需要提取整个历史记录,而本地克隆现在大约是50 is。是时候来点内务…了
有没有一种方法可以从历史中删除所有文件,这些文件在过去已经被删除了?或者创建一个新的存储库,然后移动所有那些存在于上次提交中的文件?
我使用过git filter-branch命令,这对我很有帮助。但只针对那些我知道路径的文件。我还使用了git log --diff-filter=D --summary来获取所有删除的列表,但是有数千个…
好了,最后,我可以简单地启动一个新的存储库并复制其中的最新文件。我将丢失历史记录,但可以保留原始的大存储库作为归档存储库,以便在需要时查找历史记录。
我真的希望有更好的方法。
发布于 2018-11-23 23:10:04
我发现在迁移到git之后很难做到这一点。但我可以做到这一点。
我这样做了:
svnadmin dump …创建转储文件。
svndumpfilter exclude …排除所有我不再需要的东西。为了获得包含已删除项目的完整存储库列表,我执行了以下操作:
svndumpfilter exclude "*" …最酷的是,svndumpfilter列出了它在结构化排序输出中排除的所有文件。因为我排除了所有内容,所以我得到了一个完整的目录。
我运行了几次svndumpfilter来删除所有不需要的东西。然后重新导入subversion存储库作为新的存储库,然后使用它迁移到git。
https://stackoverflow.com/questions/53430073
复制相似问题