gitmono

package module
v0.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2022 License: MIT Imports: 3 Imported by: 0

README

CI Status Go Report Card Coverage Status

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

  1. Initialise the version of all monorepo projects:
gitmono init --version-prefix=v -p mod1

v0.1.0
  1. Get the latest version of a monorepo project:
gitmono version -p mod1 --version-prefix=v

v0.1.0
  1. Get the subset of modified monorepo projects:
gitmono diff -f head~1 -t head -p mod1

mod1/go.mod
  1. Release new version for a modified monorepo project:
gitmono release -p mod1 --commit-scheme=conventional --version-prefix=v

mod1/v0.2.0
  1. 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

func GetProjectTagPrefix(project string) string

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 Config

type Config struct {
	DryRun        bool
	CommitScheme  string
	VersionPrefix string
	Project       string
}

Config defines generic configuration applying to multiple commands

type Differ

type Differ interface {
	Diff(from, to string) ([]string, error)
}

Differ performs diff on the repo

type EnvVars added in v0.10.0

type EnvVars struct {
	CommitterName  string
	CommitterEmail string
}

EnvVars contains the accepted environment variables

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

Directories

Path Synopsis
cmd
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL