version-control - 如何管理共享库?

标签 version-control

每次我做一个项目时,我都会开发几个通用的例程/模块/库,我希望我会在其他项目中使用它们。

由于开发速度的原因,我没有花很多时间使这些模块变得完美——对于这个项目来说已经足够好了,并且有足够的文档和可隔离性,我可以轻松地将它们添加到另一个项目中。

到现在为止还挺好。

现在,当我在另一个项目中使用它们时,我不可避免地会改进它们——添加新特性/功能、修复错误、使它们更通用等。

那时我有几个问题:

  • 我需要为我正在处理的代码维护模块中的更改
  • 我需要在中央“模块”存储库中维护这些相同的更改
  • 我需要确保更新的模块可用于旧项目,但不会自动用于旧项目,有时甚至是我已经在处理的现有项目。

  • 你如何管理这个?当您的团队在不同项目中处理不同模块时,这些问题有何不同?

    -亚当

    最佳答案

    如果你的所有项目都使用 Subversion,你可以简单地使用 svn:externals :这允许一个存储库引用另一个存储库,可选择固定在特定修订版。例如,

    svn://svn/shared
    svn://svn/project1
    |- 目录1
    |- 目录2
    \- svn:externals "shared -r 3 svn://svn/shared"
    svn://svn/project2
    |- 目录3
    \- svn:externals "shared -r 5 svn://svn/shared"

    将您的更改提交到 svn://svn/shared ,并修改svn:externals准备好后,在各个项目中使用属性。

    否则,使用其他 VCS,您可能只是在 shared 上保留一堆标签。 , 每个项目使用 shared ,指向他们使用的版本。准备好后将每个标签推进到更高版本。这需要手动更新每个项目的 shared 副本, 但是(使 svn:externals 好的一件事是它自动发生)。

    如果您要 fork /分支 shared对于每个单独的项目......嗯,这可以工作,但需要人力来维护和合并更改。

    [编辑]

    更多引用资料:

    External Definitionssvn book有关 svn:externals 的教程和更多详细信息, 和 git-submodule tutorial DVCS 中的类似功能 git .

    关于version-control - 如何管理共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179004/

    相关文章:

    git - 如何查看只有一个用户提交的 git 日志?

    git - 我如何对项目的 cron 作业进行版本控制?

    svn - 将方法从一个文件移动到另一个文件,同时保留其历史记录

    sql-server - 如何将 SQL Server 数据库对象添加到 TFS?

    php - 我的公司是 Rackspace Cloud 客户端(免费提供给我们),我正在尝试找到一些设置版本控制的方法

    shell - 我如何(快速)判断 $PWD 是否在 git/hg 存储库中?

    git - 在网站上使用 Git

    git - Oracle SQL Developer 导出源以进行版本控制

    svn - 当修订跨分支重叠时,使用 svn log 提取标签之间的提交消息

    git - 我们可以在已经与 master merge 的分支上提交吗?