README
¶
gitmono
Git wrapper for monorepos
This tool provides commands to manage versioning of projects in monorepos.
All commands accept the monorepo project to operate on, using the -p
flag. When none is specified, the flag defaults to .
that enables the tool for any repository type (also non-monorepo).
The project value is expected to match a subdirectory of the project from the root path, to support diff
and log
commands.
Commands
diff
command prints out the modified files for the specified git reference range that match the project subdirectory.
log
command prints out the commits for the specified git reference range that match project subdirectory.
init
command releases and prints the initial version (0.1.0) for the specified project, if it has never been released.
version
command prints the latest version of the specified project.
release
command releases and prints a new version of the specified project, after looking up for a version bump command in the commits that reference files of that project.
Examples
- Initialise the version of all monorepo projects:
gitmono init --version-prefix=v -p mod1
v0.1.0
- Get the latest version of a monorepo project:
gitmono version -p mod1 --version-prefix=v
v0.1.0
- Get the subset of modified monorepo projects:
gitmono diff -f head~1 -t head -p mod1
mod1/go.mod
- Release new version for a modified monorepo project:
gitmono release -p mod1 --commit-scheme=conventional --version-prefix=v
mod1/v0.2.0
- Get log of commits relevant to a monorepo project:
gitmono log -p mod1 -f head~2 -t head
7fd4cd0d6141b3cbc3c4f0a2206090140d2d7722 fix: mod1 modified
Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetProjectTagPrefix ¶ added in v0.10.0
GetProjectTagPrefix calculates the project tag prefix for the specified project value
Types ¶
type Bumper ¶ added in v0.6.3
type Bumper interface {
Bump(*version.Version) (*version.Version, error)
}
Bumper bumps a version to a new version
type CommitParser ¶
type CommitParser interface {
GetBumperFromCommit(*git.Commit) Bumper
}
CommitParser parses the provided commit
GetBumperFromCommit parses a commit message and decide the bumper to use for version
type GitDiffer ¶ added in v0.10.0
type GitDiffer interface {
Diff(rev string, maxFiles, maxFileLines, maxLineChars int, opts ...git.DiffOptions) (*git.Diff, error)
}
GitDiffer abstracts git diff operations
type GitLogger ¶ added in v0.10.0
type GitLogger interface { Log(rev string, opts ...git.LogOptions) ([]*git.Commit, error) CommitByRevision(rev string, opts ...git.CommitByRevisionOptions) (*git.Commit, error) }
GitLogger abstracts git log operations
type GitTagger ¶ added in v0.10.0
type GitTagger interface { Tags(opts ...git.TagsOptions) ([]string, error) CreateTag(name, rev string, opts ...git.CreateTagOptions) error }
GitTagger abstracts git tag operations
type Logger ¶
type Logger interface { Log(from, to string) ([]*git.Commit, error) CommitHashByRevision(rev string) (string, error) }
Logger performs log commands on the repo
Log returns the commits for the specified reference range in reverse chronological order CommitHashByRevision returns the commit hash matching to a revision
type Tagger ¶
type Tagger interface { CreateTag(versionedCommit *VersionedCommit) error ListProjectVersionTags() ([]string, error) }
Tagger performs tag commands on the repo
CreateTag writes the given tag to the given commit ListProjectVersionTags retrieves all tags for a project using the tag list pattern
type VersionedCommit ¶
type VersionedCommit struct { CommitID string Project string VersionPrefix string Version *version.Version }
VersionedCommit points a commit that is assigned a version
func (*VersionedCommit) GetTag ¶
func (vc *VersionedCommit) GetTag() string
GetTag returns the tag to version a commit with
func (*VersionedCommit) GetVersion ¶ added in v0.6.0
func (vc *VersionedCommit) GetVersion() string
GetVersion returns the version part of the tag
type Versioner ¶
type Versioner interface { GetCurrentVersion() (*VersionedCommit, error) ReleaseNewVersion(commitID string) (*VersionedCommit, error) InitVersion(commitID string) (*VersionedCommit, error) }
Versioner maintains version using tags
GetCurrentVersion retrieves the latest version ReleaseNewVersion creates and persists a new version InitVersion creates and persists the initial version