代码存储库最佳实践[关闭]

2024-01-01

我在一家为各种客户进行大量定制开发的公司工作。有些项目是独特的,但其中许多项目也使用我们多年来开发的一组通用代码。这种模式长期以来一直运作良好。但我们目前正在从 SVN 迁移到 Mercurial (hg),因此我正在考虑如何最好地设置不同的存储库。

现在我们有一个用于内部工作的存储库。这些项目范围从基本实用程序(例如日志记录)到供内部使用的自定义应用程序。而且它还有大量未主动更新的旧代码,但会保留下来,以防某些旧的遗留客户端代码需要修改。

对于每个客户,我们都会创建一个单独的存储库,并将其所有代码放入专用存储库中。 这种结构的好处是,如果您想处理客户的代码,您只需从他们的存储库中获取所有内容,加上“核心”内部代码,您就拥有了所需的一切。一个缺点是客户端代码可能会变得陈旧,甚至与我们的核心代码的更改不同步。

但我也想听听其他人是怎么做的。拥有许多特定于客户的存储库和一个相当大的内部存储库是否有意义?一些客户的代码库巨大,而另一些客户的代码库非常小。为每个人都有一个回购有意义吗?

另外 - 我们将所有客户端工件放入每个客户端存储库中。这不仅包括源代码,还包括规格、合同、签名的 PDF、Excel、Visio、Word 和其他此类文档。这对我来说似乎很浪费,我正在考虑将工件与真实代码分开。其他人如何处理此类事情?


您可以执行以下操作:

  • 将核心代码放在一个中央存储库中
  • 将客户端代码放入特定于客户端的存储库中
  • do not将核心代码的副本直接放入客户端存储库中,而不是将核心代码存储库作为子存储库 http://mercurial.selenic.com/wiki/Subrepository

这给您带来的好处是您仍然可以提取客户端存储库并获取客户端的内容and核心代码。
另外,子存储库会自动指向核心代码存储库的某个版本,如果您想要更新的版本,则必须进行显式更新。因此,如果核心代码存储库同时更新,则客户端存储库中的子存储库也会更新not自动获取这些更改(这可能会破坏您的客户端代码)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码存储库最佳实践[关闭] 的相关文章

  • 为什么 show log 和 svn update 的版本号不同?

    当我对一个 svn 文件夹进行更新时 它会显示最新版本 更新被视为Completed At revision 116 但是当我确实显示该文件夹的日志时 它显示最新的修订号为100在历史上 我的问题是为什么两个版本号不同步 有关信息 当我执行
  • Delphi TImageList 位图更改

    我正在使用 Delphi XE2 Update 3 Update 4 与我们的一些第 3 方组件不兼容 因此我们尚未更新 我在我的应用程序中使用 TImageList 我注意到很多时候当它从源视图切换到表单视图 F12 时 突然之前未修改的
  • Mercurial on Phabricator:“远程:中止:流意外结束”

    我在尝试推送到远程服务器时遇到此问题 它是 Phabricator 上的 Mercurial 存储库 这是我的输出 hg commit m udpate README hg push pushing to ssh company serve
  • 加载了不兼容的 JavaHl 库

    我在使用 Subclipse 和 JavaHL 库时遇到问题 Subclipse 它给出了错误 加载了不兼容的 JavaHL 库 需要 1 8 x 或更高版本 我使用的是 Ubuntu 桌面 12 04 32 位 Subclipse 1 1
  • 如何通过中央 CVS 存储库在本地使用 Mercurial?

    目前我公司正在使用cvs进行版本控制 我想在本地使用 Mercurial 因为它具有灵活性和合并功 能 这将使我的工作变得更加轻松 这应该怎么做呢 First 本地获取CVS存储库 Second 在此 CVS 存储库上本地创建一个 Merc
  • Tortoise SVN 合并“@### 必须与 @### 有祖先关系”错误

    背景故事 找到了一份入门级 Web 开发人员的工作 当我开始工作时 首席开发人员就离开了 一切责任都在我身上 没用过SVN 盲目进去 Problem 我不断收到类似错误 svn svn svn xxx project name branch
  • 如何配置hudson忽略指定SVN文件夹下的更改?

    我正在寻找一种方法来忽略 Hudson 中指定 SVN 文件夹下的更改 这与 TeamCity 中的排除文件夹和 CC Net 中的过滤器相同 我在SVN GUI配置下没有找到任何配置选项 在 Hudson 1 334 中 在构建配置中的
  • Mercurial 在提交之前丢弃所有添加的文件

    刚刚犯了使用错误addremove尝试删除一些未使用而已删除的文件hg remove 现在有数百个文件将在下次提交时添加 无论如何 我是否可以快速删除所有这些添加的文件 而不必求助于 bash 脚本 甚至更糟hg removing or f
  • 制作 svn 存储库的独立副本

    我正在尝试克隆存储库 但它应该是彼此独立的副本 这背后有什么魔力吗 或者只是使用 svn 客户端并克隆它 Thanks Try svnadmin hotcopy http svnbook red bean com en 1 8 svn re
  • 删除生成的 Javadoc 中的注释“Generate by Javadoc on

    javadoc 命令会自动插入一条注释 如下所示 在每个生成的 HTML 文件中 这完全阻止了版本化 javadoc 的更改跟踪 因为在重新生成文档时每个文件都会被修改 我问的上一个问题说服我不要对任何 javadoc 进行版本控制 但它也
  • 如何使用 Visual Studio (vsdiffmerge) 作为 SourceTree for Mercurial 中的外部 diff 工具?

    我使用 Mercurial 作为源代码管理 并使用 SourceTree 来管理它 我想使用 Visual Studio 的内置差异和合并工具 vsdiffmerge 来比较文件 但这不起作用 我目前正在使用以下内容 差异命令 C Prog
  • SVN 提交前撤消删除

    如果您从 SVN 工作副本中删除了一个目录 但尚未提交 则如何将其恢复并不明显 当您输入 svn undo d 时 Google 甚至建议将 svn undo delete before commit 作为常见查询 但搜索结果没有任何帮助
  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • 有没有可以在 HTML 文档之间进行比较的 ruby​​ gem?

    事实证明 对两个不同的 html 文档进行比较是一个完全不同的问题 而不仅仅是对纯文本进行比较 例如 如果我在以下之间进行简单的 LCS 差异 Google and Google diff 结果不是 but a gt github com
  • 是否可以从本地文件系统获取TFS更改集编号?

    我有一个解决方案的本地副本 与TFS绑定 是否可以在不调用服务器的情况下从本地文件系统获取当前更改集信息 如果您可以在 assembly AssemblyFileVersion 1 0 0 RevisionNumber 您可以在那里设置更改
  • TortoiseSVN 无法连接到 SlikSVN Subversion 服务器

    我已经在工作组中的一台计算机上创建了 SubVersion 服务器 从我的开发盒中 我可以毫无问题地访问存储库并签入 签出文件 我刚刚安装了 TortoiseSVN 无论我做什么 它都不会连接到服务器上的存储库 我收到臭名昭著的错误 无法建
  • SVN错误155009:无法运行WC DB工作\无法打开文件\系统找不到指定的文件

    I found 信息贫乏 https www google com webhp q 22Failed 20to 20run 20the 20WC 20DB 20work 20queue 20associated 20with 22 20 2
  • Lotus Notes/Domino 开发版本控制的最佳实践

    请分享您如何对 Lotus Notes Domino 开发进行版本控制 我想将所有脚本 视图 自定义表单 脚本库等放入我们的 SVN 存储库中 半自动方法也被接受 即 如果我找到一种方法来获取一个文件中表单的所有事件脚本 并能够将其作为整个
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags

随机推荐