2012-02-09 88 views
1

我正在一個項目中有兩個SVN倉庫。一個用於外部使用,我們與項目的合作伙伴進行交互,另一個用於純粹的內部使用。用git在本地保存代碼到多個SVN倉庫

我有一個文件夾(src)存在於外部存儲庫上。我希望將該代碼保存在內部存儲庫的第二個src文件夾中,以便能夠在內部進行提交,並且在代碼穩定時提交到外部存儲庫。

除此之外,我想用git在本地機器上管理代碼。

爲此,我看了一下git-svn。

任何人都可以解釋管理這個最好的方法嗎?我傾向於爲每個svn repo(localsvn和externalsvn)設置一個分支,並使用local作爲默認值,當我想要提交到它時合併到外部,並讓git在後臺運行。

回答

0

我已經處理了這個問題的當前方式是有兩個單獨的代碼版本。分支系統不適合我。

我有一個遠程倉庫的版本,使用git-svn進行管理,還有一個本地倉庫的版本,也使用git-svn進行管理。當我想從本地移動到遠程或反之時,我只需使用腳本移動代碼,然後合併,最後上傳。

0

這應該是可能的,但你需要玩git svn的更深奧的功能之一:-R(遠程名稱選項)。

創建一個git svn存儲庫使用git svn init作爲正常的本地代碼,然後看看.git/config文件。將會有一個名爲[svn-remote "svn"]的部分。複製整個部分,將其重命名爲[svn-remote "external"],編輯url字段以指向外部存儲庫,然後更新其他字段以爲其指定唯一的名稱。

我期望配置文件的相關部分看起來像這樣大功告成後:

[svn-remote "svn"] 
    url = http://local.svn/repository/root 
    fetch = trunk:refs/remotes/trunk 
    branches = branches/*:refs/remotes/* 
    tags = tags/*:refs/remotes/tags/* 
[svn-remote "external"] 
    url = http://external.svn/repository/root 
    fetch = trunk:refs/remotes/ext-trunk 
    branches = branches/*:refs/remotes/ext-* 
    tags = tags/*:refs/remotes/tags/ext-* 

如果你現在要做git svn操作,它會從本地存儲庫中取出。如果您添加了-Rexternal,您將轉而使用外部存儲庫。要進行初始抓取,您需要同時運行以下兩項:

git svn fetch 
git svn fetch -Rexternal