blob: 24e6d5e025db762a9e9a41b662468327da6a7b76 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Adding Repositories to your Project &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../genindex.html"/>
<link rel="search" title="Search" href="../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../index.html"/>
<link rel="up" title="Tutorials" href="../tutorials.html"/>
<link rel="next" title="Create a Repo out of a Project" href="create_repo.html"/>
<link rel="prev" title="Enabling The Console and Shell for Blinky" href="../blinky/blinky_console.html"/>
<script src="../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.11.0, Apache NimBLE 1.6.0 </a> released September 7, 2023)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../tutorials.html">Tutorials</a> /
Adding Repositories to your Project
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-documentation/edit/master/docs/tutorials/repo/add_repos.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_11_0" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" selected="selected" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" >
Version: 1.6.0
</option>
<option value="/v1_5_0" >
Version: 1.5.0
</option>
<option value="/v1_4_0" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../concepts.html">Concepts</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../tutorials.html">Tutorials</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../blinky/blinky.html">Project Blinky</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Working with repositories</a><ul>
<li class="toctree-l3"><a class="reference internal" href="create_repo.html">Create a Repo out of a Project</a></li>
<li class="toctree-l3"><a class="reference internal" href="private_repo.html">Accessing a private repository</a></li>
<li class="toctree-l3"><a class="reference internal" href="upgrade_repo.html">Upgrade a repo</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../slinky/project-slinky.html">Project Slinky for Remote Comms</a></li>
<li class="toctree-l2"><a class="reference internal" href="../ble/ble.html">Bluetooth Low Energy</a></li>
<li class="toctree-l2"><a class="reference internal" href="../lora/lorawanapp.html">LoRa</a></li>
<li class="toctree-l2"><a class="reference internal" href="../os_fundamentals/os_fundamentals.html">OS Fundamentals</a></li>
<li class="toctree-l2"><a class="reference internal" href="../devmgmt/devmgmt.html">Remote Device Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sensors/sensors.html">Sensors</a></li>
<li class="toctree-l2"><a class="reference internal" href="../tooling/tooling.html">Tooling</a></li>
<li class="toctree-l2"><a class="reference internal" href="../other/other.html">Other</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../os/os_user_guide.html">OS User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.8.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="adding-repositories-to-your-project">
<h1>Adding Repositories to your Project<a class="headerlink" href="#adding-repositories-to-your-project" title="Permalink to this headline"></a></h1>
<div class="toctree-wrapper compound">
</div>
<div class="section" id="what-is-a-repository">
<h2>What is a Repository<a class="headerlink" href="#what-is-a-repository" title="Permalink to this headline"></a></h2>
<p>A repository is a version-ed Mynewt project, which is a collection of
Mynewt packages organized in a specific way for redistribution.</p>
<p>What differentiates a repository from a Mynewt project is the presence
of a <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file describing the repository. This will be
described below. For a basic understanding of repositories you may read
the <a class="reference internal" href="../../newt/index.html"><span class="doc">Newt Tool Guide</span></a> and <a class="reference internal" href="create_repo.html"><span class="doc">How to
create repos</span></a>.</p>
<p><strong>Note:</strong> For the remainder of this document we’ll use the term repo as
shorthand for a Mynewt repository.</p>
<p>Repos are useful because they are an organized way for the community to
share Mynewt packages and projects. In fact, the Mynewt-core is
distributed as a repo.</p>
</div>
<div class="section" id="why-does-mynewt-need-additional-repos">
<h2>Why does Mynewt need additional repos?<a class="headerlink" href="#why-does-mynewt-need-additional-repos" title="Permalink to this headline"></a></h2>
<p>Repos add functionality not included in the Mynewt core. New repos might
be created for several reasons.</p>
<ul class="simple">
<li><p><strong>Expertise</strong>. Individuals or organizations may have expertise that
they want to share in the form of repos. For example a chip vendor
may create a repo to hold the Mynewt support for their chips.</p></li>
<li><p><strong>Non-Core component</strong>. Some components, although very useful to
Mynewt users are not core to all Mynewt users. These are likely
candidates to be held in different repos.</p></li>
<li><p><strong>Software licensing</strong>. Some software have licenses that make them
incompatible with the ASF (Apache Software Foundation) license
policies. These may be valuable components to some Mynewt users, but
cannot be contained in the <code class="docutils literal notranslate"><span class="pre">apache-mynewt-core</span></code>.</p></li>
</ul>
</div>
<div class="section" id="what-repos-are-in-my-project">
<h2>What Repos are in my Project<a class="headerlink" href="#what-repos-are-in-my-project" title="Permalink to this headline"></a></h2>
<p>The list of repos used by your project are contained within the
<code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file. An example can be seen by creating a new project:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>mkdir<span class="w"> </span>~/dev
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>~/dev
<span class="gp">$ </span>newt<span class="w"> </span>new<span class="w"> </span>myproj
<span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>myproj
</pre></div>
</div>
<p>View the <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> section and you will see a line describing the
repos:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">project.repositories</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache-Mynewt-core</span>
</pre></div>
</div>
<p>By default, this newly created project uses a single repo called
<code class="docutils literal notranslate"><span class="pre">apache-Mynewt-core</span></code>.</p>
<p>If you wish to add additional repos, you would add additional lines to
the <code class="docutils literal notranslate"><span class="pre">project.repositories</span></code> variable like this.</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">project.repositories</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache-Mynewt-core</span>
<span class="hll"><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">another_repo_named_x</span>
</span></pre></div>
</div>
</div>
<div class="section" id="repo-descriptors">
<h2>Repo Descriptors<a class="headerlink" href="#repo-descriptors" title="Permalink to this headline"></a></h2>
<p>In addition to the repo name, the <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file must also contain
a repo descriptor for each repository you include that gives <code class="docutils literal notranslate"><span class="pre">newt</span></code>
information on obtaining the repo.</p>
<p>In the same <code class="docutils literal notranslate"><span class="pre">myproj</span></code> above you will see the following repo descriptor.</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">repository.apache-Mynewt-core</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">github</span>
<span class="w"> </span><span class="nt">vers</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1-latest</span>
<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache</span>
<span class="w"> </span><span class="nt">repo</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mynewt-core</span>
</pre></div>
</div>
<p>A repo descriptor starts with <code class="docutils literal notranslate"><span class="pre">repository.&lt;name&gt;.</span></code>. In this example,
the descriptor specifies the information for the <code class="docutils literal notranslate"><span class="pre">apache-Mynewt-core</span></code>.</p>
<p>The fields within the descriptor have the following definitions:</p>
<ul class="simple">
<li><p><strong>type</strong> – The type of code storage the repo uses. The current
version of <code class="docutils literal notranslate"><span class="pre">newt</span></code> only supports github. Future versions may support
generic git or other code storage mechanisms.</p></li>
<li><p><strong>vers</strong> – The version of the repo to use for your project. A source
code repository contains many versions of the source. This field is
used to specify the one to use for this project. See the section on
versions below for a detailed description of the format of this
field.</p></li>
<li><p><strong>user</strong> – The username for the repo. On github, this is the name
after <code class="docutils literal notranslate"><span class="pre">github.com</span></code> in the repo path. Consider the repository
<code class="docutils literal notranslate"><span class="pre">https://github.com/apache/mynewt-core</span></code>. It has username
<code class="docutils literal notranslate"><span class="pre">apache</span></code>.</p></li>
<li><p><strong>repo</strong> – The name of the repo. On github, this is the name after
the username described above. Consider the repository
<code class="docutils literal notranslate"><span class="pre">https://github.com/apache/mynewt-core</span></code>. It has path
<code class="docutils literal notranslate"><span class="pre">mynewt-core</span></code>. This is a path to the source control and should not
be confused with the name of the repo that you used in the
<code class="docutils literal notranslate"><span class="pre">repository.&lt;name&gt;</span></code> declaration above. That name is contained
elsewhere within the repo. See Below.</p></li>
</ul>
</div>
<div class="section" id="adding-existing-repos-to-my-project">
<h2>Adding Existing Repos to my Project<a class="headerlink" href="#adding-existing-repos-to-my-project" title="Permalink to this headline"></a></h2>
<p>To add a new repo to your project, you have to complete two steps.</p>
<ul class="simple">
<li><p>Edit the <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file and add a new repo descriptor. The
previous section includes information on the field required in your
repo descriptor.</p></li>
<li><p>Edit the <code class="docutils literal notranslate"><span class="pre">project/yml</span></code> file and add a new line to the
<code class="docutils literal notranslate"><span class="pre">project.repositories</span></code> variable with the name of the repo you are
adding.</p></li>
</ul>
<p>An example of a <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file with two repositories is shown
below:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">project.name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;my_project&quot;</span>
<span class="nt">project.repositories</span><span class="p">:</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache-mynewt-core</span>
<span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mynewt_arduino_zero</span>
<span class="c1"># Use github&#39;s distribution mechanism for core ASF libraries.</span>
<span class="c1"># This provides mirroring automatically for us.</span>
<span class="c1">#</span>
<span class="nt">repository.apache-mynewt-core</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">github</span>
<span class="w"> </span><span class="nt">vers</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1-latest</span>
<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache</span>
<span class="w"> </span><span class="nt">repo</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mynewt-core</span>
<span class="c1"># a special repo to hold hardware specific stuff for arduino zero</span>
<span class="nt">repository.mynewt_arduino_zero</span><span class="p">:</span>
<span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">github</span>
<span class="w"> </span><span class="nt">vers</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1-latest</span>
<span class="w"> </span><span class="nt">user</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">runtimeco</span>
<span class="w"> </span><span class="nt">repo</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">mynewt_arduino_zero</span>
</pre></div>
</div>
</div>
<div class="section" id="what-version-of-the-repo-to-use">
<h2>What Version of the Repo to use<a class="headerlink" href="#what-version-of-the-repo-to-use" title="Permalink to this headline"></a></h2>
<p>Mynewt repos are version-ed artifacts. They are stored in source control
systems like github. The repo descriptor in your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file
must specify the version of the repo you will accept into your project.</p>
<p>For now, we are at the beginnings of Mynewt. For testing and evaluation
please use <code class="docutils literal notranslate"><span class="pre">1-latest</span></code> in the <code class="docutils literal notranslate"><span class="pre">vers</span></code> field in your repo descriptor.</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>vers:1-latest
</pre></div>
</div>
<p>See <a class="reference internal" href="create_repo.html"><span class="doc">Create a Repo</span></a> for a description of the versioning
system and all the possible ways to specify a version to use.</p>
</div>
<div class="section" id="identifying-a-repo">
<h2>Identifying a Repo<a class="headerlink" href="#identifying-a-repo" title="Permalink to this headline"></a></h2>
<p>A repo contains Mynewt packages organized in a specific way and stored
in one of the supported code storage methods described above. In other
words, it is a Mynewt project with an additional file <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code>
which describes the repo for use by <code class="docutils literal notranslate"><span class="pre">newt</span></code> (and humans browsing them).
It contains a mapping of version numbers to the actual github branches
containing the source code.</p>
<p>Note that the <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file lives only in the master branch of
the git repository. <code class="docutils literal notranslate"><span class="pre">Newt</span></code> will always fetch this file from the master
branch and then use that to determine the actual branch required
depending on the version specified in your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file. Special
care should be taken to ensure that this file exists only in the master
branch.</p>
<p>Here is the <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file from the apache-mynewt-core:</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">repo.name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">apache-mynewt-core</span>
<span class="nt">repo.versions</span><span class="p">:</span>
<span class="w"> </span><span class="s">&quot;0.0.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;master&quot;</span>
<span class="w"> </span><span class="s">&quot;0.0.1&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;master&quot;</span>
<span class="w"> </span><span class="s">&quot;0.7.9&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_0_8_0_b2_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0.8.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_0_8_0_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0.9.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_0_9_0_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0.9.9&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_1_0_0_b1_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0.9.99&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_1_0_0_b2_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0.9.999&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_1_0_0_rc1_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;mynewt_1_0_0_tag&quot;</span>
<span class="w"> </span><span class="s">&quot;0-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="w"> </span><span class="c1"># 1.0.0</span>
<span class="w"> </span><span class="s">&quot;0-dev&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;0.0.0&quot;</span><span class="w"> </span><span class="c1"># master</span>
<span class="w"> </span><span class="s">&quot;0.8-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;0.8.0&quot;</span>
<span class="w"> </span><span class="s">&quot;0.9-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;0.9.0&quot;</span>
<span class="w"> </span><span class="s">&quot;1.0-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="w"> </span><span class="c1"># 1.0.0</span>
</pre></div>
</div>
<p>It contains the following:</p>
<ul class="simple">
<li><p><strong>repo.name</strong> The external name that is used to include the library
in your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file. This is the name you in include in the
<code class="docutils literal notranslate"><span class="pre">project.repositories</span></code> variable when adding this repository to your
project.</p></li>
<li><p><strong>repo.versions</strong> A description of what versions to give the user
depending on the settings in their <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file.</p></li>
</ul>
</div>
<div class="section" id="repo-version">
<h2>Repo Version<a class="headerlink" href="#repo-version" title="Permalink to this headline"></a></h2>
<p>The repo version number resolves to an actual git branch depending on
the mapping specified in <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> for that repo. The version
field argument in your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file supports multiple formats
for flexibility:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">&lt;major_num&gt;.&lt;minor_num&gt;.&lt;revision_num&gt;</span>
</pre></div>
</div>
<p>or</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">&lt;major_num&gt;.&lt;minor_num&gt;-&lt;stability string&gt;</span>
</pre></div>
</div>
<p>or</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">&lt;major_num&gt;-&lt;stability string&gt;</span>
</pre></div>
</div>
<p>The stability string can be one of 3 pre-defined stability values.</p>
<ol class="arabic simple">
<li><p>stable – A stable release version of the repository</p></li>
<li><p>dev – A development version from the repository</p></li>
<li><p>latest – The latest from the repository</p></li>
</ol>
<p>In your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file you can specify different combinations of
the version number and stability value. For example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">1-latest</span></code> – The latest version with major number 1</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">1.2-stable</span></code> – The latest stable version with major and minor
number 1.2</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">1.2-dev</span></code> – The development version from 1.2</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">1.1.1</span></code> – a specific version 1.1.1</p></li>
</ul>
<p>You cannot specify a stability string with a fully numbered version,
e.g.</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">1.2.8-stable</span>
</pre></div>
</div>
</div>
<div class="section" id="repo-versions-available">
<h2>Repo Versions Available<a class="headerlink" href="#repo-versions-available" title="Permalink to this headline"></a></h2>
<p>A <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file contains information to match a version
request into a git branch to fetch for your project.</p>
<p>It’s up to the repository maintainer to map these to branches of the
repository. For example, let’s say in a fictitious repository the
following are defined.</p>
<div class="highlight-yaml notranslate"><div class="highlight"><pre><span></span><span class="nt">repo.versions</span><span class="p">:</span>
<span class="w"> </span><span class="s">&quot;0.8.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_0_8_0&quot;</span>
<span class="w"> </span><span class="s">&quot;1.0.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_0_0&quot;</span>
<span class="w"> </span><span class="s">&quot;1.0.2&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_0_2&quot;</span>
<span class="w"> </span><span class="s">&quot;1.1.1&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_1_0&quot;</span>
<span class="w"> </span><span class="s">&quot;1.1.2&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_1_2&quot;</span>
<span class="w"> </span><span class="s">&quot;1.2.0&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_2_0&quot;</span>
<span class="w"> </span><span class="s">&quot;1.2.1&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;xxx_branch_1_2_1&quot;</span>
<span class="w"> </span><span class="s">&quot;1.2-dev&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1.2.1&quot;</span>
<span class="w"> </span><span class="s">&quot;1-dev&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1.2-dev&quot;</span>
<span class="w"> </span><span class="s">&quot;1.2-stable&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1.2.0&quot;</span>
<span class="w"> </span><span class="s">&quot;0-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;0.8.0&quot;</span>
<span class="w"> </span><span class="s">&quot;1-latest&quot;</span><span class="p p-Indicator">:</span><span class="w"> </span><span class="s">&quot;1-dev&quot;</span>
<span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">....</span>
</pre></div>
</div>
<p>When the <code class="docutils literal notranslate"><span class="pre">project.yml</span></code> file asks for <code class="docutils literal notranslate"><span class="pre">1.2-stable</span></code> it is resolved to
version <code class="docutils literal notranslate"><span class="pre">1.2.0</span></code> (perhaps <code class="docutils literal notranslate"><span class="pre">1.2.1</span></code> is not stable yet), which in turn
resolves to a specific branch <code class="docutils literal notranslate"><span class="pre">xxx_branch_1_2_0</span></code>. This is the branch
that <code class="docutils literal notranslate"><span class="pre">newt</span></code> fetches into your project.</p>
<p><strong>Note:</strong> Make sure a repo version exists in the <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file
of a repo you wish to add. Otherwise Newt will not be able to resolve
the version and will fail to fetch the repo into your project.</p>
</div>
<div class="section" id="how-to-find-out-what-repos-are-available-for-mynewt-components">
<h2>How to find out what Repos are available for Mynewt components<a class="headerlink" href="#how-to-find-out-what-repos-are-available-for-mynewt-components" title="Permalink to this headline"></a></h2>
<p>Currently, there is no <code class="docutils literal notranslate"><span class="pre">newt</span></code> command to locate/search Mynewt package
repositories. However, since the <code class="docutils literal notranslate"><span class="pre">newt</span></code> tool supports only github,
searching github by keyword is a satisfactory option until a search tool
is created.</p>
<p>When searching Github, recall that a Mynewt repository must have a
<code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file in its root directory. If you don’t see that
file, it’s not a Mynewt repository and can’t be included in your project
via the newt tool.</p>
<p>Once you find a repository, the Github URL and <code class="docutils literal notranslate"><span class="pre">repository.yml</span></code> file
should give you all the information to add it to your <code class="docutils literal notranslate"><span class="pre">project.yml</span></code>
file.</p>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="create_repo.html" class="btn btn-neutral float-right" title="Create a Repo out of a Project" accesskey="n">Next: Create a Repo out of a Project <span class="fa fa-arrow-circle-right"></span></a>
<a href="../blinky/blinky_console.html" class="btn btn-neutral" title="Enabling The Console and Shell for Blinky" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Enabling The Console and Shell for Blinky</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script type="text/javascript" src="../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../_static/js/main.js"></script>
</body>
</html>