Git合并驱动程序问题

Git合并驱动程序问题

问题描述:

我试图让git允许我非常手动合并,因为我的代码是这样的(长篇故事,它是explained here)。我几乎以我想要的方式得到它,只是在特定情况下缺少某些东西。不应该太难: 我有自定义驱动程序使用WinMerge类似c:/wm/winmerge.exe $1 $2 $3(进入c:/wm/wmrg.sh),git config merge.mnl.driver = "c:/wm/wmrg.sh %B %A %A"echo *.xml merge=mnl > $GIT_DIR/info/attirbutesGit合并驱动程序问题

现在当我git merge dev,它打开WinMerge让我做的工作 - 辉煌。在下列情况下,它只是没有工作:犯有一些变化开发等待

有我的两个分支(开发)合并到生产。

  1. 回去master
  2. 重命名一些无关的变化文件(可以说,一些readme.txt文件以manual.txt)在dev并提交
  3. 转到devmaster合并这些变化 []新驱动程序启动并询问您是否应该将这些配置传递给dev中的其他文件。您退出WinMerge而不保存,因此不会迁移信息。在完成寻找的XML是txt的信息进行过滤,并在开发中现在获得改名]
  4. master,合并dev

在这里我想到司机又踢和行为关于XML的相同。不过由于某些原因,当你尝试git merge dev时,它决定自动合并这一切!

是否有任何一种'每分支'配置让我在这里?也许在git意识到我在最后一次合并之后没有做任何改变的时候,它可以在某个方向上覆盖文件。甚至,使用的合并类型是基于一些“较新的旧规则”,它发现情况是“微不足道的”决定哪些文件应该不管它的内容保持...

请指教..

感谢

+0

我还没有设法避免GIT的智能,但我设法使用'cherry-pick'将名称更改应用到我的** dev **分支而不会遭受自动合并。 – filippo 2010-06-23 08:30:10

我想我想通了..我在这里实际上是一个概念问题。它不能在git中完成,至少不是我想要的。

这整个的努力是为了确保当我的开发周期是做我必须开发主在同一水平提交分支机构。从理论上讲,只有一些特定于他们的环境的线才有所不同,但是,所有其他代码都是相同的。

如果我得到了正确的结果,那么git中的每个提交都会从该版本中标识为SHA-1,因此如果任何文件相差一个字符,则不能提交相同的提交。

我上面描述的问题是只是git是聪明的,并找到一种方法来使主和dev 完全一样根据我的行动,从而使其进入最终状态。

正如我评论,我成功地应用特定的变化来回使用cherry-pick,但唯一真正的办法有开发正确的追踪会使用关键字扩展的过滤器(由VonC here和描述here,和其他许多人在那里)

感谢所有帮助,

F。

+0

有趣的反馈。我同意你的结论。 – VonC 2010-06-23 10:44:40

的Git可能认为:

  • 因为主已经合并到DEV(即使一些文件未被改动)
  • 从dev到master的合并是微不足道的,因为剩下的唯一增量是新文件,而不是修改文件。

而且由于合并驱动程序只会踢入普通文件,它不会在第二次合并的情况下。

+0

我同意,这是有道理的。想知道是否有任何方法来阻止这种情况。我正在研究.gitattributes手册,合并退出状态可能会产生一些影响......将做一些实验。 – filippo 2010-06-23 07:33:10