用于颠覆的最佳 LaTeX 感知差异和合并工具

用于颠覆的最佳 LaTeX 感知差异和合并工具

有什么好的 (或者最好是您认为最好的) 方法可以使 subversion 差异化和合并 LaTeX 感知?

我知道 latexdiff 和 latexrevision 存在,但我不清楚如何将它们作为正常 subversion 合并工作流的一部分。特别是因为您必须编辑生成的文件以指定您想要的更改。如果有某种方法可以设置 subversion 或 TortoiseSVN 来自动执行此操作,那就太好了。

我将要合并一些相当大的文档,并且我不希望我的合作者有任何关于维护换行符等方面的纪律。我最近才了解到这一点。

首选 Windows 工具。我有带 X 的 Cygwin 和 Windows svn 客户端,所以我可以使用 UNIX 工具。

答案1

编辑:Subversion 和 Git 的代码可在此处找到:https://github.com/suomela/gitwdiff


为了差异我已经成功地使用了以下方法。这是不是可以识别 Latex,但它似乎与 Latex 文档(以及 Bibtex 文件)配合得很好。我在 Linux 和 Mac OS X 上都用过它。

它基于单词,因此不关心换行符。例如,您可以将每个段落作为源代码中的很长一行;即使这样,diff 输出也将易于阅读且简洁。它使用颜色编码输出:

  • 红底白字:已删除
  • 黄色背景上加粗黑色:已添加。

它是为黑白终端设计的;定制颜色代码如果需要的话。

如果您进行了非常广泛的更改,有时最好使用通常的 diff。尝试一下,看看会发生什么。

用法:

只需写成svnwdiff而不是svn diff

如果您需要寻呼机,请将输出传输到less -R而不是less

例子:

  • 您只需简单书写svnwdiff即可看到所有本地更改。
  • svnwdiff -c6445 foo.tex您可以像使用一样使用svn diff -c6445 foo.tex
  • svnwdiff -c6445 foo.tex | less -R如果您需要传呼机请写信。

将以下 shell 脚本放入您的$PATH

svnwdiff

#!/bin/sh

exec svn diff --diff-cmd="mywdiff" "$@"

差分

#!/bin/sh

# Ignore all flags
while getopts uL: flag; do true; done
shift $(($OPTIND - 1))

esc=`printf '\033['`
wdiff -n -w "${esc}41;97m" -x "${esc}m" -y "${esc}1;103m" -z "${esc}m" "$@" | fgrep -C2 "$esc"

最后,你还需要差分工具。如果您使用的是 Ubuntu 或 Debian,只需安装“wdiff”包。在 Mac OS X 上,“port install wdiff”应该可以解决问题。

如果您在操作过程中遇到问题,请尝试以下操作:

  1. 首先确保“wdiff foo bar”之类的命令可以正常工作。
  2. 然后确保“mywdiff foo bar”可以正常工作。
  3. 只有在此之后才尝试让“svnwdiff foo”工作。

为了合并,我发现最好的解决方案是不需要合并。我倾向于使用电子邮件、Skype 等来协调谁在文档的哪些部分获得了写入令牌。如果所有协调努力都失败了,我会使用上述 diff 工具来找出谁做了什么,然后手动集成。

答案2

在 Windows 上有一个工具叫超越比较(http://www.scootersoftware.com/),它是一个很好的差异和合并工具。

相关内容