Git guide
Here are some links that will help you
Start by forking the repository
This is done by the "Fork" button on GitHub.
Clone your repository locally
This is done by
git clone git@github.com:<username>/pgagroal.gitAdd upstream
Do
cd pgagroal
git remote add upstream https://github.com/pgagroal/pgagroal.gitDo a work branch
git checkout -b mywork mainMake the changes
Remember to verify the compile and execution of the code.
Use
[#xyz] Descriptionas the commit message where [#xyz] is the issue number for the work, and Description is a short description of the issue in the first line
Multiple commits
If you have multiple commits on your branch then squash them
git rebase -i HEAD~2for example. It is p for the first one, then s for the rest
Rebase
Always rebase
git fetch upstream
git rebase -i upstream/mainForce push
When you are done with your changes force push your branch
git push -f origin myworkand then create a pull request for it
Format source code
Use the clang-format.sh script from the root directory of the project to apply consistent formatting:
./clang-format.shNote that the project uses clang-format version 21 (or higher).
Repeat
Based on feedback keep making changes, squashing, rebasing and force pushing
PTAL
When you are working on a change put it into Draft mode, so we know that you are not happy with it yet.
Please, send a PTAL to the Committer that were assigned to you once you think that your change is complete. And, of course, take it out of Draft mode.
Undo
Normally you can reset to an earlier commit using git reset <commit hash> --hard.
But if you accidentally squashed two or more commits, and you want to undo that, you need to know where to reset to, and the commit seems to have lost after you rebased.
But they are not actually lost - using git reflog, you can find every commit the HEAD pointer has ever pointed to. Find the commit you want to reset to, and do git reset --hard.