Skip to main content Module git Copy item path Source Commit GitInfo SemVer add_path_in git -C <workspace_root> add <rel> — stage a single relative path.check_git_available Check whether git is available in PATH. commit_in git -C <workspace_root> commit [-S] -m <message> — create a commit
with the given message, optionally GPG-signed.create_and_push_tag Create an annotated tag and push it if an origin remote exists. create_tag_via_github_api Create a tag via the GitHub API (using the gh CLI). detect_git_info Detect git info for a given tag. detect_github_repo Get the GitHub owner/name from the origin remote. detect_owner_repo Get the owner/repo from the origin remote, regardless of SCM host. extract_tag_prefix Extract the prefix portion of a tag template by locating the version placeholder. find_latest_tag_matching Find the latest tag matching a template pattern.
E.g., tag_template “cfgd-core-v{{ .Version }}” → matches tags like “cfgd-core-v1.2.3” find_latest_tag_matching_with_prefix Like find_latest_tag_matching , but with optional monorepo prefix filtering. find_previous_tag Find the tag immediately before current_tag in commit history. find_previous_tag_with_prefix Like find_previous_tag , but with optional monorepo prefix filtering. get_all_commits Get all commits reachable from HEAD, optionally filtered to a path.
Used for initial releases where there is no previous tag. get_all_commits_paths Get all commits reachable from HEAD, filtered to multiple paths. get_all_semver_tags Get all semver tags in the repo, sorted descending by version.
Prerelease tags sort after release tags of the same major.minor.patch. get_branch_semver_tags Get semver tags reachable from HEAD, sorted descending by version.
Prerelease tags sort after release tags of the same major.minor.patch. get_commit_messages_between Get commit subjects between two refs. get_commit_messages_between_path Get commit subjects between two refs that touched a specific path. get_commits_between Get commits between two refs, optionally filtered to a path. get_commits_between_paths Get commits between two refs, filtered to multiple paths (git log – path1 path2 …). get_current_branch Get the current branch name. get_first_commit Return the SHA of the very first commit in the repository. get_head_commit Get the full commit hash of HEAD. get_last_commit_messages Get last N commit subjects. get_last_commit_messages_path Get last N commit subjects that touched a specific path. get_short_commit Get the short commit hash of HEAD. gh_api_get GET a GitHub API endpoint via the gh CLI (single request, no pagination). gh_api_get_paginated GET a GitHub API endpoint via the gh CLI, with pagination. git_status_porcelain Return the git status --porcelain output showing dirty files. has_changes_since Check if there are changes in a path since a given tag. has_commits_since_tag Check if there are any commits since a given tag. has_version_placeholder Check whether a tag template string contains any recognised version placeholder. is_git_dirty Check whether the working tree has uncommitted changes. is_git_repo Check whether the current directory is inside a git repository. is_shallow_clone Check whether the current repository is a shallow clone. list_tags_with_prefix git -C <workspace_root> tag --list --sort=-v:refname '<prefix>*' —
return the list of refs whose name starts with prefix, ordered by
reverse semver. Returns Ok(Vec::new()) when git fails (no repo,
no tags) so callers can treat absence as a non-error.local_git_user_email Read git config user.email, or None if unset / git is unavailable. local_git_user_name Read git config user.name, or None if unset / git is unavailable. log_subjects_for_range git -C <workspace_root> -c log.showSignature=false log --pretty=format:%B%x1e <range> -- <rel_path> — list commit message
bodies (subject+body) for commits in range touching rel_path,
using the \x1e (RS) byte as a between-commits separator so multi-line
bodies survive parsing.parse_github_remote Parse owner and repo name from a GitHub remote URL.
Supports HTTPS (https://github.com/owner/repo.git) and SSH (git@github.com:owner/repo.git). parse_remote_owner_repo Parse owner and repo from any git remote URL, regardless of host. parse_semver Parse a strict semver version from a string like “v1.2.3”, “1.2.3”, “v1.0.0-rc.1”,
“v1.0.0+build.42”, or “v1.0.0-rc.1+build.42”. parse_semver_tag Parse a semver version from a prefixed tag string. paths_changed_since_tag git diff --name-only <tag>..HEAD -- <paths>... — return true when
any of the named paths changed between tag and HEAD. Returns
Ok(false) when git fails (e.g. not a git repo) so callers can treat
the absence-of-info case as “no changes”.render_ignore_patterns Render ignore patterns (both ignore_tags and ignore_tag_prefixes) through
the template engine when template_vars is provided. stage_and_commit Stage specific files and create a commit. strip_monorepo_prefix Strip a monorepo tag prefix from a tag string. tag_points_at_head Check whether tag points at the current HEAD commit.