我们正在从 SVN 迁移到 Mercurial,这个问题实际上从第一天就出现了。因此,给出的是:
- 共享的 Mercurial 存储库位于专用服务器上,并会持续备份。
- 开发人员提取修订版本、对其进行处理、进行本地提交,然后将其推送回共享存储库。
- 开发人员希望备份他们的本地提交。
- 备份引擎是 Mercurial。
- 备份的提交永远不会被拉取,除非特定开发人员丢失了尚未推送的工作。这种情况预计很少发生。
- 从备份中恢复提交应该相对轻松。
我倾向于提供一个特殊的备份脚本,它可以执行如下操作:
hg push -fr REV URL
正如您所看到的,我同意在备份存储库中拥有多个头,除非您说服我。
因此,问题是关于 REV 和 URL,即我看到以下选项:
- REV = 默认,每个设备的 URL- 每个开发人员都有一个专用的备份存储库。
- 每个开发者的 REV,所有开发者的 URL 相同- 每个开发人员在同一个备份存储库中都有一个专用分支。
- REV = 默认,所有 URL 相同- 所有开发人员都将他们本地的提交备份到同一个备份存储库的默认分支中。
我对 Mercurial 的使用经验不多,因此很难决定哪个选项最好。有人能给我一些建议吗?
编辑
我现在意识到我的问题暴露了我对 push 命令的完全误解。当然,我的意思不是push -fr REV URL
。我真正想说的 REV 是 BRANCH,因此选项应该是:
- BRANCH = 默认,每个设备的 URL
- 每个开发人员都有一个 BRANCH,所有开发人员的 URL 都相同
- BRANCH = 默认,所有 URL 相同
接下来,我不知道如何推送到不同的分支。
例如,一位开发人员在默认分支中工作,并希望将其本地提交备份到所有其他开发人员共享的特殊备份存储库中。当然,这个备份存储库不是开发人员从中提取新更改的存储库。无论如何,备份需要转到专用于该特定开发人员的分支,如选项 2 所述。我该怎么做?我如何告诉 push 将更改推送到不同的分支?
答案1
(顺便说一句:从逻辑上讲,你缺少了第四个选项,
- 每个开发者的 REV,每个开发者的 URL。
但这没什么意义。
我认为,如果每个开发人员都有自己的备份存储库,那将会很有用。想象一下“恢复”的情况:您正在丢失本地工作空间,必须从备份中恢复它。在这种情况下,您不一定想要其他人未推送的内容(或者您想要吗?)。如果您尝试推送到“真实”存储库,这可能会对您造成伤害。
default
在一个分支内工作的每个人都不会工作得很好,因为这会干扰在分支、testing
和devel
/或中发生的“日常工作” experimental
。(仅举例。)
=> 每个开发人员的 URL。
对于应该推动什么的问题:只是一切,所以不要给出任何-r
论点。