我想比较两个目录,一个是本地的,另一个在另一台机器上。
我怎样才能做到这一点?我可以用diff吗?
我需要比较两个 XML 文件,每个文件大约有 13,000 行。
遗憾的是,生成这些文件的代码每次都不会以相同的顺序生成数据(数据来自数据库)。
因此,即使在规范化 XML 文件之后,我在使用标准的逐行差异实用程序 (WinMerge) 时也会得到误报。
作为我的问题的一个例子:
文件 1:
<a>
<b key="fruit.preferred">banana</b>
<b key="fruit.available">pineapple</b>
<b key="fruit.available">apple</b>
<b key="fruit.available">orange</b>
</a>
Run Code Online (Sandbox Code Playgroud)
文件2:
<a>
<b key="fruit.available">pineapple</b>
<b key="fruit.preferred">banana</b>
<b key="fruit.available">apple</b>
<b key="fruit.available">orange</b>
</a>
Run Code Online (Sandbox Code Playgroud)
这些文件具有相同的内容,但是香蕉线的位置意味着它们被传统的diff认为是不同的。是否有任何工具可以执行排序以使文件被视为相同?
顺便说一下,XML 文件结构比上面的例子更复杂!
您能否向 svn diff 添加注释/类似责备的信息,以便对于每个更改的行,它都包含更改了该行的用户和修订版?
例如,比较修订版 8-10 的 annotate-diff 可以输出如下内容:
9 user1 - some line that user1 deleted in revision 9
10 user2 + some line that user2 added in revision 10
Run Code Online (Sandbox Code Playgroud)
上下文,它周围没有改变的线条,也可以包括或不包括在内,并不重要。
这不仅仅是“快速”编写一个结合 svn diff 和 svn annotate 输出的 shell 脚本的问题。例如 annotate 永远不会显示谁删除了一行。这也不是对过去的修订进行注释的问题:我们对最初添加被删除的行的人不感兴趣(这不是“导致”差异的人),我们想知道是谁删除了它。我怀疑实现此目的的唯一方法是检查正在比较的两个修订版之间的每个提交(并以某种方式将单独差异中的所有更改映射到总差异中的行)...
是否存在可以执行此类操作的工具?
我想比较两个文本文件。通常,我可以diff用来比较两个文件以查看差异。这很好,只是我更关心两个文件的百分比差异。
例如:
File A:
banana
TESTING
File B:
TESTING
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果将是 50% 的差异。我查看了wdiff,它主要是有效的,除了它逐字查看元素(实际上,我可以通过执行 得到上面的结果wdiff -s filea fileb)。
是否存在提供按字符/按字节级别的文件百分比差异的工具?
我想对差异输出进行后处理,然后将结果传递给图形查看器,例如 kdiff3 或 xxdiff。如果可能,我希望能够使用不同的颜色突出显示在线差异。
有时我会使用像 Notepad++ 这样的简单编辑器在 Dropbox 上编辑我的网页。
Notepad++ 不是超级编辑器或 IDE,不会为我跟踪文件更改。
但是 Dropbox 可以!!
有没有人写过一个工具可以快速查看 Dropbox 中特定文件的版本历史记录?毕竟,保存到 Dropbox本质上就像保存commit到 VCS。
有人知道 Dropbox 是否公开了任何用于查询文件过去版本的 API?
我有 700 多个文件夹,每个文件夹中都有相同的 200 多个经典 asp 文件(基本上是文本文件)。多年来,许多人对这些 asp 文件进行了细微的更改。我需要一个实用程序(适用于 Windows),它可以比较所有文件夹和文件并识别相同文件的所有不同版本。
有人有建议吗?
我尝试使用 Meld 作为 KdeSVN 中的外部差异meld -on -(settings>configure kdesvn>diff&merge) 但 Meld 抱怨使用错误:
meld: error: no such option: -o
Finished
Usage:
meld Start with an empty window
meld <file|dir> Start a version control comparison
meld <file> <file> [<file>] Start a 2- or 3-way file comparison
meld <dir> <dir> [<dir>] Start a 2- or 3-way directory comparison
meld <file> <dir> Start a comparison between file and dir/file
Run Code Online (Sandbox Code Playgroud)
我不知道我应该使用哪些参数,有人能给我正确的命令吗?
我正在寻找一种方法来递归比较两个文件夹并输出所有不同(按大小或按时间戳,à la rsync)的文件(和文件夹)的相对路径。
例如,说我有
C:\source\foo\a.txt
C:\source\foo\bar\b.txt
C:\source\foo\bar\c.txt
Run Code Online (Sandbox Code Playgroud)
和
C:\target\foo\a.txt
C:\target\foo\bar\b.txt
C:\target\foo\bar\d.txt
C:\target\foo\baz\
Run Code Online (Sandbox Code Playgroud)
并假设b.txt已在 下更改C:\source,因此更新。
然后给出一个神奇的脚本或命令,比如说magic C:\source C:\target,我希望输出是
foo\bar\b.txt
Run Code Online (Sandbox Code Playgroud)
或者,源文件夹或目标文件夹上的完整路径也是可以接受的:
C:\source\foo\bar\b.txt
Run Code Online (Sandbox Code Playgroud)
如示例所示,我不在乎已删除或创建的文件和文件夹!这应该使这项任务比其他任务简单得多。
我自己是 UNIX 开发人员,不会问这是否是我们正在处理的 UNIX 系统,但是唉。此外,这是针对自定义夜间备份解决方案,其中可靠性和数据完整性是重中之重,因此考虑到几周前我什至无法在批处理脚本中找出 for 循环,我很确定我缺乏正确执行此操作的经验,甚至确定执行此操作的最佳方法。
阅读http://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history,我了解到 rsync 可以使用类似选项
--dry-run # don't actually rsync (touch) any files
--itemize-changes # list changes rsync _would_ have made
--out-format="%i|%n|" # define an output format for the list of changes
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢依赖 Cygwin (cwRsync) 来使用 rsync,因为我已经很容易在我的 Cygwin 安装上运行快速而肮脏的实验,经常破坏环境并且需要每隔几周重新安装 …