簡體   English   中英

從SVN轉換為Git時,如何將修訂號放在提交消息中?

[英]When converting from SVN to Git, how do I put the revision number in the commit message?

我們將把我們的存儲庫從Subversion轉換為Git,但是希望能夠保留SVN修訂版號,因為bug跟蹤器中的注釋會定期引用它。

我們將使用git svn cloneJohn Albin博客中描述的過程。

有沒有辦法在提交消息中包含修訂號? 我寧願在克隆期間這樣做,但后處理步驟是可以接受的。

是的,我知道git svn find-rev ,但這需要SVN存儲庫並且用戶可以通過網絡訪問它。

git svn默認執行此操作:它通常在每個提交消息中包含一行,該行具有該提交的SVN修訂號(以及一些其他數據)。

但是,您發布的鏈接使用--no-metadata克隆,告訴git svn不要附加git-svn-id行。

目前尚不清楚為什么要在提交消息中使用svn修訂號。 正如@John Flatness所示,git-svn在提交消息中包含svn修訂號。

我們發現為每個修訂版創建標記更有用。 這似乎更好地平行了svn修訂號的有用性。 使用git svn find-rev的腳本快速添加了10000個標簽。 現在我們可以訪問任何歷史svn修訂號。


這里的每個請求是腳本(這里添加因為注釋似乎不能很好地處理代碼)

#!/bin/bash

declare -i rev

for ((rev = 1; rev < 100; ++rev))
do
    hash=$(git svn find-rev "r$rev")
    if [ -z $hash ]; then
        break
    fi
    # TODO Pad with 0's for small values of rev
    tag="svn_r$rev"
    git tag -a -m "$tag" $tag $hash
done

這只是前100次修訂。 我們前1000個轉速然后是100步。我們最后2000個左右的提交都有單獨的標簽。

這個腳本對於服用svn的部分分支的人來說效果更好。 因為沒有修改返回時,中斷會丟失。 試試這個吧。 只需要將每個最大修訂版號都設為50000。

declare -i rev

for rev in {1..50000}
do
    echo $rev
    hash=$(git svn find-rev "r$rev")
    tag="svn_r$rev"
    if [ -z $hash ] 
    then
        echo no tag
    else
        echo $hash
        echo $tag
        git tag -a -m "$tag" $tag $hash
    fi
done

echo Thats it !

暫無
暫無

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

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