2011-10-06 45 views
3

在工作中我們使用Subversion,但因爲沒人理解如何分支我們的「分支」,涉及複製整個代碼庫並將其作爲單獨的存儲庫處理 - 這意味着我們對「分支」分支所做的任何更改都需要被複制/粘貼到主開發(「trunk」)分支,以便它們保持同步,並且我們不能使用任何內置的合併工具(我們手動使用WinMerge或類似工具來查找已更改的行)。沒有人想花時間學習如何使用SVN的分支功能,而是鼓勵使用這種策略作爲替代方案。遠程使用Mercurial和SVN嗎?

由於我無法說服其他人看到真正的分支,我正在考慮爲自己做些事情,以使合併更輕鬆。我曾經想過看一下Mercurial一段時間(我之前在我的Mac上使用Git; Windows7在工作),作爲批發的SVN替代品,如果我可以買入的話。

我的問題是這樣的:首先,如果我必須將更改推送到兩個SVN存儲庫,難道在本地機器上使用Mercurial會很困難嗎?在本地我可以使用分支來輕鬆地合併代碼,保持SVN回購不同將簡單地將分支推送到補丁代碼,並將開發分支(在合併之後)分支到SVN中的開發分支, ?

二,在我介紹Mercurial之前有沒有更好的方法來做到這一點?我試圖告訴我的同事使用SVN的分支,但我得到的答案是「現在可以工作」,因爲沒有人想花時間學習SVN分支,並且100%誠實,我從未使用過SVN分支我自己,所以我不知道它是多麼容易/難以使用,並且不想冒險嘗試分支和搞亂某些東西。

+0

之間的合併我認爲複製(雖然「便宜」複製)是做SVN分支反正的標準方式。請注意,我不是一個大的SVN用戶,但這就是我的工作場所的一些項目的分支,以及svn書籍如何定義它。 – icabod

+0

也許,我們並沒有使用SVN的分支,我的意思是我們實際上正在複製文件(基本上是通過SVN Export來獲取所有文件,然後重命名文件夾,然後將其重新命名爲SVN並將其視爲完全不同的存儲庫) 。 –

+0

@WayneM你是否採取相同或不同的svn回購? – Rudi

回答

2

首先,說實話,如果你得到了關於SVN分支最基本的東西的這種迴應,你真的認爲你可以說服他們切換他們的整個知識庫系統嗎?

當然,「不想冒險嘗試分支和搞亂某些東西」是SVN的典型特徵,而Mercurial做得更好;因爲你總是在本地存儲庫工作,試驗和犯錯誤很便宜,如果你搞砸了,你可以製作一個新的克隆。除了必須保存大量二進制數據的存儲庫(例如藝術存儲庫)之外,我肯定會推薦Mercurial over SVN。

現在對於你的問題,

原則上,你可以使用相同的工作目錄的Mercurial庫和SVN倉庫。您可能希望將.hg和.svn添加到SVN和Mercurial的忽略過濾器,當然,您提交給Mercurial的更改不會自動提交給SVN。但是,將Mercurial用作本地開發的暫存器可能很方便。如果你有兩個SVN簽出,你可以在兩個Mercurial克隆之間進行數據交換,方法是將數據從一個拖到另一個。

說實話,爲了迴應你的第二個問題,我認爲'更好的方法'就是學習SVN的分支和合並機制。在SVN上運行Mercurial可能非常麻煩,而且可能比它的價值更麻煩。如果你想嘗試SVN合併,你可以做一個測試SVN倉庫來練習分支和合並。

如果你的同事決定使用SVN,並且不會對Mercurial感到困擾,那麼你可能只需要忍受它。也許有一些安慰,事實上有很多類似的情況,我個人喜歡儘早停止使用SVN,但仍然在我以前和現在的公司中,我不幸陷入了困境。雖然在我現在的公司,他們可以在將來某個時候改變它,我們已經在使用git來進行外部項目。

我應該提到的還有一件事:有一些像hgsubversion擴展這樣的工具,它允許你在SVN上使用Mercurial,將所有提交轉換爲Mercurial提交。但我不會推薦,特別是如果你是新手Mercurial用戶,SVN和Mercurial之間根本的不匹配意味着如果你想推回你的修改,分支並不是真的可行,你必須隨時重新設置你可以很容易地結束數據丟失。

+0

合併變更集**將被**推送到SVN,沒有問題。在分支中乘以頭將是頭痛,是的,但工作回購將始終只有代碼提交和合並提交 –

1

注:

svn merge URL1 URL2 

甚至可以用於無關網址(不同回購)。合併在一個回購只是一個約定和工作流程

如果我不得不將更改推送到兩個SVN存儲庫,難道我的本地機器上使用Mercurial?

沒有,始終是透明的

  • Repo1爲MainSVN拉MainSVN +拉Repo2 +合併頭+推
  • MainSVN Repo2爲DevSVN(拉DevSVN +推DevSVN)

在我介紹Mercurial之前,有沒有更好的方法來做到這一點?

見我開始注意 - 你至少可以嘗試本地SVN回購