• 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)

  • @[email protected]
    link
    fedilink
    English
    791 year ago

    I’m surprised that after almost 20 years of versioning C code, git still manages to assign the closing brace of a function wrongly.

  • @killeronthecorner
    link
    English
    341 year ago

    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.

        • OmidMnz
          link
          71 year ago

          You’re welcome. And have fun trying to break it!

    • @[email protected]
      link
      fedilink
      English
      61 year ago

      There have been some attempts at semantic diffs, but it’s very uhh… difficult to gain traction with such a thing.

    • @[email protected]
      link
      fedilink
      51 year ago

      Diffing algorithms on trees might not be as efficient, especially if they have to find arbitrary node moves.

      • @killeronthecorner
        link
        English
        21 year ago

        I wouldn’t expect it to be, but I think modern processors can handle the load!

        • @[email protected]
          link
          fedilink
          21 year ago

          It’s not necessarily about the load, it’s about the algorithmic complexity. Going from lists (lines in a file, characters in a line) to trees introduces a potentially exponential increase in complexity due to the number of ways the same list of elements can be organized into a tree.

          Also, you’re underestimating the amount of processing. It’s not about pure CPU computations but RAM access or even I/O. Even existing non-semantic diff implementations are unexpectedly inadequate in terms of performance. You clearly haven’t tried diffing multi-GB log files.

          • @killeronthecorner
            link
            English
            1
            edit-2
            1 year ago

            Log files wouldn’t fall under the banner of compiled languages or ASTs, so I’m not sure how that example applies.

            And I’m aware that it can lead to O(n²) complexity but, as others have provided, there are already tools that do this, so it is within the capabilities of modern processors

            Yes there will be cases where the size of the search space will make it prohibitive to run in reasonable times but this is - by merit of the existing tools and the fact that they seem to work quite well - an edge case.

            • @[email protected]
              link
              fedilink
              01 year ago

              Log files themselves don’t, but I’m just comparing it with simpler files with simpler structure with simpler algorithms with better complexity.

    • @[email protected]OP
      link
      fedilink
      31 year ago

      That’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.

  • @[email protected]
    link
    fedilink
    211 year ago

    Me adding one if statement around around a code block. Ah shit I guess I own the whole function now.

    • @Rednax
      link
      81 year ago

      At least a good diff tool will ignore whitespace diffs.

    • @alokir
      link
      151 year ago

      that’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.

  • @nicoweio
    link
    9
    edit-2
    1 year ago

    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.

    • @[email protected]OP
      link
      fedilink
      51 year ago

      I’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

      • @nicoweio
        link
        11 year ago

        Good question. Maybe GitLens can help with that, if not the official GitHub extensions.

    • @Feathercrown
      link
      English
      191 year ago

      Me 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

  • @[email protected]
    link
    fedilink
    English
    41 year ago

    Give me some love for adding an indent level either showing nothing changed or you rewrote everything too.