<div dir="ltr"><div class="gmail_default" style="font-family:verdana,sans-serif">It’s normal to define your dependencies using a looser interpretation of a version, using things like “~&gt; 1.3” implying anything from 1.3.0 -&gt; 1.4.0 ( here’s a cute video from Google showing the<a href="https://www.youtube.com/watch?v=x4ARXyovvPc"> use-case in CocoaPods</a> ) so you would define your dependencies pretty loosely in the manifest ( e.g. package.swift ) but then let the lock/pin file keep track of the exact resolution of those dependencies.</div><div class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" style="font-family:verdana,sans-serif">This tends to make more sense when you have more than a few dependencies.</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><br><div><div style="color:rgb(0,0,0);font-family:Helvetica;margin:0px"> -- </div><div style="color:rgb(0,0,0);font-family:Helvetica;margin:0px"><span style="color:rgb(35,35,35);font-size:12px">[</span><span style="font-family:verdana,arial,helvetica,code2000,sans-serif;font-size:small">·</span><span style="color:rgb(35,35,35);font-size:12px">/ ]</span><span style="color:rgb(35,35,35);font-size:12px;white-space:pre">        </span>      <span style="color:rgb(35,35,35);font-size:12px">Orta Therox</span></div><div style="font-family:Helvetica;font-size:12px;margin:0px;color:rgb(35,35,35);min-height:14px"><blockquote style="color:rgb(0,0,0);font-size:medium;margin:0px 0px 0px 40px;border:none;padding:0px"><div style="word-wrap:break-word"><div style="word-wrap:break-word"><div style="margin:0px;font-size:12px;color:rgb(35,35,35);min-height:14px"><blockquote type="cite" style="border-left-color:rgb(0,33,98);color:rgb(0,33,98);border-width:1px;margin-left:0px;padding-left:10px;padding-right:0px;margin-right:0px"><span style="border-collapse:collapse;color:rgb(34,34,34)"><div style="margin:0px"><span style="color:rgb(136,136,136)">w/ </span><a href="http://artsy.net/" target="_blank">Artsy</a></div><div style="margin:0px"><a href="http://cocoapods.org/" target="_blank">CocoaPods</a> / <a href="http://cocoadocs.org/" target="_blank">CocoaDocs</a></div><div style="margin:0px"><a>@orta</a> / <a href="http://orta.github.com/" target="_blank">orta.github.com</a></div><div style="margin:0px">Artsy is totally hiring <a href="http://artsy.net/job/developer" target="_blank">iOS Devs</a> ATM</div><div style="margin:0px"><br></div></span></blockquote></div></div></div></blockquote></div></div></div></div></div>
<br><div class="gmail_quote">On Mon, Dec 19, 2016 at 4:09 PM, Steven Clukey via swift-build-dev <span dir="ltr">&lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_930335869557250259divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<p><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px">Perhaps the pinning feature and how to use it together with the version specification in the manifest could be documented somewhere? </span>I am sorting through how to use
 the Package.pins file on my own projects and I am coming up a bit confused, and<span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px"> I assume that I am just missing the point of this somewhat intrusive change. </span></p>
<p><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px"><br>
</span></p>
<p><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px"><br>
</span></p>
<p><span style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:16px">If it is of any interest, my initial impressions of using this behavior are these:</span></p>
<p><br>
</p>
<p>Currently in my package manifests I have been specifying my dependencies with exact versions (e.g. `<span>.Package(url: &quot;URL.git&quot;, Version(0,1,2))`), so the pins file seems entirely redundant. The statement in SE-0145 that &quot;<span>there has heretofore been
 no way to share that pinning information with other team members&quot; seems wrong. Hasn&#39;t my package manifest with dependency versions been being shared?</span></span>
</p>
<p><span><span><br>
</span></span></p>
<p><span><span>I see that the pins file is supposed to disambiguate the dependency version &quot;independent from the semantic versioning specification&quot;. Does that mean that I could have a completely different version in the pins file than the manifest and the pins
 file would override the manifest? Can the &quot;version&quot; field in the pins file accept commit hashes or branch names or other things not supported by semantic version tags? Currently, neither of these are possible (in the first case swift gives &quot;error: unsatisfiable&quot;
 and in the second case swift crashes if the pins &quot;version&quot; is anything but a valid semantic version), so again I am missing what benefit the pins file has over simply giving an exact `Version(...)` in the manifest. On the other hand, if the pins file is intended
 to override the manifest, than what is the point of specifying any version in the manifest at all?</span></span></p><span class="HOEnZb"><font color="#888888">
<p><span><span><br>
</span></span></p>
<p><br>
</p>
<p>Steven</p>
<p><br>
</p>
</font></span></div>
</div>

<br>______________________________<wbr>_________________<br>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org">swift-build-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-build-<wbr>dev</a><br>
<br></blockquote></div><br></div>