使用回购

时间:2011-09-15 12:28:41

标签: git svn mercurial cvs

当使用repos(我有github)时,我们是否还要提交第三方库?例如,boost和poco使用样本编译为5G。我们应该将所有内容上传到github吗?如果没有,那么我们如何让图书馆与其他人保持同步?

抱歉缺少大写和语法。我在打电话,打字很困难。

3 个答案:

答案 0 :(得分:1)

版本控制的第一条规则:永远不要将生成的资产提交到存储库。因此,您绝对不应该将Boost和Poco的构建产品提交到您的存储库。是否在存储库中包含依赖项作为源代码取决于您;它取决于您的项目,您需要多少依赖项,您的软件有多少公共可能可以轻松访问这些依赖项等。打包程序和发行版通常更喜欢您不捆绑您的依赖项,而是在README或INSTALL文件中仔细提及它们。

如果您希望轻松获取从VCS检查代码的人员的依赖关系,请尝试使用svn externals,git子模块或hg子目录,以便轻松排除依赖关系并建立明确的链接依赖的上游存储库。

答案 1 :(得分:1)

首先,如果您使用的是Maven,则无关紧要。没关系。

现在,我已经完成了这项工作,我建议你使用像NexusArtifactory这样的Maven存储库管理器。

Artifactory和Nexus所做的是为第三方库创建网络范围的存储库结构。

您可以使用标准wgetcurl命令轻松下载发布存储库中的任何工件。如果您使用Ant,则可以使用Ivy来管理您的工件。如果你使用Maven,那么,你已经准备好了。这意味着您可以在构建脚本中编写所需第三方库的下载脚本。

发布存储库也可用于您的第三方库。您是否生成了您的其他项目使用的基础库?您可以使用相同的发行版和下载机制使您的编译对象可用于您的系统。

检入您的第三方库会导致以下问题:

  • 提交通常在逐个项目的基础上完成。这意味着如果您有多个项目依赖于第三方foo库,您可能会foo位于您的存储库中的两个不同位置。
  • 您将丢失有关foo的信息。你不会记得它是哪个版本的foo。在过去的十年里,我一直是java项目的构建工程师,在每个项目中我们都有来自Foo项目的foo.jar,并且没有开发人员知道它是verison 1.3,2.5还是4.5。我们不知道Foo项目是否支持这个旧版本,或者我们是否有错误的1.3并且应该在Hoover管理中升级到版本1.4。
  • 二进制文件占用了源存储库中的大量空间。每次提交新版本,它都会有更大的空间。而且,它会给你带来什么回报呢?不多。你无法区分它以查看以前版本中的更改。结账可以永远带来回报。
  • 许多源存储库不允许您删除第三方程序的过时版本。我不会提到任何名字(咳嗽!颠覆!咳!),但我看到的是大小为100到200千兆字节的存储库,它几乎只是过时版本的第三方库。

顺便说一句,你从来没有提到过你的编程平台。如果您使用的是Ruby,Php或Perl,则可以使用其内置的存储库系统(分别为Gem,Pear和CPAN),您无需担心配置发布存储库。

答案 2 :(得分:0)

我喜欢通过git提供这些第三方库时,我可以将它们作为子模块包含在我的项目中。我非常喜欢那个。让更新成为一块蛋糕。

如果那是不可能的,那么是的,我将他们的代码包含在我的回购中。最终,我要将我的生产分支转到我的操作人员,以推送到生产服务器,因此需要运行所需的所有商品。这可能是一个与你不同的工作流程,但这就是我的工作方式。