【问题标题】:How to show revision history like revisions如何显示修订历史,如修订
【发布时间】:2009-05-28 21:52:44
【问题描述】:

Stack Overflow 如何以他们使用的类似 diff 的格式显示修订更改?

我不关心 Stack Overflow 本身;这只是描述我的要求的一种方便方式。我有一个文本字段更改的审计历史。我想以 StackOverflow 显示修订历史记录更改的方式来显示更改。我记得 Jeff Atwood 讨论过 StackOverflow 播客,但我在成绩单中找不到它,也不知道是什么播客。 IIRC,它不是基于 .NET,也许是 Python?

这是供最终用户使用的,因此任何看起来像 Unix-like diff 的东西都出来了。显示两个块和文本(旧的和新的)并让他们弄清楚是很诱人的,但是 StackOverflow 的修订历史要好得多。

【问题讨论】:

  • 对于它的价值,维基百科也有一个非常好的修订历史用户界面。您可以尝试查看 MediaWiki 源代码。

标签: html diff revision


【解决方案1】:

Python difflib 标准库提供了这种能力:

此模块提供用于比较序列的类和函数。例如,它可以用于比较文件,并且可以生成各种格式的差异信息,包括 HTML 和上下文以及统一差异。要比较目录和文件,另请参阅filecmp 模块。

【讨论】:

  • difflib 似乎一次只做一行差异。我正在寻找 SO 使用的内联差异。也许我可以使用它。
  • difflib 可以比较任意两个序列;这些是线条、字符、单词、句子还是图像的序列取决于您。我已经使用 difflib 在单词级别比较文本,并且效果很好。
【解决方案2】:

由于您没有真正指定语言:我使用 PHP PEAR 包 Text_Diff 完成了这项工作。

【讨论】:

  • 似乎有一些承诺。需要弄清楚如何在 asp.net 应用程序中提供此服务。也许我可以从服务器端代码访问后端的 php 服务器。
  • @WaldenL 你可以用 PHP 做一个肥皂服务。上次我这样做时,您必须手动创建一个 WSDL,但somone 最终创建了一个可以继承的soap 对象,并且您的所有公共函数都会自动暴露在 WSDL 中。
【解决方案3】:

他们使用Beyond Compare。据我所知,它不是原生 .NET 程序,但您可以将其用作命令行工具。

【讨论】:

  • 我不确定这是否正确。我相信这就是开发方面的用途(不同的源修订、数据库脚本等),而不是他们用于在线显示修订的用途。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
相关资源
最近更新 更多