Kevin, thanks for your feedback.

You have a reasonable point, because usually you don't put the outputs of a 
build into version control, but the build script checks them for being current.

On the other hand, when you change branches, your existing output directories 
are worthless problems anyway — even if you have all the interdependencies 
correct.  Because of this, I'm inclined to consider this use case as 
intrinsically hazardous.  When I do a checkout, I always want to purge all the 
intermediate and end targets regardless.

When doing a build, it's often useful to put the current commit/branch into the 
output directories as documentation; I usually do this in my build scripts.  
This also makes it simple to detect when the branch is changed and clean the 
outputs.

- Andrew

> On Apr 22, 2018, at 3:59 PM, Kevin Daudt <m...@ikke.info> wrote:
> 
> On Sun, Apr 22, 2018 at 03:01:10PM -0400, Andrew Wolfe wrote:
>> Hi Brian,
>> 
>> Not completely sure what you're saying.  If the files on master are
>> not changed, the changed files' commit timestamps will be older than
>> the branch commit timestamps.
>> 
>> However, if I check out master after committing to a branch, the
>> modifications will necessarily disappear because they haven't been
>> committed to master.  Instead, under my proposal, each will get the
>> timestamp of its prior commit.
>> 
> 
> Say I build the project while on a certain branch. Then I checkout a
> different branch and build again. You would expect that the targets of
> every source file that have changed are rebuilt.
> 
> When you would restore the timestamp back to the commit timestamp, the
> timestamp will be older then the target, and make will not rebuild it,
> leaving you with outdated build targets.

Reply via email to