don*_*ote 47 language-agnostic git diff semantic-diff
是否可以配置git diff来尊重缩进和语法?我不是在谈论忽略缩进和空格,而是使用空行,缩进级别和可能的括号,以帮助将旧行与新行匹配.
例如,git diff经常切换函数及其docblock,如下所示:
class C {
/**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
+
+ /**
* Gets your foo up to date.
*/
function foo() {
Run Code Online (Sandbox Code Playgroud)
当我愿意的时候
class C {
+
+ /**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
/**
* Gets your foo up to date.
*/
function foo() {
Run Code Online (Sandbox Code Playgroud)
在这个例子中它仍然是非常无害的,但是有些例子中函数及其docblock由于贪婪和天真的diff实现而被撕裂.
注意:我已经配置*.php diff=php了~/.gitattributes.
编辑:另一个例子:这里git diff将属性docblock与docblock方法混合:
/**
- * @var int
+ * @param string $str
*/
Run Code Online (Sandbox Code Playgroud)
我不知道如何单独在 git 中做到这一点,但至少有一个商业工具(即它要花钱)可以处理这类问题,称为SemanticMerge。
它可以处理很多很酷的情况,并且支持 C#、Java 和部分 C。您可以配置 git 将其用作合并工具。
(我没有附属。)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |