git9
v0.3.1
Published
Utilities for Git
Readme
git9
Utilities (How many letters?) for Git.
Installation
npm install --save git9Usage
import {
getCommit,
getCurrentCommit,
hasCommit,
isMerging,
hasConflicts,
getBranch,
getCurrentBranch,
getRootDirectory,
getConfig,
getRemoteURL,
getRemoteCommit,
getDifferences,
getChangedFiles,
downloadFile,
} from 'git9'This module is implemented with quansync, so all of these functions have both asynchronous and synchronous versions, and even uncollapsed quantum versions. Therefore, you can use them in any of the following ways:
// 1. Simple asynchronous version
const commit = await getCommit('HEAD')
// 2. Explicit asynchronous version
const commit = await getCommit.async('HEAD')
// 3. Synchronous version
const commit = getCommit.sync('HEAD')
// 4. Uncollapsed quantum version
const fn = quansync(function* () {
const commit = yield* getCommit('HEAD')
})By default, all functions execute based on process.cwd(). If you want to execute based on a different directory, you can use this binding as follows:
// Use any of the following versions
const commit = await getCommit.call({ cwd: anotherPath }, 'HEAD')
const commit = await getCommit.async.call({ cwd: anotherPath }, 'HEAD')
const commit = getCommit.sync.call({ cwd: anotherPath }, 'HEAD')getCommit
function getCommit(committish: string): Promise<string>Get commit hash with a commit-ish string.
getCurrentCommit
function getCurrentCommit(): Promise<string>Get commit hash of the current branch.
hasCommit
function hasCommit(committish: string): Promise<boolean>Check whether a specified branch or pointer exists.
isMerging
function isMerging(): Promise<boolean>Check whether the working repository is in the merging state. Equivalent to hasCommit('MERGE_HEAD').
hasConflicts
function hasConflicts(subpath?: string): Promise<boolean>Check whether the working repository has conflicts.
getBranch
function getBranch(committish: string): Promise<string>Get the branch name of a commit-ish.
getCurrentBranch
function getCurrentBranch(): Promise<string>Get the current branch name. Equivalent to getBranch('HEAD').
getRootDirectory
function getRootDirectory(): Promise<string>Get the root directory of the repository.
getConfig
function getConfig(config: string): Promise<string>Get specified config value of the repository.
getRemoteURL
function getRemoteURL(name: string): Promise<string>Get remote repository URL with specified name.
getRemoteCommit
function getRemoteCommit(url: string, committish: string): Promise<string>Get commit hash with a commit-ish string from remote.
getDifferences
function getDifferences(committish: string): Promise<{
name: string;
status: string;
}[]>Get differences between the current branch and the specified commit-ish.
Possible status letters are:
- A: addition of a file
- C: copy of a file into a new one
- D: deletion of a file
- M: modification of the contents or mode of a file
- R: renaming of a file
- T: change in the type of the file (regular file, symbolic link or submodule)
- U: file is unmerged (you must complete the merge before it can be committed)
- X: "unknown" change type (most probably a bug, please report it)
See git-diff.
getChangedFiles
function getChangedFiles(committish: string): Promise<string[]>Get changed files in current branch from the specified commit-ish.
downloadFile
function downloadFile(url: string, committish: string, file: string): Promise<string>Download specified file with a commit-ish string from remote using git-archive protocol.
[!NOTE] GitHub does not support git-archive protocol.
