2014-12-04 51 views
2

我想用git來控制某些文件的版本控制,但是我無法弄清楚我的情況。讓我先設置問題,然後解釋我在解決方案中失敗的嘗試:將git用於多個單獨項目,其文件共享一個公共目錄

我使用名爲CodeV的光學設計程序,它是基於命令行的。我用編程語言編寫自定義宏(CodeV中的「序列文件」)。這些文件用於分析/設計光學系統,因此它們應該可用於CodeV的每個實例。我將所有自定義宏都放在一個目錄中。要從CodeV運行它們,我只需在CodeV的命令行中鍵入run filename.seq,因爲我已將CUSTOM_MACROS目錄添加到我在CodeV中的序列文件搜索路徑中。簡單。

這是一個非常詳細的說法,我在一個目錄中有很多可能不相關的文件。

現在,這些文件正在進行中,我想和我的同事一起使用GitHub來處理它們。所以,在我CUSTOM_MACROS目錄,我可能有這樣的:

macro1.seq 
macro2.seq 
... 
sharedmacro3.seq 
sharedmacro4.seq 

我希望每個文件的獨立版本控制,我認爲,這意味着在GitHub上獨立的回購協議。我如何在本地實現Git來實現這一目標?

我曾嘗試使用一個回購在CUSTOM_MACROS和添加的所有文件,然後用樹枝爲每個特定的文件:

git add -A 
git commit -am 'Add all of the files' 
git checkout -b sharedmacro3 

做出一些改變

git commit -am 'Changed some stuff in sharedmacro3.seq' 
git checkout master 
git merge sharedmacro3 

這是好的,但現在如果我想創建一個新的宏,我添加該文件,併爲該項目創建一個新的分支,但它從其他文件提交繼承歷史。我不想要這種行爲,我只想要該文件/項目的提交歷史記錄。

什麼是更好的方式去做這件事?我想要什麼?

然後,當我想將這個回購庫添加到GitHub中時,它包含了我所有的自定義宏,所以當他只想要sharemacro3時,我的同事就把所有文件都拉進去了。

我可能錯過了一些基本的東西,因爲我對Git比較陌生。如果是這樣,請將我指向資源,以便我可以學習。有很多類似的問題,但沒有一個真正符合我的具體使用案例。

重申:如何使用git來跟蹤其文件位於同一目錄中的多個項目,然後使用GitHub與同事共享這些項目?

謝謝你的時間。

回答

1

不知道這會有多大的幫助,但這就是Git的工作方式。它通常用於版本化repo目錄中的所有文件。所以如果你所有的文件都在同一個目錄下,它們將成爲同一個回購站的一部分。

分支解決方法很尷尬,不會像您所體驗的那樣很好地擴展。

這裏有一對夫婦的想法:

  • 你能在你的CUSTOM_MACROS使用目錄中的子目錄?如果這是可能的,那麼你可以有一個每個子目錄的回購。這將允許您對單個文件進行版本化,或者將文件分組到一個子目錄(如果它們屬於一起)。
  • 如果子目錄不是一個選項,你可以看看有多個CUSTOM_MACROS目錄。
  • 也許值得探討在一個常見的倉庫中擁有一個宏集合的想法。你真的需要每個宏文件具有單獨版本的粒度嗎?對所有的宏都有一個回購會讓事情變得更容易,甚至可以提供一些價值。不知道你的文件和它們在上下文中的相似程度,很難說清楚。

無論如何,我會努力讓事情儘可能簡單。如果將所有內容都保存在一個回購中,那麼我會使用它。拉動所有東西是否有害處?您的宏是否如此之大,以至於在下載整個回購時,存儲和網絡速度是一個問題?

+0

感謝您的回覆。子目錄將用於允許單獨的回購。但是我確實需要父目錄中的所有文件,因爲將這些路徑添加到CodeV的搜索路徑很麻煩(並且存在50個搜索路徑的硬限制,上帝只知道爲什麼)。 一種解決方案是將父目錄中的符號鏈接添加到子目錄中的實際文件中。 (或者相反,我猜)。另一個是將每個repo的core.worktree設置爲父目錄('CUSTOM_MACROS')。 – ScheissSchiesser 2014-12-08 15:38:57

+0

這很快變得醜陋:-)。如果您想使用子目錄,則可以使用腳本在引入更改後將它們複製到父目錄 - 但是,當您在本地進行更改時,這又會成爲問題。具有所有宏的單個回購確實聽起來像是您的最佳選擇 - 也許將它與某種命名約定結合起來,以便您可以快速識別文件的內容和上下文。 – nwinkler 2014-12-08 15:42:55