<div dir="ltr">Hi everyone,<div><br></div><div>I am writing with a change to how we have been using the remoll repository. We will be moving to a <b>forking workflow</b>. Details below.</div><div><br></div><div>Cheers,</div><div>Wouter</div><div><br></div><div><br></div><div><b>Summary</b>: Until now, we mainly have been using branches in the jeffersonlab/remoll repository on github. Instead of creating branches there, we will now encourage you to <b>fork</b> the remoll repository and create branches in your own repository. From those branches, you are encouraged to submit a <b>pull request</b> to the jeffersonlab/remoll repository for merging.<br clear="all"><div><br></div><div><b>Rationale</b>: JLab is preferring the forking workflow for users who contribute to a few repositories only. Membership in the jeffersonlab organization is reserved for maintainers (and has additional requirements since these accounts are publicly affiliated with JLab; i.e. real name and institutional affiliation in your github profile). Moreover, we have enough contributors now and this workflow scales better.</div><div><br></div><div><b>Creating a fork</b>: Click the 'fork' button on the top right of the remoll repository. You can now clone this repository:</div><div><font face="monospace">  git clone git@github.com:USERNAME/remoll.git</font></div><div>This will fork all current branches in the jeffersonlab/remoll repository.</div><div><br></div><div><b>Keeping your fork up to date</b>:</div><div>- Add the <font face="monospace">upstream</font> repository jeffersonlab/remoll to your list of remotes (you only need to do this once):<br><font face="monospace">  git remote add upstream <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_jeffersonlab_remoll.git&d=DwMFaQ&c=CJqEzB1piLOyyvZjb8YUQw&r=hK0qfHtfdwUHlZG0DnK-QRJVYus_TzTB8u52ev2QBtI&m=qLh8aBSe_uGXWSxhW3QddWpTzgkToJIgmQGUiB8kcxM&s=WTVvn8-uNQxTmJ9dM8CfWO9KIkFsKbP05tPyBawVxn0&e=">https://github.com/jeffersonlab/remoll.git</a></font></div><div>- Whenever you want to update, fetch the latest upstream changes:</div><div><font face="monospace">  git fetch upstream</font></div><div><font face="monospace">  </font><font face="arial, sans-serif">Variant: </font><font face="monospace">git fetch --all</font></div><div>- ... and merge the upstream branch in your branch, e.g. for the 'develop' branch</div><div><font face="monospace">  git checkout develop</font></div><div><font face="monospace">  git merge upstream/develop</font></div><div>Avoid making changes directly on <font face="monospace">master</font> or <font face="monospace">develop</font>, even in your own repository (for the same reasons).</div><div><br></div><div><b>Doing your work</b>:</div><div>It is easiest to do your work in branches, one per logically separate tasks, and to merge those to jeffersonlab/remoll frequently.</div><div>- Create a new branch from the <font face="monospace">develop</font> branch (the base of your branch):</div><div><font face="monospace">  git checkout develop</font></div><div><font face="monospace">  git branch new-feature-xyz</font></div><div><font face="monospace">  git checkout new-feature-xyz</font></div><div>- Now, you can do your work in this branch.<br></div><div>- Periodically, push the changes to your repository:</div><div><font face="monospace">  git push</font></div><div><br></div><div><b>Cleaning up your work</b>:<br></div><div>Before contributing your changes back to jeffersonlab/remoll for others to use, it make sense to clean up some.</div><div>- Make sure your branch works with the most up to date code in the upstream base branch:</div><div><font face="monospace">  git fetch upstream<br>  git checkout develop<br>  git merge upstream/develop</font><br></div><div>- Rebase your branch to point to the most recent code in the base branch:</div><div><font face="monospace">  git checkout new-feature-xyz</font></div><div><font face="monospace">  git rebase develop</font></div><div>The rebase phase is when you may need to resolve some conflicts: when you have modified lines that someone else has modified upstream as well. Ask in Slack if you need help resolving conflicts (in git; we can't help with the neighbors).</div><div><br></div><div><b>Submitting a pull request</b>:</div><div>When you are done with your work in a branch and ready to share it with others, go to your branch page on GitHub and click the 'pull request' button. Write a clear summary and wait for someone to merge it (or request some changes, if necessary). After your branch has been merged, you can go ahead and delete it. When you update your <font face="monospace">develop</font> branch, the changes will be included.</div><div><br></div></div></div>