Skip to content

Frew's Recommended Workflow

frioux edited this page Sep 13, 2010 · 7 revisions

The first time you do this you should make your own fork on github.com.

  • go to github.com
  • create a new account for yourself
    – follow their instructions to add your SSH key
  • go to http://github.com/rakudo/rakudo/
  • click “fork”
  • at your command line, make a checkout:
    git clone [email protected]:[username]/rakudo.git
    and replace “[username]” with your github.com user name
  • git remote add upstream git://github.com/rakudo/rakudo.git

Then after that you should use the following process for each feature that you implement.

First make a new branch for the feature


  git co -b array_setting_pop_method

Do some coding


  vi src/setting/Array.pm

Checkin code as often as you’d like


  git status
  git add [files]
  git add [more files]
  git ci -m "commit messages"

When you are done with the feature squash it all into one commit. This is really the most complicated part. You probably want to pick your first commit, squash your other commits, and remove the lines that are merges. As long as the merges did not require manual editing this should be fine. If they did require manual editing, and you made it through that, you know more than me :-)


  git rebase -i origin 
    (or whatever you chose to name of rakudo's remote repo to be)

Push to your repo


  git push frew_origin array_setting_pop_method  
    (again, change this to be your remote repo and your branch)

After squashing everything into one commit email a patch to rt.


  git diff master > pop-perl6.patch

That will generate a single patch from the last commit you made (if you squashed that will be everything). Email that to [email protected] with “[PATCH]” in the subject.

Go to your branch on github and ask for a pull request (it should be a button near the top) from rakudo

http://github.com/frioux/rakudo/tree/array_pop_squash (frioux is your username, and the last part is the remote name of your branch, hopefully the same as the local branch name)

And that’s basically it. Feel free to do a pull whenever so that you have the latest code.


  git pull origin master
  git merge origin/master array_setting_pop_method
  git push frew_origin master