Skip to content

Contributing

Robert Stone edited this page Nov 8, 2019 · 10 revisions

For the basic rundown about how to contribute, see the CONTRIBUTING.md file before doing anything else.

The rest of this page is about extra stuff, proposals, notes, and anything that isn't really permanent or solid enough to put in that file.

Workflow Proposal 1

This is just a proposal. It is not official.

Here's my suggestion for git workflow and managing releases. I'll start from the basic fork/clone and go into more detail from there.

  1. Fork the repo.
  2. Clone the repo with git clone https://github.com/<yourusername>/papyrus-lang.git
  3. git remote add -m master joelday https://github.com/joelday/papyrus-lang.git (add joelday as a remote and make master the default branch so git co joelday does the same as git co joelday/master). This can be configured after the fact with git remote set-head joelday master
  4. For those of us with write access, use git remote set-url --push joelday https://127.1.2.3/ to set the push URL to something bogus for joelday so there's less chance of accidentally pushing to master directly.
  5. Make sure that there's an issue created for the change you want to make even if it seems small.
  6. git co joelday/master -b issXXX where XXX is the issue number.
  7. git push -u origin issXXX to push the branch to your fork.
  8. git branch issXXX -u origin/issXXX THIS IS VERY IMPORTANT because upstream will default to joelday/master, and when you push your changes it will try to push them to joelday/master!
  9. Do the work, make changes, check them in etc. 9 With the issXXX branch checked out, git push
  10. Create pull request.

Workflow Proposal 2

Same thing except we use a "devel" branch which allows us to create a "insider preview" type build. This way we don't have to worry as much about how well tested things are before they're merged to the devel branch. When devel seems stable it gets merged to master. So the process becomes like this:

  1. Fork the repo.
  2. Clone the repo with git clone https://github.com/<yourusername>/papyrus-lang.git
  3. git remote add -m devel joelday https://github.com/joelday/papyrus-lang.git (add joelday as a remote and make devel the default branch so git co joelday does the same as git co joelday/devel). This can be configured after the fact with git remote set-head joelday devel
  4. For those of us with write access, use git remote set-url --push joelday https://127.1.2.3/ to set the push URL to something bogus for joelday so there's less chance of accidentally pushing to anything directly.
  5. Make sure that there's an issue created for the change you want to make even if it seems small.
  6. git co joelday/devel -b issXXX where XXX is the issue number.
  7. git push -u origin issXXX to push the branch to your fork.
  8. git branch issXXX -u origin/issXXX To set the upstream to your fork. THIS IS VERY IMPORTANT because upstream will default to joelday/master, and when you push your changes it will try to push them to joelday/master!
  9. Do the work, make changes, check them in etc. 9 With the issXXX branch checked out, git push
  10. Create pull request against devel.
  11. At some point devel gets merged to master by the Integration Manager.

This is like Gitflow except less formalized and less complicated.

Other

To help avoid losing focus, try to only work on one issue at a time. If you need to work on more than one at a time AND you expect to submit them in one pull request, then branch your issXXX again and name it iss-XXX-YYY where YYY is the second issue. This is only when needed AND you expect to submit both at once. Otherwise repeat the same process of branching master (or devel if we do that) with a new issue (topic) branch.

Clone this wiki locally