2012-09-28 68 views
1

我在我的Mercurial存储库中有两个非常大的项目。
我正在将它们两个重构为较小的子项目。
这涉及到将源项目集从父项目目录移动到子项目的子目录中。
对于大多数文件,我只是将它们移动。
对于某些文件,我也必须进行更改。
在我提交我的重构更改之前,我想查看我对任何源文件所做的任何编辑。在GUI工具SourceTree中 - 它显示我的任何修改(除了指示文件已被移动/重命名)。有什么方法可以确定哪些文件也是从Mercurial命令行修改的?Mercurial移动跟着差异

这里是一个具体的例子是什么我谈论:

iphonedev:EveryScape cdoucette $汞柱状态-C工程/的iOS/ESSDK/src目录/ ESSDK - 杂项/ ESDataManagerInMemory.m
一个工程/ iOS版/ESSDK/src/ESSDK-Miscellaneous/ESDataManagerInMemory.m 工程/的iOS/ESSDK/src目录/ ESDataManagerInMemory.m

我如何比较旧的版本与当前的工作副本在不同的位置?

如果我只是这样做:

hg diff Engineering/iOS/ESSDK/src/ESSDK-Miscellaneous/ESDataManagerInMemory.m 

它让我看到文件的全部内容(因为在技术上它是在新位置添加)。

相反,我想之间差异:

  1. 工程/的iOS/ESSDK/src目录/ ESDataManagerInMemory.m(仓库的副本 - 以前的版本)
  2. 工程/的iOS/ESSDK/src目录/ ESSDK,杂项/ESDataManagerInMemory.m(工作副本)

我也搜索过类似的问题。这篇文章很接近 - 但似乎只有在我继续并承诺修改之后才有意义。相反,我想在提交之前查找并检查我的更改。
Mercurial diff not working after move/rename

回答

1

我想剧本它是这样的:

hg cat -r <oldrev> <oldfilename> > oldfile.oldrev 

diff <newfilename> oldfile.oldrev