Mercurial - 处理文件名冲突
Mercurial - handling filename conflicts
一些上下文:
我正在尝试实施 K. Scott Allen's technique for database schema versioning,并且由于这个特定项目的不断发展,我选择使用更简单的 1.sql, 2.sql, 3.sql, ..., n.sql
编号方案而不是那里提到的版本控制方案.
但是,这通常会导致这样的情况,即在两个不同分支中更改架构会导致创建同一个新文件,{n+1}.sql
。
我使用 Mercurial 作为我的版本管理软件,特别是 Windows 上的 TortoiseHG 和默认的 diff 软件。当我将一个开发分支合并到 stable
时,Mercurial 检测到冲突,但提议合并这两个文件。理想情况下,其中一个需要重命名为 {n+2}.sql
.
这可以通过两种方式完成:首先,可以推迟合并的提交并在那里编辑文件。但是,在这个阶段,合并后的文件 {n+1}.sql
是其中一个文件的某些或 none 的杂乱组合。
第二种方法撤消合并,到开发分支,重命名文件,重新提交,重新合并。
我的问题:
是否有可能让 Mercurial 以不同的方式处理每个 在不同分支中创建 的文件与仅 修改 在不同分支中的文件合并时的分支?
理想情况下,如果我面临 post-合并,与 {x+1}.sql
和 {x+1}.sql.mergebranch
预提交,那么很清楚哪个文件需要重命名,生活将是更简单。
有两个选择,一个比较难,一个比较麻烦。
首先是找到并配置或创建一个 diff 工具来处理您认为合适的这些文件的合并。您还可以为特定文件类型定义特定的差异工具。这就是您可能想要查找的内容
或者,您可以简化当前的合并过程,这有点老套。执行合并并在提交之前修复它:
- 将
{x+1}.sql
恢复到以前的版本:hg revert -rHASH1 {x+1}.sql
- 创建第二个 sql 文件:
hg cat -rHASH2 {x+1}.sql > {x+2}.sql
其中 HASH1 和 HASH2 是合并的两个父项的变更集 ID。
一些上下文:
我正在尝试实施 K. Scott Allen's technique for database schema versioning,并且由于这个特定项目的不断发展,我选择使用更简单的 1.sql, 2.sql, 3.sql, ..., n.sql
编号方案而不是那里提到的版本控制方案.
但是,这通常会导致这样的情况,即在两个不同分支中更改架构会导致创建同一个新文件,{n+1}.sql
。
我使用 Mercurial 作为我的版本管理软件,特别是 Windows 上的 TortoiseHG 和默认的 diff 软件。当我将一个开发分支合并到 stable
时,Mercurial 检测到冲突,但提议合并这两个文件。理想情况下,其中一个需要重命名为 {n+2}.sql
.
这可以通过两种方式完成:首先,可以推迟合并的提交并在那里编辑文件。但是,在这个阶段,合并后的文件 {n+1}.sql
是其中一个文件的某些或 none 的杂乱组合。
第二种方法撤消合并,到开发分支,重命名文件,重新提交,重新合并。
我的问题:
是否有可能让 Mercurial 以不同的方式处理每个 在不同分支中创建 的文件与仅 修改 在不同分支中的文件合并时的分支?
理想情况下,如果我面临 post-合并,与 {x+1}.sql
和 {x+1}.sql.mergebranch
预提交,那么很清楚哪个文件需要重命名,生活将是更简单。
有两个选择,一个比较难,一个比较麻烦。
首先是找到并配置或创建一个 diff 工具来处理您认为合适的这些文件的合并。您还可以为特定文件类型定义特定的差异工具。这就是您可能想要查找的内容
或者,您可以简化当前的合并过程,这有点老套。执行合并并在提交之前修复它:
- 将
{x+1}.sql
恢复到以前的版本:hg revert -rHASH1 {x+1}.sql
- 创建第二个 sql 文件:
hg cat -rHASH2 {x+1}.sql > {x+2}.sql
其中 HASH1 和 HASH2 是合并的两个父项的变更集 ID。