2008-12-28 65 views
6

我在一個小型LAMP開發工作室工作,其中的想法是完成代碼並轉到列表中的下一個項目。將開發團隊從FTP轉換到版本控制系統

該團隊在Zend Studio 5.5中通過FTP或SFTP連接到Live服務器。他們喜歡的是他們部署代碼的速度(因爲它只是修改實時代碼)。

但當然這是不好的,由於許多明顯的原因。

我想將它們移動到版本控制系統(CVS,SVN或任何其他工具),但捕獲是,我不是他們的高級,所以我需要一個胡蘿蔔開始使用它。

我需要在他們的機器上構建什麼樣的設置,以便像往常一樣編碼?

我會做的是在我的機器上創建此設置,然後顯示它們。

我知道這有點不尋常,但它變成了我的激情,將他們的思維方式從通常的代碼黑客轉變爲結構和優雅。謝謝。

UPDATE(喬納森萊弗勒的答案):

  1. 沒有
  2. 是的,他們真的

問題也,工作室使得該託管集中CMS系統在數百個網站上,他們需要修改個別網站,這些網站應該位於主要組合還是屬於他們自己的網站?

+0

第一季度的答案是「是的,他們從未有過災難」?或者是「是的,他們有可能無法返回的災難」?對不起,這個問題不明確。 – 2008-12-28 23:54:56

+0

「主存儲庫中的多個站點」問題的答案是「它取決於」。但是,對於開發人員沒有良好VCS的系統來說,我非常不舒服,因爲我的站點和我的CMS不是。它必須在VCS之下。 – 2008-12-28 23:57:22

+0

答案是肯定的,他們有災難。 – 2008-12-29 01:24:02

回答

7

問題:

  1. 你有沒有(他們)從來沒有在那裏你(他們)需要恢復到以前的版本的網站,但不能因爲他們打破這一場災難?

  2. 他們是否使用臨時Web服務器來測試更改?

  3. 當然,他們不會修改生產服務器中的代碼,而無需在某處進行某些測試?

我懷疑回答第一個是「是(他們有災難)」,第二個「不」,我毫不猶豫地猜測第三個答案(但是從它的聲音,答案可能是「是的,他們真的這樣做」)。如果這是正確的,我很佩服他們的虛張聲勢,並且很驚訝他們從不犯錯。我絕不會冒險直接在實時網站上進行更改。

我會推薦你​​自己使用版本控制系統或VCS(任何VCS)。找出你所看到的代碼的皺紋,並開發出簡單的分佈(可能仍然使用SFTP)來將VCS代碼分發到網站。但也表明,保留以前的版本有其優點 - 因爲你可以恢復誰做什麼時。首先,您可能會發現,在開始修改頁面之前,您需要下載需要處理的任何頁面(文件)的當前版本,並將最新版本放入VCS中,因爲其他人可能會修改它,因爲它最後在您的主存儲庫中進行了更新。您可能還想每天對文件進行「刮擦」以獲取當前版本 - 並跟蹤更改。你不會有'誰',也不是'什麼時候'(比最近的一天更好),也不是'爲什麼',但是你會有(累積的)'什麼'的變化。


在回答問題中的評論時,ÓlafurWaage澄清說他們因爲缺乏VCS而發生災難。

這通常會讓生活變得更容易。他們瘋狂;他們無法消除這種混亂 - 他們可能已經讓客戶煩了,而且他們本應該非常惱火。 VCS使得從這種錯誤中恢復起來容易得多。顯然,對於任何給定的定製站點,您需要VCS中提供的「正確」或「正式」版本的站點(中央)備份。我可能會爲所有客戶選擇一個存儲庫,使用對分支和合並有很好支持的VCS。起初處理起來可能比較困難(當人們習慣使用VCS時),但從長遠來看可能會帶來更好的結果。我認真考慮使用現代分佈式VCS(例如,git),儘管很多人也使用SVN(即使它不是分佈式VCS)。

+0

感謝您的更新和答覆。 – 2008-12-29 04:33:38

2

可以使用烏龜SVN客戶端來創建和存儲庫在本地機器上的其他一些文件路徑,然後你的工作路徑上的工作....

也許嘗試安裝和使用,對自己和表演他們在一段時間後可以爲你做什麼。另一個很酷的事情可能是在你的服務器上安裝trac(http://trac.edgewall.org/),如果你有訪問權限和特權,或者在你自己的開發機器上的某個虛擬機器上。您可以將trac映射到您的svn並在Web界面中獲得svn更改,您可以將其顯示給項目經理。也許他會因爲他能夠通過Web界面輕鬆看到代碼更改而墮落。當然,你可以用apache + svn模塊做到這一點,但是這樣做更好,因爲它提供了一個票務和路線圖的路徑(里程碑和經理們可能挖掘的東西:o))..

好運無論如何:) 。至少,將它用於在本地機器上工作,因爲只有這樣做才能帶來收益。

+0

喜歡關於trac連接的評論,謝謝。 – 2008-12-28 23:36:59

+0

我喜歡這個軟件,一直在看它,並且在2周前剛開始設置它,而我從那時起就是最幸福的人...... :)。簡單,有用,易於使用...和0.11.x易於安裝。我在不到半個小時的時間裏就使用了安裝在虛擬機中的乾淨的debian。 – zappan 2008-12-28 23:41:16

2

您可以在您的本地系統上安裝SVN進行演示。有一些工具可以將Zend和Eclipse集成到SVN中。我想除了做一個SVN演示外,你應該給他們介紹一些它帶來的好處(可能在演示期間)。

到這個鏈接的一些想法:Do I Really Need Version Control?

1

奧拉維爾,你提到的「工作室做是對數以百計的網站託管的CMS系統。」這本身可能是你需要的胡蘿蔔。如果團隊經常向這些數百個站點部署更新,那麼在版本控制系統內部使用分支可能會使這個過程對每個人都更容易。這可能是一個巨大的節省時間,因此可以激勵人們學習版本控制系統。

聽起來像這些網站都是相關的 - 同一CMS的定製版本。在這種情況下,除了未定製的CMS產品外,您應該將所有網站放在同一個存儲庫中。然後,您可以將它們全部配置爲同一中央產品的分支。如果您使用單獨的存儲庫,則不容易創建分支以將自定義與主要產品相關聯。 (我想你可以與Subversion做,最有可能的人,但它是複雜的,不必要的,如果所有的開發者爲同一公司工作。)

0

VisualSVNServer和TurtoiseSVN是兩個節目我用,他們都是有據可查,並且與Windows資源管理器和Visual Studio集成得非常好。

0

使部署成爲自動構建過程的一部分,因此沒有開發人員需要擔心。使用'流'來保持開發區域,qa區域和發佈區域的工作,然後使用部署最新開發,qa和發佈環境的自動化流程。

2

這裏有一個技巧,大家一定會喜歡:

包括我這個「插件」在我的大部分生產基地: Ofcourse,你需要爲這個第一和svn必須創建一個有限權限機器人SVN賬戶安裝在服務器上。

echo(' updating from svn<br>'); 
    $username = Settings::Load()->Get('svn','username'); 
    $password = Settings::Load()->Get('svn','password'); 
    echo(" <pre>"); 
    $repos = Settings::Load()->Get('svn' , 'repository'); 
    echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force"); 
    echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force"); 

    die(); 

確保你把這個後面的.htpasswded網站ofcourse,並確保你不會從SVN更新「生產設置」。 Et瞧,您更新您的完整的代碼庫與一個HTTP查詢到您的網站:) SVN自動覆蓋文件,沒有隱藏的文件或文件夾留下,它很容易適應更新或恢復到特定版本。 現在你所有的團隊需要做的就是提交到他們的SVN倉庫,在測試環境中運行這段代碼,確保一切正常,然後在生產環境中運行它:)

0

只需將SVN放在中間即可。

開發團隊把這些新東西放到顛覆中, ,然後你有一個腳本從svn中導出這些東西並將它發送到網絡服務器上。

這很接近他們今天的工作方式, 但是在顛覆中記錄的每一點變化都是如此,所以如果閃電出現的話,可以及時支持所有的事情。

/Johan