In this release we had added support for Node v7 and latest Electron. We have removed support for Node v0.12 and v5.
We are also deprecating nw.js support since it is currently broken, no one in the current team uses it and we would not be able to currently support nw.js in an effective manner with a good user experience.
For proxy support we now use libcurl for HTTP/HTTPS transport which should have no noticeable change in NodeGit remote operations but if changes are noticed this is worth mentioning as a potential source.
Many PR's were made to fix memory leaks as they were found so memory usage should go down in this version for long running scripts. Additionally, when performing operations with callbacks (transfer progress, credentials, etc...) there was a small chance for a segfault when NodeGit would schedule the callback to go into JavaScript. This is now fixed.
Many users, especially on windows, were experiencing errors during the build. The build still isn't perfect but a lot of the bugs were fixed.
The majority of changes to NodeGit v17 were in libgit2. The API breaking changes that are known are:
This is a big update! Lots of work was done to bring NodeGit up to the latest stable libgit2 version (v0.24.1), to use babel in the library, to make it more stable, remove memory leaks, squash bugs and in general just improve the library for all. Make sure to see all of the API changes below (there are a lot).
We have added Node 6 as a supported platform! Going forward we aim to have 1:1 support for versions of Node that are either current or LTS. That means that v0.12 will not be supported soon so if you're on that please upgrade to at least Node v4. Also Node v5 will NOT be LTS so when Node stops supporting that in the coming months we will as well. You can read more about the current Node upgrade plan here.
Custom merge drivers can now be registered, which allows callers to
configure callbacks to honor merge=driver
configuration in
.gitattributes
.
Custom filters can now be registered with wildcard attributes, for
example filter=*
. Consumers should examine the attributes parameter
of the check
function for details.
Symlinks are now followed when locking a file, which can be
necessary when multiple worktrees share a base repository.
You can now set your own user-agent to be sent for HTTP requests by
using the Libgit2.OPT.SET_USER_AGENT
with Libgit2.opts()
.
You can set custom HTTP header fields to be sent along with requests
by passing them in the fetch and push options.
Tree objects are now assumed to be sorted. If a tree is not
correctly formed, it will give bad results. This is the git approach
and cuts a significant amount of time when reading the trees.
Filter registration is now protected against concurrent
registration.
Filenames which are not valid on Windows in an index no longer cause
to fail to parse it on that OS.
Rebases can now be performed purely in-memory, without touching the
repository's workdir.
When adding objects to the index, or when creating new tree or commit
objects, the inputs are validated to ensure that the dependent objects
exist and are of the correct type. This object validation can be
disabled with the Libgit2.OPT.ENABLE_STRICT_OBJECT_CREATION
option.
The WinHTTP transport's handling of bad credentials now behaves like
the others, asking for credentials again.
MergeOptions
now provides a defaultDriver
that can be used
to provide the name of a merge driver to be used to handle files changed
during a merge.
The Merge.TREE_FLAG
is now Merge.FLAG
. Subsequently,
treeFlags
field of the MergeOptions
structure is now named flags
.
The Merge.FILE_FLAGS
enum is now Merge.FILE_FLAG
for
consistency with other enum type names.
Cert
descendent types now have a proper parent
member
It is the responsibility of the refdb backend to decide what to do
with the reflog on ref deletion. The file-based backend must delete
it, a database-backed one may wish to archive it.
Index#add
and Index#conflictAdd
will now use the case
as provided by the caller on case insensitive systems. Previous
versions would keep the case as it existed in the index. This does
not affect the higher-level Index#addByPath
or
Index#addFromBuffer
functions.
The Config.LEVEL
enum has gained a higher-priority value
PROGRAMDATA
which represent a rough Windows equivalent
to the system level configuration.
RebaseOptions
now has a mergeOptions
field.
The index no longer performs locking itself. This is not something
users of the library should have been relying on as it's not part of
the concurrency guarantees.
Remote#connect()
now takes a customHeaders
argument to set
the extra HTTP header fields to send.
Tree.entryFilemode
, Tree.entryFilemodeRaw
, Tree.entryId
, Tree.entryName
,
Tree.entryToObject
, and Tree.entryType
have all been moved to the TreeEntry
prototype.
Additionally, the TreeEntry
fields have been removed in lieu of the corresponding functions to return
the data.
Error: Module did not self-register #593
A guide on how to create a new branch, switch to it and delete it. #588
A way to get "gone" branches #583
Missing documentation pages for BranchIterator and NodeIterator #581
ELIFECYCLE error on npm rebuild
#578
npm rebuild fails (lifecycleScripts/clean should not delete lifecycleScripts!) #576
Unable to compile and install v0.4.0 on Windows #575
Doesn't work with Electron #574
Doesn't work with io.js 2.x #573
Getting an exception during a fetchAll in defaultSignature in repository.js #572
tree_entry path function not working when calling getEntry with a path including subdir #570
Build is broken on windows #565
Cloning git sub modules using "nodegit" npm module #560
How to get remote latest commit? #559
npm install fails for nw.js #558
nodegit and nw.js #557
Error installing nodegit as dependency of an atom-shell app #556
New version of nan is breaking compile #554
Install error from openssl #551
How to get Tag instance by tag_name? #543
ELIFECYCLE Error on install #540
Remote.delete returns -3 #539
Repository.init should accept boolean value for is_bare #538
getStatus hangs #537
Unable to compile or install with npm install nodegit #536
options
not reusable, nodegit destroys it #533
'Error: 'directory' exists and is not an empty directory' (but it doesn't exist) #530
hey !:-) problem with Branch.iteratorNew (support) #528
hey !:-) problem with Branch.iteratorNew #527
hey !:-) problem with Branch.iteratorNew #526
hey !:-) problem with Branch.iteratorNew #525
Error: Reference 'refs/remotes/user/foo/HEAD' not found #523
Path issues windows #522
Issues on scientific linux 6.6 #521
It's looking for node-typ under /Users/johnh/.node-gyp
#518
Not working with iojs #516
Cred.sshKeyNew not working: Too many redirects or authentication replays #511
Open a Repo from a subfolder #509
Create git-like CLI #508
Cannot create an instance of Packbuilder #507
Cannot find module '../build/Debug/nodegit' #506
Bug with oid implicit cast inside C++ #501
Failed to require
on Ubuntu 12.04LTS #493
Enable git\_config
#449
Pull example doesn't fully update the index #389
Push #463
Suppress astyle errors #459
io.js support #447
Meteor: icon fonts not working (Resource interpreted as Font but transferred with MIME type text/html) #443
AnnotatedCommit.x listing as Annotated.commitX #437
fetchAll() fails unless a default signature is available #431
Question: Is there a certificateCheck option available for pushing to a remote repository? #420
Repository.open returns empty object #412
Missing documentation for Tree.walk() #411
comparing from 0.1.4 to 0.2.0 #410
Potential example issue in add-and-commit.js L45-48 #409
failed to install on ubuntu 14.04 #408
Return promises instead of nesting them #407
segfault when cloning from private BitBucket repo #406
Subtrees + custom error handling #400
How to use nodegit in atom shell ..... #393
Cannot create a new branch #391
Remove fixappveyor from clone tests #385
Commit isn't working #381
Rename combyne folder to templates #378
Cloning SSH repos seem to fail #372
Commit.getDiff is backwards? #368
List all files in repo (git ls-tree) #365
Checking out a branch #361
nodegit no longer builds in nwjs #360
Module install/build fails on Heroku #332
2 Step Authentication #323
Find some way to automatically generate a list of missing tests. #272
libgit2 creation methods have name collisions with internal V8 functions #271
Enums are still being manually assigned in javascript #268
We're using too many promise libraries #264
unable to resolve symbolic references #262
nodegit installation falls back when Python install dir contains spaces #261
Probe features #245
require('path').Repo.open(...) returns {} #241
RevWalk malloc error #239
OS X tests in Travis-CI #237
Fix RevWalk tests #236
Simple clone fails. #231
Create templates for remaining src and include files #230
Error: SSL is not supported by this copy of libgit2. #228
error while install nodegit latest version 0.1.4 #225
error while install nodegit latest version 0.1.4 #224
Did getReferences dissapear? #223
Again for #147 #218
Update documentation on nodegit.org #217
Stable = bump to 1.0 #215
Example on nodegit.com homepage is invalid #211
tree.diffWorkDir deprecated? #209
Abort on getRemotes #201
Generic Logging/Tracing mechanism #199
Repo#openIndex missing #197
Documentation on http://www.nodegit.org/ out of date #196
Remove extern "C" with 0.21 bump #193
CloneOptions documentation lacking #192
Webpage examples are not up to date #190
Automatically generate structs from types array #187
Error: connect ETIMEDOUT during install #179
TODO #177
Notes #176
Integration improvements. #171
Misleading Readme #138
Cannot find module './build/Debug/nodegit' #137
Support for Node 0.11+ #134
installer cant seem to find python #126
Cannot build when parent directory contains space(s) #123
question: how cvv8 is used? #118
question: gen.js does not generate wrapper.h and wrapper.cc #116
tree.diffIndex: pointer being freed was not allocated #112
Use as a dependency of another node project? #110
Segmentation faults with concurrent access? #104
tree.diffWorkDir #101
getReference passes unexpected object into callback #98
index.removeByPath stops execution #97
Missing example: commit to a local repo (i.e. git add, git commit) #96
Get contents of index entry? #94
Failure to Build nodegit at Commit 0aa9a3c120 on OS X 10.6.8 #92
TypeError: Cannot call method 'clone' of undefined #91
missing cstring #88
Installing fails - can't find vendor/libgit2/build #80
Improving JavaScript API #73
Using code-generation to generate #70