SCALE happens once a year but the team has ongoing projects and prep year round. If you are interesting in volunteering please request to join our mailing list: https://lists.linuxfests.org/cgi-bin/mailman/listinfo/tech
This repository leverages a workflow for committing code called Github Flow.
Below briefly explains how to create a feature branch and put in a pull request
to add fixes and features to the code base.
This workflow was chosen for its simplicity and the fact that anything merged to
master should be deployable. Github Flow allows developers have the freedom to
work on changes in feature branches without effecting what's deployable, other
team members work, or removing commit history. For more documentation on Github
Flow see: https://guides.github.com/introduction/flow/
-
Clone down this repo:
git clone git@github.com:socallinuxexpo/scale-network.git -
Create a
featurebranch from the repository. Make this branch name related to the work being done. The following example makes afeaturebranch for addingcoolscript.shto the repo:cd scale-network git checkout -b adding_coolscript -
On this new branch go ahead and create, edit, rename, move, or delete files. For example lets create, add and commit
coolscript.shto the repo:cat << EOF > coolscript.sh #!/bin/sh echo "This script is so cool" EOF git add coolscript.sh git commit -m "Adding coolscript"
-
Push up this new branch up to Github:
git push origin adding_coolscript
Note: This assumes write access to branches other than master in the scale-network branch. Reach out to a team member via the mailing list for access.
-
Create a pull request the
featurebranch againstmasterwith the proposed changes to kick off a discussion. Make sure to fill out the PR template with as much information as possible regarding the changes. The pull request can be titled with either the[WAIT]or[READY]flag. PRs with[WAIT]signify that the author does not yet wish for the PR to be approved as further modifications and conversation are expected. Any PR with the title omitting either[WAIT]or[READY]should be assumed to be[READY]. -
If further changes are needed before the pull request is merged repeat steps #2 and #3. Your existing pull request will update automatically!
-
Any PR in
[WAIT]will be held at this state until the author is ready for a merge. Once ready the title should be editted to reflect[READY]. -
Once in
[READY]another SCALE Tech member will review the PR. The reviewer should ensure that the changes being proposed conform to the spirit of the existing efforts and do their best to test any changes manually to ensure accuracy. The reviewer should also verify that all CI checks are passing at this time. No PR with failing test should ever be approved under normal circumstances. -
The approving reviewer should then merge the PR, ensuring all CI checks are passing against
master. -
Once your branch is merged, sit back and pat yourself on the back for improving the repo! Now go back to the
masterbranch which is the default branch and get the changes that were merged with yourfeaturebranch:git checkout master git pull --rebase origin master git log # Check to make sure the merge exists -
Go back to step #1 and add more fix and/or features to the repo!
-
Q: When working on a
featurebranch for a while and it needs to get the latest changes that have been merged againstmaster. How is that done?A: That's easy! First make sure the
featurebranch has everything your working on committed. Then go back to themasterbranch,pull --rebaseto get the latest changes from the Githubmasterbranch, go back to thefeaturebranch and rebasemasteragainst it. So it looks something like this:git checkout master git pull --rebase origin master git checkout <feature_branch> git rebase master
Any subsequent push to the remote will require a force push since history was rewritten instead of just appended to:
git push -f origin <feature_branch>
-
Q: How can I checkout an existing remote branch on another machine?
A: From the machine that didn't originate the branch, fetch the branches from the existing remote and checkout that branch exclusively on the local machine:
git fetch origin git checkout -b <new_branch_name> origin/<remote_branch_name>
-
Q: How do I update my local branch with its corresponding remote branch?
A: Always make sure your
rebasewhen updating. Disregard the cli's suggestions since that aren't helpful here. Instead:git pull --rebase origin <feature_branch>:<feature_branch>