2011-12-18 104 views
0

這是一個共同討論的主題,但通過我所有的研究,我還沒有找到一個合理的答案。版本控制/維護開發本地副本和工作活動副本和數據庫

我離線開發我的網站,然後通過我的主機帳戶實時啓動它們。

我利用codeigniter,並在此基礎上,我的離線和在線副本之間存在一些根本區別,即基本URL和數據庫配置。因此,我不能簡單地離線開發和測試我的網站,然後上傳它們,因爲它需要小的配置更改,這些更改很容易被忽略,並且很好導致沒有正常工作的網站。

另一個因素是,當我離線開發時,我可能會在創建一些功能的同時添加數據庫表或列。當我將我的本地開發上傳到我的主機時,他們通常不工作,因爲我忘記了上傳新的數據庫結構。顯然這不會發生 - 不會有任何損壞或破壞的現場網站的機會。

此外,我希望能夠有我的開發日誌 - 版本控制的種類,如果我開發一個功能,然後別的東西停止工作,我可以很容易回頭看,至少看到代碼更改可能導致更改。

我的第四個要求如下:如果我沒有開發筆記本電腦而放假一週,然後得到一個錯誤報告,我無法修復它。如果我在現場複製上修復它,不僅是危險的,而且我不可能在我的本地副本上更新它 - 因此,當我下次更新我的活動副本時,該更改將會丟失。有沒有一種方法可以在任何計算機上訪問我的開發設置,編輯和測試,啓動到現場,同時還可以使我的筆記本電腦本地副本保持最新狀態。

所以是的..一般在即時尋找一個解決方案,使我的開發過程更有效率/合適。有任何想法嗎?

感謝

回答

0
  1. 不要被簡單地複製部署。通過使用腳本進行部署(我使用Apache Ant),可以爲每個環境自動化特定文件的副本,替換一些值等。

  2. 這只是需要嚴格。在開發過程中製作待辦事項列表,並檢查服務器上的每個修改都已完成。您也可以在與生產服務器具有相似配置的預生產服務器上測試部署過程,確保一切正常,然後在生產服務器上應用相同的測試過程。

  3. 只需使用一個版本控制系統。 SVN或Git是兩個免費的候選人。

  4. 使您的版本控制服務器可以在任何地方使用。如果它是一個開源項目,則存在免費託管解決方案。當然,如果你沒有開發計算機,你必須檢查整個項目,並且可能安裝一些工具來開發,測試和部署。儘量讓它儘可能簡單,或者始終讓您的筆記本電腦可用。如果您計劃工作,請隨身攜帶工具箱。如果你不打算工作,那就不要工作。完成一些開發後,提交給服務器。當你回到你的筆記本電腦,從服務器更新你的工作副本。

0

小補充和澄清,以JB

  1. 使用任何VCS,它可以工作(在方式)設有分公司 - 本地和督促系統是很好的候選人單獨的分支,你在哪裏共享公共代碼,但具有分支特定的配置。這將需要在你的日常工作流程的一些變化(代碼在「測試」,合併完成了「刺」,部署/通過工具,而不是手/ 只有合併後 ...),但它是公平的價格

  2. 再次更改工作流程。正如JB指出的那樣 - 不要手動部署,不要部署錯誤的分支,在完成合並之前不要部署「prod」。但現在的構建工具相當聰明,你可以檢查建設者內部的這種先決條件

  3. 只要使用VCS,也許DVCS會好一些。我說Git作爲第一個VCS有很強的「No-no」,但是即使沒有它,你也有很多選擇 - SVN(與DVCS相比較差的分支),Bazaar(不是我夢想中的工具,但是,誰知道),Mercurial ,化石SCM,單調

  4. 不要在帶電工作,從未做點兒外SCM。 變化的一個來源是一個快樂開發者的規則。或者根本不工作,或者讓代碼庫始終可供您使用(免費代碼託管/ GoogleCode,SourceForge,BitBucket,Github,Assembla,LaunchPad /或自己的服務器),根據需要獲取,更改,保存,部署