This is the official Git repository for the open source ModeShape Tools project.
ModeShape Tools is a set of Eclipse plugins for working with ModeShape and Java Content Repositories (JCRs). ModeShape Tools is part of the JBoss Tools community of projects.
The current ModeShape Tools features include:
- the ability to publish/upload resources from Eclipse workspaces to ModeShape repositories, and
- the ability to create and edit Compact Node Type Definition (CND) files using the included CND form-based editor. The CND editor does not require a connection to a ModeShape or any other JCR repository.
ModeShape Tools is installed into Eclipse by following these steps:
- Start up Eclipse 3.7
- Select
Help > Install New Software… > Add...
- In the
Add Repository
dialog, enter a name, for instance "ModeShape Tools Update-Site" and enter the URL for the update-site. Then selectOK
to close the dialog. - After the update-site loads select one or more of the ModeShape Tools features you want to install.
The easiest way to get started with the code is to create your own fork of this repository, and then clone your fork:
$ git clone git@github.com:/modeshape-tools.git $ cd modeshape-tools $ git remote add upstream git://github.com/ModeShape/modeshape-tools.git
At any time, you can pull changes from the upstream and merge them onto your master:
$ git checkout master # switches to the 'master' branch
$ git pull upstream master # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git push origin # pushes all the updates to your fork, which should be in-sync with 'upstream'
The general idea is to keep your 'master' branch in-sync with the 'upstream/master'.
To build ModeShape Tools requires specific versions of Java and Maven. Also, there is some Maven setup. The How to Build JBoss Tools with Maven 3 document will guide you through that setup. Specifically, perform these steps this document identifies:
- adding the
jboss-default
profile to your Mavensettings.xml
file, and - setting your
MAVEN_OPTS
environment variable.
This command will run the build:
mvn clean install -Punified.target -Pjbosstools-staging-aggregate
If you want, your builds can skip the tests by adding this parameter to the above build command: -Dmaven.test.skip=true
. But always run the tests before any commits.
ModeShape Tools is open source, and we welcome anybody that wants to participate and contribute!
If you want to fix a bug or make any changes, please log an issue in the ModeShape JIRA describing the bug or new feature and give it a component type of Tools
. Then we highly recommend making the changes on a topic branch named with the JIRA issue number. For example, this command creates a branch for the MODE-1234 issue:
$ git checkout -b mode-1234
After you're happy with your changes and a full build (with unit tests) runs successfully, commit your changes on your topic branch (using really good comments). Then it's time to check for any recent changes that were made in the official repository:
$ git checkout master # switches to the 'master' branch
$ git pull upstream master # fetches all 'upstream' changes and merges 'upstream/master' onto your 'master' branch
$ git checkout mode-1234 # switches to your topic branch
$ git rebase master # reapplies your changes on top of the latest in master
(i.e., the latest from master will be the new base for your changes)
If the pull grabbed a lot of changes, you should rerun your build to make sure your changes are still good. You can then either create patches (one file per commit, saved in ~/mode-1234
) with
$ git format-patch -M -o ~/mode-1234 origin/master
and upload them to the JIRA issue, or you can push your topic branch and its changes into your public fork repository
$ git push origin mode-1234 # pushes your topic branch into your public fork of ModeShape Tools
and generate a pull-request for your changes.
We prefer pull-requests, because we can review the proposed changes, comment on them, discuss them with you, and likely merge the changes right into the official repository.