Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial每个功能工作流程,单个开发人员_Mercurial_Workflow - Fatal编程技术网

Mercurial每个功能工作流程,单个开发人员

Mercurial每个功能工作流程,单个开发人员,mercurial,workflow,Mercurial,Workflow,我读过类似的文章,如官方的Hg指南,许多文章和指南,我仍然不清楚什么是按功能开发的最佳Hg工作流。也许网络上的一些文章已经过时了,没有包含Hg的最新功能。显然,在如何实现这一点上也有很多选择 我是一名单独开发人员,在一个项目中,修复或功能的请求将作为一项任务提交给我,比如“任务#546-更改任何内容”。有些任务需要几天的时间,有些任务需要几个月才能完成,而且一次执行的任务往往多达十几个。在请求者批准任务后,任务将被发送到最终站点 《Hg指南》似乎建议每个功能都有一个克隆。但在我的驱动器上有十几个

我读过类似的文章,如官方的Hg指南,许多文章和指南,我仍然不清楚什么是按功能开发的最佳Hg工作流。也许网络上的一些文章已经过时了,没有包含Hg的最新功能。显然,在如何实现这一点上也有很多选择

我是一名单独开发人员,在一个项目中,修复或功能的请求将作为一项任务提交给我,比如“任务#546-更改任何内容”。有些任务需要几天的时间,有些任务需要几个月才能完成,而且一次执行的任务往往多达十几个。在请求者批准任务后,任务将被发送到最终站点

《Hg指南》似乎建议每个功能都有一个克隆。但在我的驱动器上有十几个完整的网站副本似乎。。。浪费的我很乐意尝试,但我看到了其他更有意义的建议。人们真的一次在他们的开发机器上有十几个站点的副本吗

命名分支一开始听起来像我想要的,在哪里我会命名一个分支“task 546”处理它,然后在它发布时将它合并回来。我看到很多关于名称永久性的讨论,并且有这么多分支(尽管它们可以关闭)。有些人似乎关心这一点,有些人则不关心。我对汞的了解还不够,不知道我是否关心它,以及它的缺点到底意味着什么

最后,书签似乎在最近的文章中很流行,使用书签的最佳方式似乎是设置一个书签,如“task 546”,然后当您使用一个包含任务编号的提交消息将其合并回主分支时,保留对工作中所做工作的引用。我知道你可以删除书签,但不清楚在最终合并后我是否需要这样做

因此,我对组合方法的想法是:

一次回购

三个命名分支:

  • “默认”保存站点的发布版本
  • 我在“dev”上进行功能开发
  • “测试”,用于保存客户正在审查的所有任务
在“dev”分支中,我会为我正在处理的每个任务使用书签,因此我会为每个任务设置一个标题

我的任务/功能工作流程是:

  • 更新“dev”命名分支的主线
  • 使用任务“task#123”的书签启动新分支
  • 提交更改,直到我准备好让客户审查为止
  • 将“task#123”合并到“test”分支中
  • 将“测试”部署到测试服务器
  • 重复提交、合并和部署,直到准备好生产
  • 批准后,使用包含任务名称的提交消息与“dev”分支的主线合并
  • 将“dev”合并到“default”分支中
  • 将“默认”分支部署到实时服务器
  • 将“默认”合并到打开的要素分支中
  • 想法?我是否最好只为每个功能创建一个克隆,并推出一个“实时”和“测试”的repo


    编辑:我从一些链接中看到,我应该关闭“默认”进行开发,因此我对列出的流程的第一个更改是使用名为“生产”的分支,而不是名为“开发”的分支。

    我喜欢它+1.我会这样做的

    书签式的分支(类似Git的“分支”)至少在两种常见情况下效果不佳

  • 跨任务在开发过程中合并
  • 时光倒流机器,当你想看到“任务123的整个变化历史”(你可以通过视觉和使用旋转集,做一些鬼脸和跳跃)
  • 虽然使用命名分支并没有这样的问题,而且,顺便说一句,使用命名分支(并且只有默认分支作为聚合点)的工作流将不那么复杂,更符合逻辑

    • 默认值仅包含来自任务分支的合并集,默认值的开头总是“稳定版本”
    • 指定分支机构的负责人是在制品;分支,合并为默认-已完成(并由客户接受-见下文)工作
    • 默认情况下,合并到任务分支(在任务开发之后,在将任务分支合并到默认状态之前)相当于您的“测试”:在不影响主线的情况下,您可以测试功能的最终状态,集成到稳定的应用程序中,向客户显示结果
    • 通过将命名分支合并到默认值,已接受的工作添加到稳定主线
    • 过去每个任务的更改历史(完整历史)可以通过使用日志的单个、简单、简短、难忘的revset轻松恢复:
      -r“branch(task-ID)”

    既然你问“我会过得更好吗…”,那就意味着有某种方法可以量化一种解决方案比另一种解决方案好多少。您提出的解决方案有效吗?是的。它会扩展吗?根据,是的。量化一种解决方案是否优于另一种解决方案的一种方法是检查所有需要的事项,以确保代码的持久性、良好性等。如果您在本地有十几个分支,则在任何时候处理特定任务都很容易,因为您必须手动选择要处理的正确文件夹(克隆)。但是,您能否确保所有这些克隆都能在磁盘崩溃时存活下来?另一方面,如果您使用普通的分支或书签(与中央回购同步),即使您的机器被盗、丢失或完全被冲洗,您仍将保留所有内容。我会使用branchs/bookmarks.@LasseV.Karlsen,对我来说,“更好”是1)我的代码是否安全且易于使用,2)流程是否高效且在遵循过程中出错率最低。大多数情况下,我确信我正在尝试做的事情是相当普遍的,其他人也以同样的方式工作,可能已经尝试了一些工作流方法,并且对哪些方法对他们最有效有了一些反馈。就我个人而言,我尽量避免公开工作,因为这通常意味着工作一开始就定义不清。换句话说,我尽量避免有几个大的