Making a PR to SecureDrop
Forking and Cloning the Project
Fork SecureDrop on GitHub from the Main Repository to your own profile.
Clone the forked repository.
git clone https://github.com/<your-username>/securedrop.git
cd securedrop
Add the Main Repository as an upstream remote.
git remote add upstream https://github.com/freedomofpress/securedrop.git
Make Your Changes and Push to the Fork
Create a Branch
Create a branch on which you make your changes.
git checkout -B change-one
Make Your Changes and Commit
Now enter the directory of your fork amd make changes as you wish. Run tests for the changes you have made.
If you create a new file, remember to add it with git add
.
git add <new-file>
Commit your changes, adding a description of what was added. If you’re not used to Git, the simplest way is to commit all modified files and add a description message of your changes in a single command like this:
git commit -a -m "<Description of changes made>"
Pull the Upstream Changes
We get any updates made in the upstream repository.
git pull upstream develop
Rebasing
Rebasing is the process of moving or combining a sequence of commits to a new base commit. Rebasing is most useful and easily visualized in the context of a feature branching workflow.
Assume the following history exists:
A---B---C change-one
/
D---E---F---G develop
From this point, the result of either of the following commands:
git rebase develop
git rebase develop change-one
would be:
A`--B`--C` change-one
/
D---E---F---G develop
Note
A
and A
represents the same set of changes, but have
different committer information.
Pushing the Changes to GitHub Fork
Once your changes are committed and rebased, push the changes to your GitHub fork.
git push origin <branch-name>
Making a Pull Request to Get Your Changes Merged in develop
Branch
1. Through GitHub make a pull request from the branch that you commited your code to.
2. Once PR is made, the Circle CI build server checks all tests and Codecov runs a report on test coverage. The reports are available in the PR page and also emailed to admins.
3. From there, a maintainer will accept your PR or they may request comments for you to address prior to merge. The maintainer may also ask you to squash your commits prior to merge.