有时候能够说出这样的话会很好:
(git|svn|hg|etc) diff Foo.c:main
(git|svn|hg|etc) log log Foo.c:main
查看自上次提交以来对源文件中特定功能所做的更改或更改的完整历史记录。我的问题有两个:
- 是否存在这样做的东西?
- 这样的工具会实用吗?为了比较该函数的不同版本,它必须对每个修订版本进行一些简单的代码解析;开销是否太高而无法提高效率?
7
这样做的需要似乎是一个潜在问题的征兆,例如方法太大或类没有正确组织,因为任何有价值的VCS都会使您与众不同,并且向下滚动很容易如果类不是太大,则可以使用(或搜索)有问题的方法,并且您可以在整个类的上下文中查看该方法中的代码。简而言之,我认为方法解析过于具体。
—
罗伯特·哈维
@Robert这是一个很好的观点,我认为我好奇的动机部分是由于至少一点代码膨胀。我跟踪到一个特定方法的错误,并希望能够看到该方法的更改日志以查看它的中断位置,如果您急于进行完整的差异搜索,可能会有点不方便:)
—
jches
在非常有用的情况下,TortoiseXXX的Blame功能非常强大。您可以看到何时对方法中的所有行进行了最后更改,并使用正确的边距继续退回这些更改。
—
pdr