Arquillian Development and Contribution

In this short article you will find guideline how to contribute and work with Arquillian code.

 

But before we start - huge thanks for willing to help us making Arquillian better!

 

Tooling prerequisites

 

 

Workflow

Perform Once

  • Fork one of the GitHub Arquillian's repository which you like to start working on into your own account.
  • Clone the Arquillian Git Repo from your remote repo
  • Change into the repo directory
    • $> cd repo_name
  • Add a remote to the upstream
    • Committers
    • Read-only
      • $> git remote add upstream git://github.com/arquillian/repo_name.git

 

You are all done now and can starting hacking!

 

Perform During Development

  • Ensure your local repository is up-to-date with the upstream
    • $> git pull upstream master
  • Build and run tests, installing into the local M2 repository
    • $> mvn clean install 
  • When about to work on an issue, perform all work in a new branch named after the associated JIRA
    • $> git branch ARQ-XYZ
      $> git checkout ARQ-XYZ
  • After done making changes, add any files to the staging area, and commit to the branch
    • $> git status
    • $> git add <files> -v 
    • $> git commit -m '[ARQ-XYZ] Commit message referencing JIRA issue' 

               You can also use git prepare-commit-message hook which automatically prepends commit message with the branch name.

 

  • Push the branch to your repository
    • $> git push origin ARQ-XYZ
  • Get the changes upstream
    • Committers
      • $> git remote add username userRepoLocation
        $> git fetch username
        $> git checkout -b ARQ-XYZ remotes/username/ARQ-XYZ
        $> mvn clean install
        $> git checkout master
        $> git merge ARQ-XYZ
        $> mvn clean install
        $> git push origin master
        $> git push upstream master
    • Contributor (anonymous)

 

Code format

 

The Arquillian project is following the JBoss Community code formatting profile as defined in the jboss/ide-config repository. The details are explained there, as well as configurations for Eclipse, IntelliJ and NetBeans.

 

The choice is not arbitrary. Sharing a common configuration between projects in the JBoss Community makes it simpler for contributors to keep track of which formatting to use to avoid pull requests getting held up because of whitespace

 

Formalities

There is only one requirement for your code - you need to include JBoss / ASL license header in every class.

 

That's it. Welcome in the JBoss community!