我正在将我的git日志自定义为全部包含1行。具体来说,我添加了以下别名:
lg = log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%an%Creset - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
因此,当我运行git lg
时,会看到以下内容:
* 41a49ad - zain - commit 1 message here (3 hours ago)
* 6087812 - zain - commit 2 message here (5 hours ago)
* 74842dd - zain - commit 3 message here (6 hours ago)
但是,我也想在其中添加SVN版本号,因此看起来像:
* 41a49ad - r1593 - zain - commit 1 message here (3 hours ago)
普通git log
显示SVN修订版号,因此我确定这是可能的。我该怎么做呢?
[当您说“普通的git log
显示您的SVN版本号”时,我想您是说您正在处理的是由git svn
处理的存储库,默认情况下,该存储库在该行的末尾添加一行同步提交:
git-svn-id: svn://path/to/repository@###### <domain>
现在,就git而言,这只是随机文本,所以我怀疑您是否可以找到%
访问器来从此处读取######
修订版号。
此时,最好的选择是自己解析纯文本git log
的输出。这是一个粗略的起点:
git log -z | tr '\n\0' ' \n' | sed 's/\(commit \S*\) .*git-svn-id: svn:[^@]*@\([0-9]*\) .*/\1 r\2/'
考虑命令git svn
git svn
类似的日志功能:git log
git log
选项(用于从SHA1密钥检索SVN版本)(在git svn log
中引入)我不确定您是否可以在一个命令行中结合使用这两个选项。一个脚本(有点像find-rev
,虽然不完全是您想要的,但仍然可以提供一些想法)。
[find-rev
加上git 1.6.0:
此示例:
this one
[请注意,
git svn find-rev $(git log --max-count 1 --pretty=format:%H)
在当前分支中搜索,因此如果您在Adversus中并且in the comments发生在分支中,则find-rev
将找不到它。您可以给master
(之前)或rxyz
(之后)选项进行更广泛的搜索,请参阅find-rev
。
执行命令
最终得到这样的东西: