From 8e5f335db756faa3cec628ad1ec69d33e0906c26 Mon Sep 17 00:00:00 2001 From: Tim Branyen Date: Fri, 15 Jan 2016 14:52:40 -0800 Subject: [PATCH 01/15] README updates --- README.md | 82 ++++++++++++++++++++++--------------------------------- 1 file changed, 33 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index 8366dee1d..d8e2478cd 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ NodeGit ## Maintained by ## Tim Branyen [@tbranyen](http://twitter.com/tbranyen), -John Haley [@johnhaley81](http://twitter.com/johnhaley81), -Max Korp [@maxkorp](http://twitter.com/MaximilianoKorp), and -Steve Smith [@orderedlist](https://twitter.com/orderedlist) with help from tons of +John Haley [@johnhaley81](http://twitter.com/johnhaley81), and +Max Korp [@maxkorp](http://twitter.com/MaximilianoKorp) with help from tons of [awesome contributors](https://github.com/nodegit/nodegit/contributors)! ### Alumni Maintainers ### +Steve Smith [@orderedlist](https://twitter.com/orderedlist), Michael Robinson [@codeofinterest](http://twitter.com/codeofinterest), and Nick Kallen [@nk](http://twitter.com/nk) @@ -61,20 +61,42 @@ dependencies. npm install nodegit ``` -**Note: NodeGit will only work on io.js Windows with [the iojs binary instead of node](https://github.com/rvagg/pangyp/issues/4).** +If you receive errors about libstdc++, which are commonly experienced when +building on Travis-CI, you can fix this by upgrading to the latest +libstdc++-4.9. -If you encounter problems while installing, you should try the [Building from -source](http://www.nodegit.org/guides/install/from-source/) instructions. +In Ubuntu: + +``` sh +sudo add-apt-repository ppa:ubuntu-toolchain-r/test +sudo apt-get update +sudo apt-get install libstdc++-4.9-dev +``` + +In Travis: + +``` yaml +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - libstdc++-4.9-dev +``` + +If you are still encountering problems while installing, you should try the +[Building from source](http://www.nodegit.org/guides/install/from-source/) +instructions. ## API examples. ## ### Cloning a repository and reading a file: ### ``` javascript -var clone = require("nodegit").Clone.clone; +var Git = require("nodegit"); -// Clone a given repository into a specific folder. -clone("https://github.com/nodegit/nodegit", "tmp", null) +// Clone a given repository into the `./tmp` folder. +Git.Clone("https://github.com/nodegit/nodegit", "./tmp") // Look up this known commit. .then(function(repo) { // Use a known commit sha from this repository. @@ -110,10 +132,10 @@ clone("https://github.com/nodegit/nodegit", "tmp", null) ### Emulating git log: ### ``` javascript -var open = require("nodegit").Repository.open; +var Git = require("nodegit"); // Open the repository directory. -open("tmp") +Git.Repository.open("tmp") // Open the master branch. .then(function(repo) { return repo.getMasterCommit(); @@ -163,41 +185,3 @@ You will need to build locally before running the tests. See above. ``` bash npm test ``` - -## Migrating from old versions. ## - -The bump from 0.1.4 to 0.2.0 was a big one. Many things changed, see here: -https://github.com/nodegit/nodegit/compare/v0.1.4...v0.2.0 - -This update is wholly and entirely a breaking one, and older versions won't be -maintained. For the purpose of migration, perhaps the biggest point to make -is that async methods can now use promises, rather than just taking callbacks. -Additionally, lots of method and property names have changed. - -## nw.js (Node-Webkit) ## - -### Native compilation for nw.js ### -A common issue is with NodeGit not functioning properly inside of -[nw.js](http://github.com/nwjs/nw.js) applications. Because NodeGit -is a native module, it has to be rebuilt for node-webkit using -[nw-gyp](http://github.com/rogerwang/nw-gyp). By default, NodeGit will look -in the root package's package.json for an `engines` property, and within look -for a `nw.js` property (or a `node-webkit` if the prior isn't found) that holds -a specific version of nw.js. The value of this property is what will get passed -as the `--target` argument to `nw-gyp configure`. - -### Version incompatibility ### -Prior to version 0.2.6, NodeGit used [nan](http://github.com/rvagg/nan) v1.4.3. -As of 0.2.6, NodeGit uses nan v1.5.1 to provide support for io.js. Unfortunately, -this breaks some nw.js compatibility. With nw.js 0.12+, the name was changed to -nw.js from node-webkit. The alpha currently still breaks with NodeGit due to the -nan update, but should be fixed in the final v0.12.0 release. Ã…pplications using -previous versions of node webkit have 2 options: -1) Use an older version (v0.2.4 or earlier) of NodeGit -2) Use [npm shrinkwrap](https://docs.npmjs.com/cli/shrinkwrap) to force NodeGit to -use nan v1.4.3. Since the binary always recompiles when being used with nw.js, you -shouldn't have to do anything else to make sure it works. As of NodeGit v0.2.6, -the change to nan v1.4.3 doesn't cause any problems. - -Currently, support for nw.js is limited, although we intend to support it better -in the future. From 1ee211fbcd3b67bf9536ef1a56e5badb113852f0 Mon Sep 17 00:00:00 2001 From: Tim Branyen Date: Fri, 15 Jan 2016 15:42:35 -0800 Subject: [PATCH 02/15] Configure travis to not use coverage and gcc4.9 during tagged releases --- .travis.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 505c78a7f..de4b17edb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,14 +38,18 @@ before_install: - nvm install $NODE_VERSION - - if [ $TRAVIS_OS_NAME == "linux" ]; then + - if [ $TRAVIS_OS_NAME == "linux" ] && [ ! "$TRAVIS_TAG" ]; then export GYP_DEFINES="use_obsolete_asm=true"; export JOBS=4; export CC=/usr/bin/gcc-4.9; export CXX=/usr/bin/g++-4.9; + else + export GYP_DEFINES="use_obsolete_asm=true"; + export JOBS=4; fi - - if [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ]; then + - if [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ] && [ ! "$TRAVIS_TAG" ]; then + echo "Installing and configuring native source code coverage"; export GYP_DEFINES="coverage=1 use_obsolete_asm=true"; wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz; tar xvfz lcov-1.10.tar.gz; From 02edea784df2f5533c884702179d5260ff22f9a2 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Fri, 15 Jan 2016 09:08:58 -0700 Subject: [PATCH 03/15] Add support for git_submodule_status --- generate/input/descriptor.json | 11 ++++++++++- test/tests/submodule.js | 22 ++++++++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index d9658df84..47d147a1e 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2028,7 +2028,16 @@ } }, "git_submodule_status": { - "ignore": true + "isAsync": true, + "args": { + "status": { + "isReturn": true, + "shouldAlloc": true + } + }, + "return": { + "isErrorCode": true + } }, "git_submodule_sync": { "isAsync": true, diff --git a/test/tests/submodule.js b/test/tests/submodule.js index 6b920c811..e95f610ab 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -16,18 +16,18 @@ describe("Submodule", function() { return RepoUtils.createRepository(repoPath) .then(function(repo) { test.repository = repo; + return Repository.open(local("../repos/workdir")); + }) + .then(function(repo) { + test.workdirRepository = repo; }); }); it("can walk over the submodules", function() { - var repo; + var repo = this.workdirRepository; var submoduleName = "vendor/libgit2"; - return Repository.open(local("../repos/workdir")) - .then(function(_repo) { - repo = _repo; - return repo.getSubmoduleNames(); - }) + return repo.getSubmoduleNames() .then(function(submodules) { assert.equal(submodules.length, 1); @@ -43,6 +43,16 @@ describe("Submodule", function() { }); }); + it("can get submodule status", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.status(repo, submoduleName, Submodule.IGNORE.NONE) + .then(function(status) { + assert.equal(Submodule.STATUS.IN_CONFIG, status); + }); + }); + it("can setup and finalize submodule add", function() { var repo = this.repository; var submodulePath = "hellogitworld"; From d8426a212d2cb4fcbe1c625b9888947690ad0b60 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Fri, 15 Jan 2016 14:40:11 -0700 Subject: [PATCH 04/15] Make setUrl async --- generate/input/descriptor.json | 6 ++++++ test/tests/submodule.js | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 47d147a1e..50469c379 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2027,6 +2027,12 @@ "isErrorCode": true } }, + "git_submodule_set_url": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, "git_submodule_status": { "isAsync": true, "args": { diff --git a/test/tests/submodule.js b/test/tests/submodule.js index e95f610ab..60dda85e9 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -53,6 +53,20 @@ describe("Submodule", function() { }); }); + it("can set submodule url", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + var submoduleUrl = "https://github.com/githubtraining/hellogitworld.git"; + + return Submodule.setUrl(repo, submoduleName, submoduleUrl) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(submoduleUrl, submodule.url()); + }); + }); + it("can setup and finalize submodule add", function() { var repo = this.repository; var submodulePath = "hellogitworld"; From 8af6df1a8240bf69ce4d84ec47ac32639ba142e8 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Sat, 16 Jan 2016 10:36:21 -0700 Subject: [PATCH 05/15] Make setUpdate async --- generate/input/descriptor.json | 6 ++++++ test/tests/submodule.js | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 50469c379..261c25d06 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2027,6 +2027,12 @@ "isErrorCode": true } }, + "git_submodule_set_update": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, "git_submodule_set_url": { "isAsync": true, "return": { diff --git a/test/tests/submodule.js b/test/tests/submodule.js index 60dda85e9..1d098913d 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -67,6 +67,19 @@ describe("Submodule", function() { }); }); + it("can set submodule update", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.setUpdate(repo, submoduleName, Submodule.UPDATE.NONE) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(Submodule.UPDATE.NONE, submodule.updateStrategy()); + }); + }); + it("can setup and finalize submodule add", function() { var repo = this.repository; var submodulePath = "hellogitworld"; From 1e46ae45d3b3879b493829b8d8ad7880f9ba084e Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Sun, 17 Jan 2016 19:54:26 -0700 Subject: [PATCH 06/15] Make setIgnore async --- generate/input/descriptor.json | 6 ++++++ test/tests/submodule.js | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 261c25d06..13fc597c4 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2027,6 +2027,12 @@ "isErrorCode": true } }, + "git_submodule_set_ignore": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, "git_submodule_set_update": { "isAsync": true, "return": { diff --git a/test/tests/submodule.js b/test/tests/submodule.js index 1d098913d..b2fd923cc 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -53,6 +53,19 @@ describe("Submodule", function() { }); }); + it("can set submodule ignore", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.setIgnore(repo, submoduleName, Submodule.IGNORE.ALL) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(Submodule.IGNORE.ALL, submodule.ignore()); + }); + }); + it("can set submodule url", function() { var repo = this.workdirRepository; var submoduleName = "vendor/libgit2"; From 2bb1123e29cfa4df1d858d8d992fadd4673a13b2 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 19 Jan 2016 18:59:47 -0700 Subject: [PATCH 07/15] Added Submodule.location. --- generate/input/descriptor.json | 13 ++++++++++++- test/tests/submodule.js | 13 +++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 13fc597c4..3a557e93b 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2000,7 +2000,18 @@ } }, "git_submodule_location": { - "ignore": true + "isAsync": true, + "args": { + "location_status": { + "isReturn": true + }, + "submodule": { + "isSelf": true + } + }, + "return": { + "isErrorCode": true + } }, "git_submodule_open": { "isAsync": true, diff --git a/test/tests/submodule.js b/test/tests/submodule.js index b2fd923cc..002b4ef12 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -53,6 +53,19 @@ describe("Submodule", function() { }); }); + it("can get submodule location", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.lookup(repo, submoduleName) + .then(function(submodule) { + return submodule.location(); + }) + .then(function(status) { + assert.equal(Submodule.STATUS.IN_CONFIG, status); + }); + }); + it("can set submodule ignore", function() { var repo = this.workdirRepository; var submoduleName = "vendor/libgit2"; From b1c80bc973cda3a594a5925d210ed6ef5f10b547 Mon Sep 17 00:00:00 2001 From: joshaber Date: Tue, 19 Jan 2016 23:17:14 -0700 Subject: [PATCH 08/15] Allocate. --- generate/input/descriptor.json | 1 + 1 file changed, 1 insertion(+) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 3a557e93b..090153968 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2003,6 +2003,7 @@ "isAsync": true, "args": { "location_status": { + "shouldAlloc": true, "isReturn": true }, "submodule": { From 87254ce648eb6d1f16078b55297579e1b89b99f9 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Wed, 20 Jan 2016 17:56:14 -0700 Subject: [PATCH 09/15] Add support for Remote.defaultBranch --- generate/input/descriptor.json | 13 ++++++++++++- test/tests/remote.js | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 13fc597c4..09f39fb3d 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -1602,7 +1602,18 @@ } }, "git_remote_default_branch": { - "ignore": true + "isAsync": true, + "args": { + "out": { + "isReturn": true + }, + "remote": { + "isSelf": true + } + }, + "return": { + "isErrorCode": true + } }, "git_remote_delete": { "isAsync": true, diff --git a/test/tests/remote.js b/test/tests/remote.js index 82bb91b33..747bf2eba 100644 --- a/test/tests/remote.js +++ b/test/tests/remote.js @@ -150,6 +150,22 @@ describe("Remote", function() { }); }); + it("can get the default branch of a remote", function() { + var remoteCallbacks = { + certificateCheck: function() { + return 1; + } + }; + + var remote = this.remote; + + return remote.connect(NodeGit.Enums.DIRECTION.FETCH, remoteCallbacks) + .then(function() { return remote.defaultBranch(); }) + .then(function(branchName) { + assert.equal("refs/heads/master", branchName); + }); + }); + it("can fetch from a remote", function() { return this.repository.fetch("origin", { callbacks: { From 2187742d74f58bd51d7ee6cb20e39808ebb16676 Mon Sep 17 00:00:00 2001 From: John Haley Date: Wed, 20 Jan 2016 23:05:54 -0700 Subject: [PATCH 10/15] Add `mergeOptions` to `Repository#mergeBranches` --- lib/repository.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/repository.js b/lib/repository.js index 8234ce083..31390f0ed 100644 --- a/lib/repository.js +++ b/lib/repository.js @@ -725,7 +725,6 @@ Repository.prototype.fetchAll = function( }); }; - /** * Merge a branch onto another branch * @@ -733,15 +732,18 @@ Repository.prototype.fetchAll = function( * @param {String|Ref} from * @param {Signature} signature * @param {Merge.PREFERENCE} mergePreference + * @param {MergeOptions} mergeOptions * @return {Oid|Index} A commit id for a succesful merge or an index for a * merge with conflicts */ Repository.prototype.mergeBranches = - function(to, from, signature, mergePreference) { + function(to, from, signature, mergePreference, mergeOptions) { var repo = this; var fromBranch; var toBranch; + mergePreference = mergePreference || NodeGit.Merge.PREFERENCE.NONE; + mergeOptions = normalizeOptions(mergeOptions, NodeGit.MergeOptions); signature = signature || repo.defaultSignature(); @@ -806,7 +808,12 @@ Repository.prototype.mergeBranches = }) .then(function(headRef) { updateHead = !!headRef && (headRef.name() === toBranch.name()); - return NodeGit.Merge.commits(repo, toCommitOid, fromCommitOid); + return NodeGit.Merge.commits( + repo, + toCommitOid, + fromCommitOid, + mergeOptions + ); }) .then(function(index) { // if we have conflicts then throw the index @@ -834,8 +841,8 @@ Repository.prototype.mergeBranches = [toCommitOid, fromCommitOid]); }) .then(function(commit) { - // // we've updated the checked out branch, so make sure we update - // // head so that our index isn't messed up + // we've updated the checked out branch, so make sure we update + // head so that our index isn't messed up if (updateHead) { return repo.getBranch(to) .then(function(branch) { From 0c73e01185295554a317f5a6fd873b6d19e3a6a7 Mon Sep 17 00:00:00 2001 From: John Haley Date: Wed, 20 Jan 2016 23:41:50 -0700 Subject: [PATCH 11/15] Remove `Index#addAll` hack Now that https://github.com/libgit2/libgit2/issues/2687 has landed we don't need our hack to speed up `Index#addAll` anymore. This fixes #751 --- lib/index.js | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/lib/index.js b/lib/index.js index a7f41571e..a9531e700 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,7 +1,6 @@ var NodeGit = require("../"); var Index = NodeGit.Index; -var Status = NodeGit.Status; var Pathspec = NodeGit.Pathspec; /** @@ -21,28 +20,7 @@ Index.prototype.entries = function() { var addAll = Index.prototype.addAll; Index.prototype.addAll = function(pathspec, flags, matchedCallback) { - // This status path code is here to speedup addall, which currently is - // excessively slow due to adding every single unignored file to the index - // even if it has no changes. Remove this when it's fixed in libgit2 - // https://github.com/libgit2/libgit2/issues/2687 - var paths = []; - var repo = this.owner(); - var statusCB = function(path) { - paths.push(path); - }; - var idx = this; - var ps = Pathspec.create(pathspec || "*"); - - return Status.foreach(repo, statusCB) - .then(function() { - return paths; - }) - .then(function(paths) { - paths = paths.filter(function(path) { - return !!(ps.matchesPath(0, path)); - }); - return addAll.call(idx, paths, flags, matchedCallback, null); - }); + return addAll.call(this, pathspec || "*", flags, matchedCallback, null); }; var removeAll = Index.prototype.removeAll; From 5dd890962f19e3bfd379bc90900481b7f32ba879 Mon Sep 17 00:00:00 2001 From: John Haley Date: Wed, 20 Jan 2016 23:50:15 -0700 Subject: [PATCH 12/15] Fix linter --- lib/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index a9531e700..be905be60 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,7 +1,6 @@ var NodeGit = require("../"); var Index = NodeGit.Index; -var Pathspec = NodeGit.Pathspec; /** * Return an array of the entries in this index. From e1398937364ff1ed3c8d736505d9f19d28c32123 Mon Sep 17 00:00:00 2001 From: joshaber Date: Thu, 21 Jan 2016 12:00:24 -0700 Subject: [PATCH 13/15] Decrement the mutex use count after we've unlocked them. Maybe/hopefully fixes #869. /cc @srajko --- generate/templates/manual/src/lock_master.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/generate/templates/manual/src/lock_master.cc b/generate/templates/manual/src/lock_master.cc index f59145b33..d7d8239f5 100644 --- a/generate/templates/manual/src/lock_master.cc +++ b/generate/templates/manual/src/lock_master.cc @@ -188,9 +188,13 @@ void LockMasterImpl::Lock(bool acquireMutexes) { } void LockMasterImpl::Unlock(bool releaseMutexes) { - std::vector objectMutexes = GetMutexes(releaseMutexes * -1); + // Get the mutexes but don't decrement their use count until after we've + // unlocked them all. + std::vector objectMutexes = GetMutexes(0); std::for_each(objectMutexes.begin(), objectMutexes.end(), uv_mutex_unlock); + + GetMutexes(releaseMutexes * -1); } void LockMasterImpl::CleanupMutexes() { From 71f08d731bbf11a68c0bc1420be9ccc9d8564816 Mon Sep 17 00:00:00 2001 From: John Haley Date: Thu, 21 Jan 2016 17:17:37 -0700 Subject: [PATCH 14/15] Update to 0.9.0 --- CHANGELOG.md | 12 +++++++++++- README.md | 2 +- package.json | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68b375355..647bcb660 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## [0.9.0](https://github.com/nodegit/nodegit/releases/tag/v0.9.0) (2016-01-21) + +[Full Changelog](https://github.com/nodegit/nodegit/compare/v0.8.0...0.9.0) + +- Thread safe fix to stop crashing on releasing mutexes [PR #876](https://github.com/nodegit/nodegit/pull/876) +- `Submodule#setIgnore`, `Submodule#setUpdate`, and `Submodule#setUrl` are now all async. `Submodule#status` and `Submodule#location` are now available [PR #867](https://github.com/nodegit/nodegit/pull/867) and [PR #870](https://github.com/nodegit/nodegit/pull/870) +- `Remote#defaultBranch` is now available [PR #872](https://github.com/nodegit/nodegit/pull/872) +- `Repository#mergeBranches` now takes in a `MergeOptions` parameter [PR #873](https://github.com/nodegit/nodegit/pull/873) +- Remove a NodeGit specific hack to make `Index#addAll` faster since that is fixed in libgit2 [PR #875](https://github.com/nodegit/nodegit/pull/875) + ## [0.8.0](https://github.com/nodegit/nodegit/releases/tag/v0.8.0) (2016-01-15) [Full Changelog](https://github.com/nodegit/nodegit/compare/v0.7.0...0.8.0) @@ -7,7 +17,7 @@ - Thread safe locking has been added and currently is defaulted to off. Use `NodeGit.enableThreadSafety()` to turn on - NodeGit no longer requires a specific Promise object from the `nodegit-promise` library to be passed in. You can now use whatever you want! - `Repository#stageFilemode` now can accept an array of strings for files to update -- `Submodule#addToIndex`, `Submodule#addFinalize`, `Submodule#init`, `Submodule#open`, `Submodule#sync`, and `Submodule#update` are now all async methods +- `Submodule#addToIndex`, `Submodule#addFinalize`, `Submodule#init`, `Submodule#open`, `Submodule#sync`, and `Submodule#update` are now all async methodss ## [0.7.0](https://github.com/nodegit/nodegit/releases/tag/v0.7.0) (2016-01-08) diff --git a/README.md b/README.md index d8e2478cd..83c6dcb4d 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ NodeGit -**Stable: 0.8.0** +**Stable: 0.9.0** ## Have a problem? Come chat with us! ## diff --git a/package.json b/package.json index 13daa9d4d..bb94ca07d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nodegit", "description": "Node.js libgit2 asynchronous native bindings", - "version": "0.8.0", + "version": "0.9.0", "homepage": "http://nodegit.org", "keywords": [ "libgit2", From bac54d2f17e53245971c06a529781661959320b5 Mon Sep 17 00:00:00 2001 From: John Haley Date: Thu, 21 Jan 2016 17:23:23 -0700 Subject: [PATCH 15/15] Revert "Configure travis to not use coverage and gcc4.9 during tagged releases" This reverts commit 1ee211fbcd3b67bf9536ef1a56e5badb113852f0. --- .travis.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index de4b17edb..505c78a7f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,18 +38,14 @@ before_install: - nvm install $NODE_VERSION - - if [ $TRAVIS_OS_NAME == "linux" ] && [ ! "$TRAVIS_TAG" ]; then + - if [ $TRAVIS_OS_NAME == "linux" ]; then export GYP_DEFINES="use_obsolete_asm=true"; export JOBS=4; export CC=/usr/bin/gcc-4.9; export CXX=/usr/bin/g++-4.9; - else - export GYP_DEFINES="use_obsolete_asm=true"; - export JOBS=4; fi - - if [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ] && [ ! "$TRAVIS_TAG" ]; then - echo "Installing and configuring native source code coverage"; + - if [ $TRAVIS_OS_NAME == "linux" ] && [ $NODE_VERSION == "0.12" ]; then export GYP_DEFINES="coverage=1 use_obsolete_asm=true"; wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz; tar xvfz lcov-1.10.tar.gz;