使用Mercurial,通常的做法是在同一个项目中创建2或3个克隆作为备用?
我听说,如果我们正在开发一个功能,然后我们需要快速修复一些东西,我们可以制作一个临时克隆,然后修复错误,然后推到中央回购 首先,临时回购协议是从中央回购协议克隆而来,还是从我们的本地回购协议克隆而来 另外,将2个或3个repo从中央repo克隆到硬盘驱动器是否好,因此,如果我们正在使用本地repo 1开发功能,并且需要快速修复错误,那么我们可以转到本地repo 2,执行使用Mercurial,通常的做法是在同一个项目中创建2或3个克隆作为备用?,mercurial,dvcs,Mercurial,Dvcs,我听说,如果我们正在开发一个功能,然后我们需要快速修复一些东西,我们可以制作一个临时克隆,然后修复错误,然后推到中央回购 首先,临时回购协议是从中央回购协议克隆而来,还是从我们的本地回购协议克隆而来 另外,将2个或3个repo从中央repo克隆到硬盘驱动器是否好,因此,如果我们正在使用本地repo 1开发功能,并且需要快速修复错误,那么我们可以转到本地repo 2,执行hg pull,hg up,并修复错误,和hg push,并在不影响本地回购1的情况下修复bug 因此,我们将始终保留本地rep
hg pull
,hg up
,并修复错误,和hg push
,并在不影响本地回购1的情况下修复bug
因此,我们将始终保留本地repo 1、2、3,以便将它们作为备用,而无需每次创建一个新的临时克隆,这可能会非常耗时
更新:我认为答案中建议的做法是:仅从中央回购克隆到本地回购一次(并将此本地回购称为“主回购”),然后“按需”从本地回购克隆,修复tmp回购中的紧急错误,并直接从tmp回购推回到中央远程回购?然而,不是说在开发过程中,我们应该经常提交(甚至在功能完全完成并且没有bug之前),所以如果我们从本地repo克隆到tmp repo,克隆不也会包括那些提交的文件吗?如果紧急修复需要修改本地repo中处于“中间”状态(在开发过程中)的文件,该怎么办?我的做法是对中央存储库进行“主”克隆,然后针对我正在处理的每个功能或错误修复,克隆“主”。当我完成一个功能时,我会把它推回“主”,然后当我有信心时,我会推回中央reo
以下是一些我的做法是对中央存储库进行“主”克隆,然后针对我正在处理的每个功能或错误修复,我克隆“主”版本。当我完成一个功能时,我会把它推回“主”,然后当我有信心时,我会推回中央reo
以下是一些答案实际上取决于将变更集推送到主回购的成本 如果您的主回购很少(或没有)质量门,那么推动变更集对您和整个团队来说都很便宜。在这种情况下,您可以选择动态克隆主repo,执行快速修复并将其向上推,以便尽快将其传递给团队的其他成员和您的自动构建(假设您有CI集)
如果您的主回购有一套复杂的质量关卡(预推伙伴测试/验证、自动集成回归、日常构建和自动化等),那么对主回购进行任何更改对您和您的团队来说都是非常昂贵的。在这种情况下,您应该考虑克隆您的主要本地回购,进行修复,并将其推回到您的其他更改中,以便在返还主回购之前批量完成您的工作。 < P>答案实际上取决于将变更集推到主回购的代价有多大。< /P> 如果您的主回购很少(或没有)质量门,那么推动变更集对您和整个团队来说都很便宜。在这种情况下,您可以选择动态克隆主repo,执行快速修复并将其向上推,以便尽快将其传递给团队的其他成员和您的自动构建(假设您有CI集)
如果您的主回购有一套复杂的质量关卡(预推伙伴测试/验证、自动集成回归、日常构建和自动化等),那么对主回购进行任何更改对您和您的团队来说都是非常昂贵的。在这种情况下,您应该考虑克隆您的主要本地回购,进行修复,并将其推回与其他更改合并,以便在返还主回购之前批量完成您的工作。 < P>我会疯狂地试图跟踪多个本地克隆的状态。按需克隆是一条道路。如果克隆速度非常慢,您有两种选择:
- 如果速度慢是由于网络连接造成的,则可以设置一个本地克隆,该克隆自动镜像远程repo,并在远程repo获得更改集时立即更新
- 如果这种缓慢是Mercurial固有的,那么也许您应该重新考虑Mercurial是否在版本控制系统中提供了您所需要的
- 如果速度慢是由于网络连接造成的,则可以设置一个本地克隆,该克隆自动镜像远程repo,并在远程repo获得更改集时立即更新
- 如果这种缓慢是Mercurial固有的,那么也许您应该重新考虑Mercurial是否在版本控制系统中提供了您所需要的
clone-U
来避免创建工作副本,因此我不想在那里工作。创建新的本地克隆
@ (under development)
|
| @ (fixed a bug)
|/
|
o (last good commit)
|