Home

Awesome

git: functions module for shellfire

This module provides a simple set of wrapper functions for making it more pleasant to work with git.

Compatibility

Overview

Usage couldn't be simpler. Just pick a function. Please note that most functions are not currently documented.

Importing

To import this module, add a git submodule to your repository. From the root of your git repository in the terminal, type:-

mkdir -p lib/shellfire
cd lib/shellfire
git submodule add "https://github.com/shellfire-dev/git.git"
cd -
git submodule init --update

You may need to change the url https://github.com/shellfire-dev/git.git above if using a fork.

You will also need to add paths - include the module paths.d.

Namespace git

This namespace contains useful functions wrapping git.

To use in code

If calling from another shellfire module, add to your shell code the line

core_usesIn git

in the global scope (ie outside of any functions). A good convention is to put it above any function that depends on functions in this module. If using it directly in a program, put this line inside the _program() function:-

_program()
{
	core_usesIn git
	…
}

Functions


git_mostRecentCommit()

ParameterValueOptional
gitRepositoryPathPath to a git repository (or submodule), ie a path with a .git folder or file.No

The function prints to standard out, without a trailing new line, the most recent commit hash (a full hash is returned, eg 166bcda6abd46e7e1f0107ad4006323a9398afd3). A typical usage might be:-

lastCommit="$(git_mostRecentCommit "/path/to/repo/folder")"

Does not check the path exists.


git_commitToTagOrCommit
ParameterValueOptional
gitRepositoryPathPath to a git repository (or submodule), ie a path with a .git folder or file.No
commitA commit hash (eg retrieved with git_mostRecentCommit()).No

The function prints to standard out, without a trailing new line, the tag that that exaxtly matches the commit hash, or, if not present, returns commit. A typical usage might be:-

tagOrCommit="$(git_commitToTagOrCommit "/path/to/repo/folder" "166bcda6abd46e7e1f0107ad4006323a9398afd3")"

git_withOutputSilencedIfQuiet()

ParameterValueOptional
verbosityLevelA number such as 1, 2, etc that matches --verbosity on the command line.No
gitCommandGit command, eg cleanNo
gitCommandArgumentsZero or more arguments to pass to gitCommandYes

Helper function to only make git commands noisy if a verbosity threshold is met or exceeded. Runs gitComand [gitCommandArguments] if verbosityLevel is matched or exceeded, otherwise runs gitComand -q [gitCommandArguments]. gitCommand must be able to accept -q (not all commands do).