title: Memoize computational intense result in git repository without potential merge conflicts
body: <p>Suppose I have the following dependency</p>
  
  <pre><code>foo.png -&gt; foo.blend
  foo.o   -&gt; foo.png
  foo.o   -&gt; foo.cpp
  </code></pre>
  
  <p>where <code>foo.png</code> is going to be embedded inside <code>foo.o</code> with some GNU assembly hack <a href="https://stackoverflow.com/a/36295692/877329">https://stackoverflow.com/a/36295692/877329</a>.</p>
  
  <p>Now I want to compile <code>foo.cpp</code>, and <code>foo.png</code> is not up to date. Then, if the machine does not have any compute accelerators, or the scene is an indoor scene with some glossy materials, this will take a very long time.</p>
  
  <p>One solution is to add the target <code>foo.png</code> to git so it gets pushed to the server but this may result in some false merge conflicts:</p>
  
  <ol>
  <li><code>foo.png</code> has been recompiled locally without any change in <code>foo.blend</code>. While the image will look the same, some metadata may be different (Blender saves timestamp in the tEXt chunk).</li>
  <li>Then <code>git pull</code> is used to fetch the latest content</li>
  <li>Now 
  
  <blockquote>
    <p><code>foo.png</code> will be overwritten by merge</p>
  </blockquote></li>
  </ol>
  
  <p>The correct thing here, is to let the change state of <code>foo.png</code> follow <code>foo.blend</code>. Is it possible to establish this kind of master-slave relationship between two files, or can this problem be solved in a different way?</p>