我想将项目从SVN迁移到Git并保留历史记录。
但是因为SVN存储库中有一些配置文件包含生产密码和其他敏感数据,所以我想从迁移的历史记录中排除这几个文件。
我将如何做到这一点?
答案 0 :(得分:2)
最简单的解决方案是在本地计算机上使用migrate your SVN repository to Git ,然后在之前将remove the files that contain the sensitive data 推送到远程存储库。
例如:
# Migrate the SVN project into a local repo
git svn clone svn://server/svnroot \
--authors-file=authors.txt \
--no-metadata \
-s your_project
cd your_project
# Remove the 'passwd.txt' file from the history of the local repo
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch passwd.txt' \
--prune-empty --tag-name-filter cat -- --all
只要您不将本地Git存储库推送到远程位置,就可以使用git filter-branch
安全地从整个历史记录中删除任何文件。删除文件后,可以随时随地发布回购邮件。
git filter-branch
的替代解决方案是使用名为BFG Repo-Cleaner的工具,该工具使用其自己的({3}} - 实现从Git存储库的历史记录中删除文件。对于faster,可能值得考虑,因为git filter-branch
的性能至少线性到要处理的提交数。
答案 1 :(得分:-2)
基本上你有两个策略
先清理SVN,然后迁移到GIT
根据SVN:
“(...)您唯一的办法是svnadmin转储您的存储库,然后通过svndumpfilter(不包括坏路径)将转储文件传输到svnadmin加载命令(...)” < / p>
http://subversion.apache.org/faq.html#removal
首先迁移,然后在GIT中清理
Github有一篇关于这个的好文章