【问题标题】:Diff multiple versions of a project区分项目的多个版本
【发布时间】:2012-08-07 09:30:15
【问题描述】:

我最近开始了一份新工作,负责开发现有系统。系统(如果重要的话是 PHP 站点)设置了三个实例。

  • 实时网站(供员工和客户使用)
  • 测试站点(主要用于向员工演示功能请求)
  • 开发网站(由以前的开发人员使用)

这似乎是一件合理的事情(他们没有设置 SVN 服务器)。但是现在我已经进入了几个星期,我注意到代码(和数据库模式)在所有三个站点中都不同。我预计 dev 和 live 之间会有差异,但 live 具有 dev 没有的功能。

我已经运行了CLOC,我正在查看不同版本之间的大约 180 个修改文件和 110 个新文件。是否有任何软件或更简单的方法来比较所有版本的代码,而不仅仅是逐个文件执行 diffs?

【问题讨论】:

    标签: diff


    【解决方案1】:

    meld 非常适合以向下钻取的方式递归地比较整个文件夹(和文件)。

    【讨论】:

    • 你知道Windows版本的效果如何吗?如果 Windows 有点不稳定,我可以将代码带回家并在我的计算机上使用 Linux 版本。
    • 根据我上次在 Windows 上的安装(一年多前),Windows 版本运行良好,但在记住最近的文件时出现问题。我已经使用一些批处理文件/包装器解决了这个问题,但最新版本可能已经解决了这些问题。如果尚未安装 GTK 运行时,您还需要安装。
    • 似乎在 Windows 上运行良好。它甚至有我没想到的三种方式比较:D
    • @Dracs 即使作为文件级差异/合并工具,它也是最重要的;它有相当多的粉丝群:)
    • 总体来说不是一个糟糕的程序,但有几次崩溃。但并没有从他们那里失去任何东西。我只花了大约 4 个小时就完成了这一切。现在进行一些适当的版本控制设置。
    【解决方案2】:

    公然插入:如果您有兴趣区分所有三个 网站(而不是一次区分两个),您可能对my difdef utility 感兴趣。它可以生成 N 个目录的合并 à la diff -r -D,但与传统的 diff 不同,它适用于 N>2 和 N=2。 (与diff3 不同,它不假定版本之间有任何特定的家谱关系。)

    例如你可以这样做

    difdef -r -DSITE={LIVE,TEST,DEV} {live,test,dev} -o merged
    grep -lr 'SITE==' merged | xargs $EDITOR
    

    为任何两个版本之间不同的每个文件打开一个编辑器窗口。

    difdef有比传统的diff 实用程序更好的用户界面,但它确实具有同时区分两个以上版本的出色能力。开源、C++、MIT 许可证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多