2009-05-28 98 views
17

在我的場景中,我有一個程序分析數據輸入文件並生成其他數據輸出文件。我想對版本控制程序進行版本控制,並且我想要版本控制數據文件,並且作爲首選項,我希望在程序的工作副本中包含數據文件的工作副本。我希望程序和數據分開版本控制,以減少「噪音」。該程序不依賴於數據文件。git子模塊是在工作副本中擁有工作副本的唯一安全方式嗎?

如果我使用git子模塊,那麼當數據目錄內發生事情(我認爲提交的更新)時,程序的版本控制會注意到子模塊有更新。如果程序依賴於數據,那麼這很有用,但它不會。

在這種情況下,是否有可能在不使用git子模塊的情況下在另一個工作副本中擁有工作副本?

回答

20

可以簡單地在Git中「嵌套」工作副本。因此,如果你克隆你的程序庫,那麼在你的數據文件的克隆中,你可以單獨使用它們。當Git執行文件操作時,它會搜索以上的目錄樹查找.git目錄,因此在數據存儲庫中執行的Git操作不會影響程序存儲庫。如果您這樣做,您可能需要將數據目錄的名稱添加到.gitignore以減少來自程序存儲庫的噪音。

+0

喜歡聽這個。這種方法有什麼可能出錯的嗎?或者它只是工作? – 2012-01-13 14:14:56

1

這也是一種有用的解決方法,在Heroku和rails中處理需要版本化插件的情況。目前,Heroku不支持git子模塊,所以嵌套工作副本似乎是最好的解決方案。在這種情況下,您不想將插件目錄添加到.gitignore中,因爲在這種情況下,您將無法上傳您的插件推送到heroku,但se la vi。希望Heroku最終能夠支持git子模塊。