如何在git log中显示SVN版本号?

问题描述 投票:31回答:4

我正在将我的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 git-svn
4个回答
9
投票

[当您说“普通的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/'

30
投票

考虑命令git svn

  • 它具有与git svn类似的日志功能:git log
  • 它具有git log选项(用于从SHA1密钥检索SVN版本)(在git svn log中引入)

我不确定您是否可以在一个命令行中结合使用这两个选项。一个脚本(有点像find-rev,虽然不完全是您想要的,但仍然可以提供一些想法)。


[find-rev加上git 1.6.0

此示例:

this one

[sdaau加上in the comments

[请注意,git svn find-rev $(git log --max-count 1 --pretty=format:%H) 在当前分支中搜索,因此如果您在Adversus中并且in the comments发生在分支中,则find-rev将找不到它。您可以给master(之前)或rxyz(之后)选项进行更广泛的搜索,请参阅find-rev


14
投票

执行命令


8
投票

最终得到这样的东西:

© www.soinside.com 2019 - 2024. All rights reserved.