2011-12-17 58 views
1

任何人都可以告訴我,如果有可能有一個SVN回購作爲遠程(輔助)回購推動提交?我希望Git回購是我的原始回購。將SVN函數作爲第二個(遠程)回購來推送到Git?

我更喜歡Git,並有我自己的私人Git託管和我工作的公司有SVN回購。我希望我所做的一切都會先到我的Git倉庫,直到我準備將所有更改推送到客戶端的SVN。讓我們考慮一下,我只想從SVN的主幹上拉/拉,而不需要擔心其他分支/標籤。

我該如何解決這個問題?我需要知道:

  1. 如何將SVN回購作爲遠程添加到我的Git本地回購?
  2. 如何從遠程SVN回購拉/推變化?

再一次,我想強調一點,我想要我自己的私人Git(託管)回購作爲起源。

+0

只是讓我們知道你是從開始,你看着[混帳SVN(http://schacon.github.com/git/git-svn.html)? – 2011-12-17 23:07:50

+0

是的。我用它來讓SVN成爲我的主/來源倉庫來推送/從中提取。我只是想知道是否可以將SVN作爲輔助/遠程回購。 – 2011-12-17 23:08:55

+0

@MichalM你不可能有它作爲你的「起源」。使用從svn克隆的repo運行'git push'不會產生任何效果(除非你已經定義了你自己的起源,在這種情況下,你剛剛回答了你自己的問題) – 2011-12-17 23:32:42

回答

2

是的,可以有一個「二級」svn存儲庫。我在幾個星期前有同樣的問題,我用幾個教程:

所以基本上,我做了我的本地主分支上的工作,通常推到原點(git存儲庫),有時推送到svn服務器(公司存儲庫)。

在你.git/config,你應該有這樣的事情:

[remote "origin"] 
    url = your-url-to-the-git-repository 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[svn-remote "svn"] 
    url = your-url-to-the-svn-repository 
    fetch = :refs/remotes/git-svn 

我也有一個當地的「SVN」分支,但可能並不需要。爲了把我的工作,我有:

git push origin   # push to remote git repo 
git svn dcommit   # push to remote svn repo 

如果你不知道,當你推,使用--dry-run選項:

git svn dcommit --dry-run  # check that you are pushing to the right branch 

你可以在在平時的工作流程的詳細信息tutorials

+0

非常感謝。這有很大的幫助,特別是第二環節。我遇到了一個問題,但。有趣的是,問題不在於git-svn!問題出現在原始git回購中。它變得非常非常混亂。在我對svn的更改提交之後,在本地git倉庫中修改了哈希值,並且我無法再將更改推送到我的私人倉庫回購倉庫,因爲它需要先抽取。 Pull導致導致[the mess]的合併(無衝突)(http://d.pr/wrHa)。有沒有機會避免這種情況?我想我明白這裏發生了什麼,這可能是不可避免的,但必須提出這個問題。 – 2011-12-18 00:29:48

+0

是的,我也發生了一些奇怪的事情,這就是爲什麼我決定創建一個本地「svn」分支。在那個分支中,我從本地主控和遠程svn分支中進行了重新分配/重新分配。一個可能的工作流程在這裏解釋:http://stackoverflow.com/questions/5241898/is-a-bidrectional-git-svn-sync-both-writable-possible – BenC 2011-12-18 00:44:10

0

您可以讓Google代碼充當Git項目的穩定只讀Subversion鏡像 。在此模型中,補丁首先應用於中央Git存儲庫中的 並稍後導出到Google代碼。

而不是僅僅提供一個鏈接到您的存儲庫,爲什麼不用只有少數幾個命令來擴展您的受衆?打開你的Git託管的 項目給所有Subversion用戶,他們的補丁可以通過 Git集成。

當然,這也可以用於非谷歌代碼SVN回購。

https://code.google.com/p/support/wiki/ImportingFromGit