在Hg中区分两个版本

时间:2011-06-22 15:48:25

标签: eclipse version-control mercurial diff dvcs

我试图查看项目的两个版本之间的差异。我最初的想法是这样做的:

  1. 创建新存储库
  2. 将第一个版本提交到存储库
  3. 使用第二个版本覆盖第一个版本,提交到存储库
  4. hg diff两个版本
  5. 这不起作用,因为当第二个版本覆盖了第一个版本时,Mercurial假设每个文件都被更改了。实际上只有少数文件被更改,我想看看每个文件中具体改变了什么。

    WinDiff给我一个已更改的文件列表,但就是这样,所以我真的想用Hg来获取具体信息。

    编辑:我正在使用Eclipse。我具体做的是创建一个新的Java项目,使用Eclipse的导入功能导入我想要的源文件,然后将该项目提交到我的存储库。然后我再次使用import将版本2导入到同一个项目中,以便覆盖第一个文件。我留下的文件名称相同但是版本2文件。然后我将新文件提交到存储库。

    我的Mercurial版本是1.8.3。执行上述步骤只给我一个变更集。

    另外,在创建diff时,有一种方法可以指定只区分Java文件,而不是文本或属性等吗?

3 个答案:

答案 0 :(得分:1)

您的程序合理,只需记住使用hg addremove,就像评论中指出的Lasse一样。所以完整的程序是:

  1. 创建新存储库
  2. 将第一个版本导入存储库
  3. 运行hg addhg commit
  4. 删除除.hg
  5. 以外的所有文件
  6. 将第二个版本导入存储库
  7. 运行hg addremovehg commit
  8. hg diff两个版本
  9. hg addremove步骤甚至会检测在两个版本之间重命名的文件。你也写道:

      

    另外,在创建diff的时候,有一种方法可以指定只扩散java文件,而不是文本或属性等吗?

    是的,您可以使用--include标志:

    $ hg diff -I '**.java'
    

答案 1 :(得分:0)

我不明白为什么你不能直接在项目的原始存储库中使用Mercurial。

要查看项目的REV1和REV2之间对Java文件的更改:

hg diff -r REV1 -r REV2 -I **.java

答案 2 :(得分:0)

在eclipse中区分两个版本的文件:

  1. 右键单击该文件,然后转到Team>显示历史
  2. “历史记录”视图应该打开并显示文件的所有已提交版本
  3. 双击要与头部对齐的版本。