我正在将我的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修订号,所以我确信这一定是可行的。我该怎么做呢?
答案 0 :(得分:29)
考虑命令git svn
我不确定您是否可以在一个命令行中将这两个选项组合在一起 一个脚本(有点像this one并不是你想要的但仍然可以提供一些想法)可能是有序的。
这方面的一个例子:
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}})我认为应该很容易剥离。
希望它有所帮助...