<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.6 
 | Rendered using Apache Maven Fluido Skin 1.5-HBASE
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170822" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.5-HBASE.min.js"></script>

                          
        
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
                      
        
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap-responsive.min.css"/>
                      
        
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css"/>
                      
        
<link rel="stylesheet" href="css/site.css"/>
                      
        
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/highlight.min.js"></script>
          
                  </head>
        <body class="topBarEnabled">
          
                        
                    
                

    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
                                  <div class="container">
                <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                </a>
                <div class="nav-collapse">
                            
                                <ul class="nav">
                            </ul>
          
                          <div id="search-form" class="navbar-search pull-right">
      <script type="text/javascript">
      var cx = '000385458301414556862:sq1bb0xugjg';

      (function() {
        var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true;
        gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s);
      })();

    </script>
    <gcse:search></gcse:search>
  </div>
          
                                                                            
                   
                      </div>
          
        </div>
      </div>
    </div>
    
        <div class="container">
          <div id="banner">
        <div class="pull-left">
                                    <a href="https://www.eventbrite.com/e/hbasecon-asia-2017-tickets-34935546159" id="bannerLeft">
                                                                                                <img src="../../images/hbaseconasia2017.png"  alt="HBaseCon2017"/>
                </a>
                      </div>
        <div class="pull-right">                                <a href="../../" id="bannerRight">
                                                                                                <img src="../../images/hbase_logo_with_orca_large.png"  alt="Apache HBase"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
            
                
                    
      
                            </ul>
      </div>

      
                
        <div id="bodyColumn" >
                                  
            <div class="section">
<h2><a name="Overview"></a>Overview</h2><a name="Overview"></a>
<p>This project uses <a class="externalLink" href="http://git-scm.com/">Git</a> to manage its source code. Instructions on Git use can be found at <a class="externalLink" href="http://git-scm.com/documentation">http://git-scm.com/documentation</a>.</p></div>
<div class="section">
<h2><a name="Web_Browser_Access"></a>Web Browser Access</h2><a name="Web_Browser_Access"></a>
<p>The following is a link to a browsable version of the source repository:</p>
<div class="source"><pre class="prettyprint"><a class="externalLink" href="https://git-wip-us.apache.org/repos/asf?p=hbase.git/hbase-archetypes/hbase-shaded-client-project">https://git-wip-us.apache.org/repos/asf?p=hbase.git/hbase-archetypes/hbase-shaded-client-project</a></pre></div></div>
<div class="section">
<h2><a name="Anonymous_Access"></a>Anonymous Access</h2><a name="Anonymous_Access"></a>
<p>The source can be checked out anonymously from Git with this command (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>):</p>
<div class="source"><pre class="prettyprint">$ git clone git://git.apache.org/hbase.git</pre></div></div>
<div class="section">
<h2><a name="Developer_Access"></a>Developer Access</h2><a name="Developer_Access"></a>
<p>Only project developers can access the Git tree via this method (See <a class="externalLink" href="http://git-scm.com/docs/git-clone">http://git-scm.com/docs/git-clone</a>).</p>
<div class="source"><pre class="prettyprint">$ git clone https://git-wip-us.apache.org/repos/asf/hbase.git</pre></div></div>
<div class="section">
<h2><a name="Access_from_Behind_a_Firewall"></a>Access from Behind a Firewall</h2><a name="Access_from_Behind_a_Firewall"></a>
<p>Refer to the documentation of the SCM used for more information about access behind a firewall.</p></div>
                  </div>
          </div>

    <hr/>

    <footer>
            <div class="container">
                      <div class="row">
                                      <p >Copyright &copy;                    2007&#x2013;2017
                        <a href="https://www.apache.org/">The Apache Software Foundation</a>.
            All rights reserved.      
                    
                  <li id="publishDate" class="pull-right">Last Published: 2017-08-22</li>
            </p>
                </div>

                <p id="poweredBy" class="pull-right">
                          <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
              </p>
        
                </div>
    </footer>
        </body>
</html>
