[英]How do I convert an svn repo to git using reposurgeon?
你能舉一個例子,我如何添加舊svn的路徑並從中創建一個git文件夾,其中包含整個歷史記錄和所有分支/標簽?
我發現這個網站值得一試嗎? 它使用svnpull
,這不是我的系統,我可以使用repopuller
嗎?
我安裝了reposurgeon
apt-get install --no-install-recommends xmlto asciidoc unp
wget http://www.catb.org/~esr/reposurgeon/reposurgeon-3.7.tar.gz
unp reposurgeon-3.7.tar.gz
cd reposurgeon-3.7
make
make install
(我會在沒有建議的情況下安裝,因為這里不需要大約700MB)
看起來這個網站有點過時了。
svnpull現在被repopuller取代。 如果你在同一台服務器上,你也不需要它。
我改編了劇本:
nano /usr/local/sbin/reposurgeon-convert-svn2git
並輸入:
#!/bin/bash
PROJECT=myproject
svnrepo=svn+ssh://rubo77@myserver.de/var/svn-repos/$PROJECT
# or something like svnrepo=https://svn.origo.ethz.ch/$PROJECT
gitrepo=/tmp/$PROJECT-git
cd /tmp
# start over with:
#rm $PROJECT-mirror/ $PROJECT-git/ -Rf
echo
echo pull/copy the repository...
#repopuller $svnrepo
# or copy it if it is on the same server:
cp -av /var/svn-repos/$PROJECT /tmp/$PROJECT-mirror
echo
echo start conversion...
reposurgeon <<EOF
read /tmp/$PROJECT-mirror
prefer git
edit
references lift
rebuild $gitrepo
EOF
echo ...finished
# now filter out all falsly generated .gitignore files:
cd $gitrepo/
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch $(find . -name .gitignore|xargs )" \
--prune-empty --tag-name-filter cat -- --all
我過濾掉.gitignore文件,就像github用filter-branch 記錄的那樣 ,否則,他們將在所有標簽中創建提交(參見下面的注釋)。 完成后,您必須創建一個新的.gitignore文件。
這可能需要一段時間,因此您應該在tmux
或screen
內啟動它
tmux
bash /usr/local/sbin/reposurgeon-convert-svn2git
請注意,所有標簽都符合git。
我收到了錯誤
reposurgeon% reposurgeon: exporting...fatal: Branch name doesn't conform to GIT standards: refs/tags/version 3.6.2
所以我清理了svn存儲庫並刪除了這個分支,所以所有的標簽和分支都符合:
svn rm "$svnrepo/tags/version 3.6.2"
並使用此腳本從所有歷史記錄中刪除它: 如何完全刪除包含空格的SVN標記?
然后我開始使用腳本:
rm $PROJECT-mirror/ $PROJECT-git/ -Rf
bash /usr/local/sbin/reposurgeon-convert-svn2git
注意:
在沒有刪除.gitignore
文件的情況下, 除了一件事之外 ,它在git中與SVN中的內容完全相同 :所有標記在日志中按照標記的確切日期排序,而不是它們開始廣告的提交。 似乎在轉換過程中將.gitignore
文件添加到每個分支和標記,但是.gitignore文件導致在這些標記內部提交標記創建的時間戳。
新標簽沒問題,它們出現在它們所屬的修訂版中。 (請參閱將SVN存儲庫轉換為帶有reposurgeon的git而不創建.gitignore文件? )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.