Skip to content

How to Make a Pull Request

Eric Armbrust edited this page Oct 30, 2015 · 5 revisions

So ya Want to Submit a Pull Request

Before trying to submit a pull request, ensure you're working in the correct branch:

master: :This is the old kernel infrastructure. Also home to active development on cbufs and component recovery facilities.

ppos: This is the new kernel infrastructure, supports one syscall using capability tables. Also home to active development of tcaps.

Guidance

First and foremost, it is recommended that you commit your changes in a manor that reflects the logical steps you made during your revisions. For example: If you made changes to kernel/capinv.c then kernel/thread.c then platform/i386/kernel.c, you would want to git add <filename(s)> and git commit for each group of distinct logical changes made. Be sure to add a comment that gives an accurate description of the changes made. You can have a series of rolling commits locally before pushing.

Once you've tracked your changes locally, you can push to your origin using git push. This will push your local changes to github.com. From here, we want to ensure that we are up to date with changes that have been made in Gabe's 'upstream' branch. Upstream here simply means the centralized Composite repo, aka the thing you forked.

To update, we're going to need to add a remote branch. To do this, the command is git remote add upstream <repo> where, in our case, <repo> is https://github.com/gparmer/Composite.git. This gives us the ability to pull changes from Gabe's upstream repo. To pull all upstream changes, we will first git pull upstream <branch> where <branch> is the branch you're working in, either ppos or master. This will produce a new local branch, upstream/<branch>. From here, we want to deal with merge conflicts locally by merging upstream/<branch> to <branch>. The command to do this is git merge upstream/<branch>, assuming you're already in your local branch. Either it will cleanly merge or you will have merge conflicts; if you have merge conflicts, FIX THEM!!! Otherwise, you're now ready to submit your pull request!

Useful Git Commands

  • Revert to HEAD, aka previous commit
  • git reset --hard head
  • Revert to specified commit
  • git reset --hard <commid hash>
  • Force overwrite origin
  • git push -f
  • Show current staged and unstaged changes
  • git status
  • Show recent commits, most recent on top, with full difs
  • git log -p
  • Show recent commits, most recent on top, without full difs
  • git log
  • Generate diff info
  • git diff
  • Create diff information between commits
  • git diff --stat
  • Create new branch from current working branch
  • git checkout -b <new branch>
  • Delete a branch
  • git branch -D <branch>
  • Stash changes. Allows you to save uncommited work and change branch
  • git stash
  • Show stashed changes
  • git stash list
  • Apply a stash entry. Defaults to stash@{0}
  • git stash apply <stash>
  • Apply top stash and remove it
  • git stash pop
  • Delete a specic stash entry. Defaults to stash@{0}
  • git stash drop <stash>
  • Clear all stashes
  • git stash clear