在git中检出子文件夹

时间:2012-02-21 15:59:16

标签: git subdirectory

我有一个git项目,我用于最近发表的科学论文。在项目中,我有子目录doc(分为doc/paper doc/talksresults src等。

现在我想发布我的源代码(但不是我的演示幻灯片等)。让人们只访问src子目录的最佳方法是什么?我会发布一个zip文件来拍摄当前src目录的快照,但我希望人们能够轻松获得更新。

非常感谢。 奥利弗

3 个答案:

答案 0 :(得分:6)

简短版:

您需要为每个要提供访问权限的顶级文件夹使用单独的repo。 有关如何执行此操作的详细信息,请参阅submodules

“稀疏”检查可以正常工作,但我相信这不能强加给你的用户,他们必须将整个存储库克隆到本地,然后才能获得部分工作目录。

(你也可以设置一个单独的仓库,它会自动更新并推送更改,但是你失去了从你的用户群中合并分叉和修复的机会,我想这是重点。)

更长的版本: 禾 “新”分布式版本控制系统(Git,Mercurial,Bazaar等)不是以与SVN和CVS相同的方式围绕每个文件夹检出构建的。将分支树与目录树分开可以简化处理分支并在修订图中进行合并,因为这些比集中式VC更多。 (SVN,IMO,处理分支和合并就像一个大锤处理打开一堆垃圾邮件,其中很大一部分原因是层次结构中的任何目录都可以分支/合并)。

部分结帐功能很容易在不进行分支/合并的集中式场景中提供,因此在时间的流逝中很受欢迎。你不再那样了,并且可能会因为没有它而学会感恩。 :)

因此,有一些重要的东西/子模块更容易。虽然分支顶级仓库稍微复杂一些,但您需要考虑如何设置以便于您使用。 (也许发布演示幻灯片并不是那么糟糕?:)

答案 1 :(得分:4)

无法使用git仅查看存储库的子文件夹。

您可以将子文件夹设置为自己的存储库,或者按照您的建议分发tarballs / zipfiles。

从git 1.7开始,支持“稀疏结账” - 请参阅here - 但这只是稀疏的工作副本;您仍然必须让用户能够克隆整个存储库。

答案 2 :(得分:2)

如子模块章节下的Git Book所述, Git不允许部分结帐

您可以将您的存储库保持为私有,并将src /的开发移至新的公共存储库。也许在github上,它有一些社区功能 - 例如错误跟踪,跟随 - 这将简化你的追随者的事情。