【问题标题】:Is it possible to Create Patch in Eclipse from changes that have already been committed?是否可以从已经提交的更改中在 Eclipse 中创建补丁?
【发布时间】:2009-11-17 14:44:05
【问题描述】:

我使用 Eclipse 中的 Create Patch 工具为未提交的更改创建补丁。我正在寻找一种在 Eclipse 中为已经提交给 VCS 的更改创建补丁的方法。

除非我错过了什么,否则我认为这是不可能的,但是否有插件可以添加此功能?例如使您能够在历史视图中选择两个版本并在它们之间创建补丁或比较两个分支并能够从同步视图中的结果创建补丁?

我很高兴从命令行创建此类补丁,但如果可能的话,我正在寻找一种简化/集成流程的方法。

感谢您的帮助。

更新:如果有任何建议是针对特定源代码控制系统的,我对 CVS、SVN 和 Mercurial 特别感兴趣。再次感谢。

【问题讨论】:

    标签: eclipse plugins patch


    【解决方案1】:

    使用 subclipse,您可以在历史视图中选择目录的两个修订版,比较它们并将补丁保存为统一的差异。

    【讨论】:

    • 所以你使用的是SVN?什么是 VCS?
    • VCS = 版本控制系统,CVS、SVN 等的通用名称。
    【解决方案2】:

    我刚刚在提交后做了一个补丁 SVN! :)

    • 进入“SVN存储库”
    • 转到项目的根目录。
    • 点击“比较”
    • 选择“输出文件的统一差异”
    • 点击“选择”并选择文件的名称和位置
    • 点击“确定”

    【讨论】:

    • 这对我有用,但实际上是右键单击目录,然后“比较...”,然后“分支/标签...”,然后我选择了以前的版本分支,并选择“统一差异输出文件”选项
    【解决方案3】:

    我做了一些广泛的研究......我发现没有办法使用实际的 Eclipse 比较编辑器根据“本地历史”部分的差异生成 .patch 文件。

    我将为此创建一个新功能请求。

    【讨论】:

    • 效果如何?没有“创建补丁”的“应用补丁...”令人抓狂。我必须隐藏我的更改,但我没有 GIT。
    • 我不记得我是否曾经跟随并创建了那个嗯是前一阵子
    【解决方案4】:

    可以使用“SVN Repository explorer”透视图来完成。

    • 导航到要比较的根元素(通常是树干文件夹)
    • 显示“历史视图”(如果尚未显示)
    • 从“历史视图”中选择两个修订版
    • 右键单击两个修订版本之一,然后在上下文菜单中选择“创建补丁...”。

    【讨论】:

    • 您在哪个版本的 Eclipse 上执行此操作?我似乎在 Kepler 上找不到该功能。
    • @Andrew:我目前正在使用 Eclipse Luna,它运行良好。但是,我使用以前版本的 Eclipse 编写了这个答案。不确定是不是开普勒。可能是朱诺。
    • 在历史视图中执行此操作时,我没有可用的“创建补丁”,只能生成更改日志、比较和刷新视图。
    【解决方案5】:

    根据其他答案,不,目前不可能。

    但现在,这里以 SVN 为例进行手动解决(我想其他 VCS 将允许进行非常相似的比较):

    • 创建第二个 Eclipse 工作区;工作区 2。
    • 确保 Workspace 2 具有用于合并“目标”的正确代码,而原始 Workspace 1 具有您忘记从中获取补丁的代码。
    • 使用能够比较目录的合并工具手动比较工作区 1 和 2(在 Windows 上,我喜欢 Araxis Merge,但 WinMerge 也可以)。
    • 打开每个文件并确保其中只有您所做的更改,如果还有其他更改,则必须将更改的每一行都跨过,如果没有其他人更改目标文件,则可以复制整个文件跨越。
    • 同步工作区 2(但不要签入!)以便您可以看到现在所做的更改。
    • 在 Workspace 1 中,打开“SVN Repository Exploring Perspective”
    • 右键单击代码签入的文件夹(可能在“分支”或“主干”下)->“比较...”,它应该已经在 之前填写了修订号 em> 你的签到。
    • 您现在可以查看您签入的代码(您忘记打补丁)与签入之前的版本的更改。
    • 让工作区 1 和 2 并排打开,并以可视方式运行每个更改的文件,以确保它们匹配从 1 现在出现在 2 中的所有内容。

    非常、非常乏味,但它应该能够完成所有更改。

    【讨论】:

      【解决方案6】:

      当我在 Eclipse 中无法做到这一点时(我只需要使用 CVS),我尝试了其他可用的软件,发现 SmartCVS 可以做到。但是,此功能仅在 Pro 付费版本中可用,并且当您有更多代码时会花费一些时间(相比之下有点慢)。

      如果有人知道的话,我想知道一些具有这种能力的开源软件。谢谢

      【讨论】:

        猜你喜欢
        • 2013-02-08
        • 1970-01-01
        • 2014-11-28
        • 2011-07-06
        • 1970-01-01
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        相关资源
        最近更新 更多