diff tools cannot handle moving code blocks
diff tools cannot handle moving code blocks
- Adding a line: ✅
- Removing a line: ✅
- Modifying a line: ✅
- Moving a codeblock: ❌ i see you've rewritten everything, let me just highlight it all.
RIP reviewers on my PR.
(Meme created by my coworker)
I’m surprised that after almost 20 years of versioning C code, git still manages to assign the closing brace of a function wrongly.
83 0 ReplyBecause text is text and all
}
are the same.8 0 Reply
I'm convinced there must be a way of using ASTs to do more intelligent diffing of a given programming language, but I'm far too lazy to find out for myself.
34 0 ReplyYou mean like Difftastic?
51 0 ReplyHell yeah, being lazy paid off. Thanks.
24 0 Reply
There is, but your dif tool would have to be language aware and likely be slower to show difs.
11 0 ReplyThere have been some attempts at semantic diffs, but it’s very uhh… difficult to gain traction with such a thing.
6 0 ReplyDiffing algorithms on trees might not be as efficient, especially if they have to find arbitrary node moves.
5 0 ReplyI wouldn't expect it to be, but I think modern processors can handle the load!
2 0 Reply
27 0 ReplyThat's awesome. I wonder how it'd handle moving plus a small change.
Too bad GitHub doesn't support it yet afaict. But at least it's not all diff tools.
3 0 Reply
Me adding one if statement around around a code block. Ah shit I guess I own the whole function now.
20 0 ReplyAt least a good diff tool will ignore whitespace diffs.
8 0 Reply
laughs in IntelliJ
19 1 Replythat's not even a joke, I'm using intellij community as a merge and diff tool exclusively. it doesn't support the language I want but even without it it's better then anything else.
13 0 Reply
Beyond Compare is awesome and handles this and many other things quite well.
11 0 ReplyMost diff tools have an option to ignore leading or trailing whitespace changes.
11 2 ReplyMe omw to shift the entire codebase to the right by one tab and claim authorship over every line in the project with a completely untraceable commit
17 0 ReplyI think OP meant moving a code block up or down in a file, not left or right
15 0 ReplyYes, thank you. I probably should have been more clear
3 0 Reply
VSCode has had that feature for some months now. Maybe it's still hidden behind an off-by-default setting, but it's there and I use it.
9 1 ReplyI'll have to take a look to see if I can use it to view (enterprise) GitHub PRs, because that'd be a huge help
5 0 ReplyGood question. Maybe GitLens can help with that, if not the official GitHub extensions.
1 0 Reply
If you're going to rearrange code, have that as a separate check in from changing code.
8 0 ReplyMaybe specify a different diff algorithm? Histogram for example?
7 0 ReplyPermanently Deleted
4 0 ReplyTry difftastic! https://github.com/Wilfred/difftastic
4 0 ReplyThat logo tho. oh noooooo
3 0 ReplyIt doesn't actually detect moved code, though, like
git diff
can? I gave it a shot and also there's a couple issues open about it, e.g. https://github.com/Wilfred/difftastic/issues/520 .Other than that, difftastic is quite nice.
1 0 Reply
Give me some love for adding an indent level either showing nothing changed or you rewrote everything too.
4 0 ReplyHow do you expect it to be shown though?
2 0 ReplyFor example, on side by side views, you can draw a box around it on both sides, and draw a line connecting the two
10 0 ReplyI think Sublime Merge does this with the conflict resolution tool
3 0 Reply