[英]When converting from SVN to Git, how do I put the revision number in the commit message?
我們將把我們的存儲庫從Subversion轉換為Git,但是希望能夠保留SVN修訂版號,因為bug跟蹤器中的注釋會定期引用它。
我們將使用git svn clone
和John 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.