【问题标题】:Verify patch consists of only moves验证补丁仅包含移动
【发布时间】:2011-11-25 17:26:28
【问题描述】:

我一直在重新组织一些代码,并想使用一个程序来验证差异是否仅包含匹配的添加和删除对。我正在使用 git 作为源代码控制,所以希望 git 中内置了一些东西可以为我做到这一点?如果它可以总结已经出现或消失的线条,这也将非常有用


有人知道有没有这样的工具吗?

【问题讨论】:

标签: git version-control refactoring diff git-diff


【解决方案1】:

正如 prusswan 所说 - 我认为目前不存在工具。但是 git 可以检测重命名,并且检测文件的更改应该不难。 -M 选项还 git 尝试检测重命名,而不仅仅是执行删除/添加差异。

git diff -M 18b5850a07bb
diff --git a/G b/G
index e69de29..d0a432b 100644
--- a/G
+++ b/G
@@ -0,0 +1 @@
+This is a change
diff --git a/A b/H
similarity index 100%
rename from A
rename to H
diff --git a/B b/I
similarity index 100%
rename from B
rename to I
diff --git a/C b/J
similarity index 100%
rename from C
rename to J
diff --git a/D b/K
similarity index 100%
rename from D
rename to K
diff --git a/E b/L
similarity index 100%
rename from E
rename to L
diff --git a/F b/M
similarity index 100%
rename from F
rename to M

【讨论】:

    【解决方案2】:

    不知道这样的工具,虽然它确实是一个有用的功能。在 Windows 上,您可以使用 WinMerge 进行移动线检测。否则,这个related question 可能会有所帮助。

    【讨论】:

      【解决方案3】:

      你没有说你正在处理什么计算机语言。

      我们的SmartDifferencer 系列工具可能会提供帮助。这些工具比较编程语言的语法,以确定可通过程序员操作(复制、移动、重命名块中标识符)而不是行编辑操作来解释的术语差异。

      如果您的文件中的编辑真的只是整个编程结构的移动,SmartDifferencer 可能会准确地告诉您。

      【讨论】:

      • 嗨,Ira,我正在使用 Java。我没有提到这一点,因为我没有考虑过想法语言特定工具可能存在。感谢您的提示!
      【解决方案4】:

      另一种方法是可视化方法,可以使用 Git 2.14.x/2.15(2017 年第三季度),因为“git diff”已被教导可选择绘制新行 与其他地方删除的行相同,与真正的新行不同 行

      换句话说:移动行的专用颜色

      commit 61e89eacommit 86b452ecommit 176841fcommit 2e2d5accommit e6e045fcommit 146fdb0commit 30b7e1ecommit bd03329commit 0911c47commit f359713、@9876543332 @、commit 4acaaa7commit a29b0a1commit 3ee8b7bcommit f2bb121commit ff95867commit 091f8e2commit b9cbfdecommit 68abc6f(2017 年 6 月 30 日)by Stefan Beller (stefanbeller)
      Junio C Hamano -- gitster -- 合并于commit b6c4058,2017 年 8 月 27 日)

      git config documentation now includes

      diff.colorMoved
      

      如果设置为有效的<mode> 或真值,则差异中移动的行的颜色不同,有关有效模式的详细信息see '--color-moved' in git-diff
      如果只是设置为true,将使用默认颜色模式。
      当设置为false 时,移动的线条不着色。

      欲了解更多信息,请参阅commit 2e2d5ac

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        相关资源
        最近更新 更多