diff options
Diffstat (limited to 'ex/v1.6.1/init.html')
-rw-r--r-- | ex/v1.6.1/init.html | 415 |
1 files changed, 415 insertions, 0 deletions
diff --git a/ex/v1.6.1/init.html b/ex/v1.6.1/init.html new file mode 100644 index 000000000..b924a4b5f --- /dev/null +++ b/ex/v1.6.1/init.html @@ -0,0 +1,415 @@ +<!DOCTYPE html> +<html> +<head> + <meta http-equiv="content-type" content="text/html;charset=utf-8"> + <title>init.c</title> + <link rel="stylesheet" href="../css.css"> + <style type="text/css"> + a.fnlink {text-decoration: none} + a.fnlink:hover {text-decoration: underline} + </style> +</head> +<body> +<div id='container'> + <div id="background"></div> + <div id="jump_to"> + Jump To … + <div id="jump_wrapper"> + <div id="jump_page"> + <a class="source" href="../../#v1.6.1">API Docs</a> + <a class="source" href="add.html">add.c</a> + <a class="source" href="args.html">args.c</a> + <a class="source" href="blame.html">blame.c</a> + <a class="source" href="cat-file.html">cat-file.c</a> + <a class="source" href="checkout.html">checkout.c</a> + <a class="source" href="clone.html">clone.c</a> + <a class="source" href="commit.html">commit.c</a> + <a class="source" href="common.html">common.c</a> + <a class="source" href="config.html">config.c</a> + <a class="source" href="describe.html">describe.c</a> + <a class="source" href="diff.html">diff.c</a> + <a class="source" href="fetch.html">fetch.c</a> + <a class="source" href="for-each-ref.html">for-each-ref.c</a> + <a class="source" href="general.html">general.c</a> + <a class="source" href="index-pack.html">index-pack.c</a> + <a class="source" href="init.html">init.c</a> + <a class="source" href="lg2.html">lg2.c</a> + <a class="source" href="log.html">log.c</a> + <a class="source" href="ls-files.html">ls-files.c</a> + <a class="source" href="ls-remote.html">ls-remote.c</a> + <a class="source" href="merge.html">merge.c</a> + <a class="source" href="push.html">push.c</a> + <a class="source" href="remote.html">remote.c</a> + <a class="source" href="rev-list.html">rev-list.c</a> + <a class="source" href="rev-parse.html">rev-parse.c</a> + <a class="source" href="show-index.html">show-index.c</a> + <a class="source" href="stash.html">stash.c</a> + <a class="source" href="status.html">status.c</a> + <a class="source" href="tag.html">tag.c</a> + </div> + </div> + </div> + <table cellspacing=0 cellpadding=0> + <thead> + <tr> + <th class=docs><h1>init.c</h1></th> + <th class=code></th> + </tr> + </thead> + <tbody> + <tr id='section-1'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-1">¶</a> + </div> + + </td> + <td class=code> + <div class='highlight'><pre><span></span><span class="cm">/*</span> +<span class="cm"> * libgit2 "init" example - shows how to initialize a new repo</span> +<span class="cm"> *</span> +<span class="cm"> * Written by the libgit2 contributors</span> +<span class="cm"> *</span> +<span class="cm"> * To the extent possible under law, the author(s) have dedicated all copyright</span> +<span class="cm"> * and related and neighboring rights to this software to the public domain</span> +<span class="cm"> * worldwide. This software is distributed without any warranty.</span> +<span class="cm"> *</span> +<span class="cm"> * You should have received a copy of the CC0 Public Domain Dedication along</span> +<span class="cm"> * with this software. If not, see</span> +<span class="cm"> * <http://creativecommons.org/publicdomain/zero/1.0/>.</span> +<span class="cm"> */</span> + +<span class="cp">#include</span> <span class="cpf">"common.h"</span><span class="cp"></span></pre></div> + </td> + </tr> + <tr id='section-2'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-2">¶</a> + </div> + <p>This is a sample program that is similar to "git init". See the +documentation for that (try "git help init") to understand what this +program is emulating.</p> + +<p>This demonstrates using the libgit2 APIs to initialize a new repository.</p> + +<p>This also contains a special additional option that regular "git init" +does not support which is "--initial-commit" to make a first empty commit. +That is demonstrated in the "create<em>initial</em>commit" helper function.</p> + </td> + <td class=code> + <div class='highlight'><pre></pre></div> + </td> + </tr> + <tr id='section-3'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-3">¶</a> + </div> + <p>Forward declarations of helpers</p> + </td> + <td class=code> + <div class='highlight'><pre><span class="k">struct</span> <span class="n">init_opts</span> <span class="p">{</span> + <span class="kt">int</span> <span class="n">no_options</span><span class="p">;</span> + <span class="kt">int</span> <span class="n">quiet</span><span class="p">;</span> + <span class="kt">int</span> <span class="n">bare</span><span class="p">;</span> + <span class="kt">int</span> <span class="n">initial_commit</span><span class="p">;</span> + <span class="kt">uint32_t</span> <span class="n">shared</span><span class="p">;</span> + <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">template</span><span class="p">;</span> + <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">gitdir</span><span class="p">;</span> + <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">dir</span><span class="p">;</span> +<span class="p">};</span> +<span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">);</span> +<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">init_opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[]);</span> + +<span class="kt">int</span> <span class="nf">lg2_init</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span> +<span class="p">{</span> + <span class="k">struct</span> <span class="n">init_opts</span> <span class="n">o</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">};</span> + + <span class="n">parse_opts</span><span class="p">(</span><span class="o">&</span><span class="n">o</span><span class="p">,</span> <span class="n">argc</span><span class="p">,</span> <span class="n">argv</span><span class="p">);</span> + + <span class="cm">/* Initialize repository. */</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">no_options</span><span class="p">)</span> <span class="p">{</span></pre></div> + </td> + </tr> + <tr id='section-4'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-4">¶</a> + </div> + <p>No options were specified, so let's demonstrate the default +simple case of git<em>repository</em>init() API usage...</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init-5" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_init">git_repository_init</a></span><span class="p">(</span><span class="o">&</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> + <span class="s">"Could not initialize repository"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="p">}</span> + <span class="k">else</span> <span class="p">{</span></pre></div> + </td> + </tr> + <tr id='section-5'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-5">¶</a> + </div> + <p>Some command line options were specified, so we'll use the +extended init API to handle them</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="n">git_repository_init_options</span> <span class="n">initopts</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_OPTIONS_INIT</span><span class="p">;</span> + <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_MKPATH</span><span class="p">;</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span><span class="p">)</span> + <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_BARE</span><span class="p">;</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">)</span> <span class="p">{</span> + <span class="n">initopts</span><span class="p">.</span><span class="n">flags</span> <span class="o">|=</span> <span class="n">GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE</span><span class="p">;</span> + <span class="n">initopts</span><span class="p">.</span><span class="n">template_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">template</span><span class="p">;</span> + <span class="p">}</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> <span class="p">{</span></pre></div> + </td> + </tr> + <tr id='section-6'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-6">¶</a> + </div> + <p>If you specified a separate git directory, then initialize +the repository at that path and use the second path as the +working directory of the repository (with a git-link file)</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="n">initopts</span><span class="p">.</span><span class="n">workdir_path</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">;</span> + <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">;</span> + <span class="p">}</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">shared</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">initopts</span><span class="p">.</span><span class="n">mode</span> <span class="o">=</span> <span class="n">o</span><span class="p">.</span><span class="n">shared</span><span class="p">;</span> + + <span class="n">check_lg2</span><span class="p">(</span><span class="n"><a name="git_repository_init_ext-6" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_init_ext">git_repository_init_ext</a></span><span class="p">(</span><span class="o">&</span><span class="n">repo</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">,</span> <span class="o">&</span><span class="n">initopts</span><span class="p">),</span> + <span class="s">"Could not initialize repository"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + <span class="p">}</span></pre></div> + </td> + </tr> + <tr id='section-7'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-7">¶</a> + </div> + <p>Print a message to stdout like "git init" does.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="p">.</span><span class="n">quiet</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">bare</span> <span class="o">||</span> <span class="n">o</span><span class="p">.</span><span class="n">gitdir</span><span class="p">)</span> + <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_path-7" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_path">git_repository_path</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span> + <span class="k">else</span> + <span class="n">o</span><span class="p">.</span><span class="n">dir</span> <span class="o">=</span> <span class="n"><a name="git_repository_workdir-8" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_workdir">git_repository_workdir</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span> + + <span class="n">printf</span><span class="p">(</span><span class="s">"Initialized empty Git repository in %s</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">o</span><span class="p">.</span><span class="n">dir</span><span class="p">);</span> + <span class="p">}</span></pre></div> + </td> + </tr> + <tr id='section-8'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-8">¶</a> + </div> + <p>As an extension to the basic "git init" command, this example +gives the option to create an empty initial commit. This is +mostly to demonstrate what it takes to do that, but also some +people like to have that empty base commit in their repo.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="p">.</span><span class="n">initial_commit</span><span class="p">)</span> <span class="p">{</span> + <span class="n">create_initial_commit</span><span class="p">(</span><span class="n">repo</span><span class="p">);</span> + <span class="n">printf</span><span class="p">(</span><span class="s">"Created empty initial commit</span><span class="se">\n</span><span class="s">"</span><span class="p">);</span> + <span class="p">}</span> + + <span class="n"><a name="git_repository_free-4" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_free">git_repository_free</a></span><span class="p">(</span><span class="n">repo</span><span class="p">);</span> + + <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> +<span class="p">}</span></pre></div> + </td> + </tr> + <tr id='section-9'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-9">¶</a> + </div> + <p>Unlike regular "git init", this example shows how to create an initial +empty commit in the repository. This is the helper function that does +that.</p> + </td> + <td class=code> + <div class='highlight'><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">create_initial_commit</span><span class="p">(</span><span class="n">git_repository</span> <span class="o">*</span><span class="n">repo</span><span class="p">)</span> +<span class="p">{</span> + <span class="n">git_signature</span> <span class="o">*</span><span class="n">sig</span><span class="p">;</span> + <span class="n">git_index</span> <span class="o">*</span><span class="n">index</span><span class="p">;</span> + <span class="n">git_oid</span> <span class="n">tree_id</span><span class="p">,</span> <span class="n">commit_id</span><span class="p">;</span> + <span class="n">git_tree</span> <span class="o">*</span><span class="n">tree</span><span class="p">;</span></pre></div> + </td> + </tr> + <tr id='section-10'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-10">¶</a> + </div> + <p>First use the config to initialize a commit signature for the user.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_signature_default-10" class="fnlink" href="../../#v1.6.1/group/signature/git_signature_default">git_signature_default</a></span><span class="p">(</span><span class="o">&</span><span class="n">sig</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">fatal</span><span class="p">(</span><span class="s">"Unable to create a commit signature."</span><span class="p">,</span> + <span class="s">"Perhaps 'user.name' and 'user.email' are not set"</span><span class="p">);</span> + + <span class="cm">/* Now let's create an empty tree for this commit */</span> + + <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_repository_index-9" class="fnlink" href="../../#v1.6.1/group/repository/git_repository_index">git_repository_index</a></span><span class="p">(</span><span class="o">&</span><span class="n">index</span><span class="p">,</span> <span class="n">repo</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">fatal</span><span class="p">(</span><span class="s">"Could not open repository index"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div> + </td> + </tr> + <tr id='section-11'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-11">¶</a> + </div> + <p>Outside of this example, you could call git<em>index</em>add_bypath() +here to put actual files into the index. For our purposes, we'll +leave it empty for now.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_index_write_tree-3" class="fnlink" href="../../#v1.6.1/group/index/git_index_write_tree">git_index_write_tree</a></span><span class="p">(</span><span class="o">&</span><span class="n">tree_id</span><span class="p">,</span> <span class="n">index</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">fatal</span><span class="p">(</span><span class="s">"Unable to write initial tree from index"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> + + <span class="n"><a name="git_index_free-2" class="fnlink" href="../../#v1.6.1/group/index/git_index_free">git_index_free</a></span><span class="p">(</span><span class="n">index</span><span class="p">);</span> + + <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_tree_lookup-12" class="fnlink" href="../../#v1.6.1/group/tree/git_tree_lookup">git_tree_lookup</a></span><span class="p">(</span><span class="o">&</span><span class="n">tree</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="o">&</span><span class="n">tree_id</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">fatal</span><span class="p">(</span><span class="s">"Could not look up initial tree"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div> + </td> + </tr> + <tr id='section-12'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-12">¶</a> + </div> + <p>Ready to create the initial commit.</p> + +<p>Normally creating a commit would involve looking up the current +HEAD commit and making that be the parent of the initial commit, +but here this is the first commit so there will be no parent.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">if</span> <span class="p">(</span><span class="n"><a name="git_commit_create_v-1" class="fnlink" href="../../#v1.6.1/group/commit/git_commit_create_v">git_commit_create_v</a></span><span class="p">(</span> + <span class="o">&</span><span class="n">commit_id</span><span class="p">,</span> <span class="n">repo</span><span class="p">,</span> <span class="s">"HEAD"</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> <span class="n">sig</span><span class="p">,</span> + <span class="nb">NULL</span><span class="p">,</span> <span class="s">"Initial commit"</span><span class="p">,</span> <span class="n">tree</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">fatal</span><span class="p">(</span><span class="s">"Could not create the initial commit"</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span></pre></div> + </td> + </tr> + <tr id='section-13'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-13">¶</a> + </div> + <p>Clean up so we don't leak memory.</p> + </td> + <td class=code> + <div class='highlight'><pre> <span class="n"><a name="git_tree_free-13" class="fnlink" href="../../#v1.6.1/group/tree/git_tree_free">git_tree_free</a></span><span class="p">(</span><span class="n">tree</span><span class="p">);</span> + <span class="n"><a name="git_signature_free-11" class="fnlink" href="../../#v1.6.1/group/signature/git_signature_free">git_signature_free</a></span><span class="p">(</span><span class="n">sig</span><span class="p">);</span> +<span class="p">}</span> + +<span class="k">static</span> <span class="kt">void</span> <span class="nf">usage</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">error</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">arg</span><span class="p">)</span> +<span class="p">{</span> + <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="s">"error: %s '%s'</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">error</span><span class="p">,</span> <span class="n">arg</span><span class="p">);</span> + <span class="n">fprintf</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> + <span class="s">"usage: init [-q | --quiet] [--bare] [--template=<dir>]</span><span class="se">\n</span><span class="s">"</span> + <span class="s">" [--shared[=perms]] [--initial-commit]</span><span class="se">\n</span><span class="s">"</span> + <span class="s">" [--separate-git-dir] <directory></span><span class="se">\n</span><span class="s">"</span><span class="p">);</span> + <span class="n">exit</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> +<span class="p">}</span></pre></div> + </td> + </tr> + <tr id='section-14'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-14">¶</a> + </div> + <p>Parse the tail of the --shared= argument.</p> + </td> + <td class=code> + <div class='highlight'><pre><span class="k">static</span> <span class="kt">uint32_t</span> <span class="nf">parse_shared</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">shared</span><span class="p">)</span> +<span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"false"</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"umask"</span><span class="p">))</span> + <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_UMASK</span><span class="p">;</span> + + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"true"</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"group"</span><span class="p">))</span> + <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span> + + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"all"</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"world"</span><span class="p">)</span> <span class="o">||</span> + <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">shared</span><span class="p">,</span> <span class="s">"everybody"</span><span class="p">))</span> + <span class="k">return</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_ALL</span><span class="p">;</span> + + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">shared</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">'0'</span><span class="p">)</span> <span class="p">{</span> + <span class="kt">long</span> <span class="n">val</span><span class="p">;</span> + <span class="kt">char</span> <span class="o">*</span><span class="n">end</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> + <span class="n">val</span> <span class="o">=</span> <span class="n">strtol</span><span class="p">(</span><span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="o">&</span><span class="n">end</span><span class="p">,</span> <span class="mi">8</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="n">end</span> <span class="o">==</span> <span class="n">shared</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">||</span> <span class="o">*</span><span class="n">end</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">usage</span><span class="p">(</span><span class="s">"invalid octal value for --shared"</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span> + <span class="k">return</span> <span class="p">(</span><span class="kt">uint32_t</span><span class="p">)</span><span class="n">val</span><span class="p">;</span> + <span class="p">}</span> + + <span class="k">else</span> + <span class="n">usage</span><span class="p">(</span><span class="s">"unknown value for --shared"</span><span class="p">,</span> <span class="n">shared</span><span class="p">);</span> + + <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> +<span class="p">}</span> + +<span class="k">static</span> <span class="kt">void</span> <span class="nf">parse_opts</span><span class="p">(</span><span class="k">struct</span> <span class="n">init_opts</span> <span class="o">*</span><span class="n">o</span><span class="p">,</span> <span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">argv</span><span class="p">[])</span> +<span class="p">{</span> + <span class="k">struct</span> <span class="n">args_info</span> <span class="n">args</span> <span class="o">=</span> <span class="n">ARGS_INFO_INIT</span><span class="p">;</span> + <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">sharedarg</span><span class="p">;</span></pre></div> + </td> + </tr> + <tr id='section-15'> + <td class=docs> + <div class="pilwrap"> + <a class="pilcrow" href="#section-15">¶</a> + </div> + <p>Process arguments.</p> + + </td> + <td class=code> + <div class='highlight'><pre> <span class="k">for</span> <span class="p">(</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="n">args</span><span class="p">.</span><span class="n">pos</span> <span class="o"><</span> <span class="n">argc</span><span class="p">;</span> <span class="o">++</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">)</span> <span class="p">{</span> + <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">argv</span><span class="p">[</span><span class="n">args</span><span class="p">.</span><span class="n">pos</span><span class="p">];</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">'-'</span><span class="p">)</span> + <span class="n">o</span><span class="o">-></span><span class="n">no_options</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> + + <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">!=</span> <span class="sc">'-'</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="n">o</span><span class="o">-></span><span class="n">dir</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> + <span class="n">usage</span><span class="p">(</span><span class="s">"extra argument"</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span> + <span class="n">o</span><span class="o">-></span><span class="n">dir</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span> + <span class="p">}</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">"-q"</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">"--quiet"</span><span class="p">))</span> + <span class="n">o</span><span class="o">-></span><span class="n">quiet</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">"--bare"</span><span class="p">))</span> + <span class="n">o</span><span class="o">-></span><span class="n">bare</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">"--shared"</span><span class="p">))</span> + <span class="n">o</span><span class="o">-></span><span class="n">shared</span> <span class="o">=</span> <span class="n">GIT_REPOSITORY_INIT_SHARED_GROUP</span><span class="p">;</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">strcmp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="s">"--initial-commit"</span><span class="p">))</span> + <span class="n">o</span><span class="o">-></span><span class="n">initial_commit</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&</span><span class="n">sharedarg</span><span class="p">,</span> <span class="o">&</span><span class="n">args</span><span class="p">,</span> <span class="s">"--shared"</span><span class="p">))</span> + <span class="n">o</span><span class="o">-></span><span class="n">shared</span> <span class="o">=</span> <span class="n">parse_shared</span><span class="p">(</span><span class="n">sharedarg</span><span class="p">);</span> + <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&</span><span class="n">o</span><span class="o">-></span><span class="n">template</span><span class="p">,</span> <span class="o">&</span><span class="n">args</span><span class="p">,</span> <span class="s">"--template"</span><span class="p">)</span> <span class="o">||</span> + <span class="o">!</span><span class="n">match_str_arg</span><span class="p">(</span><span class="o">&</span><span class="n">o</span><span class="o">-></span><span class="n">gitdir</span><span class="p">,</span> <span class="o">&</span><span class="n">args</span><span class="p">,</span> <span class="s">"--separate-git-dir"</span><span class="p">))</span> + <span class="n">usage</span><span class="p">(</span><span class="s">"unknown option"</span><span class="p">,</span> <span class="n">a</span><span class="p">);</span> + <span class="p">}</span> + + <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">o</span><span class="o">-></span><span class="n">dir</span><span class="p">)</span> + <span class="n">usage</span><span class="p">(</span><span class="s">"must specify directory to init"</span><span class="p">,</span> <span class="s">""</span><span class="p">);</span> +<span class="p">}</span></pre></div> + </td> + </tr> + </table> +</div> +</body> |