Version control 我应该如何在CVS托管的项目上工作,以(1)修复bug,(2)使用附加功能维护我自己的私有fork

Version control 我应该如何在CVS托管的项目上工作,以(1)修复bug,(2)使用附加功能维护我自己的私有fork,version-control,mercurial,cvs,Version Control,Mercurial,Cvs,问题 开源程序使用CVS进行版本控制。我想做一些bug修复,并向具有提交权限的开发人员提交补丁炸弹。我还希望维护我自己的半私有fork,它主要跟踪主代码库,但包含我自己的特性(目前,这些特性不应合并到主代码库中) 我更喜欢使用mercurial来满足我自己的版本控制需求,但如果需要的话,我愿意使用其他版本控制系统 我想: 能够轻松地创建补丁炸弹对当前的CVS源与我自己的错误修复 根据我自己的特点记录历史 在我的新特性fork中可以轻松地合并来自主目录树的修复和改进吗 轻松地将我自己的错误修复应用

问题

开源程序使用CVS进行版本控制。我想做一些bug修复,并向具有提交权限的开发人员提交补丁炸弹。我还希望维护我自己的半私有fork,它主要跟踪主代码库,但包含我自己的特性(目前,这些特性不应合并到主代码库中)

我更喜欢使用mercurial来满足我自己的版本控制需求,但如果需要的话,我愿意使用其他版本控制系统

我想:

  • 能够轻松地创建补丁炸弹对当前的CVS源与我自己的错误修复
  • 根据我自己的特点记录历史
  • 在我的新特性fork中可以轻松地合并来自主目录树的修复和改进吗
  • 轻松地将我自己的错误修复应用到我的新功能上
  • 能够在没有互联网连接的情况下工作并跟踪变更历史
  • 你对此有什么建议

    我当前的想法

    下面是我自己的最佳猜测,让你更好地了解我在想什么

    我将有3个mercurial存储库

    前两份回购协议按照()的规定进行管理。其中一个只是从CVS上游镜像最新的更改。我在这个repo中执行“cvs更新”,然后执行“hg提交”。第二个repo使用mq扩展将我的bug修复作为补丁保存,我从第一个repo中提取补丁,并每隔一段时间重新构建补丁。当我的补丁被合并到主树中时,我将从补丁队列中删除补丁/使它们永久提交


    第三种回购协议是我的本地分支。它将从第一次回购的克隆开始。然后每次我更新第一份回购协议时,我都会将其拉入回购协议3。我自己的功能将在本回购协议中作为提交直接呈现。当我修复一个bug时,我将从repo 2中导出一个补丁,并将其应用到repo 1中相应的pull中。

    我使用Git以类似的方式管理CVS存储库顶部的更改。我在Git中的解决方案使用本地分支而不是多个存储库,但它听起来与您提出的想法基本相似

    我发现,如果将所有CVS元数据(在
    CVS/
    子目录中)提交到镜像存储库中,这种安排效果最好。这意味着CVS元数据可以在其他存储库中复制,但不会造成任何伤害(如果需要,还可以运行类似于
    CVS diff
    的命令)