代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

支持链接/共享文件的源代码管理产品?

  •  4
  • Ian Boyd  · 技术社区  · 15 年前

    我们有兴趣搬离 a source control system 这支持了 共享 链接的 文件夹。

    共享文件意味着:在一个项目中修改的文件,在使用该文件的每个其他项目中自动更新。 相同的 文件。它可以做到这一点,而无需开发人员请求、反向集成、请求甚至想要它。

    我们正在尝试看看其他常用的源代码管理系统是否能够满足我们的需求,包括 链接的 共享 文件夹。我有限的研究表明:

    • Team Foundation服务器不支持共享文件
    • Subversion不支持共享文件(包括 外部因素 )
    • cvs不支持共享文件(包括 模块 )

    别的?(显然,除了我们目前的源代码管理产品之外)

    工具书类

    5 回复  |  直到 14 年前
        1
  •  8
  •   SqlRyan    15 年前

    我已经用过 Sourcegear's Fortress (一个包含所有内容的ALM-对于源代码管理,请查看它们的 Vault 产品)多年无投诉,支持共享。您基本上可以将一个文件从一个项目分支到另一个项目,第二个副本将保持最新,不需要额外的交互。

    该产品被设计为SourceSafe的替代品,由于VSS支持共享,所以保险库也支持共享。 作为一个附加功能,它们支持“固定”,即文件链接的接收者可以将其设置为特定的版本,而不接收任何附加的更新(如果他们需要的话)。如果他们不固定文件,他们将继续使用最新版本,但如果他们想要的话,在任何时候都可以选择固定。

        2
  •  2
  •   Roboprog    15 年前

    我不知道你需要多少自由度来解决这个问题。然而,对于这个问题来说,一个更传统的解决方案是建立一个 图书馆 在依赖它的项目之外。在“正式发布”位置引用库(assembly,.jar,.so,.pm,随便什么)。

    让“mod downs”开始,因为没有按要求回答问题,但听起来确实像是错误的提问。 对我来说 .

        3
  •  1
  •   Jim T    15 年前

    很明显,SourceSafe支持这一点(它在各个方面都非常糟糕,但确实支持这一点)。 我想知道SourceGear的保险库是否也支持这一点,因为它应该是SourceSafe的固定版本。

        4
  •  1
  •   Richard Berg    15 年前

    基于RoboProg的回答:对您的问题更一般的解决方案是更新“共享目标”中的makefile,以便它们通过引用合并“共享源”中的项目,而不是依赖于SCC系统来为它们进行此操作。

    如果公共功能可以很容易地分解成一个库(程序集,jar,C++头文件+ LIB),那就太好了!从长远来看,这将帮助所有人。现在可以使用各种独立的工具对库进行单元测试;既然双方的合同都已标准化,使用库也变得更加容易。此外,您现在可以将库视为具有变更管理功能的头等公民。可以在自己的分支中进行破坏性的更改;共享代码的其他团队的修复可以在存储库中与应用程序的其余部分一起流动;等等。

    但这些都不是绝对必要的。即使您在1个分支中完成了所有工作,或者即使所讨论的共享是一个foo.h,您也可以继续使用现有的SCM实践,只需进行一些调整。只要相对路径正确,我遇到的每个构建系统都能够将模块A中的文件合并到模块B中。如果您使用的是Visual Studio的*proj makefiles,则最快的方法是添加->现有项->导航到源文件->单击“保存”按钮上的下拉箭头->添加为链接。

        5
  •  0
  •   gahooa    15 年前

    我认为您将遇到的一般问题是更改每个存储库中的文件需要提交,以便保留历史记录。

    git 是一个很棒的版本控制系统。它们有子模块,可以用来做你想做的事情,除了每个存储库的维护人员需要发出一个命令来升级“共享文件”集。

    假设你有一个子模块 REPO/share ,要升级的每个存储库都需要:

    cd REPO/share; git pull
    

    如果您真的想,可以使用Git钩子100%地实现自动化。