News for hackers. Stuff that matters.
Re:Why Not Make? by jcelerier on Thursday November 08, 2018 @09:02AM (#18406266)
> Over a large source-tree I'd expect these costs to mount - I think I'd prefer to take my chance with timestamps!

timestamps really sucks when e.g. you change header $foo which is used by a lot of your software (say, a basic data structure, or the definition of a 3d point), build (which rebuilds everything because of time stamps), do a git pull --rebase, so git undoes your changes, applies the remote commits, and redoes your change, and so you re-have to build everything again even though the header that was used everywhere has not actually changed

Re:Why Not Make? by rusk on Thursday November 08, 2018 @09:16AM (#18406354)
I'd actually expect and desire a full rebuild in the case that a widely used header is changed.

After a rebase it makes sense too, but I see what you mean about where no actual changes have been made though ... dare I suggest this sounds more like a bug in git though ...

Re:Why Not Make? by jcelerier on Thursday November 08, 2018 @10:08AM (#18406710)
> I'd actually expect and desire a full rebuild in the case that a widely used header is changed.

yes, me too, but in this case the rebuild happens twice while the header changes only once (from the point of view of the programmer of course, from the point of view of the filesystem it changes twice). If hashes were used this would not be a problem at all.

Re:Why Not Make? by rusk on Thursday November 08, 2018 @10:21AM (#18406828)
I don't understand your point, how does this happen twi ... ohhh because dependent files get changed as well? Surely this is just a matter of how you specify your dependencies?
Re:Why Not Make? by jcelerier on Thursday November 08, 2018 @11:17AM (#18407296)
imagine your project structure is the following :

    header.h
    src1.cpp
    src2.cpp
    src3.cpp
you do the following :

1. change header.h

2. rebuild. this rebuilds all your .cpp because they all use the header - this is fine and expected.

3. git pull --rebase because your coworker fixed a bug in src1.cpp which landed in the master branch

4. here when you rebuild with make, even though only src1.cpp has changed from your point of view, everything actually gets rebuilt because git stashes your change, applies the remote commits and unstashes your change, so header.h's timestamp gets changed again.

Re:Why Not Make? by rusk on Thursday November 08, 2018 @11:43AM (#18407569)
oh right yeah - this is the thing I was saying could probably be considered an issue with git.