簡體   English   中英

內置命令可以檢出特定的Subversion版本,而該版本不使用Git鏡像中的'rNNNNN'格式?

[英]Built-in command to checkout a specific Subversion revision which doesn't use the 'rNNNNN' format from a Git mirror?

我是從Subversion存儲庫的本地Git鏡像進行編譯的,我需要從該鏡像的Subversion版本號中檢出特定的提交。

git log顯示如下內容:通過找到git-svn-id: xxxx xxxx@revision-number行,應該可以找到正確的引用並將其檢出。 但是有很多修訂,如果我想回到過去,那一定會很尷尬。 是否有內置的軟件可以完成此任務?

commit xxxx-yyyy-fb12992fabd6a1165697ded73851d26993
Author: mattias <mattias@4005530d-fff6-0310-9dd1-cebe43e6787f>
Date:   Fri Mar 6 16:25:06 2015 +0000

    fpcunit: guitestrunner: scroll to first error after run, patch from Graeme, issue 27613

    git-svn-id: http://svn.freepascal.org/svn/lazarus/trunk@48152 4005530d-fff6-0310-9dd1-cebe43e6787f

更新:與可能的重復項有關。 git svn find-revCheckout中引用了與舊SVN信息庫中的某個修訂相對應的git commit? 適用於使用修訂號為rN樣式的存儲庫,並非適用於所有SVN存儲庫,這一點也適用。 使用它會導致錯誤消息與以下類似。

fatal: Not a valid object name 95059
cat-file commit 95059: command returned error: 128

如果您的本地存儲庫由git svn管理,則可以使用git svn find-rev

   find-rev
       When given an SVN revision number of the form rN, returns the
       corresponding Git commit hash (this can optionally be followed by a
       tree-ish to specify which branch should be searched). When given a
       tree-ish, returns the corresponding SVN revision number.

例如:

git svn find-rev r48152

我希望您在本地Git鏡像上仍然有一個svn-remote分支。 有了它,應該非常簡單。 嘗試這個。

git svn fetch <svn-remote>
git checkout remotes/<Remote Name>
git svn log --show-commit --oneline

這里參考我的答案。

遵循我如何在git log中顯示SVN版本號的答案 ,我的解決方案是使用grep作為修訂版ID,以cut Git commit哈希。

git log -z | tr '\n\0' ' \n' | sed 's/\(commit \S*\) .*git-svn-id: \  
svn:[^@]*@\([0-9]*\) .*/\1 r\2/' | grep trunk@NNNNN | cut -d " " -f 2

如果NNNNN字符串出現在另一個不是提交ID的提交消息中,則trunk將匹配NNNNN字符串的機會降到最低。 可以通過將輸出通過另一個cut -b 1-8來縮短哈希值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM