ggit v0.11.0
Local promise-returning git command wrappers
API
cloneRepo
var clone = require('ggit').cloneRepo;
clone({
url: 'git@github.com:bahmutov/test-next-updater.git',
folder: 'folder to create, should not exist yet'
}).then(function () {
console.log('cloned repo to destination folder');
});
exec
var exec = require('ggit').exec;
var cmd = 'rm -rf folder';
var verbose = true;
exec(cmd, verbose).then(function () {
console.log('removed folder');
});
blame
Finds last person who has touched specific line in a file
- filename - full or partial filename (from the repo's root)
- lineNumber - starts with 1
var blame = require('ggit').blame;
blame(filename, lineNumber).then(function (info) {
});
Equivalent to porcelain git output: see git-blame
isTracked
Returns true
if given path is tracked in the repo.
var isTracked = require('ggit').isTracked;
isTracked(filename).then(function (result) {
});
hasChanges
Returns true
if there are local uncommitted stages
var changed = require('ggit').hasChanges;
changed().then(function (result) {
});
commit
Commit any changes with a given message. Second argument is optional and will
be added after a blank line to the short main message.
var commit = require('ggit').commit;
commit('added foo', 'long text').then(function () {
});
push
Push commits to the remote
var psuh = require('ggit').psuh;
psuh().then(function () {
});
commits
Returns list of commits in the given folder as a list or object
var commits = require('ggit').commits;
commits.all(gitRepoFolder)
.then(R.take(2))
.then(console.table)
.done();
commits.all(gitRepoFolder)
.then(R.take(2))
.then(commits.byId)
.then(console.log)
.done();
trackedFiles
Returns all tracked source files in the given folder matching pattern.
Both folder and pattern are optional.
require('ggit')
.trackedFiles(__dirname, '*.js')
.then(function (list) {
console.log('javascript tracked in the current folder are');
console.log(list);
})
.done();
commitPerLine
Returns an object where for each key (filename) there is a list of commits for each line.
var perLine = require('ggit').commitPerLine;
perLine(['foo.js', 'bar.js']).then(function (result) {
});
numstat
Returns info for a specific commit - number of lines changed, deleted.
Same as $ git show --numstat <id>
.
require('ggit')
.numstat('5d3ee3')
.then(function (result) {
})
.done();
lastCommitId
Returns last commit id
require('ggit')
.lastCommitId()
.then(function (str) {
})
.done();
Development
Edit source, run unit tests, run end to end tests and release
new version commands:
npm test
grunt release
npm publish
Small print
Author: Gleb Bahmutov © 2015
License: MIT - do anything with the code, but don't blame uTest if it does not work.
Spread the word: tweet, star on github, etc.
Support: if you find any problems with this module, email / tweet / open
issue on Github