{"id":15010678,"url":"https://github.com/degree9/boot-semgit","last_synced_at":"2025-07-03T14:33:14.551Z","repository":{"id":62432359,"uuid":"66313730","full_name":"degree9/boot-semgit","owner":"degree9","description":"Semantic Git access from boot tasks.","archived":false,"fork":false,"pushed_at":"2019-03-05T03:13:55.000Z","size":112,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-14T07:41:56.969Z","etag":null,"topics":["boot-clj","clojure","git"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/degree9.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-08-22T22:47:37.000Z","updated_at":"2022-04-19T13:46:42.000Z","dependencies_parsed_at":"2022-11-01T20:46:52.768Z","dependency_job_id":null,"html_url":"https://github.com/degree9/boot-semgit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/degree9/boot-semgit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/degree9%2Fboot-semgit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/degree9%2Fboot-semgit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/degree9%2Fboot-semgit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/degree9%2Fboot-semgit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/degree9","download_url":"https://codeload.github.com/degree9/boot-semgit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/degree9%2Fboot-semgit/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263342251,"owners_count":23451980,"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":["boot-clj","clojure","git"],"created_at":"2024-09-24T19:35:20.990Z","updated_at":"2025-07-03T14:33:14.512Z","avatar_url":"https://github.com/degree9.png","language":"Clojure","funding_links":["https://www.patreon.com/degree9"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"/.github/d9boot-semgit.png\" width=\"445px\"\u003e\u003c/p\u003e\n\n[![Clojars Project][clojars-badge]][clojars]\n[![Dependencies Status][deps-badge]][deps]\n[![Downloads][downloads-badge]][downloads]\n[![Slack][slack-badge]][slack]\n\nSemantic Git access from [boot-clj][1].\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://degree9.io\" align=\"center\"\u003e\n    \u003cimg width=\"135\" src=\"/.github/logo.png\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003cb\u003eboot-semgit is developed and maintained by Degree9\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n* Provides Git Porcelain tasks (wrappers around git binary)  \n  `git-add, git-branch, git-commit, etc.`  \n  See [which tasks are provided][1].\n\n\u003e The following outlines basic usage of the task, extensive testing has not been done.\n\u003e Please submit issues and pull requests!\n\n## Usage\n\nAdd `boot-semgit` to your `build.boot` dependencies and `require` the namespace:\n\n```clj\n(set-env! :dependencies '[[degree9/boot-semgit \"X.Y.Z\" :scope \"test\"]])\n(require '[degree9.boot-semgit :refer :all])\n```\n\nSemgit tasks look similar to regular git commands. Tasks follow a common name pattern of `git-\u003ccommand\u003e`:\n\n```bash\nboot git-commit --all --message \"Commit from boot-clj.\"\n```\n\nUsing the `git` binary for one off tasks still makes more sense and results in less typing:\n\n```bash\ngit commit -a -m \"Commit from git.\"\n```\n\n## Rational\n\n#### Why use Semgit tasks?\n\nBoot tasks provide access to your build pipeline, integrating directly with the pipeline allows git commands to be executed as part of your build workflow or from the REPL, again resulting in less typing and becoming a repeatable process which many developers across an entire project can use.\n\n#### Improve your development process:\n\nFetch remote changes when you start your development:\n\n```clojure\n(boot/deftask develop\n  \"Build project for development.\"\n  [...]\n  (let [...]\n    (comp\n      (git-pull :branch \"origin/master\")\n      (watch)\n      ...\n      (serve))))\n```\n\n#### Why not just call it `boot-git`?\n\nThis task provides porcelain git functions and is designed to build workflows (getting to that in a moment).\nMeaning internal or plumbing tasks are not provided, therefore we wrap the systems `git` binary and only attempt to provide a subset of functionality. `boot-git` should probably be reserved for a set of tasks which implement `git` using a native library such as `JGit`. We will leave that up to you!\n\n## Workflows\n\n#### Where does the \"semantic\" part come in?\n\n`boot-semgit` provides a set of tasks which integrate with `boot-semver` to provide consistent\nbranching and versioning of projects. Our goal is to provide accelerated development with common community driven process.\n\nOpen a feature branch from `master`:\n```clojure\n;; require the workflow namespace\n(require '[degree9.boot-semgit.workflow :refer :all])\n```\n```bash\n$ boot feature --name test\n\nCreating feature branch: feature-test\nUpdating version...\nSaving changes...\n```\n\nClose a feature branch (merging changes) into `master`:\n```bash\n$ boot feature --name test -c -b master\n\nClosing feature branch: feature-test\nCleaning branch history...\nSyncing version...\nSaving changes...\nSwitching to target: master\nMerging feature: feature-test  \n```\n\n#### Task Options\n\nThe `feature` task exposes a few options.\n\n```clojure\nn name       NAME   str  \"Feature name which will be appended to 'feature-'.\"\nc close             bool \"Closes a feature branch using 'git-rebase' and 'git-merge'.\"\nb branch     BRANCH str  \"The base or target branch for this feature.\"\nr remote     REMOTE str  \"Remote repository to use as a base for this feature.\"\nd delete            bool \"Delete/Remove a feature without closing it.\"\n```\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.patreon.com/degree9\" align=\"center\"\u003e\n    \u003cimg src=\"https://c5.patreon.com/external/logo/become_a_patron_button@2x.png\" width=\"160\" alt=\"Patreon\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003cb\u003eSupport this and other open-source projects on Patreon!\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n[1]: https://github.com/degree9/boot-semgit/wiki/Porcelain-Tasks\n[clojars-badge]: https://img.shields.io/clojars/v/degree9/boot-semgit.svg\n[clojars]: https://clojars.org/degree9/boot-semgit\n[deps-badge]: https://versions.deps.co/degree9/boot-semgit/status.svg\n[deps]: https://versions.deps.co/degree9/boot-semgit\n[downloads-badge]: https://versions.deps.co/degree9/boot-semgit/downloads.svg\n[downloads]: https://versions.deps.co/degree9/boot-semgit\n[slack-badge]: https://img.shields.io/badge/clojurians-degree9-%23e01563.svg?logo=slack\u0026longCache=true\n[slack]: https://clojurians.slack.com/channels/degree9/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdegree9%2Fboot-semgit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdegree9%2Fboot-semgit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdegree9%2Fboot-semgit/lists"}