gpt4 book ai didi

svn - 在不同项目之间共享同一个文件

转载 作者:行者123 更新时间:2023-12-04 14:08:51 25 4
gpt4 key购买 nike

对于版本控制,我们目前使用 Visual Source Safe,并且正在考虑迁移到另一个版本控制系统(SVN、Mercurial、Git)。

目前,我们大量使用 Visual Source Safe 的“共享”文件功能。这使我们能够在单个产品的设计和运行时之间以及多个产品之间共享代码。

例如:

**Product One**
- Design
Login.cpp
Login.h
Helper.cpp
Helper.h
- Runtime
Login.cpp
Login.h
Helper.cpp
Helper.h

**Product Two**
- Design
Login.cpp
Login.h
- Launcher
Login.cpp
Login.h
- Runtime
Login.cpp
Login.h

在此示例中,Login.cpp 和 Login.h 包含我们所有项目所需的通用代码,Helper.cpp 和 Helper.h 仅用于产品一。在 Visual Source Safe 中,它们在特定项目之间共享,这意味着无论何时在一个项目中更新文件,它们都会在与之共享的任何项目中更新。

这是一个简单的例子,但希望它解释了我们为什么使用共享功能:减少重复代码的数量,并确保在修复错误后所有项目都可以自动访问新的修复代码。

在研究了 Visual Source Safe 的替代方案之后,似乎大多数版本控制系统都没有共享文件的概念,而是似乎使用了子存储库的概念。 ( https://www.mercurial-scm.org/wiki/subrepos http://svnbook.red-bean.com/en/1.0/ch07s03.html)

我的问题(毕竟)是关于使用其他版本控制系统实现这一目标的最佳实践是什么?
  • 我们是否应该重组我们的项目,使文件的两个副本不存在而使用包含目录?例如

    产品一
  • 设计
    登录.cpp
    登录.h
  • 运行
    登录.cpp
    登录.h
  • 常见的
    助手.cpp
    助手.h

  • 这仍然需要处理 Login.cpp 和 Logon.h
  • 共享文件是否应该移动到他们自己的存储库,然后编译成 lib 或 dll?这将使错误修复更加耗时,因为必须编辑然后重建 lib 项目。
  • 我们应该使用外部存储库还是子存储库?
  • 我们是否应该将我们的项目(即运行时、设计和启动器) merge 到一个大项目中?

  • 任何帮助,将不胜感激。我们有一种感觉,我们的项目设计已经基于我们使用的工具而发展,现在我们正在考虑切换工具,我们很难看到如何最好地修改我们的实践。

    或者也许我们是那里唯一这样做的人......?

    此外,我们所有的东西都使用 Visual Studio。

    谢谢。

    最佳答案

    我只能从 SVN 的角度讲,但是将多个项目中使用的文件存储在一个单独的模块中是很常见的(SVN 有模块的概念,我认为这就是您在提到子存储库时的意思)。

    我这样做的方法是将多个项目所需的通用代码作为单独的模块 checkin 。如果您调用此模块 Design并且您的其他两个产品在 SVN 中 checkin 为 ProductOneProductTwo ,那么您只需查看DesignProductOne模块,制作 ProductOne取决于 Design用于编译。

    在 Visual Studio 中,工作区称为解决方案,可以包含多个项目。因此,您可以将所有三个模块都作为项目并将 ProductOne项目依赖 Design项目。它是如此简单。

    关于svn - 在不同项目之间共享同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914846/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com