2012-10-11 30 views
2

我對Github相當陌生,希望得到一些建議如何安排我的工作流程。Github:尋找一個具有共享文件的智能Git設置

我們有一個小型的網絡應用程序,我們使用XAMPP在Mac Mini上運行。我們在全國有幾個Mac Mini,我正在尋找管理軟件並更新它的好方法,因爲我對所有不同的版本都感到非常沮喪。

問題是軟件的某些文件是共享的,但某些文件是針對每個客戶端/ Mac Mini的特定文件。我正在尋找一個簡單的設置,因此我必須只更改一次通用文件,併爲每個客戶端仍然有特定的文件(如模板)。 現在的情況是這樣的:

  • 我有1個軟件的文件夾在我的htdocs目錄
  • 此文件夾中有特異性和根兩者共同文件,如:

    • sharedfolder
    • shared.html
    • specific.html
    • 特定文件夾
    • mediafolder(我會忽略,而不是放在GIT)

我正在尋找最好的方式來管理這個。我做了一些關於這個話題的研究,但是我希望有人能爲這個特定的情況提供建議。我覺得我有以下選項:(?我有一個更新後推變化的共同文件,以每個客戶端領域)

  1. 把一切都放在1個回購,但與單獨的分支的特定文件

  2. 使用2個repo(並使用.gitignore將特定文件中的公共文件分開)。 1與公用文件,1與客戶端特定文件(在不同的分支機構)。我早期的研究告訴我,因爲一切都在我的根,而不是特定的目錄

  3. 使用git子樹

  4. 使用git-子模塊

  5. 使用gitslave

  6. 這是不可能的
  7. 還有其他嗎?

理想我正在尋找一種可以用OSX Git GUI進行管理的解決方案。

關於我的工作流程。我希望我可以直接從htdocs中的軟件文件夾對代碼進行所有更改。如果我只對通用文件進行更改,我想將其提交給常見的回購。如果我對特定文件進行更改,我想首先連接到正確的分支或回購,然後進行更新。 對於不正確的術語,我很抱歉,但我希望它仍然清楚。

如果有人能指引我正確的方向,那將會非常好。

回答

1

據我所見,git中唯一的解決方案是選項1(分支)。

如果要處理不同的文件都在一個文件夾中,其他所有文件都不會工作。

更新後,我是否必須將更改通用文件推送到每個客戶端 分支?

是的,你這樣做。實際上,您需要先將您的更改合併到客戶分支中(具體而言,將其納入客戶分支的本地副本),然後推出所有客戶分支。 這應該起作用,雖然它可能有點尷尬。你可以通過一些腳本自動化來緩解這種情況。


如果你可以把自定義的文件到子文件夾,那麼,你可以使用git-子模塊,git的子樹或相似。不過,我認爲你的情況不會那麼好。 git-submodule等。適用於您想保留不同儲存庫的情況。這意味着這兩個部分(存儲庫)可以獨立克隆,獨立版本化,標記爲&獨立分支等。

但是,據我瞭解,這不是你想要的。自定義模板都是軟件產品的一部分,並會隨着系統的其他部分一起發展。因此,將它們分開購買只會造成麻煩(例如,如果您分支,則需要分別分支每個子模塊 - 更糟糕的是,需要分別合併每個子模塊)。

你只是想維護一些文件的不同「版本」,這就是分支的用途。


但是,你應該考慮不同的方法,即在運行時執行系統特定的定製。

如何做到這一點取決於具體細節,但作爲一個想法,你可以有一個系統特定的東西表。然後,在啓動時檢測主機系統(獲取主機名或類似名稱),然後應用自定義設置。

這可以避免多個分支的所有問題,同步它們,測試它們並確保部署正確的分支。此外,也許更重要的是,您可以在一個代碼庫上工作,並且可以利用這些系統之間的相似性。最後,您可以在運行時切換個別部分的自定義功能,這大大簡化了與自定義相關的調試問題。

根據我的經驗,這是比部署文件更簡單,更可靠的方法,甚至可能是不同系統上的不同代碼。我已經在幾個項目中使用了這個想法,並且它運行良好。

+0

謝謝你的回答。 如果我將所有常用文件或所有特定文件放置在htdocs文件夾的子目錄中,我會擴展選項嗎?這在目前情況下也應該是可行的。 我想我明白了不同分支的選項1回購。這可以工作。 – user1737794

+0

我不認爲我可以按照你的第二個選項,我很抱歉地說。我會試着解釋我對此的理解。特定的文件大多是模板,它們保存着特定的文本和類似的座標。現在我正在考慮爲我的所有客戶製作單獨的模板。您是否意味着我應該爲所有客戶製作1個模板,然後通過閱讀Mac Mini的主機名來爲該系統應用正確的座標? – user1737794

+0

@ user1737794:正如我寫的,細節取決於自定義。就你而言,你可以在每次安裝時爲所有客戶提供模板,每個模板都標有他們所屬的客戶。然後有一個單一的設置「customerName」切換到正確的客戶。或者如果某些客戶使用相同的模板,請使用「customerGroups」或「customerTypes」。或者,如果模板大部分相同,則在模板內部有條件部分(如果您的模板系統支持這一點)。如果不知道細節,很難更具體,但我希望你能明白我的想法。 – sleske