@haetae/git
@haetae/git
is a convenient git integration with Haetae.
If you don't use git as a version control system, you don't need this package.
peerDependencies
Note: This might not be exhaustive and lists only Haetae's packages.
Dependents
Installation
Are you developing a library(e.g. plugin) for Haetae?
It might be more suitable to specify @haetae/git
as peerDependencies
than dependencies
.
To automatically install @haetae/git
and its peerDependencies
You may want to install @haetae/git
and its peerDependencies
all at once.
install-peerdeps
(opens in a new tab) is a good tool for that.
# As dependencies
npx install-peerdeps @haetae/git
# As devDependencies
npx install-peerdeps --dev @haetae/git
To manually handle the installation
You might want to manually deal with the installation.
First, install @haetae/git
itself.
# As dependencies
npm install @haetae/git
# As devDependencies
npm install --save-dev @haetae/git
Then, check out peerDependencies
and manually handle them.
(e.g. Install them as dependencies
or set them as peerDependencies
)
# This does not install, but just shows peerDependencies.
npm info @haetae/git peerDependencies
API
pkg
Refer to introduction#pkg.
recordDataSpecVersion
A version of the specification of Record Data @haetae/git
manages.
Value
1
RecordData
interface RecordData extends Rec {
'@haetae/git': {
commit: string
branch: string
specVersion: number
}
}
Record Data Namespace
Record Data can have arbitrary fields.
'@haetae/git'
is a namespace to avoid collision.
Haetae uses a package name as a namespace by convention.
RecordDataOptions
An argument interface for recordData
interface RecordDataOptions {
commit?: string
branch?: string
specVersion?: number
}
recordData
A function to form Record Data @haetae/git
manages.
Type
(options?: RecordDataOptions) => Promise<RecordData>
Options?
commit?
: Commit ID ofHEAD
. (default:commit()
)branch?
: Current branch. (default:branch()
)specVersion?
: A version of the specification of Record Data@haetae/git
manages. (default:recordDataSpecVersion
)
InstalledOptions
An argument interface for installed
.
interface InstalledOptions {
rootDir?: string
}
installed
A function to check whether git is installed on the system.
Type
(options?: InstalledOptions) => Promise<boolean>()
Options?
rootDir?
: A directory to execute a shell command. (default: Where.git
resides. If not found,core.getConfigDirname()
)
InitializedOptions
An argument interface for initialized
.
interface InitializedOptions {
rootDir?: string
}
initialized
A function to check whether a git repository is initialized (by git init
).
Type
(options?: InitializedOptions) => Promise<boolean>
Options?
rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)
BranchOptions
An argument interface for branch
.
interface BranchOptions {
rootDir?: string
}
branch
A function to get the current branch name.
Type
(options?: BranchOptions) => Promise<string>
Options?
rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)
CommitOptions
An argument interface for commit
.
interface CommitOptions {
rootDir?: string
}
commit
A function to get the commit ID of HEAD
.
The return value would be the full 40-character commit hash.
(e.g. '63a5812b39c4d01031024f98c8890bc90830cf1b'
)
Type
(options?: CommitOptions) => Promise<string>
Options?
rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)
UntrackedFilesOptions
An argument interface for untrackedFiles
.
interface InstalledOptions {
rootDir?: string
}
untrackedFiles
Path Principles
A function to get a list of untracked files (opens in a new tab).
git ls-files --others --exclude-standard
is executed.
Type
(options?: UntrackedFilesOptions) => Promise<string[]>
Options?
rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)
IgnoredFilesOptions
An argument interface for ignoredFiles
.
interface IgnoredFilesOptions {
rootDir?: string
}
ignoredFiles
Path Principles
A function to get a list of ignored (by .gitignore) files.
git ls-files --others --exclude-standard --ignored
is executed.
Type
(options?: IgnoredFilesOptions) => Promise<string[]>
Options?
rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)
ChangedFilesOptions
An argument interface for changedFiles
.
interface ChangedFilesOptions {
from?: string
to?: string
rootDir?: string
includeUntracked?: boolean
includeIgnored?: boolean
filterByExistence?: boolean
reserveRecordData?: boolean | typeof core.reserveRecordData
}
changedFiles
Memoized Path Principles
A function to get a list of changed files.
Type
(options?: ChangedFilesOptions) => Promise<string[]>
Options?
from?
: A commit ID as a starting point of comparison. (default: Previous record's commit ID.undefined
if there's no previous record'scommit
.)to?
: A commit ID as an ending point of comparison. (default:undefined
)rootDir?
: A directory to executegit
. (default: Where.git
resides. If not found,core.getConfigDirname()
)includeUntracked?
: Whether to include untracked (opens in a new tab) files in the result. Iftrue
,untrackedFiles()
is added to the result. (default:true
)includeIgnored?
: Whether to include ignored (by .gitignore) files in the result. Iftrue
,ignoredFiles()
is added to the result. (default:false
)filterByExistence?
: Whether to filter out non-existent files from the result. If you want to get removed files as well, set itfalse
. (default:true
)reserveRecordData?
: Whether to reserve Record Data. Iftrue
,core.reserveRecordData
is called internally. If a function, not a boolean, is given, the function is called instead ofcore.reserveRecordData
. (default:true
)
Note that untracked files (usually newly added files not committed yet) and ignored files are different. They don't have any intersections. A file is either untracked or ignored or tracked.
When both from
and to
are string (NOT undefined
)
All changed files between the two commits are included.
git diff --name-only <from> <to>
is executed under the hood.
When only from
is string (NOT undefined
)
All changed files since the commit ID from
are included.
git diff --name-only <from>
is executed under the hood.
(Note: This also contains modified or deleted files which are not committed yet
as long as they're tracked, no matter whether staged (opens in a new tab) or not,
unless filterByExistence
is true
.)
When only to
is string (NOT undefined
)
All tracked (opens in a new tab) files
since git initialization until the commit ID to
are included.
git ls-tree --full-tree --name-only -r <to>
is executed under the hood.
(Note: This does NOT contain files deleted in past commits because they became untracked and non-existent.)
When both from
and to
are NOT string (undefined
)
All tracked (opens in a new tab) files since git initialization until HEAD
are included.
git ls-tree --full-tree --name-only -r HEAD
is executed under the hood.
(Note: This does NOT contain files deleted in past commits because they became untracked and non-existent.)
Usage
The Getting Started guide explains the basic usage.