以下是使用git diff HEAD
生成的差异文件的一些部分。
@@ -261,6 +261,13 @@ public class JSONServiceAction extends JSONAction {
return new double[0][0];
}
}
+ /*
+ * Some changes made...
+ */
else if (typeNameOrClassDescriptor.equals("[[F")) {
String[] values = request.getParameterValues(parameter);
@@ -587,4 +594,4 @@ public class JSONServiceAction extends JSONAction {
private Map<String, Object[]> _methodCache =
new HashMap<String, Object[]>();
-}
\ No newline at end of file
+}
我有两个问题:
public class ...
后面有@@
。所以git diff
将代码块名称(这里是类定义)放在hunk头中。 为什么git diff
这样做?我可以问git diff
不要把那部分放在大头标题中吗? git diff
在diff文件中包含此部分?我可以避免吗?(实际上,这个类的唯一修改部分是在第一个大块区域,我在else if
之前添加了三行注释)我检查了git diff
手册页,但现在我仍然感到困惑,因为我不太了解手册的某些部分;我还检查了一些推荐的相关问题,但它们都是关于“如何在此处显示一个名称的方法名称”,如下所示:Is there a way to ask git diff to show the method name instead of the class name?。
如果没有禁用自定义大头的方法,请告诉我,以便我可以尝试使用某些脚本。
更新:我希望关闭hunk说明的原因
在我的工作中,基准测试,构建脚本中的一个步骤是自动收集源文件夹的代码库信息(如果它是svn工作副本) - 信息包含diff文件。现在我们希望它支持git。当然我们将保存一个纯git diff文件,但是,我们必须同时生成一个svn兼容的diff。这是因为开发人员使用git而QA(测试人员)使用svn(管理员只将经过审核的代码从git迁移到svn)。
对于SVN客户端(SmartSVN,在我的工作环境中根本不聪明),diff文件是否具有某些SVN信息行并不重要。重要的是文件路径没有前缀,并且hunk标头没有描述...
答案 0 :(得分:3)
答案 1 :(得分:2)
对于您的第2点,您有一个文件,在最后提交时没有换行符。您当前的版本最后有一个换行符(很多编辑为您添加一个)。这就是差异显示的内容。
$ git init
Initialized empty Git repository in ...
$ echo -n hello > file
$ git add file ; git commit -m test
[master (root-commit) 846c33e] test
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file
$ echo hello > file
$ git diff
showing.diff --git a/file b/file
index b6fc4c6..ce01362 100644
--- a/file
+++ b/file
@@ -1 +1 @@
-hello
\ No newline at end of file
+hello
对于你的1.,请参阅:Git format-patch to be svn compatible?
答案 2 :(得分:2)
如上所述,hunk标头是为了方便起见。如果要更改显示的内容,请参阅定义自定义hunk-header的git attributes联机帮助页部分,并查看python here的示例。如果您定义正则表达式以使其不匹配,那么您将无法获得hunk标头。在你这样做之前,我建议你确保你有充分的理由这样做。它不应该伤害任何东西,如果你自己解析差异,你应该能够接受标准的git差异。
\ No newline at end of file
指标是统一差异文件中的标准表示法,用于准确表示。