pungi/doc/contributing
2015-06-04 08:42:30 -05:00
..
README Add README for contributors 2015-06-04 08:42:30 -05:00

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

Currently the development workflow for pungi4 (devel-4-pungi) branch is:

    - Make your own for 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 devel-4-pungi branch of your fork. This will make more sense
        #      when we cover rebasing below.

    - create a topic branch based on devel-4-pungi
        git branch my_topic_branch devel-4-pungi
        git checkout my_topic_branch

    - Make edits, changes, add new features, etc. and then make sure to pull
      from upstream 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 devel-4-pungi
        git fetch upstream
        git fetch upstream --tags
        git merge upstream/devel-4-pungi
        git push origin devel-4-pungi
        git push origin --tags
        git checkout my_topic_branch
        git rebase devel-4-pungi
        # 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.