Skip to content

Developer information

David Cok edited this page Dec 24, 2015 · 6 revisions

Repository organization

The jSMTLIB sources are organized as follows.

  • The main repository is obtained by cloning: https://github.com/smtlib/jSMTLIB.git
  • There are four branches:
  • The gh_pages branch, which is only used to update the project website and should have no other material on it. Committing and pushing changes there will update the project web site.
  • The release branch, which is only used for actual public releases.
  • The master branch, which is for merges of stable, tested, material.
  • The develop branch, which is for merges of material before merging to master; this branch may be unstable at any given time; most actual development should occur on local branches.

Code organization

The jSMTLIB source code is organized as a set of Eclipse projects (The gh-pages branch is not an Eclipse project).

  • SMT - the source for the jSMTLIB library and tools
  • SMTPlugin - the source for the Eclipse plugin for editing SMTLIB files
  • SMTTests - functional and unit tests for the library
  • SMTFeature - the Eclipse Feature for deploying the plugin
  • SMTUpdateSite - the staging area for the Eclipse update site for installing the jSMTLIB plugin

Branch and merge policy

The normal work-flow should be:

  • Create a new local branch to do some new work, based on the HEAD of the develop branch
  • Add tests and new development to the branch
  • When the work is complete, with new tests to validate it, and all other tests are also working, then ...
  • Merge from the develop branch to your local branch to update with any changes while your were working
  • Resolve merge conflicts, recheck that all tests are working
  • Repeat the above if any new changes have been pushed to the develop branch
  • The merge your local branch to the develop branch; this should now be an easy, automatic merge - but nevertheless, test again.
  • When the develop branch is stable with an appropriate bundle of features
  • Issue a pull request on the master branch
  • The build master will merge the request onto master from the develop branch
  • If any changes are pushed directly to the master branch, they should also be merged to the develop branch.
  • When a release is ready, it is staged on the master branch and then merged over to the release branch with an appropriate version number and release notes.

Running tests

In a development environment, the tests are run using the "SMT tests" launch configuration.

(TBD) Needed:

  • GUI tests
  • release tests outside the Eclipse environment
  • scriptable mechanisms for running and reporting nightly tests

Creating a release

... TBD ... procedure and a script to easily automate the procedure