# Developer Guide This guide was originally for SwiftOnFile development. We do not have a CI system set up yet, but hope to soon. ## Development Environment Setup The workflow for SwiftOnHPSS will be largely based upon the [OpenStack Gerrit Workflow][]. ## Account Setup Please follow the guidelines at [OpenStack Gerrit Workflow][] to do the following: 1. Create a Launchpad account. 2. Create a Gerrit account. 3. Upload SSH Keys to Gerrit. 4. Install git-review tool. ### Package Requirements Type the following to install the required packages: * Ubuntu ~~~ sudo apt-get -y install gcc python-dev python-setuptools libffi-dev \ git xfsprogs memcached ~~~ * Fedora ~~~ sudo yum install gcc python-devel python-setuptools libffi-devel \ git rpm-build xfsprogs memcached ~~~ ### Git Setup If this is your first time using git, you will need to setup the following configuration: ~~~ git config --global user.name "Firstname Lastname" git config --global user.email "your_email@youremail.com" ~~~ ### Clone the source You can clone the swiftonfile repo from Gerrit: ~~~ git clone ssh://@review.openstack.org:29418/openstack/swiftonhpss ~~~ Alternatively, if you just want to clone the source for trying things out, without setting up lp or Gerrit account or SSH keys, you can clone from the github mirror. ~~~ git clone https://github.com/openstack/swiftonhpss ~~~ ### Git Review Before installing git-review, make sure you have pip installed. Install the python `pip` tool by executing the following command: ~~~ sudo easy_install pip ~~~ The tool `git review` is a simple tool to automate interaction with Gerrit. It is recommended to use this tool to upload, modify, and query changes in Gerrit. The tool can be installed by running the following command: ~~~ sudo pip install --upgrade git-review ~~~ While many Linux distributions offer a version of `git review`, they do not necessarily keep it up to date. Pip provides the latest version of the application which avoids problems with various versions of Gerrit. The following command will setup an additional remote named 'gerrit' and also installs the gerrit Change-Id commit hook. ~~~ git review -s ~~~ If there is no output, then everything is setup correctly. If the output contains the string *We don't know where your gerrit is*, then you need to manually setup a remote repo with the name `gerrit`. ~~~ git remote add gerrit ssh://` 6. It may contain any external URL references like a launchpad blueprint. 7. Blank line. For more information on commit messages, please visit the [Git Commit Messages][] page in OpenStack.org. ### Uploading to Gerrit Once you have the changes ready for review, you can submit it to Gerrit by typing: ~~~ git review ~~~ After the change is reviewed, you might have to make some additional modifications to your change. To continue the work for a specific change, you can query Gerrit for the change number by typing: ~~~ git review -l ~~~ Then download the change to make the new modifications by typing: ~~~ git review -d CHANGE_NUMBER ~~~ where CHANGE_NUMBER is the Gerrit change number. If you need to create a new patch for a change and include your update(s) to your last commit type: ~~~ git commit -as --amend ~~~ Now that you have finished updating your change, you need to re-upload to Gerrit using the following command: ~~~ git review ~~~ Your change will be merged after: 1. Jenkins passes unit tests and functional tests. 2. Two core reviewers give +2. 3. A core reviewer gives a '+1 Approved' for Workflow. Gerrit will automatically merge the change only after a '+1 Approved' for Workflow has been set by one of the core reviewers. [OpenStack Gerrit Workflow]: http://docs.openstack.org/infra/manual/developers.html#development-workflow [SSH key]: http://review.openstack.org/#/settings/ssh-keys [PEP8]: http://www.python.org/dev/peps/pep-0008 [Git Commit Messages]: https://wiki.openstack.org/wiki/GitCommitMessages