jchw 3 hours ago

It's pretty incredible if I'm trying to find a breakage in a repo I don't understand. Build's failing? Easy enough:

    git bisect start master v1.1         # Bisect from v1.1 to current master
    git bisect run cmake --build .build  # Find the first commit where `cmake --build` returns non-zero.
No need to bother trying to understand the error message, I can go make coffee instead and then just look at the commit that broke it. Also, this is really useful for and in conjunction with Nixpkgs.

It's not as useful for personal projects because chances are it won't tell you anything you don't already know.

1
dataflow 2 hours ago

> It's pretty incredible if I'm trying to find a breakage in a repo I don't understand.

> Build's failing? Easy enough:

> It's not as useful for personal projects

How often do you run into this situation, though? For your scenario to arise, you need:

(1) A repo you're unfamiliar with (which is already unusual for most people... most people spend most of their time working on repositories they've become familiar with)

(2) The unfamiliar repo to use standard build commands you already know, which is basically never the case in my experience (even cmake-based projects almost always need variables defined with custom names I don't know beforehand, and the configuration process is so onerous I find the GUI easier)

(3) An obscure enough breakage where the output is complete garbage (otherwise the compile error would just tell you the file and line, and git blame would tell you the commit directly)

(4) Knowledge that this unfamiliar repo actually would have actually built on your machine at some point (which is often not the case because cmake isn't hermetic and breakages are often due to having the wrong toolchain installed)

(5) For the problem to be a mere build error, as opposed to some running of the program that requires investing time to automate

(6) For you to not have any sort of prior CI or other form of validation on your dependencies, because you apparently didn't catch even catch a build error when it was introduced (never mind automated testing)

I could go on, but these set of circumstances are more or less indistinguishable from ~never to me.