繁体   English   中英

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

[英]How do I show the SVN revision number in git log?

我正在将我的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 svn

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

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


sdaau 在评论中添加:

一个例子:

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

跑:

git rev-parse HEAD

它给你git commit hash。

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

git svn find-rev <commit_hash>

这给你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 log --oneline -1 | cut -d '|' -f1

这给了repo的最后一次修改(你可以调整git svn log参数来显示另一个修订版,但是保持--oneline-1 ),但是有一个尾随空格(类似"r9441 " ),我觉得应该很容易剥离。

希望能帮助到你...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM