git-wrapper2-promise v0.2.9
git-wrapper2-promise
A wrapper around the git executable with convenience functions for common commands, promisified via child-process-promise.
Built on top of git-wrapper2 version 0.2.5, which provided additional convenience functions to the original git-wrapper, git-wrapper2-promise provides the same functionality with a simpler, promise-based interface. Far from being a simple Promise.promisifyAll solution, this library updates the git-wrapper core by replacing the child-process module with the child-process-promise module (which uses q promises), resulting in a higher-quality promisification implementation.
NOTE In addition to implementing promises, this library removes the event emissions that were present in previous versions (git-wrapper and git-wrapper2). If you desire event emissions, you must therefore implement them yourself.
NOTE Unlike previous versions (git-wrapper and git-wrapper2), this library does not call process.chdir() to change the process current working directory to the repository directory (as provided by the git-dir option). This has various issues if consumer code changes to a different directory (particularly in asynchronous logic). Instead, it relies on proper usage of git-dir and work-tree options. For this to work easily for consumers, if a git-dir option is provided, it is automatically appended with the .git sub-directory, and if a work-tree option is not specified in combination with git-dir, it will automatically be set to the specified base repository directory.
Installation
npm install git-wrapper2-promiseAPI
var git = new Git(options);
Constructor. See git(1) for available options.
optionsObject. Examples:{ paginate: true }enables pagination.{ 'git-dir': '../.git' }specifies a different.gitdirectory.
var git = new Git(options);git.exec(command [, options, args]);
Executes a git command and returns a promise for a pre-processed child process object. See the Git Reference for available commands.
commandString. Examples:'init','log','commit', etc.optionsObject. The options for a git command. E.g.{ f: true }to force a command (equivalent to adding-fon the command line).argsArrayString. The arguments for a git command. E.g. some files forgit add.
git.exec(command, args).then(function(childProcess) {
return childProcess.stdout.toString();
}).catch(function(childProcess) {
console.error(childProcess.stderr);
});git.isRepo();
Checks to see if the directory is a git repository. Returns a promise
for a boolean indicating whether or not it is a repo.
var git = new Git({'git-dir': '/path/to/gitroot'});
git.isRepo().then(function(isRepo) {
console.log('isRepo:', isRepo);
}).catch(function(err) {
console.error(err);
});git.clone(repo, dir);
Clones a repository to the destination dir and returns a promise for a
pre-processed child process object.
repoString. Remote repository.dirString. Local directory to clone into.
git.clone(repo, dir).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.pull(remote, branch)
Performs a git pull command against the repository and returns a promise for
a pre-processed child process object. If remote or branch are not provided
they will default to origin and master respectively.
remoteString. Name of the remote target.branchString. Branch name to pull.
git.pull(remote, branch).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.add(which)
Perform a git add command, staging files for a commit and returns a promise
for a pre-processed child process object.
whichString. Which files to stage, seperated by spaces.
git.add('/path/to/repo/file').then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.commit(msg)
Commits staged changes with the given msg as the commit message and returns a
promise for a pre-processed child process object.
msgString. Body of the commit message.
git.commit(msg).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.push(remote, branch)
Pushes changes in the local repository to a remote and returns a promise for a
pre-processed child process object. If remote or branch are not provided,
the defaults will be origin and master respectively.
remoteString. Name of the remote target.branchString. Branch name to pull.
git.push(remote, branch).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.save(msg)
Convenience function for performing git.add, git.commit, and git.push in
one function call. Returns a promise for the last child process (git push).
Using this will automatically stage all unstaged changes, commit, and then push.
msgString. Body of the commit message.
git.save(msg).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});git.log(options)
Performs a git log command and returns a promise for a pre-processed child
process object. options are an array of command line options you might want
to provide, such as ['-n', 2] to limit the results to only the last 2 commits.
optionsArray. Command line options for thegit logcommand.
git.log(options).then(function(childProcess) {
console.log(childProcess.stdout.toString());
}).catch(function(err) {
console.error(err);
});