pungi/doc/contributing
2015-06-07 00:28:28 +01:00
..
README update docs now devel-4-pungi is merged to master, minor spelling fixes 2015-06-07 00:28:28 +01:00

##############################################################################
# Developing

Currently the development workflow for pungi 4 is on master:

    - Make your own fork at https://pagure.io/pungi

    - Clone your fork locally (replacing $USERNAME with your own):
        git clone git@pagure.io:forks/$USERNAME/pungi.git

    - cd into your local clone and add the remote upstream for rebasing:
        cd pungi
        git remote add upstream git@pagure.io:pungi.git

        #NOTE: This workflow assumes that you never 'git commit' directly to
        #      the master branch of your fork. This will make more sense
        #      when we cover rebasing below.

    - create a topic branch based on master
        git branch my_topic_branch master
        git checkout my_topic_branch

    - Make edits, changes, add new features, etc. and then make sure to pull
      from upstream master and rebase before submitting a pull request.
        ## lets just say you edited setup.py for sake of argument
        git checkout my_topic_branch
        # make changes to setup.py
        git add setup.py
        git commit -m "added awesome feature to setup.py"

        ## Now we rebase
        git checkout master
        git fetch upstream
        git fetch upstream --tags
        git merge upstream/master
        git push origin master
        git push origin --tags
        git checkout my_topic_branch
        git rebase master
        # Resolve merge conflicts if any as a result of your development in
        # your topic branch
        git push origin my_topic_branch

    - Create pull request in the pagure.io web UI

    - For convenience, here is a bash shell function that can be placed in your
      ~/.bashrc and called such as 'pullupstream pungi-4-devel' that will
      automate a large portion of the rebase steps from above.

        pullupstream () {
          if [[ -z "$1" ]]; then
            printf "Error: must specify a branch name (e.g. - master, devel)\n"
          else
            pullup_startbranch=$(git describe --contains --all HEAD)
            git checkout $1
            git fetch upstream
            git fetch upstream --tags
            git merge upstream/$1
            git push origin $1
            git push origin --tags
            git checkout ${pullup_startbranch}
          fi
        }

##############################################################################
# Testing

Unit tests
    - Unit tests are encouraged and should be placed in the tests/ directory
      within the pungi git repository

Running pungi locally for testing
    - Running pungi locally for testing, you should build the rpm, install it,
      and run ''pungi-koji' as follows:

      pungi-koji --target-dir=/path/to/store/compose/ --nightly \
                    --config=/path/to/pungi-fedora/fedora.conf

      The fedora.conf file and other files it references can be found here:
        https://pagure.io/pungi-fedora
            - These can either be copied down locally or you can git clone that
              repository as well to keep with the latest configurations.