针对特定要求的代码库 - Git能否提供“小型下载”?

时间:2012-08-25 03:29:42

标签: git open-source cvs repository code-sharing

我的代码目前是“开源”但不易访问,因为它无法从存储库中获取。我们的想法是通过SourceForge或Github提供它,但我愿意使用任何支持这些要求的免费网站。

项目描述

该项目包含许多模块中的代码(org.pscode层次结构下的Java包)和一些依赖项(例如50 meg的交叉编译插件,5-10 meg的MP3 ..)。该项目包含许多独立应用程序,它们与开发人员的交叉编译编译器完全不同,并为最终用户提供音乐点唱机。但是也有单个类(例如BigClip可以容纳一个大的声音片段),这些非常适用于非项目本身的其他应用程序。虽然有些软件包实际上是“自包含的”(例如JaNeLA),但其他软件包是在一系列现有应用程序中使用的组件。

我机器上存在的整个项目已推出200兆。

作为一个想要播放长篇剪辑的开发人员,我会犹豫是否要下载200多兆字节的项目,以获得一个代码足够短以便在SO上发布的课程。

代码存储库要求

  • 代码存储库/共享系统,允许用户仅下载所需的部件。
  • 如果它包含主项目的许多独立部分,则会自动下载。
  • 提供一种自动计算方法(向用户显示)每个“子”项目需要下载多少内容。好的,这不是要求“成就或破坏”我的选择,但它会非常方便。

我在看Git,因为它似乎比旧版的CVS有很多进步,并且正在阅读Git For Eclipse Users&得到Distributed Version Control Systems的第3点开始..

  

鉴于没有主存储库,很明显存储库必须完全存在于DVCS中的每个节点上。 ..

令我担心,但我不确定我是否完全理解它,或者Git中是否有其他机制来提供所需的行为。

问题(S)

Git能否满足上述要求?

另一方面,这对大多数开发者来说是“无问题”吗?如果人们通常下载200兆的项目只是为了获得3 Kb的代码来解析逗号分隔值的文件,那么也许我一点也不担心。

2 个答案:

答案 0 :(得分:2)

您可以使用git子模块。 git存储库中的子模块是对另一个git存储库的引用。通常,在克隆git存储库时,必须复制所有内容。但是,子模块是将大型项目拆分为多个单独存储库的方法。

但请注意,子模块需要位于单独的子目录中,因此如果您在单独的子模块中有所需的源代码,则可能需要移动它们,并可能更改链接。

克隆主项目时,它不会自动下载所有子模块。您需要指定要手动拉出所有子模块。但是,可以快速下载所有子模块,以获取更多详细信息:

Easy way pull latest of all submodules

答案 1 :(得分:1)

这对Git来说真的不可能。虽然,如果您将代码托管在Gitub等Git存储库上,用户可以浏览您的文件并下载他们认为必要的文件。见Git vs Subversion

  

Git要求您克隆整个存储库(包括历史记录)并创建一个工作副本,该副本至少镜像版本控制下的项目子集

虽然Git的子模块功能可以帮助解决这个问题,但您必须管理多个存储库并确保它们之间的协调。如果你仍然主要在开发中,这可能有些混乱,可能需要一些重构。