{"id":17838526,"url":"https://github.com/xeruf/kull","last_synced_at":"2026-03-15T04:11:21.380Z","repository":{"id":56342847,"uuid":"250220337","full_name":"xeruf/kull","owner":"xeruf","description":"Kull is a collaboration convention that preserves order through clear rules and processes","archived":false,"fork":false,"pushed_at":"2023-07-11T07:08:44.000Z","size":38,"stargazers_count":4,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T10:11:53.269Z","etag":null,"topics":["collaboration","collaboration-convention","convention","git","github","kull","review"],"latest_commit_sha":null,"homepage":"https://kull.jfischer.org","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xeruf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-26T09:55:52.000Z","updated_at":"2025-01-22T23:00:05.000Z","dependencies_parsed_at":"2024-10-27T21:38:55.832Z","dependency_job_id":"87f50585-43e0-404a-ab7b-d209589fbcf8","html_url":"https://github.com/xeruf/kull","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xeruf%2Fkull","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xeruf%2Fkull/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xeruf%2Fkull/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xeruf%2Fkull/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xeruf","download_url":"https://codeload.github.com/xeruf/kull/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244031033,"owners_count":20386534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["collaboration","collaboration-convention","convention","git","github","kull","review"],"created_at":"2024-10-27T20:58:19.286Z","updated_at":"2026-03-15T04:11:21.374Z","avatar_url":"https://github.com/xeruf.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kull Convention\n\nPlease get familiar with some [terminology](terminology.md) first.\nIf you want to adopt Kull in your project,\nfollow the [setup guide](setup.md).\n\n## Summary\n\nKull is a collaboration convention for teams\nworking together through distributed version control (DVCS, like Git)\nthat preserves order through clear rules and processes.\nThese are the main points:\n\n- **commit message format**: `type(scope): summary`\n  as described in [Karma Runner](http://karma-runner.github.io/6.4/dev/git-commit-msg.html)\n  with predefined scopes, enforced using a Git commit-msg hook\n- **branching**: default + descriptively named feature branches; draft pull requests for documentation\n- **reviewing**: the contributor is responsible for opening and merging his pull requests; review comments are only resolved by the reviewer\n- **merging**: after approval, merge a branch via squash or rebase and then delete it\n\n## 1. Committing\n\nTo ease grasping the history, back-tracing of regressions and automated processing,\nKull follows the [Karma Runner commit message convention](http://karma-runner.github.io/6.4/dev/git-commit-msg.html).\nThe first line is in `type(scope): summary` format\nwith the summary in [imperative mood](https://chris.beams.io/posts/git-commit/#imperative).\nList closed issues with the \"Closes\" keyword on a separate line in the footer, e.g. \"Closes #1, #23, #34\".\n\n### The Hook\n\nThe convention is managed and enforced by a `.dev` folder in the root of the repository.\nIt holds shared Git hooks in a folder called `githooks`,\nenabled by running `git config core.hooksPath .dev/githooks`.\nThe [commit-msg hook](.dev/githooks/commit-msg) will then automatically refuse commits which do not adhere to the format,\nand the [prepare-commit-msg hook](.dev/githooks/prepare-commit-msg) helps people follow best practices.\n\nSince there is no single definition of what constitutes a \"scope\",\nthe script will try to read the file `.dev/scopes.txt` in the repository.\nIt should contain a newline-separated list of scopes allowed in the project.\n\n\u003c!-- TODO allow executable scopesfile --\u003e\n\nThe script admits an additional commit type called *rework* for migration from a less strict convention\nor for beta stages where commits often end up too broad to fit into a single type.\nFor mature projects it should be removed from the hook (by modifying the Regex at line 8)\nsince it is unhelpful in the long-term.\nIt also adds a *release* type in case the project wants to highlight release commits\nthat only bump version numbers -\nit may be removed as well.\n\n## 2. Branching\n\nA repository usually consists of a default branch and feature branches as described in [GitHub Flow](https://githubflow.github.io/).\nFeature branch names should be descriptive and follow a similar style as the commits,\ni.e. `type/scope/summary`, though either scope or type are often omitted.\nAvoid direct pushes to the default branch to prevent failing builds through hasty fixes.\n\nSometimes there is an additional development branch, but it is often superfluous.\nReleases are generally better handled with tags instead of separate branches.\nWhether it is main or development, the default branch should always build, so there is rarely a clear distinction.\n\n## 3. Reviewing\n\nUpon pushing a new feature branch,\ncreate a corresponding draft pull request with a title that summarizes the changes\nand conforms to the commit message convention,\nunless you want to signal that this will not be a squash merge.\nAn open pull request is above all documentation of work done\nand is not expected to be minded\nuntil its owner explicitly requests reviews.\nIf a branch has no associated PR and no recent activity,\nit is subject to deletion.\n\nReview thoroughly to ensure long term alignment.\nTo prevent misunderstandings, the PR owner should answer a review comment with a reference to his solution.\nThe reviewer can then decide whether to resolve the matter or explain why the solution is not sufficient.\n\nTo build on top of unmerged changes, branch off rather than adding features to a branch in review.\nOnly request review for that new branch once the base branch is merged.\n\n## 4. Merging\n\nA pull request should be approved by at least one other person and pass all tests before being merged.\nThe owner of the PR should merge it as he knows the state and content best.\n\nMerge using either squash or rebase to keep noise such as experimental and merge commits out of the main history.\nThe default is squash merging,\nwith the title of the PR as the title of the commit\nand a description summarising the changes and fixes.\nDue to this it is not as important to keep feature branch history clean -\nexperimental and even merge commits are acceptable within a branch if it is certain to be squashed.\nA rebase may be appropriate if each commit in the PR builds on its own.\nOn the other hand, if the changes are too big for a squash to seem appropriate, they should be split up -\nrebase merging will likely put redundant or meaningless commits into the history of the merge target.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxeruf%2Fkull","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxeruf%2Fkull","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxeruf%2Fkull/lists"}