-
Notifications
You must be signed in to change notification settings - Fork 129
Use a diffing algorithm for PRs that shows code moves more succinctly than one add and remove hunk #729
Comments
I couldn't find such diffing algorithm in Git in that SO post, can you give the git command that does it, and your git version? |
See first answer here: On Friday, July 29, 2016, Ciro Santilli 六四事件 法轮功 包卓轩 <
|
@cirosantilli now git has new |
Phabricator has the ability to flag lines as moved or copied within a single diff. It's hard to overstate how much this helps refactoring. |
It'd be great to have an option to apply |
This is one of the biggest pains I've had since I left Google to work at a startup. I find that I waste my time re-reading moved lines or expend precious mental energy verifying that they are in fact simply moved and nothing else about them has changed. A simple refactoring task incurs such a high cost to reviewers that I think most people either don't do them or don't review the resulting PR carefully and hope that the code is well-tested enough that it doesn't matter. |
PRs that move code around, even within the same function, appear very onerous on Github, even when they don't do anything else. I have created a very basic PR to demonstrate this: https://github.com/tommyjcarpenter/github_test/pull/1/commits/2afb07ec5c6b56724bd10c6b56386299493bbb43. All the repo does is define two functions, and PRs a change to move the first below the second. The diff on github shows 20 lines removed and 21 added. One would assume the diff could be shown as a trivial "code move".
Now imagine this with a lot more functions and a lot more trivial code moves.
It seems git itself IS able to detect such changes: http://stackoverflow.com/questions/12590947/using-git-diff-to-detect-code-movement-how-to-use-diff-options
So, is there a way to swap out the diffing algorithm such that PRs like this don't look so onerous? Does github use it's own internal algorithm or does it use your default diffing algorithm?
(EDIT: this also appears to make account-level contributions on Github a bit misleading: someone that just moves code around may be shown to make a huge number of additions and deletions to a repository, thus giving the impression that they are a large contributor, when in fact they didn't contribute any functionality)
The text was updated successfully, but these errors were encountered: