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

时间:2010-05-20 01:31:11

标签: git git-svn

我正在将我的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修订号,所以我确信这一定是可行的。我该怎么做呢?

4 个答案:

答案 0 :(得分:29)

考虑命令git svn

  • 它具有与git loggit svn log
  • 类似的日志功能
  • 它具有find-rev选项(从SHA1密钥检索SVN修订版)(在git 1.6.0中引入)

我不确定您是否可以在一个命令行中将这两个选项组合在一起 一个脚本(有点像this one并不是你想要的但仍然可以提供一些想法)可能是有序的。


sdaau添加in the comments

  

这方面的一个例子:

git svn find-rev $(git log --max-count 1 --pretty=format:%H)

答案 1 :(得分:14)

执行命令

git rev-parse HEAD

给你git commit hash。

然后使用该提交哈希运行:

git svn find-rev <commit_hash>

这给你svn修订。

答案 2 :(得分: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/'

答案 3 :(得分:8)

结束了这样的事情:

git svn log --oneline -1 | cut -d '|' -f1

这提供了该回购的最后修订版(您可以调整git svn log参数以显示其他修订版,但保留--oneline-1),但带有尾随空格(类似{ {1}})我认为应该很容易剥离。

希望它有所帮助...