blob: 869e2cb6dc406535f145f21e2f9e1a1a0344f54c [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">
<title>Apache TomEE</title>
<meta name="description"
content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
<meta name="author" content="Luka Cvetinovic for Codrops" />
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" href="../favicon.png">
<meta name="msapplication-TileColor" content="#80287a">
<meta name="theme-color" content="#80287a">
<link rel="stylesheet" type="text/css" href="../css/normalize.css">
<link rel="stylesheet" type="text/css" href="../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../css/owl.css">
<link rel="stylesheet" type="text/css" href="../css/animate.css">
<link rel="stylesheet" type="text/css" href="../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../fonts/eleganticons/et-icons.css">
<link rel="stylesheet" type="text/css" href="../css/jqtree.css">
<link rel="stylesheet" type="text/css" href="../css/idea.css">
<link rel="stylesheet" type="text/css" href="../css/cardio.css">
<script type="text/javascript">
<!-- Matomo -->
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = "//matomo.privacy.apache.org/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '5']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
<!-- End Matomo Code -->
</script>
</head>
<body>
<div class="preloader">
<img src="../img/loader.gif" alt="Preloader image">
</div>
<nav class="navbar">
<div class="container">
<div class="row"> <div class="col-md-12">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/" title="Apache TomEE">
<span>
<img
src="../img/apache_tomee-logo.svg"
onerror="this.src='../img/apache_tomee-logo.jpg'"
height="50"
>
</span>
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right main-nav">
<li><a href="../docs.html">Documentation</a></li>
<li><a href="../community/index.html">Community</a></li>
<li><a href="../security/security.html">Security</a></li>
<li><a class="btn btn-accent accent-orange no-shadow" href="../download.html">Downloads</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div></div>
</div>
<!-- /.container-fluid -->
</nav>
<div id="main-block" class="container main-block">
<div class="row title">
<div class="col-md-12">
<div class='page-header'>
<h1>GIT for TomEE Developers</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="sect1">
<h2 id="_the_gitflow_workflow">The GitFlow Workflow</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Notes before you begin (mostly for SVN users):</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The '<em>develop</em>' repository is the equivalent of the SVN <em>trunk</em> directory.</p>
</li>
<li>
<p>The '<em>master</em>' repository is the equivalent of the SVN <em>tags</em> directory.</p>
</li>
<li>
<p>The '<em>origin</em>' is the actual GIT repository that contains the projects <em>master</em>, <em>develop</em> and other branches (Like trunk, branches and tags).</p>
</li>
<li>
<p>Unlike SVN a 'commit' is only a local action.
The local commits are only published to the remote repository using 'push'.</p>
</li>
<li>
<p>Commit and push code to your own feature branch as often as you like, but only merge stable branches back into to the <em>develop</em> branch.</p>
</li>
<li>
<p>Only the release manager should manage the <em>master</em> repository</p>
</li>
<li>
<p>Read the official Apache Committer documentation <a href="https://gitbox.apache.org/#committers-getting-started">here</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Run commands in the directory of the project you are working on, for example 'tomee':</p>
</div>
<div class="paragraph">
<p>Always create a feature branch from <em>develop</em> using an '<em>extremely</em>' descriptive name, this should usually be the <a href="https://issues.apache.org/jira/browse/TOMEE">JIRA</a> id or task name you want to work on:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git checkout -b TOMEE-007 develop
Switched to a new branch 'TOMEE-007'</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre>git status
nothing to commit, working directory clean</pre>
</div>
</div>
<div class="paragraph">
<p>Immediately push the new branch to the repository so everyone can see it remotely (and possibly collaborate):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git push -u origin TOMEE-007
Branch TOMEE-007 set up to track remote branch TOMEE-007 from origin.</pre>
</div>
</div>
<div class="paragraph">
<p>Once that is done then you just need the simple push for subsequent calls on this branch:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git push</pre>
</div>
</div>
<div class="paragraph">
<p>Work like mad on the JIRA issue calling commit and add as often as you like&#8230;&#8203;</p>
</div>
<div class="paragraph">
<p>If others are working on your branch also remember to pull their changes (Or just as good practice):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git pull
git commit
git push</pre>
</div>
</div>
<div class="paragraph">
<p>Finally, to push the completed (or significant non-breaking progress on the) feature to <em>develop</em> at any time (ensuring <em>develop</em> is up to date first):</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git pull origin develop</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre>git checkout develop</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre>git merge --no-ff TOMEE-007</pre>
</div>
</div>
<div class="paragraph">
<p>Once the completed feature is merged and the JIRA resolved then the branch can and 'should' be deleted before pushing:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>git branch -d TOMEE-007</pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre>git push origin develop</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_gui_way">The GUI Way</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Now we have learned to do it the hard way, time to look at the simplified version.
The GitHub native tools!</p>
</div>
<div class="paragraph">
<p>For the latest mac version go here: <a href="https://mac.github.com/">Mac Latest</a>,</p>
</div>
<div class="paragraph">
<p>And windows here: <a href="https://windows.github.com/">Win Latest</a></p>
</div>
<div class="paragraph">
<p>These tools will probably not save you much time over the command line, but provide a much better visualization of ongoing processes.</p>
</div>
<div class="paragraph">
<p>The steps are and remain as described above:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>From <em>develop</em> create a new branch called, for example TOMEE-007</p>
</li>
<li>
<p>'Publish' (push -u) the new branch</p>
</li>
<li>
<p>Work on the branch and commit regularly</p>
</li>
<li>
<p>Synchronize (pull and push) changes in the the branch when stable</p>
</li>
<li>
<p>Switch to <em>develop</em> and synchronize (pull)</p>
</li>
<li>
<p>Merge the branch into <em>develop</em>, i.e. 'TOMEE-007' + 'develop' = 'develop' *See note below</p>
</li>
<li>
<p>Commit <em>develop</em></p>
</li>
<li>
<p>Synchronize <em>develop</em> (pull and push)</p>
</li>
<li>
<p>Delete the branch TOMEE-007</p>
</li>
</ol>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
You can actually merge the current *develop_ (or any other 'synchronized' branch) into your branch first to make sure it is stable,i.e.
'develop' + 'TOMEE-007' = 'TOMEE-007' - This is really cool!
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 30px;"></div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-6 text-center-mobile">
<h3 class="white">Be simple. Be certified. Be Tomcat.</h3>
<h5 class="light regular light-white">"A good application in a good server"</h5>
<ul class="social-footer">
<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
</ul>
<h5 class="light regular light-white">
<a href="../privacy-policy.html" class="white">Privacy Policy</a>
</h5>
</div>
<div class="col-sm-6 text-center-mobile">
<div class="row opening-hours">
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/docs/" class="white">Documentation</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
<li><a href="../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
<li><a href="../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
<li><a href="../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/examples/" class="white">Examples</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
<li><a href="../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
<li><a href="../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
<li><a href="../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../community/index.html" class="white">Community</a></h5>
<ul class="list-unstyled">
<li><a href="../community/contributors.html" class="regular light-white">Contributors</a></li>
<li><a href="../community/social.html" class="regular light-white">Social</a></li>
<li><a href="../community/sources.html" class="regular light-white">Sources</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../security/index.html" class="white">Security</a></h5>
<ul class="list-unstyled">
<li><a href="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="https://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row bottom-footer text-center-mobile">
<div class="col-sm-12 light-white">
<p>Copyright &copy; 1999-2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</div>
</div>
</div>
</footer>
<!-- Holder for mobile navigation -->
<div class="mobile-nav">
<ul>
<li><a hef="../latest/docs/admin/index.html">Administrators</a>
<li><a hef="../latest/docs/developer/index.html">Developers</a>
<li><a hef="../latest/docs/advanced/index.html">Advanced</a>
<li><a hef="../community/index.html">Community</a>
</ul>
<a href="#" class="close-link"><i class="arrow_up"></i></a>
</div>
<!-- Scripts -->
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/owl.carousel.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/wow.min.js"></script>
<script src="../js/typewriter.js"></script>
<script src="../js/jquery.onepagenav.js"></script>
<script src="../js/tree.jquery.js"></script>
<script src="../js/highlight.pack.js"></script>
<script src="../js/main.js"></script>
</body>
</html>