2012-02-21 46 views
4

我有一個git項目,我用於最近發表的科學論文。在項目中,我有子目錄doc(拆分爲doc/paperdoc/talksresultssrc和更多。git中籤出子文件夾

現在我想發佈我的源代碼(但不是我的演示文稿幻燈片等)。讓人們只訪問src子目錄的最佳方式是什麼?我會發佈一個zip文件,拍攝當前src目錄的快照,但我希望人們可以輕鬆獲取更新。

非常感謝。 Oliver

+0

看看這個問題,它顯示瞭如何提取一個git子目錄,並從中創建一個子模塊:http://stackoverflow.com/questions/920165/howto-extract-a-git-subdirectory-and-make-a -submodule-out-of-it – 2012-02-21 16:17:53

回答

6

短版:

您需要使用每個頂層文件夾,你想給訪問到一個單獨的回購協議。 有關如何執行此操作的更多信息,請參見submodules

「sparse」checkouts可以工作,但我認爲這不能強制用戶,他們必須將整個存儲庫克隆到本地,然後才能獲得部分工作目錄。

(您也可以設置一個單獨的repo,它會自動更新並推送更改,但您失去了從用戶庫合併叉子和修復程序的機會,這是我想的那點。)

加長版: 禾 「新」分佈式版本控制系統(GIT,水銀,集市等)不以同樣的方式爲SVN和CVS圍繞每個文件夾結賬建。使分支樹與目錄樹分離可以簡化在修​​訂圖中處理分支和合並的操作,因爲它們比集中式VC:es更多。 (SVN,IMO,處理分支&合併就像一個大錘處理打開一罐垃圾郵件,這很大程度上是由於層次結構中的任何目錄可以分支/合併)。

部分結賬功能很容易在不分支/合併的集中式場景中提供,因此在時間曙光時很受歡迎。你不再那麼做了,可能會因爲沒有它而學會感恩。 :)

因此,重要的東西有幾個subrepos/submodules更容易。儘管分支頂級回購協議稍微複雜一點,但您需要考慮如何設置,以便您輕鬆處理。 (也許發佈演示幻燈片並不是那麼糟糕:) :)

+0

+1好的,謝謝你的幫忙! – user 2012-03-27 21:44:04

+1

...「不允許像SVN和CVS這樣的每個文件夾結帳」......似乎不再是真實的。 http://stackoverflow.com/questions/180052/checkout-subdirectories-in-git。仍然不同意「這大大簡化了......」。 Git是非常簡單的。 – AlexeiOst 2014-12-01 14:51:02

+0

@AlexeiOst:好吧,無論如何,你會得到整個回購克隆。另外,Git並不簡單,但我更喜歡Mercurial(更好的UI,更多或更少的相同概念)。最後,與Git/Mercurial和其他DVCS相比,合併SVN/CVS中的歷史跟蹤更加困難。 – Macke 2014-12-02 07:06:40

4

沒有辦法使用git只檢出版本庫的子文件夾。

您可以使子文件夾成爲自己的存儲庫,或者按照您的建議分發tarball/zip文件。

從git 1.7開始,支持「稀疏檢出」 - 請參閱here - 但這只是工作副本很稀疏;你仍然必須讓用戶能夠克隆整個存儲庫。

2

正如Git Book子模塊章節中所述,Git不允許部分結帳

您可能只是保持私有存儲庫,並將src /的開發移到新的公共目錄。也許在github,它有一些社區功能 - 例如錯誤跟蹤,跟蹤 - 這將簡化你的追隨者的事情。