<html>#1312: quick rsync for simfactory
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Frank Löffler</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td>development version</td></tr>
<tr><td style='text-align:right'>     Type:</td><td>enhancement</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>SimFactory</td></tr>
</table>

<p>Comment (by Roland Haas):</p>
<p>Such a quick option is very dangerous. Editing on the remote system is not required to end up with an inconsistent state.</p>
<p>It can be triggered by the following steps:</p>
<ol>
<li>use <code>sim sync</code> to copy to a remote cluster</li>
<li>edit on your <strong>local</strong> machine</li>
<li>use <code>sim build</code> on the remote cluster</li>
<li>use <code>sim sync</code> to copy to the remote cluster once more</li>
</ol>
<p>Since 3 happened after 2 the object files created on the cluster now have a timestamp newer than the source files on the local machine. Now since the <code>--times</code> option (needed to make timestamp based skipping possible) also causes <code>rsync</code> to set the time stamp of the copied files to the timestamp on the source system in 4 (see  <a data-is-external-link="true" href="https://linux.die.net/man/1/rsync" rel="nofollow">https://linux.die.net/man/1/rsync</a>), <code>make</code> will not consider the object file to be out of date wrt to its source file (that was just copied in).</p>
<p>So a <code>sim build</code> on the cluster after 4 will not recompile files even though those files were changed (and rsync in fact copied them because the time stamp differed).</p>
<p>You can currently get back the behaviour you desire by setting your <code>rsyncopts</code> to <code>--times</code> in your <code>defs.local.ini</code>. If adding such a qick option I would try and name it <code>--unsafe</code> to make very clear to anyone using it that it hands out rope and you may now hang yourself.</p>
<p>Note that steps 1 -- 4 can very easily happen if you have multiple remote machines if you every compile without doing a <code>sim sync</code> just before.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/1312/quick-rsync-for-simfactory'>https://bitbucket.org/einsteintoolkit/tickets/issues/1312/quick-rsync-for-simfactory</a></p>
</html>