You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To enhance portability, use standard-defined types (e.g., `uint16_t`, `uint32_t`) and avoid relying on compiler-specific behavior.
776
774
Where precise control over memory layout is required, such as in embedded systems or when interfacing with hardware,
777
-
always verify the structure size and layout using static assertions or preprocessor checks.
775
+
always verify the structure size and layout using static assertions.
778
776
779
777
#### Avoid extreme portability
780
778
@@ -789,6 +787,131 @@ mainstream architectures. PDP-11 era is long gone.
789
787
- It is fair to assume that `NULL` is matching `(uintptr_t) 0` and it is fair
790
788
to `memset()` structures with zero. Non-zero `NULL` is for retro computing.
791
789
790
+
## Git Commit Style
791
+
792
+
Effective version control is critical to modern software development.
793
+
Git's powerful features—such as granular commits, branching,
794
+
and a versatile staging area—offer unparalleled flexibility.
795
+
However, this flexibility can sometimes lead to disorganized commit histories and
796
+
merge conflicts if not managed with clear, consistent practices.
797
+
798
+
By committing often, writing clear messages, and adhering to a common workflow,
799
+
developers can not only reduce the potential for errors but also simplify collaboration and future maintenance.
800
+
We encourage every team to tailor these best practices to their specific needs while striving
801
+
for a shared standard that promotes efficiency and code quality.
802
+
803
+
Below are the detailed guidelines that build on these principles.
804
+
* Group Related Changes Together:
805
+
Each commit should encapsulate a single, coherent change.
806
+
e.g., if you are addressing two separate bugs, create two distinct commits.
807
+
This approach produces focused, small commits that simplify understanding, enable quick rollbacks,
808
+
and foster efficient peer reviews.
809
+
By taking advantage of Git’s staging area and selective file staging,
810
+
you can craft granular commits that make collaboration smoother and more transparent.
811
+
* Commit Frequently:
812
+
Making commits often ensures that your changes remain concise and logically grouped.
813
+
Frequent commits not only help maintain a clean history but also allow you to share your progress with your teammates regularly.
814
+
This regular sharing keeps everyone in sync,
815
+
minimizes merge conflicts, and promotes a collaborative environment where integration happens seamlessly.
816
+
* Avoid Committing Work in Progress:
817
+
Only commit code when a logical component is in a stable, ready-to-integrate state.
818
+
Break your feature's development into manageable segments that reach a functional milestone quickly,
819
+
so you can commit regularly without compromising quality.
820
+
If you feel the urge to commit merely to clear your working directory for actions like switching branches or pulling changes,
821
+
use Git's stash feature instead.
822
+
This practice helps maintain a stable repository and ensures that your team reviews well-tested, coherent code.
823
+
* Test Your Code Before Committing:
824
+
Before committing, ensure that your code has been thoroughly tested.
825
+
Rather than assuming your changes are ready, run comprehensive tests to confirm they work as intended without unintended side effects.
826
+
Testing is especially critical when sharing your code with others,
827
+
as it maintains the overall stability of the project and builds trust among collaborators.
828
+
* Utilize Branches for Parallel Development:
829
+
Branches are a powerful tool that enables developers to isolate different lines of work—whether you are developing new features,
830
+
fixing bugs, or exploring innovative ideas.
831
+
By using branches extensively, you can work on your tasks independently and merge only after careful review and testing.
832
+
This not only keeps the main branch stable but also encourages collaborative code reviews and a more organized integration process.
833
+
834
+
Clear and descriptive commit messages are crucial for maintaining a transparent history of changes and for facilitating effective debugging and tracking.
835
+
Please adhere to the guidelines outlined in [How to Write a Git Commit Message](https://cbea.ms/git-commit/).
836
+
1. Separate the subject from the body with a blank line.
837
+
2. Limit the subject line to 50 characters.
838
+
3. Capitalize the subject line.
839
+
4. Do not end the subject line with a period.
840
+
5. Use the imperative mood in the subject line.
841
+
6. Wrap the body at 72 characters.
842
+
7. Use the body to explain what and why, not how.
843
+
844
+
An example (derived from Chris' blog post) looks like the following:
845
+
```text
846
+
Summarize changes in around 50 characters or less
847
+
848
+
More detailed explanatory text, if necessary. Wrap it to about 72
849
+
characters or so. In some contexts, the first line is treated as the
850
+
subject of the commit and the rest of the text as the body. The
851
+
blank line separating the summary from the body is critical (unless
852
+
you omit the body entirely); various tools like `log`, `shortlog`
853
+
and `rebase` can get confused if you run the two together.
854
+
855
+
Explain the problem that this commit is solving. Focus on why you
856
+
are making this change as opposed to how (the code explains that).
857
+
Are there side effects or other unintuitive consequences of this
858
+
change? Here's the place to explain them.
859
+
860
+
Further paragraphs come after blank lines.
861
+
862
+
- Bullet points are okay, too
863
+
864
+
- Typically a hyphen or asterisk is used for the bullet, preceded
865
+
by a single space, with blank lines in between, but conventions
866
+
vary here
867
+
868
+
If you use an issue tracker, put references to them at the bottom,
0 commit comments