2012-11-27 74 views
2

我想嵌套2 git回購。我一直在閱讀子模塊,有一段時間我認爲它很棒,我想我可能想要別的東西。這裏是我的情況:使用gitignore來嵌套存儲庫。

首先我覺得我應該提一下,我所有的服務器託管網站,並在一個staging.domain.com和domain.com(實況)模式設置。

在每個服務器我有一個父回購是一個網站和一個孩子回購其所我的核心庫。我需要我的核心在我的所有服務器上保持一致,但網站回購對於他們所在的服務器來說都是獨一無二的。我想將更改寫入核心,同時推送到所有分段域,然後做一些質量保證,並推送到所有活動的服務器。

我原本儘管這會子模塊滿足我的需求,但我與他們的問題是,我需要的內核全部更新一次。如果我使用子模塊,我的核心將更新,但不會影響,直到父網站運行git submodule update和git commit。

我想,爲什麼不直接使用gitignore忽略的核心是在文件夾中,並像對待他們是獨立的實體。有沒有其他人做到這一點?我會遇到什麼問題?你有更好的建議嗎?

預先感謝您。

回答

2

取而代之的子模塊可以使用git-subtreeSample of usage

+0

這個想法看起來很有意思,我今天要去看教程。 :D –

+0

我喜歡這篇文章,我認爲這最符合我的需求。謝謝:D 雖然,我認爲Luciano和Psi在「使用範例」鏈接末尾的評論也非常有用。他們表示.gitignore方法和子樹實現之間的主要區別在於,要克隆該項目,首先需要知道實際上有兩個項目。如果這是主要的好處,我寧願使用.gitignore,因爲它很簡單。由於這是一個私人項目,所以沒有人不知道它的雙重性,就不會下載它。 –

2

看來你可能會從受益後收到提交的臨時服務器上,在這你可以:

  • 把你的更新裸回購核心
  • 觸發git submodule update所有升級網站
    • cd到一個服務器站點/path/staging/site1
    • GIT_DIR=/path/staging/site1/.git WORK_TREE=/path/staging/site1/.git git submodule update
    • [R EPEAT爲每個站點

的想法是:

  • 一個推
  • 多個更新
  • 保持子模塊的優點(即,記錄核您的網站的確切版本使用)
0

這取決於你是否要在父回購「git的狀態」,以返回回購是乾淨的。如果您可以在父回購的「git status」中使用「Untracked files:... core-libraries /」返回類似內容,那麼您可以將核心庫回購作爲父回購的未跟蹤子項。

的Git真的不關心未跟蹤文件&目錄。

+0

在這個實現下,它會更容易使用.gitignore嗎? –