原来的:
if __name__ == "__main__":
myparams = {"server":"mpilgrim", \
"database":"master", \
"uid":"sa", \
"pwd":"secret" \
}
bzr diff 的切割:
if __name__ == "__main__":
myparams = {"server":"mpilgrim", \
@@ -15,4 +22,6 @@
"pwd":"secret" \
}
bzr diff 中的 '@@ -15,4 +22,6 @@' 部分是什么意思,为什么它会覆盖两行?
"database":"master", \
"uid":"sa", \
答案1
您提供的摘录来自上下文差异,它显示两个文件中相同的行和已更改的行。但是,您选择的摘录实际上并未显示任何已更改的行。(这些行前面会带有-
或+
字符,具体取决于它们是被删除还是添加。)
@@ -15,4 +22,6 @@
意味着旧文件中4
以 行 开头的行15
被更改(或未更改,但显示为上下文),并且与新文件中6
以 行 开头的行相对应22
。(发生这种情况的最简单且最常见的方式是,新文件中添加的行数比新文件中删除的行数多 7 行,因此在应用即将指定的更改之前,15
旧文件中以 行 开头的内容在新文件中以 行 开头。)22
由于这是上下文差异,因此它提供了一些未指定更改的上下文行。这很有用,可以让编辑文件的人(开发人员/维护人员,当它是源代码时,如本例)通过浏览差异来了解发生了什么。但它还有另一个有用的目的,即在许多情况下,可以将针对一个文件版本创建的差异应用于同一文件的另一个版本,前提是它不会更改已经更改的完全相同的行(即,在创建差异之后但在应用差异之前更改的行)。
以下几行可能作为上下文出现在 diff 中,因为在它们之前不久发生了变化(因此它们是上下文提供的后变化):
如果 __name__ == "__main__": myparams = {“服务器”:“mpilgrim”,\
然而,这些行可能作为上下文出现在 diff 中,因为它们之后不久就会发生变化(因此它们是上下文提供的前变化):
“pwd”:“秘密” \ }
这些线大概不够接近任何差异中指定的更改将作为上下文包含在内:
“数据库”:“master”,\ “uid”:“sa”, \
这就是为什么它们看起来好像在 diff 中缺失了。它们实际上并没有缺失,因为 diff 不应该向你显示整个文件。所有这些的要点是,它们的缺失是不是因为 diff 指定要删除它们。它当然没有指定——如果是的话,它必须包括(在-
他们面前放置标志以表明他们已被移除)。
(我说想必上面不是因为很有可能这不是正在发生的事情,而是因为虽然diff
实用程序将创建具有指定数量的 diff前和后上下文行,如果您愿意,您可以手动创建或修改差异,以便它在某些地方比其他地方具有更多或更少的上下文行,并且它仍然是有效的差异,只要在必要时,@@
行中的数字更改为匹配。)
diff
有关(diff
、patch
、diff3
和sdiff
实用程序以及diff
/patch
格式)的更多信息,请参阅GNU diff 文档。特别是,您可能对关于统一格式。