Git SVN Clone迁移时移除文件关键字扩展的问题咨询
SVN迁移Git后关键字被移除,如何保留?
我在将SVN仓库迁移到Git时,使用带历史记录的克隆命令把仓库拉到本地,结果所有文件的当前版本和历史版本里的关键字数据都被移除了。
SVN中的原始内容:
-- $Date: 2020-02-27 13:54:28 -0800 (Thu, 27 Feb 2020) $ -- $Rev: 65875 $
克隆到Git后内容变成:
-- $Date$ -- $Rev$
我使用的克隆命令是:
git svn clone "MY SVN URL" --prefix=svn/ --no-minimize-url --authors-file "authors-transform.txt"
请问这种关键字移除的情况是正常现象,还是我的操作存在问题?是否有办法在保留历史记录的同时保留这些关键字?
解答
这种情况是正常现象,因为Git本身不支持SVN的关键字替换功能,git svn默认在克隆时不会保留SVN已经展开的关键字值,只会留下占位符(比如$Date$)。
要在迁移时保留这些已展开的关键字,你需要调整git svn的配置:
- 方法一:提前全局配置需要保留的关键字
git config --global svn.keywords "Date Rev" - 方法二:在克隆命令中直接指定配置
git svn clone "MY SVN URL" --prefix=svn/ --no-minimize-url --authors-file "authors-transform.txt" --config svn.keywords="Date Rev"
这个配置会让git svn在导入SVN版本时,将已展开的关键字值保留在文件内容里,而不是还原成占位符。
需要注意:Git没有SVN那样的自动关键字更新机制,迁移完成后,后续的Git提交不会自动更新这些关键字的值,它们会停留在SVN迁移时的最后展开状态。如果需要类似SVN的自动更新功能,得借助Git钩子或者第三方工具实现,但逻辑和SVN原生机制有差异。
内容的提问来源于stack exchange,提问作者bbeck
相关产品推荐
相关产品推荐

