簡體   English   中英

鏡像git到svn

[英]Mirror git to svn

我有一個開源項目的主要git存儲庫

我想將所有提交鏡像到svn存儲庫(在code.google.com上),是否可能?

是的,這是可能的。 使用Git的SVN功能導入存儲庫。 然后你可以從那里推回去。 你會發現,在大多數情況下,git可以有效地顯示SVN歷史,比SVN更能顯示git歷史。

如果你的git歷史是線性的,你可以嘗試使用git-svn。 我會嘗試使用“git svn clone”將現有的(空的)SVN存儲庫導入git,然后將現有的git歷史記錄重新綁定到它和“git svn dcommit”它。

如果您的git歷史記錄不是線性的(包含分支和合並),您將無法在SVN中正確表示它。 在這種情況下,我強烈建議您使用基於git的托管解決方案(例如github.com)。

我在目前的工作中遇到過這種情況。 我們的主要Git存儲庫具有非線性歷史記錄,因此選定的解決方案應該處理這 到目前為止似乎有效的解決方案基於gitsvn代理存儲庫。 我在主Git存儲庫中安裝了一個post-receive hook,它的核心是這樣的:

export GIT_DIR=$GITSVN_PROXY_DIR/.git
git pull -Xtheirs file://$GIT_PRIMARY_DIR master
git svn dcommit

dcommit日志歷史記錄被重寫后。 在主要Git存儲庫的下一個git pull中,你通常會遇到混亂沖突。 這就是-Xtheirs選項的用武之地。這是一種有利於遠程版本更改的合並策略。 在這種情況下,它允許我們自動解決沖突! :)

唯一的缺點:漂亮的SVN提交消息不是免費提供的。 需要一些git hacking來使它們包含來自主要Git提交消息的所有信息。

我懷疑code.google.com是否可行,但您可以設置自己的Subversion存儲庫並將SubGit安裝到其中。

安裝完成后,您就會有一對鏈接的Subversion和Git存儲庫。 任何存儲庫中的每個修改都會觸發一個SubGit掛鈎,自動轉換所有必要的更改。

有關更多信息,請參閱文檔git-svn比較

SubGit是一種商業產品,但對於開源項目,您可以獲得免費許可。

你有沒有簽出http://git-scm.com/docs/git-svn我不知道這是否能解決你的問題,但這是一種同步git和svn的方法。

-CJ

暫無
暫無

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

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