You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git SVN如何配置以支持Svn自动属性($Date$等)的替换?

Git SVN 实现SVN关键字替换的配置方案

SVN里的$Rev$、$Date$、$Author$这类关键字替换,是依赖SVN的自动属性和关键字展开机制实现的。但Git本身默认不支持这类SVN关键字,git-svn也不会自动继承SVN端的属性配置,所以拉取后变量没被替换是机制差异,不是缺陷。要实现和SVN一致的效果,可按以下方式配置:

方法一:利用git-svn内置关键字支持

  1. 编辑本地Git仓库的.git/config文件(或全局~/.gitconfig),找到[svn-remote "svn"]段,添加关键字映射:
[svn-remote "svn"]
    fetch = trunk:refs/remotes/svn/trunk
    keywords = Author Date Rev

如果没有这个段,手动添加上述内容即可(fetch路径根据你的SVN仓库结构调整)。

  1. 在仓库根目录创建或编辑.gitattributes文件,添加SQL文件的规则:
*.sql ident

ident属性会让Git识别并替换关键字,Git的$Id$会包含版本信息,和SVN的$Rev$等格式略有不同,但能实现类似的版本信息注入效果。

方法二:自定义过滤器实现精准匹配

如果需要完全复刻SVN的$Rev$、$Date$、$Author$格式,可自定义Git过滤器:

  1. 编辑.git/config,添加过滤器配置:
[filter "svn-keywords"]
    clean = sed -e 's/\\$Rev\\$/$Rev$/' -e 's/\\$Date\\$/$Date$/' -e 's/\\$Author\\$/$Author$/'
    smudge = sed -e "s/\\$Rev\\$/$Rev: $(git svn info | grep 'Revision' | awk '{print $2}')$/" -e "s/\\$Date\\$/$Date: $(git svn info | grep 'Last Changed Date' | awk '{print $4, $5, $6}')$/" -e "s/\\$Author\\$/$Author: $(git svn info | grep 'Last Changed Author' | awk '{print $4}')$/"
  1. 编辑.gitattributes,指定SQL文件使用该过滤器:
*.sql filter=svn-keywords

注意:每次用git-svn拉取新版本后,需要执行git checkout HEAD -- .触发smudge操作,才能更新文件里的关键字内容。

内容的提问来源于stack exchange,提问作者Joseph K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:12:47