2010-02-12 39 views
0

我最近剛開始越來越熟悉SVN,雖然它似乎是「正常」的代碼開發非常簡單,它讓我有點困惑web開發時,正確使用SVN。如何開發一個Web應用程序

Web開發需要Web服務器直接與源進行交互以測試(通常很小且非常頻繁的)更改,所以我猜項目的文檔根目錄應該是工作副本。但是每個用戶都應該將他或她自己的工作副本合併並提交到存儲庫,然後再導出。當你不得不一遍又一遍地調整樣式表來滿足所有瀏覽器時,整個循環顯然是不可行的。

用戶顯然不能在同一個工作副本上工作(這是svn的觀點),並且您無法檢出文檔根中的不同工作副本以獲取路徑原因,那麼使用svn和web的最佳方式是什麼應用開發?每個用戶都應該在客戶機上安裝一個webserver/php解釋器嗎?

回答

1

我一直都是這樣做的,每個用戶都有自己的webserver/php解釋器,儘管你需要的是你自己的apachectl,它傳遞了用戶特定的httpd.conf。然後每個用戶需要自己的httpd.conf。所以你需要複製的是httpd.conf和apachectl,每個人都可以共享相同的apache安裝。

2

總而言之,是的。

您的開發環境需要與生產環境分開。一旦你在你的機器上測試了一個變化,那麼你可以將它提交給SVN。要查看他人所做的更改,請更新您的工作副本。

然後,當你想使一個版本中,您從SVN導出到生產服務器(或測試服務器QA一鼓作氣上)。

+0

這不是他的問題,是嗎?他的問題是如何處理整個團隊中的多份工作副本。 –

+0

這就是我所說的;處理它的方法是讓每個用戶在他們自己的機器上測試修改,然後「公共」區域就是SVN倉庫。我正在描述工作流程並回答「每個用戶都應該在客戶端機器上安裝Web服務器/ php解釋器?」的問題。 –

3

每個開發人員都有一個帶有IDE,本地網絡服務器和SVN客戶端工具的工作站。 webapp在每個工作站中籤出,以便開發人員可以將更改提交回購。

0

根據團隊規模和結構,不會是在這種情況下明智的

  • 通過LAN在這種情況下,同一個工作拷貝工作,並聘請在操作系統級別
  • 文件明智鎖定

  • 保持「工作」信息庫,在其中所有的改變都非常頻繁致力於讓其他人可以更新他們的工作拷貝,一個「最後的」回購協議團隊在一天結束時承諾的內容,還是達到某個預定義點?

腳本化的Web應用程序通常沒有構建過程。想象一下,有人在CSS文件上工作,每隔幾秒進行一次更改並在瀏覽器中檢查出來。想象一下其他人正在處理相關的HTML文件,也是這樣做的。

如果他們有自己獨立的測試環境,他們將永遠無法看到其他人的變化是如何與他們的工作體現。而且我知道如何在瀏覽器中調整一些CSS細節 - 可能需要幾十個步驟,直到某些事情變得正確。根據團隊的結構,這可能會導致交互非常繁瑣。

如果我錯了,隨時糾正我,我沒有在Web應用程序開發團隊有很多SVN的經驗。

+0

共享相同的工作副本是svn應該避免的事情之一,但在web dev中這似乎是很自然的事情。因此我懷疑。 –

+0

2-repository方法可能是最好的 - 一個讓團隊同步,一個做實際的提交。你的人只需要經常提交和更新。衝突將立即變得可見。儘管如此,我從來沒有嘗試過。 –

+0

當然,更新工作副本時,每個人都可以看到其他人的變化。沒有構建過程的事實是無關緊要的。我看不到任何理由分享工作副本(不寒而慄)或有多個存儲庫。 –

1

Web開發與其他任何類型的源代碼(如胖客戶端)沒有什麼不同。他們都是一樣的:

  • 開發人員簽出一個版本的系統。
  • 他們對檢出的內容進行更改。
  • 適當時(*)他們檢查更改回存儲庫。
  • 事情經過測試(在某種程度上)
  • 接受更改。
  • 系統已簽出(在其他地方),並用於升級生產。

開發的所有軟件應該至少有三種不同的情況:

  • 發展(爲每個開發人員)
  • 測試(每個測試組)
  • 生產

如果您直接將「開發」更改爲生產副本,通常會被視爲魯莽。它看起來很快,但你並沒有正確考慮「風險」(它會在某一天讓你感到痛苦)。如果您只是在開發中的服務器開發人員之間共享Web服務器,那麼您仍然在尋求麻煩。

每個開發實例都應該有自己的「完整」環境來工作。也就是說,每個開發人員都應該有自己的Web服務器,他們自己的源代碼,他們自己的配置等。使用存儲庫將它們放在一起,這是其工作的一部分。發展結構應該儘可能接近測試和生產結構。它減少了安裝過程中的錯誤。