2009-11-03 166 views
1

我們的設置如下:版本控制;選擇,選擇,選擇!

我們有一個運行Ubuntu的本地開發服務器,其中有一個設置用來鏡像我們的在線主機。 每個開發人員都在Windows機器上工作,並從本地開發服務器訪問文件。

有問題的項目有許多內置的PHP網站。看到there are no good reasons not to use version control,我們打算獲得SVN,Git,Mercurial或其他服務器上運行的其他東西。

問題是,我們該如何做,但是從Windows機器提交更改,以及如何檢查站點(項目)或整個站點的完成區域以上傳到活(遠程)服務器?

+2

確實,有些VCS可以讓您執行檢出和上傳部分。但是VCS是一個VCS,並且將永遠是。部署系統是不同的野獸。這是一件好事。 – innaM 2009-11-03 14:08:47

+1

Tortoise SVN是在Windows上使用修訂控制的好方法。 – 2009-11-03 14:28:59

+2

這裏的答案是有幫助的,但有幾十個關於SO的問題基本上提出了同樣的問題。如果你最終想要更多的建議,你應該瀏覽它們。搜索'dvcs'標籤以及「比較」。 – quark 2009-11-13 20:47:25

回答

10

爲什麼要使用SVN:

  • 成熟的代碼庫在Windows上(如果你的團隊喜歡他們)
  • 成熟的GUI工具:TortoiseSVN的
  • 較淺的學習曲線(尤其如果你已經使用CVS)
  • 稀疏檢出

爲什麼使用git(可能適用於水銀太):

  • 更容易分支與合併
  • 開發人員可以用自己的本地存儲庫交互,而無需聯繫「主」庫
  • 可與上游SVN或CVS倉庫的工作(但如果你有一個選擇,我ð仍然使用git上游,如果開發者使用Git)
  • 「足夠好」的Windows GUI工具TortoiseSVN的,現在......還沒有在一年或兩年)看着它(TortoiseGIT實際上可能是一樣好。
  • 更強大的命令

一種方式來處理您的使用情況是: - 每個開發者都有自己的私人git倉庫 - 開發商推代碼更改開發服務器的存儲庫時,他們正在測試並準備生產使用。- 活動服務器有一個結賬,可以定期更新,手動更新,或者通過dev服務器倉庫上的提交鉤子進行更新(當提交時,「ssh live.server.com(cd/my/dir; git pull起源HEAD)「)。

此過程可適於SVN一樣好,但私有倉庫將剛剛成爲檢出。

0

Windows機器應該能夠連接到變更控制服務器,沒有問題,使用您所選擇的客戶端(例如,TortoiseSVN適用於Windows)。

做自動從您的源代碼庫構建,您可以使用某種形式的持續集成(CI)的軟件。我對LAMP堆棧的任何產品都不熟悉,但我確信有很多。而且,如果是PHP的網站,你並不真的需要一個構建,這麼多,因爲你需要某種形式的自動複製:-)

1

除非我誤解你的問題...

你提到的每個源代碼控制提供者都有一個windows版本,或者在cygwin下工作,所以應該在windows下工作,他們將如何在* nix下工作 - 因此你應該根據你使用的源代碼控制提供者使用與您通常相同的標準。

0

設置方法取決於您選擇哪種源代碼管理軟件。

我會在內部服務器上建立一箇中央資源庫。這對於s​​vn是必需的,並且爲您提供了一個規範位置,以便在您使用git或hg時提取更改。

開發人員可以將存儲庫檢出/克隆到其本地計算機並提交/推送更改。我建議使用分支來區分生產代碼和開發代碼。

要部署到網站,您需要一個過程,從中央存儲庫檢出,更新到生產分支或標記,然後將這些文件複製到實時服務器。

確切的細節取決於您使用的版本控制系統。

5

Subversion會很好地工作。我們在Linux機器上運行了Subversion,我們所有的開發工作都是在Windows機器上完成的。 90%的時間我們通過IDE檢查項目(通常是Eclipse中的subclipse)和其他10%的時間,我們使用TortoiseSVN其中任何一個都可以正常工作。

您可以通過IDE或Tortoise將修改提交到存儲庫。您可以將持續集成服務器與存儲庫綁定,以便在將代碼更改提交到存儲庫時自動構建項目。

0

我認爲對您的問題的簡單回答是:這些不是挑戰。這就是它的工作原理。

我們在這裏使用SVN。大多數開發人員在Windows上工作,但我們的測試團隊使用Linux,我們的生產服務器是Linux。

開發人員使用SVN插件爲Eclipse檢出SVN存儲庫。我也使用TortoiseSVN和SVN命令行檢出到Windows。當我們準備部署到測試服務器或生產服務器之一時,我們只需在適當的服務器上檢查SVN,編譯完成即可。用PHP你甚至沒有編譯步驟。

爲了玩弄我在家裏做的東西 - 嗯,在家裏它是所有的Windows,但我使用命令行SVN管理,然後Subcommander做工作站的東西。

5

我們使用Subversion和TortoiseSVN。它運作良好。我們最後一次看Git(六個月前?),Windows工具還沒有。 Perforce(http://www.perforce.com)是我用過的最好的商業解決方案。

確保您瞭解分佈式版本控制(Git)與Subversion和其他傳統版本控制系統的差異。他們不一樣。

GitSvnComparison Git For Designers

如果您在PHP網站上的工作,你可以創建回購的tar文件,並把它們運到用於測試的測試服務器。一旦您驗證了該網站正在運行,您可以將該tar文件推送到活動網站。

+0

根據http://svnvsgit.com/,您所引用的wiki頁面上指定的「差異」並不真實。其中至少有一些是。 – bahrep 2016-01-08 11:12:56

0

如果你想從Windows工作,我也建議看看Bazaar,它在所有平臺(包括Windows)上都有很好的UI工具。關於它的一個好處是,您可以輕鬆設置跟蹤分支,並在本地離線/分支本地工作,這是一種混合分佈式/集中式模式。這聽起來可能很奇怪,但如果你的團隊很小,它實際上非常有用。您可以隨時使用您的開發服務器的中央版本,並將其標記/鏡像到現場;而您的每個開發人員都在本地副本上工作並推送到開發人員服務器。

1

Mercurial將非常適合。由於開發人員機器是基於Windows的,因此與git相比,您可以獲得更好的支持和工具,但最終會獲得比顛覆性更強的系統。

在我們的設置中,我們通過apache with mod_wsgi提供存儲庫,易於安裝,並且爲我們提供了很好的服務。

對於部署,如果您想自動完成,我建議您查看mercurial hooks