Skip to content

Latest commit

 

History

History
107 lines (78 loc) · 3.32 KB

CONTRIBUTING.md

File metadata and controls

107 lines (78 loc) · 3.32 KB

Contributing Guidelines

This document is inspired by similar instructions document in the GDAL and pygmt repositories.

These are some of the many ways to contribute to the ISCE project:

  • Submitting bug reports and feature requests
  • Writing tutorials or jupyter-notebooks
  • Fixing typos, code and improving documentation
  • Writing code for everyone to use

If you get stuck at any point you can create an issue on GitHub (look for the Issues tab in the repository) or contact us on the user forum.

For more information on contributing to open source projects, GitHub's own guide is a great starting point if you are new to version control.

Ground Rules

We realize that we don't have a Continuous Integration (CI) system in place yet (maybe you could start by contributing this). So, please be patient if Pull Requests result in some detailed discussions.

Git workflows with ISCE

This is not a git tutorial or reference manual by any means. This just collects a few best practice for git usage for ISCE development. There are plenty of good resources on YouTube and online to help get started.

Commit message

Indicate a component name, a short description and when relevant, a reference to a issue (with 'fixes #' if it actually fixes it)

COMPONENT_NAME: fix bla bla (fixes #1234)

Details here...

Initiate your work repository

Fork isce-framework/isce from github UI, and then

git clone https://github.com/isce_framework/isce2
cd isce2
git remote add my_user_name https://github.com/my_user_name/isce2.git

Updating your local main branch against upstream

git checkout main
git fetch origin
# Be careful: this will lose all local changes you might have done now
git reset --hard origin/main

Working with a feature branch

git checkout main
(potentially update your local reference against upstream, as described above)
git checkout -b my_new_feature_branch

# do work. For example:
git add my_new_file
git add my_modifid_message
git rm old_file
git commit -a 

# you may need to resynchronize against main if you need some bugfix
# or new capability that has been added to main since you created your
# branch
git fetch origin
git rebase origin/main

# At end of your work, make sure history is reasonable by folding non
# significant commits into a consistent set
git rebase -i main (use 'fixup' for example to merge several commits together,
and 'reword' to modify commit messages)

# or alternatively, in case there is a big number of commits and marking
# all them as 'fixup' is tedious
git fetch origin
git rebase origin/main
git reset --soft origin/main
git commit -a -m "Put here the synthetic commit message"

# push your branch
git push my_user_name my_new_feature_branch
From GitHub UI, issue a pull request

If the pull request discussion results in changes, commit locally and push. To get a reasonable history, you may need to

git rebase -i main

, in which case you will have to force-push your branch with

git push -f my_user_name my_new_feature_branch

Things you should NOT do

(For anyone with push rights to github.com/isce-framework/isce2) Never modify a commit or the history of anything that has been committed to https://github.com/isce-framework/isce2