blob: 3cbbad3cf68262b2512a647c5a559d2cc1e4dd44 [file]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Contributing :: causeway</title>
<link rel="canonical" href="https://causeway.apache.org/conguide/latest/contributing.html">
<meta name="generator" content="Antora 3.1.14">
<link rel="stylesheet" href="../../_/css/site.css">
<link rel="stylesheet" href="../../_/css/site-custom.css">
<link rel="home" href="https://causeway.apache.org" title="causeway">
<link rel="next" href="../latest/documentation/about.html" title="Documentation">
<link rel="prev" href="building-apache-causeway.html" title="Building Apache Causeway">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://causeway.apache.org">
<span class="icon">
<img src="../../_/img/causeway-logo-no-words-65x48.png"></img>
</span>
<span class="navbar-title">causeway</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<a class="navbar-end">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Quick Start</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Starter Apps</span>
<a class="navbar-item" href="../../docs/latest/starters/helloworld.html">Hello World</a>
<a class="navbar-item" href="../../docs/latest/starters/simpleapp.html">Simple App</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Learning &amp; Tutorials</span>
<a class="navbar-item" href="../../docs/latest/reference/about.html">Reference App</a>
<a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Resources</span>
<a class="navbar-item" href="../../docs/latest/resources/cheatsheet.html">Cheatsheet</a>
<a class="navbar-item" href="../../docs/latest/resources/icons.html">Icons</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Guides</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../userguide/latest/about.html">User Guide</a>
<a class="navbar-item" href="../../refguide/latest/about.html">Reference Guide</a>
<a class="navbar-item" href="../../testing/latest/about.html">Testing Guide</a>
<a class="navbar-item" href="../../security/latest/about.html">Security Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">For use in apps</span>
<a class="navbar-item" href="../../valuetypes/latest/about.html">Value Types</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../setupguide/latest/about.html">Setup Guide</a>
<a class="navbar-item" href="../../conguide/latest/about.html">Contributors' Guide</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Components</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../security/latest/bypass/about.html">Bypass</a>
<a class="navbar-item" href="../../security/latest/simple/about.html">Simple</a>
<a class="navbar-item" href="../../security/latest/spring/about.html">Spring</a>
<a class="navbar-item" href="../../security/latest/keycloak/about.html">Keycloak</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Viewers</span>
<a class="navbar-item" href="../../vw/latest/about.html">Web UI (Wicket)</a>
<a class="navbar-item" href="../../gqlv/latest/about.html">GraphQL API</a>
<a class="navbar-item" href="../../vro/latest/about.html">REST API (Restful Objects)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../pjpa/latest/about.html">JPA (EclipseLink)</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Extensions</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../userguide/latest/commandlog/about.html">Command Log</a>
<a class="navbar-item" href="../../userguide/latest/docgen/about.html">Doc Gen</a>
<a class="navbar-item" href="../../userguide/latest/executionlog/about.html">Execution Log</a>
<a class="navbar-item" href="../../userguide/latest/executionoutbox/about.html">Execution Outbox</a>
<a class="navbar-item" href="../../userguide/latest/executionrepublisher/about.html">Execution Republisher</a>
<a class="navbar-item" href="../../userguide/latest/excel/about.html">Excel</a>
<a class="navbar-item" href="../../userguide/latest/flyway/about.html">Flyway</a>
<a class="navbar-item" href="../../userguide/latest/layoutloaders/about.html">Layout Loaders</a>
<a class="navbar-item" href="../../userguide/latest/titlecache/about.html">Title Cache</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../security/latest/secman/about.html">Secman</a>
<a class="navbar-item" href="../../security/latest/audittrail/about.html">Audit Trail</a>
<a class="navbar-item" href="../../security/latest/spring-oauth2/about.html">Spring OAuth2 Integration</a>
<a class="navbar-item" href="../../security/latest/sessionlog/about.html">Session Log</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Web UI (Wicket)</span>
<a class="navbar-item" href="../../vw/latest/fullcalendar/about.html">Full Calendar</a>
<a class="navbar-item" href="../../vw/latest/pdfjs/about.html">pdf.js</a>
<a class="navbar-item" href="../../vw/latest/sse/about.html">Server Side Events</a>
<a class="navbar-item" href="../../vw/latest/tabular/about.html">Tabular Download</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">REST API (Restful Objects)</span>
<a class="navbar-item" href="../../vro/latest/cors/about.html">CORS</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../querydsl/latest/about.html">QueryDSL</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Support</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Contact</span>
<a class="navbar-item" href="../../docs/latest/support/slack-channel.html">Slack</a>
<a class="navbar-item" href="../../docs/latest/support/mailing-list.html">Mailing Lists</a>
<a class="navbar-item" href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a>
<a class="navbar-item" href="https://stackoverflow.com/questions/tagged/causeway">Stack Overflow</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Releases</span>
<a class="navbar-item" href="../../docs/latest/downloads/how-to.html">Downloads</a>
<a class="navbar-item" href="../../relnotes/latest/about.html">Release Notes</a>
<hr class="navbar-divider"/>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Framework</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Process</span>
<a class="navbar-item" href="../../comguide/latest/about.html">Committers' Guide</a>
<a class="navbar-item" href="../../tooling/latest/about.html">Tooling</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Automated Analysis</span>
<a class="navbar-item" href="https://sonarcloud.io/dashboard?id=apache_causeway">SonarCloud.io</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Interim Builds</span>
<a class="navbar-item" href="../../comguide/latest/nightly-builds.html">Nightly builds</a>
<a class="navbar-item" href="../../comguide/latest/weekly-builds.html">Weekly builds</a>
<a class="navbar-item" href="https://apache-causeway-committers.github.io/causeway-nightly">Website Preview (not ASF hosted)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../core/latest/about.html">Internal Design Docs</a>
<a class="navbar-item" href="../../regressiontests/latest/about.html">Regression Tests</a>
<a class="navbar-item" href="../../incubator/latest/about.html">Incubator</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Thanks</span>
<a class="navbar-item" href="../../more-thanks/latest/more-thanks.html">Acknowledgements</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">ASF</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
<a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
<a class="navbar-item" href="https://www.apache.org/licenses/">License</a>
<a class="navbar-item" href="https://www.apache.org/security/">Security</a>
<a class="navbar-item" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
<a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<hr class="navbar-divider"/>
<a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Causeway.html">PMC board minutes</a>
</div>
</div>
<a class="navbar-item" href="../../docs/latest/about.html">
<span class="icon">
<img src="../../_/img/home.png"></img>
</span>
</a>
</div>
</div>
</nav>
</header>
<div class="body ">
<div class="nav-container" data-component="conguide" data-version="2.1.0">
<aside class="nav">
<div class="panels">
<div class="nav-panel-search hide-for-print">
<input id="algolia-search-input" placeholder="Search"></span>
</div>
<div class="nav-panel-pagination">
<a class="page-previous" rel="prev" href="building-apache-causeway.html" title="Building Apache Causeway"><span></span></a>
<a class="page-next" rel="next"
href="../latest/documentation/about.html" title="Documentation"><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent disabled" rel="prev" href="" title="Building Apache Causeway"><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="about.html">Contributors&#x27; Guide</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="building-apache-causeway.html">Building Apache Causeway</a>
</li>
<li class="nav-item is-current-page" data-depth="1">
<a class="nav-link" href="contributing.html">Contributing</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../latest/documentation/about.html">Documentation</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../latest/documentation/building-docs-and-website.html">Building Docs and Website</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../latest/documentation/asciidoc-syntax.html">AsciiDoc Syntax</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../latest/intellij/about.html">IntelliJ</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../latest/eclipse/about.html">Eclipse</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../latest/git/about.html">Git Cookbook</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Contributors&#x27; Guide</span>
<span class="version">2.1.0</span>
</div>
<ul class="components">
<li class="component">
<span class="title"> </span>
<ul class="versions">
<li class="version">
<a href="../../docs/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../docs/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../docs/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../docs/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../docs/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../docs/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../docs/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../docs/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../docs/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../docs/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../docs/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Committers' Guide</span>
<ul class="versions">
<li class="version">
<a href="../../comguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../comguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../comguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../comguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../comguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../comguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../comguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../comguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../comguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../comguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../comguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component is-current">
<span class="title">Contributors' Guide</span>
<ul class="versions">
<li class="version">
<a href="../latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../3.0.0/about.html">3.0.0</a>
</li>
<li class="version is-current">
<a href="about.html">2.1.0</a>
</li>
<li class="version">
<a href="../2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Design Docs</span>
<ul class="versions">
<li class="version">
<a href="../../core/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../core/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../core/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../core/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../core/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../core/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../core/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../core/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../core/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../core/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../core/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Extensions</span>
<ul class="versions">
<li class="version">
<a href="../../extensions/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../extensions/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../extensions/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../extensions/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../extensions/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../extensions/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../extensions/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../extensions/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../extensions/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../extensions/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../extensions/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">GraphQL Viewer</span>
<ul class="versions">
<li class="version">
<a href="../../gqlv/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../gqlv/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../gqlv/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../gqlv/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../gqlv/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../gqlv/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Incubator Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../incubator/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../incubator/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../incubator/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../incubator/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../incubator/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../incubator/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../incubator/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../incubator/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../incubator/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../incubator/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../incubator/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JDO/DataNucleus</span>
<ul class="versions">
<li class="version">
<a href="../../pjdo/latest/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../pjdo/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../pjdo/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../pjdo/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JPA</span>
<ul class="versions">
<li class="version">
<a href="../../pjpa/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../pjpa/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../pjpa/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../pjpa/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../pjpa/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../pjpa/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">QueryDSL</span>
<ul class="versions">
<li class="version">
<a href="../../querydsl/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../querydsl/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../querydsl/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../querydsl/3.2.0/about.html">3.2.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Reference Guide</span>
<ul class="versions">
<li class="version">
<a href="../../refguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../refguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../refguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../refguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../refguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../refguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../refguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../refguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../refguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../refguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../refguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">regressiontests</span>
<ul class="versions">
<li class="version">
<a href="../../regressiontests/latest/index.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../regressiontests/4.0.0-M1/index.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../regressiontests/3.6.0/index.html">3.6.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.5.0/index.html">3.5.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.4.0/index.html">3.4.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.3.0/index.html">3.3.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.2.0/index.html">3.2.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.1.0/index.html">3.1.0</a>
</li>
<li class="version">
<a href="../../regressiontests/3.0.0/index.html">3.0.0</a>
</li>
<li class="version">
<a href="../../regressiontests/2.1.0/index.html">2.1.0</a>
</li>
<li class="version">
<a href="../../regressiontests/2.0.0/index.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Release Notes</span>
<ul class="versions">
<li class="version">
<a href="../../relnotes/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../relnotes/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../relnotes/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../relnotes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../relnotes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../relnotes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">REST API (Restful Objects Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../vro/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../vro/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../vro/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../vro/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../vro/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../vro/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../vro/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../vro/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../vro/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../vro/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../vro/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Security Guide</span>
<ul class="versions">
<li class="version">
<a href="../../security/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../security/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../security/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../security/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../security/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../security/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../security/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../security/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../security/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../security/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../security/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Setup Guide</span>
<ul class="versions">
<li class="version">
<a href="../../setupguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../setupguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../setupguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../setupguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../setupguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../setupguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Testing Guide</span>
<ul class="versions">
<li class="version">
<a href="../../testing/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../testing/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../testing/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../testing/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../testing/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../testing/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../testing/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../testing/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../testing/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../testing/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../testing/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Tutorials</span>
<ul class="versions">
<li class="version">
<a href="../../tutorials/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../tutorials/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../tutorials/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../tutorials/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../tutorials/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../tutorials/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">User Guide</span>
<ul class="versions">
<li class="version">
<a href="../../userguide/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../userguide/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../userguide/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../userguide/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../userguide/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../userguide/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../userguide/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../userguide/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../userguide/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../userguide/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../userguide/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Value Types Catalog</span>
<ul class="versions">
<li class="version">
<a href="../../valuetypes/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../valuetypes/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../valuetypes/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../valuetypes/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../valuetypes/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../valuetypes/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Web UI (Wicket Viewer)</span>
<ul class="versions">
<li class="version">
<a href="../../vw/latest/about.html">4.0.0-M2</a>
</li>
<li class="version">
<a href="../../vw/4.0.0-M1/about.html">4.0.0-M1</a>
</li>
<li class="version">
<a href="../../vw/3.6.0/about.html">3.6.0</a>
</li>
<li class="version">
<a href="../../vw/3.5.0/about.html">3.5.0</a>
</li>
<li class="version">
<a href="../../vw/3.4.0/about.html">3.4.0</a>
</li>
<li class="version">
<a href="../../vw/3.3.0/about.html">3.3.0</a>
</li>
<li class="version">
<a href="../../vw/3.2.0/about.html">3.2.0</a>
</li>
<li class="version">
<a href="../../vw/3.1.0/about.html">3.1.0</a>
</li>
<li class="version">
<a href="../../vw/3.0.0/about.html">3.0.0</a>
</li>
<li class="version">
<a href="../../vw/2.1.0/about.html">2.1.0</a>
</li>
<li class="version">
<a href="../../vw/2.0.0/about.html">2.0.0</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../docs/latest/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="about.html">Contributors' Guide</a></li>
<li><a href="contributing.html">Contributing</a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">2.1.0</button>
<div class="version-menu">
<a class="version" href="../latest/contributing.html">4.0.0-M2</a>
<a class="version" href="../4.0.0-M1/contributing.html">4.0.0-M1</a>
<a class="version" href="../3.6.0/contributing.html">3.6.0</a>
<a class="version" href="../3.5.0/contributing.html">3.5.0</a>
<a class="version" href="../3.4.0/contributing.html">3.4.0</a>
<a class="version" href="../3.3.0/contributing.html">3.3.0</a>
<a class="version" href="../3.2.0/contributing.html">3.2.0</a>
<a class="version" href="../3.1.0/contributing.html">3.1.0</a>
<a class="version" href="../3.0.0/contributing.html">3.0.0</a>
<a class="version is-current" href="contributing.html">2.1.0</a>
<a class="version" href="../2.0.0/contributing.html">2.0.0</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/causeway/edit/2.1.0/antora/components/conguide/modules/ROOT/pages/contributing.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">Contributing</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This page explains how you can contribute to Apache Causeway.
You&#8217;ll probably also want <a href="../../setupguide/latest/about.html" class="xref page">set up your IDE</a> and learn <a href="../latest/building-apache-causeway.html" class="xref page">how to build Apache Causeway</a>.</p>
</div>
<div class="paragraph">
<p>Thanks for considering to help out, your contributions are appreciated!</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="recommended-workflow-github"><a class="anchor" href="#recommended-workflow-github"></a>Recommended Workflow (GitHub)</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apache Causeway' source code is hosted in at GitHub (<a href="https://github.com/apache/causeway.git">https</a>, or ssh: <code>git@github.com:apache/causeway.git</code>).</p>
</div>
<div class="paragraph">
<p>As you might imagine, only committers are permitted to push changes to the GitHub repo.
As a contributor, we recommend that you fork the <a href="https://github.com/apache/causeway.git">apache/causeway</a> GitHub repo, and then use your fork as a way of publishing your patches for the Apache Causeway committers to apply.</p>
</div>
<div class="paragraph">
<p>The diagram below illustrates the process:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="_images/contributing/git-workflow.png" alt="git workflow" width="600px">
</div>
</div>
<div class="paragraph">
<p>That is:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>as a one-time activity, you fork the <a href="https://github.com/apache/causeway.git">github.com/apache/causeway</a> repo into your own fork on github.com</p>
</li>
<li>
<p>as a one-time activity, you clone your fork to your local computer</p>
</li>
<li>
<p>you set the <a href="https://github.com/apache/causeway.git">github.com/apache/causeway</a> as your upstream branch; this will allow you to keep your local clone up-to-date with new commits</p>
<div class="ulist">
<ul>
<li>
<p>note the asymmetry here: the <code>upstream</code> repo (the Apache GitHub repo) is <strong>not</strong> the same as the <code>origin</code> repo (your fork).</p>
</li>
</ul>
</div>
</li>
<li>
<p>you work on your changes locally; when done, you push them to your GitHub fork</p>
</li>
<li>
<p>to contribute back a change, raise a <a href="https://issues.apache.org/jira/browse/CAUSEWAY">JIRA</a> ticket (you will need to log in or create a new account first), and ensure your commit message is in the form: <code>CAUSEWAY-nnnn: &#8230;&#8203;</code> so that changes can be tracked (more discussion on this point below).
In any case, before you decide to start hacking with Apache Causeway, it&#8217;s always worth creating a ticket in JIRA and then have a discussion about it on the <a href="../../docs/latest/support/mailing-list.html" class="xref page">mailing lists</a>.</p>
</li>
<li>
<p>Use GitHub to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a> for your feature</p>
</li>
<li>
<p>An Apache Causeway committer will review your change, and apply it if suitable.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="setting-up-your-forkclone"><a class="anchor" href="#setting-up-your-forkclone"></a>Setting up your fork/clone</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you choose to create your own fork then you&#8217;ll need an account on <a href="https://github.com">github.com</a>.
You then fork simply by pressing the "Fork" button:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="_images/contributing/github-forking.png" alt="github forking" width="600px">
</div>
</div>
<div class="paragraph">
<p>An account isn&#8217;t needed if you just clone straight from the <a href="http://github.com/apache/causeway">github.com/apache/causeway</a>.</p>
</div>
<div class="paragraph">
<p>Whether you&#8217;ve forked or not, you then need to clone the repo onto your computer.
GitHub makes this very easy to do:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>for Windows users, we suggest you use GitHub&#8217;s 'Clone in Windows' feature</p>
</li>
<li>
<p>for Mac/Linux users, create a clone from the command line:</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Again, the info is easily found in the GitHub page:</p>
</div>
<div class="imageblock">
<div class="content">
<img src="_images/contributing/github-cloning.png" alt="github cloning" width="600px">
</div>
</div>
<div class="paragraph">
<p>If you&#8217;ve created your own fork, then you need to add the <code>upstream</code> remote to the <a href="https://github.com/apache/causeway">github.com/apache/causeway</a>.
This remote is traditionally called <code>upstream</code>.
You should then arrange for your <code>master</code> branch to track the <code>upstream/master</code> remote branch:</p>
</div>
<div class="paragraph">
<p>If you didn&#8217;t create your own fork, you can omit the above step.
Either way around, you can now fetch new commits using simply:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git fetch</code></pre>
</div>
</div>
<div class="paragraph">
<p>For more info on tracking branches <a href="http://git-scm.com/book/en/Git-Branching-Remote-Branches">here</a> and <a href="http://gitready.com/beginner/2009/03/09/remote-tracking-branches.html">here</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="commit-messages"><a class="anchor" href="#commit-messages"></a>Commit messages</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Although with git your commits are always performed on your local repo, those commit messages become public when the patch is applied by an Apache Causeway committer.
You should take time to write a meaningful commit message that helps explain what the patch refers to; if you don&#8217;t then there&#8217;s a chance that your patch may be rejected and not applied.
No-one likes hard work to go to waste!</p>
</div>
<div class="paragraph">
<p>We therefore recommend that your commit messages are as follows:<sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnotedef_1" title="View footnote.">1</a>]</sup></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-other hljs" data-lang="other">CAUSEWAY-999: Makes the example in CONTRIBUTING imperative and concrete
Without this patch applied, the example commit message in the CONTRIBUTING
document is not a concrete example. This is a problem because the
contributor is left to imagine what the commit message should look like
based on a description rather than an example. This patch fixes the
problem by making the example concrete and imperative.
The first line is a real life imperative statement with a ticket number
from our issue tracker. The body describes the behavior without the patch,
why this is a problem, and how the patch fixes the problem when applied.</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="sample-contribution-workflow"><a class="anchor" href="#sample-contribution-workflow"></a>Sample Contribution Workflow</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Assuming your development environment is all setup, let&#8217;s walk through how you might make contribute a patch.
In this example, suppose that you&#8217;ve decided to work on JIRA ticket #123, an enhancement to support Blob/Clob datatypes.</p>
</div>
<div class="sect2">
<h3 id="update-your-master-branch"><a class="anchor" href="#update-your-master-branch"></a>Update your master branch</h3>
<div class="paragraph">
<p>The first thing to do is to make sure your local clone is up-to-date.
We do this by retrieving new commits from upstream repo and then merging them as a fast-forward into your local branch.</p>
</div>
<div class="paragraph">
<p>Irrespective of whether you are using a GitHub fork, the upstream for your local <code>master</code> branch will be tracking the appropriate remote&#8217;s <code>master</code> branch.
So n either case, the same commands work:</p>
</div>
<div class="paragraph">
<p>Alternatively, you can combine the <code>git fetch</code> and <code>git merge</code> and just use <code>git pull</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout master
git pull --ff-only</code></pre>
</div>
</div>
<div class="paragraph">
<p>If the <code>merge</code> or <code>pull</code> fails, it means that you must have made commits and there have been changes meanwhile on the remote <code>master&#8217;s branch.
You can use `gitk --all</code> to confirm.
If this fails, see our <a href="../latest/git/about.html#git-cookbook" class="xref page">git cookbook</a> page for a procedure to retrospectively sort out this situation.</p>
</div>
</div>
<div class="sect2">
<h3 id="create-a-topic-branch"><a class="anchor" href="#create-a-topic-branch"></a>Create a topic branch</h3>
<div class="paragraph">
<p>We recommend you name topic branches by the JIRA ticket, ie &lt;tt&gt;CAUSEWAY-nnn-description&lt;/tt&gt;.
So let&#8217;s create a new branch based off <code>master</code> and call it "CAUSEWAY-123-blobs"</p>
</div>
<div class="paragraph">
<p>You can confirm the branch is there and is your new <code>HEAD</code> using either <code>gitk --all</code>.
Alternatively, use the command line:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">$ git checkout -b CAUSEWAY-123-blobs</code></pre>
</div>
</div>
<div class="paragraph">
<p>The command line prompt should also indicate you are on a branch, isolated from any changes that might happen on the <code>master</code> branch.</p>
</div>
</div>
<div class="sect2">
<h3 id="make-file-changes-and-commit"><a class="anchor" href="#make-file-changes-and-commit"></a>Make File Changes and Commit</h3>
<div class="paragraph">
<p>Next, make changes to your files using the usual commands (see also our <a href="../latest/git/about.html#git-cookbook" class="xref page">git cookbook</a> section):</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>git add</code></p>
</li>
<li>
<p><code>git mv</code></p>
</li>
<li>
<p><code>git rm</code></p>
</li>
<li>
<p><code>git commit</code></p>
</li>
<li>
<p><code>git status</code></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>and so on.</p>
</div>
<div class="paragraph">
<p>Continue this way until happy with the change.
Remember to run all your tests on the topic branch (including a full <code>mvn clean install</code>).</p>
</div>
</div>
<div class="sect2">
<h3 id="rebasing-with-master"><a class="anchor" href="#rebasing-with-master"></a>Rebasing with <code>master</code></h3>
<div class="paragraph">
<p>Before you can share your change, you should rebase (in other words replay) your changes on top of the <code>master</code> branch.</p>
</div>
<div class="paragraph">
<p>The first thing to do is to pull down any changes made in upstream remote&#8217;s <code>master</code> since you started your topic branch:</p>
</div>
<div class="paragraph">
<p>These are the same commands that you would have run before you created your topic branch.
If you use <code>gitk --all</code>, there&#8217;s a good chance that new commits have come in.</p>
</div>
<div class="paragraph">
<p>Next, we reintegrate our topic branch by rebasing onto <code>master</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout CAUSEWAY-123-blobs
git rebase master</code></pre>
</div>
</div>
<div class="paragraph">
<p>This takes all of the commits in your branch, and applies them on top of the new <code>master</code> branch.
When your change is eventually integrated back in, it will result in a nice clear linear history on the public repo.</p>
</div>
<div class="paragraph">
<p>If the rebase fails because of a conflict, then you&#8217;ll be dumped into REBASE mode.
Edit the file that has the conflict, and make the appropriate edits.
Once done:</p>
</div>
<div class="paragraph">
<p>Once the rebase has completed, re-run your tests to confirm that everything is still good.</p>
</div>
</div>
<div class="sect2">
<h3 id="raising-a-pull-request"><a class="anchor" href="#raising-a-pull-request"></a>Raising a pull request</h3>
<div class="paragraph">
<p>If you have your own fork, you can now simply push the changes you&#8217;ve made locally to your fork:</p>
</div>
<div class="paragraph">
<p>This will create a corresponding branch in the remote GitHub repo.
If you use <code>gitk --all</code>, you&#8217;ll also see a <code>remotes/origin/CAUSEWAY-123-blobs</code> branch.</p>
</div>
<div class="paragraph">
<p>Then, use GitHub to raise a <a href="https://help.github.com/articles/using-pull-requests/">pull request</a>.
Pull requests sent to the Apache GitHub repositories will forward a pull request e-mail to the <a href="../../docs/latest/support/mailing-list.html" class="xref page">dev mailing list</a>.
You&#8217;ll probably want to sign up to the dev mailing list first before issuing your first pull request (though that isn&#8217;t mandatory).</p>
</div>
<div class="paragraph">
<p>The process to raise the pull request, broadly speaking:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Open a web browser to your GitHub fork of causeway</p>
</li>
<li>
<p>Select your topic branch (pushed in the previous step) so that the pull request references the topic branch.</p>
</li>
<li>
<p>Click the <code>Pull Request</code> button.</p>
</li>
<li>
<p>Check that the Apache Causeway mailing list email came through.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="if-your-pull-request-is-accepted"><a class="anchor" href="#if-your-pull-request-is-accepted"></a>If your pull request is accepted</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To double-check that your pull request is accepted, update your <code>master</code> branch from the <code>upstream</code> remote:</p>
</div>
<div class="paragraph">
<p>You can then use <code>gitk --all</code> (or <code>git log</code> if you prefer the command line) to check your contribution has been added.</p>
</div>
<div class="paragraph">
<p>You can now delete your topic branch and remove the branch in your GitHub:</p>
</div>
<div class="paragraph">
<p>Finally, you might want to push the latest changes in master back up to your GitHub fork.
If so, use:</p>
</div>
<div class="sect2">
<h3 id="if-your-pull-request-is-rejected"><a class="anchor" href="#if-your-pull-request-is-rejected"></a>If your pull request is rejected</h3>
<div class="paragraph">
<p>If your pull request is rejected, then you&#8217;ll need to update your branch from the main repository and then address the rejection reason.</p>
</div>
<div class="paragraph">
<p>You&#8217;ll probably also want to remove the remote branch on github:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git push origin --delete CAUSEWAY-123-blobs</code></pre>
</div>
</div>
<div class="paragraph">
<p>... and continue as before until you are ready to resubmit your change.</p>
</div>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnotedef_1">
<a href="#_footnoteref_1">1</a>. Inspiration for the recommended commit format comes from the <a href="https://github.com/puppetlabs/puppet">puppet</a> project&#8217;s <a href="https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md">contributing</a> page.
</div>
</div>
</article>
<aside class="article-aside toc hide-for-print" role="navigation">
<p class="toc-title">On this page</p>
<div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
<div class="content">
<div class="copyright">
<p>
Copyright © 2010~2024 The Apache Software Foundation, licensed under the Apache License, v2.0.
<br/>
Apache, the Apache feather logo, Apache Causeway, and the Apache Causeway project logo are all trademarks of The Apache Software Foundation.
</p>
</div>
<div class="revision">
<p>Revision: build-website.20260712-1517</p>
</div>
</div>
</footer>
<script src="../../_/js/site.js"></script>
<script async src="../../_/js/vendor/highlight.js"></script>
<script src="../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../_/js/vendor/jquery.tocify.min.js"></script>
<script>
$(function() {
$("#article-toc").tocify( {
showEffect: "slideDown",
hashGenerator: "pretty",
hideEffect: "slideUp",
selectors: "h2, h3",
scrollTo: 120,
smoothScroll: true,
theme: "jqueryui",
highlightOnScroll: true
} );
});
</script>
<script src="../../_/js/vendor/docsearch.min.js"></script>
<script>
function focusSearchInput () { document.querySelector('#algolia-search-input').focus() }
var search = docsearch({
appId: '5ISP5TFAEN',
apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c',
indexName: 'causeway-apache-org',
inputSelector: '#algolia-search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
debug: false,
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
focusSearchInput()
window.addEventListener('load', focusSearchInput);
</script>
<!--
docsearch options:
https://docsearch.algolia.com/docs/behavior/
-->
<!--
https://www.algolia.com/doc/api-reference/api-parameters/
algoliaOptions: { hitsPerPage: 6 },
-->
</body>
</html>