View on GitHub

winery

Eclipse Winery project

Eclipse Winery Toolchain

This presents the tool chain used for creating and updating a pull request on GitHub.

For the general setup, please go to ToolChain-initialization.

Steps for working on a topic

Main idea: Separate branch for each topic (fix a bug, add functionality) and accordingly named. See https://guides.github.com/introduction/flow/index.html for more information.

  1. Sync with latest changes on upstream (especially master branch): git fetch upstream --prune.
  2. Create branch based on upstream/master and make it known publicly:
    • git checkout upstream/master
    • git checkout -b [name]
      Branch naming patterns:
      • Bugfix: fix/SHORT-TITLE, e.g., fix/deletion-of-namespaces
      • Feature: feature/SHORT-TITLE, e.g., feature/drag-and-drop-for-bpmn4tosca
      • Thesis: thesis/SHORT-THESIS-TITLE. Replace SHORT-THESIS-TITLE with something meaningful, e.g., thesis/versioning
      • EnPro: prefix fix or feature (see above) with enpro/, e.g., enpro/fix/policy-rendering
      • StuPro: prefix fix or feature (see below) with stupro/, e.g., stupro/feature/github-oauth
    • git push --set-upstream origin [name]
  3. Do you your fist commit. Don’t forget to sign-off the commit (Ctrl+S in Git Gui).
  4. Push the changes to origin: git push.
  5. Create [WIP] Pull Request.
    • Go to https://github.com/opentosca/winery 🡒 Pull Request
    • Change the “base branch” to OpenTOSCA/winery change-base-fork-to-opentosca-winery
    • Fill in the title of the Pull Request following the pattern [WIP] Title of the thesis/work/target
    • Fill in the provided description form
    • Add [x] to the items listed in the write field
    • Check the description in the Preview and send the Pull Request
  6. There are automatic checks in place GitAutoCheck
  7. If there is a red cross, click in respective “Details” and fix them

You keep working and discuss with your supervisor how things go.

After each working day, do the following:

  1. Commit. Don’t forget to sign the commit (Ctrl+S in Git Gui).
  2. git push
  3. Keep your branch updated with upstream/master:

GitHub - Prepare Final Pull Request

The aim of these steps to have a single commit. This is required by the Eclipse process for checking for intellectual property (IP process for short).

Before commencing these steps, check with your supervisor

Formal Requirements

Git Steps: Ensure that a single commit is created

  1. git fetch upstream - fetches all updates from https://github.com/eclipse/winery (“upstream”) to the local git storage
  2. git merge upstream/master - merges all updates from upstream to the local branch
  3. (Resolve merge conflicts) - required if there are conflicting changes
  4. Commit & Push with signed commit message (Ctrl+S in Git Gui) - this ensures that you have the changes backuped in case something goes wrong at the next steps
  5. git reset upstream/master - this prepares that all commits can be squashed together: The local checkout (“working tree”) is left untouched, but the “pointer” of the current branch is reset to upstream/master. Now, Git Gui shows the difference between upstream/master and your changes.
  6. Check changes in Git Gui:
    • Each change you wanted: Is it recognized?
    • At each file: Is the copyright information in the header OK?
    • Check if you are listed in the NOTICE file as a contributor with the correct year
    • Are there too much changed lines? 🡒 Do not stage spurious lines to the commit (e.g., tab to spaces, …)
    • Are there too much changed files? 🡒 Do not stage files you did not intend to change (e.g., build.gradle if you did not touch build.gradle at all)
    • Check again the style (!)
    • (Don’t forget RESCAN to see the current changes)
  7. Add description as new markdown file to to docs/index.md (if helpful)
  8. Press “Stage to Commit” 🡒 all changes are staged to Commit
  9. Sign the Commit Message (Ctrl+S in Git Gui)
  10. In the case of multiple authors: Add each additional author with Co-authored-by. See also in the Eclipse Handbook.
    Example:

        Co-authored-by: Some Bodyelse <somebodyelse@nowhere.com>
        Signed-off-by: Some Body <somebody@somewhere.com>
    
  11. Commit & Push with “force overwrite” since you changed the branch: git push -f

GitHub - Create Final Pull Request

Attention: Commits on the same branch done after the Pull Request is sent are still part of the Pull Request (!)

GitHub - Change Final Pull Request

GitAutoCheck

GitHub - After Pull Request Got Merged

Excursus: Git

ExcursusGit

Please see also use gitk to understand git to understand the settings in git.

License

Copyright (c) 2017 Contributors to the Eclipse Foundation

See the NOTICE file(s) distributed with this work for additional information regarding copyright ownership.

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0, or the Apache Software License 2.0 which is available at https://www.apache.org/licenses/LICENSE-2.0.

SPDX-License-Identifier: EPL-2.0 OR Apache-2.0