【问题标题】:How can I merge two versions of a file in PHP or JavaScript?如何在 PHP 或 JavaScript 中合并文件的两个版本?
【发布时间】:2010-10-14 16:08:51
【问题描述】:

我正在尝试编写一个允许多人同时处理一个文件的网站。在这样做时,我遇到的最大障碍是合并文件的新版本,版本控制风格。

我一直找不到任何可以帮助我解决此问题的内置 JavaScript 或 PHP 函数。我找到的最接近的是array_diff,这真的不是我需要的,因为它只是返回另一个数组中不存在的元素,如果我有一个单词数组,肯定会有重复;此外,array_diff 会忽略某些内容出现的次数或其在文件中的位置。

我对 Levenshtein 的距离算法进行了一些研究,该算法确实作为 php 内置的函数,但我不确定它是否是我需要的。如果有,请告诉我,我会进一步调查。

你知道有什么东西可以满足我的需要吗?

编辑:

让我澄清一点。我实际上并不是在设计版本控制系统。我只想合并文件,而不是存储旧版本等。安装 CVS 或 SVN 或类似的东西仍然是我最好的选择,只是为了使用一个功能?

【问题讨论】:

    标签: php javascript file merge version


    【解决方案1】:

    核心算法是LCS

    用于在WinMerge 等程序中生成并排视图。

    我实际上制作了一个基于 Web 的版本,但我卡在了同步两个窗口的滚动上,并且他们使用了一个更笨重的解决方案。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        为什么要重新发明轮子?我会使用exec 和“diff”来查找两个文件之间的差异并从那里开始工作。

        不过,这也不能解决 cvs 无法解决的问题:如果发生冲突(因为两个或更多人一直在更改同一行代码),您必须手动修复这些冲突(或者让编辑会这样做)。

        但话又说回来:为什么不立即使用 CVS 并与它一起使用网络查看器呢?
        例如http://www.viewvc.org

        【讨论】:

          【解决方案4】:

          mercurial, subversion, cvs, ... 确实不要重新发明轮子。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-26
            • 2012-04-15
            • 2018-11-08
            • 1970-01-01
            相关资源
            最近更新 更多