簡體   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