repository: update commit format, migrate to markdown

This commit is contained in:
Infinidoge 2023-07-25 20:44:53 -04:00
parent 07216e2fa3
commit 0ba532c44a
2 changed files with 36 additions and 119 deletions

View file

@ -1,119 +0,0 @@
#+TITLE: Repository Regulations
* Commit Messages
Adopted from [[https://www.conventionalcommits.org/en/v1.0.0/][conventional commits]] and [[https://docs.doomemacs.org/latest/?#/developers/conventions/git-commits][Doom Emacs' variant]]
#+BEGIN_SRC
TYPE[!][(scope)]: SUBJECT
[BODY]
[FOOTER]
#+END_SRC
** Types
*** =bump=
For updating inputs/packages, and any changes required to maintain working order post-update. Replace =bump= with =revert= then downgrading flake inputs.
#+BEGIN_SRC commit
bump: [flake inputs|INPUT]
#+END_SRC
*** =chore=
A regular and necessary commit to update regularly-changed files, such as those including timestamps or state information.
*** =dev=
Work on project infrastructure and development tools: build scripts, repository config files (=.github/*=, =.direnv=, =.gitignore=, etc.)
*** =docs=
Changes to documentation, docstrings, or help output for =bud=.
*** =feat=
For changes that introduce a new feature, a major UI/UX change, etc.
Changes that are minor should use the =tweak= type.
*** =fix=
A fix for a bug or behavior. Also used for updating code missed by the last dump.
*** =merge=
A merge commit, merging a pull request or branch.
- Never specify a scope
- The bang is meaningless
- The ~SUMMARY~ should only contain one or more pull request references/branch names
*** =module=
Reflects changes to the module list, such as adding, removing, renaming, or deprecating modules
- Not used for changes within modules
- Scope does after the colon
- If it is a user module, add =(user)= to the type.
#+begin_src
module: add desktop/gaming
#+end_src
#+begin_src
module: move services/xserver to desktop/display
#+end_src
#+begin_src
module: remove services/foldingathome
#+end_src
#+begin_src
module(user): add programs/blugon
#+end_src
*** =nit=
Small nitpick changes with no effect on the code, such as whitespace, formatting, or comments.
*** =refactor=
Changes to code that does not add a feature or fix a bug. Includes removing redundant code, simplifying code, renaming variables, or swapping a package for a near-enough drop-in replacement.
*** =revert=
For reverting changes. ~SUBJECT~ should be the full subject of the reverted commit. (Add =Revert HASH= in ~FOOTER~)
Rebase out commits where possible..
*** =test=
Changes to unit tests, but not testing infrastructure (use =dev= for that)
*** =tweak=
For minor UI/UX improvements/changes, or tweaks to variables/defaults with subtle or no user-facing changes.
** Breaking changes
1. Append a =!= (aka bang) to the ~TYPE~ to indicate a breaking change
2. Prepend =BREAKING CHANGE:= to ~BODY~, followed by an explanation of what is broken and how to get around it,
** Scope
The ~SCOPE~ should be one of the following:
- Module, without directory/category (=nit(gaming)=, =tweak(xserver)=)
- Directory without the module, implying all modules within (=feat(desktop)=, =fix(software)=)
- Arbitrary scope prefixed with ~&~ (=fix(&lutris)=, =dev(&doom)=)
- A host, prefixed with ~@~ (=fix(@Infini-FRAMEWORK)=)
- A user, prefixed with ~$~ (=feat($infinidoge)=)
- ~bud~, for changes to the =bud= command
- One or more of the above, separated with a comma. This is discouraged.
The scope may be omitted if:
- Using the =bump:=, =revert:=, =module:=, or =merge:= types. (Scope belongs in ~SUBJECT~)
- Is a change to global defaults, larger design decisions, etc.

36
repository.md Normal file
View file

@ -0,0 +1,36 @@
# Repository Notes
> **Note**
> These are a set of loose guidelines, that I am using as a reminder/general format for myself.
## Commit Message Format
```
[location/scope]: [subject]
[body]
[footer]
```
### Locations
The location in a commit message represents where the change affects.
- A host (`Infini-DESKTOP`, etc.)
- A module (Just use the module name, not including `module` or `functionality` as a prefix, to reduce length)
- A profile
- `pkgs`
- `overlays`
- Etc.
If affecting multiple locations, separate with a comma.
If affecting all, use a `*`, like `hosts/*`.
If in a sub-location, separate with a slash, such as `overlays/patches`.
### Scopes
A scope is an abstract type of location, such as:
- `flake` for `flake.nix` or a flake-wide change
- `bump` for `flake.lock` updates