2012-01-11 80 views
1

在虛擬機和中央SVN存儲庫之間管理代碼的最佳方式是什麼?在筆記本電腦和臺式機上的ubuntu虛擬機中編碼

更具體地說,我有一個Linux VM環境的臺式機,以及一臺帶有VM環境的筆記本電腦。兩者都在VMWare工作站下運行。我總是在臺式機和筆記本電腦之間來回切換,但無法使桌面和筆記本電腦保持同步。

最明顯 - 但可能效率最低的選擇是在切換機器之前完成所有操作。但是,這會導致提交部分完成的代碼,這樣我就可以在不同的機器上工作。

我曾考慮過使用像rsync這樣的東西來保持我的兩個開發環境同步。我認爲這會更好,因爲那時我仍然可以在需要時對svn進行更改,同時保持桌面和筆記本電腦的同步。

所以,雖然我很想走rsync路線,但我仍然擔心我必須主動同步。就我而言,我想象的是我正在桌面上工作的場景,然後離開去咖啡店與我的筆記本電腦一起工作,只是意識到在離開家之前我沒有同步( DOH!)。

我不知道是否真的有辦法解決這個問題。也許我可以rsync一切到一直在線的中央服務器?並設置cron作業來運行每隔幾分鐘或任何與我的各種開發環境同步?

有更好的選擇嗎?

回答

0

您可以考慮使用分佈式版本控制。如果你沒有能力改變中央服務器,那麼還有像git-svn這樣的包裝器,它允許你在與Subversion服務器交互的同時在你的末端使用git。

在DVCS設置工作流程:

  1. 使機器#1的變化,本地提交,重複。
  2. 在切換時,在本地提交。
  3. 從機器#1將機器#1更改爲機器#2
  4. 繼續在機器#2上工作。
  5. 在切換時,在本地提交。從機#2
  6. 拉或推變更機器#1
  7. 重複

當它的時候實際發送到服務器中,你在哪個電腦應該有最新的代碼,你可以推直到主服務器(SVN或其他)。

這確實會讓您提交中間更改 - 但我發現使用DVCS而不是負擔的好處更多。

此替代方案可能是將整個開發目錄保存在Dropbox文件夾或一些等效文件夾中。那麼你不必自己處理rsync或任何東西,但是你對同步的控制很少。

+0

這是一個合理的方法。但是,我結束了使用rsync的路線。首先,在對此提出一些建議後,我嘗試與inotify協調一致。然而,這是一個挑戰,因爲統一映射了一切,包括.svn文件。因爲元數據文件和其他所有的東西都被複制,所以我不斷地以破壞性的svn鏈接結束。我想,如果我會花更多時間在上面,我可能已經開始工作了,但它看起來仍然有點麻煩,最後我決定把它拋棄。 – dustin999 2012-02-01 03:09:21

+0

因此,我去了rsync路線。這個解決方案比我最初想象的要少一點優雅,但我覺得我對於正在發生的事情有更多的控制權,並且不太擔心由於控制而出現的可怕錯誤。 – dustin999 2012-02-01 03:10:22

0

syncd可能是你正在尋找的:https://github.com/drunomics/syncd。它使用inotify和rsync來偵聽文件系統更改rsync已更改的文件到遠程服務器。

雖然這是一種單向同步,所以當您停止在一臺機器上工作並在另一臺機器上啓動時,您將不得不停止它。你還需要在兩臺機器上運行ssh服務器。

相關問題