我正在将我的git日志定制为1行.具体来说,我添加了以下别名:
lg = log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%an%Creset - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)
所以,当我跑步时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)
Run Code Online (Sandbox Code Playgroud)
但是,我想在那里添加SVN修订号,所以它看起来像:
* 41a49ad - r1593 - zain - commit 1 message here (3 hours ago)
Run Code Online (Sandbox Code Playgroud)
正常git log显示SVN版本号,所以我确信这一定是可行的.我该怎么做呢?
Von*_*onC 30
考虑一下命令 git svn
git log:git svn logfind-rev选项(从SHA1密钥检索SVN修订版)(在git 1.6.0中引入)我不确定您是否可以在一个命令行中组合这两个选项.
一个脚本(有点像这个不是你想要的但仍然可以提供一些想法的脚本)可能是有序的.
一个例子:
git svn find-rev $(git log --max-count 1 --pretty=format:%H)
Run Code Online (Sandbox Code Playgroud)
kak*_*kyo 14
跑:
git rev-parse HEAD
Run Code Online (Sandbox Code Playgroud)
它给你git commit hash.
然后使用该提交哈希运行:
git svn find-rev <commit_hash>
Run Code Online (Sandbox Code Playgroud)
这给你svn修订版.
当你说"正常git log显示你的SVN版本号"时,我猜你的意思是你正在处理一个处理的存储库git svn,默认情况下在同步提交结束时添加这样一行:
git-svn-id: svn://path/to/repository@###### <domain>
Run Code Online (Sandbox Code Playgroud)
现在,就git而言,这只是随机文本,所以我怀疑你可以找到一个%访问器来######从那里读取修订版号.
此时,您最好的选择就是git log自己解析plain的输出.这是一个粗略的起点:
git log -z | tr '\n\0' ' \n' | sed 's/\(commit \S*\) .*git-svn-id: svn:[^@]*@\([0-9]*\) .*/\1 r\2/'
Run Code Online (Sandbox Code Playgroud)
小智 8
结束了这样的事情:
git svn log --oneline -1 | cut -d '|' -f1
Run Code Online (Sandbox Code Playgroud)
这给了那个repo的最后一个修订版(你可以调整git svn log参数以显示另一个修订版,但保留--oneline和-1),但是"r9441 "我认为应该很容易剥离的尾随空格(类似的东西).
希望能帮助到你...
| 归档时间: |
|
| 查看次数: |
19688 次 |
| 最近记录: |