2016-08-24 115 views
0

我是一家大型公司內的小型PHP開發團隊的成員。我們有自己的開發和生產服務器,由於它們都在本地網絡上,我們開發的應用程序嚴格在本地運行,並且不打算公開,所以我們在開發服務器上開發並且沒有本地環境。我們每個人都有本地存儲在磁盤上的源代碼,但我們設置了IDE,以便立即自動將所有更改同步到DEV服務器(基本上每次保存後)。網絡驅動器上的開發權

由於每個開發人員都有自己的項目,所以在歷史上這是非常有益的,並且更多開發人員在一個項目上的協作幾乎從未發生過。但現在我們的團隊正在變得越來越大,我們正在處理一些變化。最主要的是我們需要有某種版本控制系統。 Git更準確。

有什麼辦法可以實現某種類型的git工作流到這個設置?我的意思是,安裝Git非常簡單,但我們希望享受例如將git集成到IDE中,並能夠看到誰做了什麼,什麼時候做什麼等。現在我們能夠在不改變工作流程的情況下完成所有工作,就是在DEV服務器上安裝git並直接提交。但這意味着每個人都會在本地處理代碼,代碼將與服務器同步,他需要連接並在那裏執行。這似乎只是我錯了..

你可以看到一種方法來實現git,而不必在我們的機器上設置本地環境?

+0

「我們在開發服務器上開發,沒有本地主機環境,我們每個人都有本地存儲在磁盤上的源代碼」。那麼,每個開發人員都有自己的機器?如果是的話,那麼簡單地將每個本地副本作爲git存儲庫。 –

+0

是的,我們都有我們的owm機器。問題是,由於我們沒有localhost,因此查看和測試代碼的唯一方法是在DEV服務器上。這就是爲什麼所有本地更改都自動上傳到那裏的原因。如果我們想保持這個工作,它會與git存儲庫衝突,因爲我們會將更改提交到本地副本,但也會將其上傳到服務器。這肯定會在每次推送到DEV服務器上的存儲庫時引發衝突.. –

回答

0

讓每位開發人員在其本地git存儲庫上工作,並與中央存儲庫同步。

當開發人員認爲他的更改已準備就緒時,他可以簡單地推他的提交。

  • 要麼推,快速前進,那麼一切都很好,變化會自動應用。
  • 或者,推動是非快速前進。當其他開發人員介入併發生衝突時就是這種情況。所以,開發人員必須拉動其他更改併合並他的提交,可能會解決衝突。

    Git既沒有引入衝突,也沒有規避衝突(儘管一些人認爲這是衝突)。 Git只是幫助你注意到管理這些衝突。 你到現在爲止是如何處理衝突的?例如,兩個開發人員在同一個文件中更改一行?避免衝突與你的團隊的組織有關。

您也可以建立一個post-receive hook從而使中央存儲庫自動更新,每當新的提交已被推Web服務器的文件(雖然第一次運行自動化測試顯然是更明智地)。

編輯

你的發展戰略是,恕我直言,也不適合甚至是中等規模的團隊也不中型軟件項目。

  • 團隊規模越大,同時在代碼上工作的人越多。如果兩個開發人員更改同一個文件會怎樣如果Dev1保存他的工作,Dev2的工作是否會因爲他沒有保存他的文件而被覆蓋?如果Dev2保存他的文件,他會覆蓋Dev1的工作嗎?

  • 軟件項目越大,您需要並行更改多個文件的可能性就越大(例如更改函數的簽名)。因此,如果您更改第一個文件,現在完整的軟件被破壞,並且您自動將此損壞的軟件部署到您的服務器!

+0

感謝您的迴應!我完全同意,現在我們做事情的方式並不好。到目前爲止,我們的IDE本身正在檢查衝突。每個程序員都被警告,第二次他打開了一個服務器上有更新版本的文件。所以基本上我們通過git來處理衝突,但是在一個非常基礎的層面上(如果文件在服務器上更新,只需下載它,或者將它合併到本地版本)。 –

+0

所以,如果我正確理解你的答案,我們應該基本上關閉自動上傳到DEV,並通過提交/推入git。爲此,我們需要有一個工作的本地主機,因爲如果我們只有在DEV上運行的應用程序,我們會在黑暗中工作,我們需要承諾並推動DEV的每一個改變,以便看到它在實際中 - 這將很容易中斷應用程序。我對嗎? –

+0

我會說,你應該*用(手動)提交/推送替換*自動上傳。基本上,對於每一個變化,你都可以創建一個提交併推送它,所以基本上有基本的工作流程。然而,作爲一名開發人員,我首先總是希望確保我的更改在任何地方上傳之前不會破壞任何內容。所以當地的測試環境 - 如果可行的話 - 總是一件好事。但你不需要它。 - 無論如何,目前你也在黑暗中工作,可能會破壞事物 - 只是週期比git可能短得多。 –