Skip to content

Latest commit

 

History

History
2406 lines (1542 loc) · 138 KB

CHANGELOG.md

File metadata and controls

2406 lines (1542 loc) · 138 KB

Change Log

Full Changelog

Summary of changes

  • Removed access to the diff_so_far param in git_diff_notify_cb and git_diff_progress_cb
  • Changed FilterSource.prototype.repo to async to prevent segfaults on filters that run during Submodule.status
  • Clean up deprecation messages to inform users of what was deprecated, not just what users should switch to
  • When installing on a machine that has yarn and does not have npm, the preinstall script should succeed now
  • ceiling_dirs is now an optional parameter to Repository.discover

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixed segfault in NodeGit.Merge.analysis and NodeGit.Merge.analysisForRef

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixed bug where repeated uses of extractSignature would fail because of the use of regex.prototype.match
  • Added support for building on IBM i (PASE) machines
  • Fixed bug where signingCb in rebases would not return error codes to LibGit2 if the signingCb threw or rejected
  • Expoed AnnotatedCommit methods:
    • AnnotatedCommit.prototype.ref
  • Exposed Apply methods:
    • Apply.apply applies a diff to the repository
    • Apply.toTree applies a diff to a tree
  • Exposed Config methods:
    • Config.prototype.deleteEntry
    • Config.prototype.deleteMultivar
    • Config.prototype.getBool
    • Config.prototype.getInt32
    • Config.prototype.getInt64
    • Config.prototype.setMultivar
    • Config.prototype.snapshot
  • Exposed ConfigIterator with methods:
    • ConfigIterator.create
    • ConfigIterator.createGlob
    • ConfigIterator.createMultivar
    • ConfigIterator.prototype.next
  • Exposed Merge methods:
    • Merge.analysis
    • Merge.analysisForRef
  • Expose Remote methods:
    • Remote.createWithOpts

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Bumped LibGit2 to v0.28.0.
  • Fixed problem with continue rebase preventing users from skipping commits
  • Fixed leak where struct/option types were leaking libgit2 pointers

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixed builds for Electron 4 for real this time

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixed bug where signing the init commit failed due to being unable to update the HEAD ref.
  • Changed NodeGit.Signature.default to async, because it actually ends up reading the config.
  • Fixed bug where templates were not reporting errors for synchronous methods. It's a bit of a wide net, but in general, it is now possible certain sync methods in NodeGit will begin failin that did not fail before. This is the correct behavior.
  • Switched NodeGit.Oid.fromString's internal implementation from git_oid_fromstr to git_oid_fromstrp
  • Fixed builds for Electron 4
  • Added NodeGit.Reference.updateTerminal

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Enforced consistent use of signing callbacks within the application. Any object that implements the signingCallback pattern for signing commits or tags should use the exact same callback type and with the same meaning. type SigningCallback = (content: string) => {| code: number, field?: string, signedData?: string |}; If the code is NodeGit.Error.CODE.OK or 0, the operation will succeed and at least signedData is expected to be filled out. If the code is a negative number, except for NodeGit.Error.CODE.PASSTHROUGH, the signing operation will fail. If the code is NodeGit.Error.CODE.PASSTHROUGH, the operation will continue without signing the object.

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Added RebaseOptions to repository.prototype.rebaseContinue

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Bump Libgit2 to preview of v0.28.0
  • Add signing support for commits and annotated tags
  • Updated Signature.prototype.toString to optionally include timestamps
  • [BREAKING] Converted Buf.prototype.set and Buf.prototype.grow from async to sync
  • Added complete support for libgit2 types:
    • git_index_name_entry
    • git_index_reuc_entry
    • git_mailmap
  • Exposed git_path_is_gitfile
  • Exposed git_tag_create_frombuffer

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Garbage collect most of the library.
  • All free functions have been removed. The expectation is that they will be collected by the GC.
  • All init options methods have been removed. They were never supposed to be exposed in the first place.
  • Added support for performing history walks on directories.
  • Fix various bugs that led to segfaults or incorrect behavior.
  • Removed ssl and crypto dependency from non-electron builds.
Removed methods

Mostly due to missing support anyway, please report anything you were using as an issue.

  • NodeGit.Blob.createFromStreamCommit
  • NodeGit.Branch.Iterator.prototype.new
  • NodeGit.Config.initBackend
  • NodeGit.Config.prototype.snapshot
  • NodeGit.Config.prototype.setBool
  • NodeGit.Config.prototype.setInt32
  • NodeGit.Config.prototype.setInt64
  • NodeGit.Index.prototype.owner
  • NodeGit.Note.iteratorNew
  • NodeGit.Note.next
  • NodeGit.Odb.prototype.addDiskAlternate
  • NodeGit.Repository.prototype.configSnapshot
  • NodeGit.Signature.prototype.dup
  • NodeGit.Tag.foreach
  • NodeGit.Transport.init
  • NodeGit.Transport.sshWithPaths
  • NodeGit.Transport.unregister
Newly exposed methods:
  • NodeGit.Config.prototype.getEntry
  • NodeGit.Config.prototype.snapshot
  • NodeGit.Config.prototype.refresh
  • NodeGit.Config.prototype.setBool
  • NodeGit.Config.prototype.setInt32
  • NodeGit.Config.prototype.setInt64
  • NodeGit.Diff.prototype.isSortedIcase
  • NodeGit.DiffStats.prototype.deletions
  • NodeGit.DiffStats.prototype.filesChanged
  • NodeGit.DiffStats.prototype.insertions
  • NodeGit.DiffStats.prototype.toBuf
  • NodeGit.Odb.hashfile
  • NodeGit.Odb.prototype.readPrefix
  • NodeGit.OidShorten.prototype.add
  • NodeGit.OidShorten.create
  • NodeGit.PathspecMatchList.prototype.diffEntry
  • NodeGit.PathspecMatchList.prototype.entry
  • NodeGit.PathspecMatchList.prototype.entrycount
  • NodeGit.PathspecMatchList.prototype.failedEntry
  • NodeGit.PathspecMatchList.prototype.failedEntryCount
Newly exposed types
  • NodeGit.DescribeFormatOptions
  • NodeGit.DiffStats
  • NodeGit.OidShorten
  • NodeGit.PathspecMatchList

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Garbage collect most of the library.
  • All free functions have been removed. The expectation is that they will be collected by the GC.
  • All init options methods have been removed. They were never supposed to be exposed in the first place.
Removed methods

Mostly due to missing support anyway, please report anything you were using as an issue.

  • NodeGit.Blob.createFromStreamCommit
  • NodeGit.Branch.Iterator.prototype.new
  • NodeGit.Config.initBackend
  • NodeGit.Config.prototype.snapshot
  • NodeGit.Config.prototype.setBool
  • NodeGit.Config.prototype.setInt32
  • NodeGit.Config.prototype.setInt64
  • NodeGit.Index.prototype.owner
  • NodeGit.Note.iteratorNew
  • NodeGit.Note.next
  • NodeGit.Odb.prototype.addDiskAlternate
  • NodeGit.Repository.prototype.configSnapshot
  • NodeGit.Signature.prototype.dup
  • NodeGit.Tag.foreach
  • NodeGit.Transport.init
  • NodeGit.Transport.sshWithPaths
  • NodeGit.Transport.unregister
Newly exposed methods:
  • NodeGit.Config.prototype.getEntry
  • NodeGit.Config.prototype.snapshot
  • NodeGit.Config.prototype.refresh
  • NodeGit.Config.prototype.setBool
  • NodeGit.Config.prototype.setInt32
  • NodeGit.Config.prototype.setInt64
  • NodeGit.Diff.prototype.isSortedIcase
  • NodeGit.DiffStats.prototype.deletions
  • NodeGit.DiffStats.prototype.filesChanged
  • NodeGit.DiffStats.prototype.insertions
  • NodeGit.DiffStats.prototype.toBuf
  • NodeGit.Odb.hashfile
  • NodeGit.Odb.prototype.readPrefix
  • NodeGit.OidShorten.prototype.add
  • NodeGit.OidShorten.create
  • NodeGit.PathspecMatchList.prototype.diffEntry
  • NodeGit.PathspecMatchList.prototype.entry
  • NodeGit.PathspecMatchList.prototype.entrycount
  • NodeGit.PathspecMatchList.prototype.failedEntry
  • NodeGit.PathspecMatchList.prototype.failedEntryCount
Newly exposed types
  • NodeGit.DescribeFormatOptions
  • NodeGit.DiffStats
  • NodeGit.OidShorten
  • NodeGit.PathspecMatchList

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Added Node 10 support.
  • We no longer compile OpenSSL. Instead, we prefer the OpenSSL shipped with Node. In electron builds, we prefer the system openssl on linux, and we get prebuilt static libs from Conan.
  • Cleaned up some compiler warnings
  • Our http_parser dependency is now a submodule.
  • Updated some dependencies in npm to get rid of security vulnerabilities and warnings.
  • Exposed transfer progress callback for pushing.
  • Libssh2 is now preconfigured for both Mac OS and Windows

Merged PRs into NodeGit

Full Changelog

Summary of changes

On Mac OS Mojave, libssh2 configure failed to configure, because libssh2 always tries to configure against system libraries. The configure process uses links to determine that a OpenSSL is present. Since OSX and Windows no longer link against the system lib, we've prebuilt the configure steps for both environments. This should be stable when building NodeGit on Mojave.

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Added Node 10 support.
  • We no longer compile OpenSSL. Instead, we prefer the OpenSSL shipped with Node. In electron builds, we prefer the system openssl on linux, and we get prebuilt static libs from Conan.
  • Cleaned up some compiler warnings
  • Our http_parser dependency is now a submodule.
  • Updated some dependencies in npm to get rid of security vulnerabilities and warnings.
  • Exposed transfer progress callback for pushing.

Merged PRs into NodeGit

Full Changelog

Summary of changes

Merged PRs into NodeGit

Included non-merged libgit2 PRs:

Included merged libgit2 PRs:

Full Changelog

Summary of changes

Bumped libgit2 to 0.27.1 to address security flaw with submodule name validation (CVE-2018-11235, reported by Etienne Stalmans). Details can be found here https://github.com/libgit2/libgit2/releases/tag/v0.27.1

Full Changelog

Summary of changes

  • Expose Tag.listMatch
  • Expose Repo.prototype.createCommitBuffer
  • Bump Libgt2 to 0.27.0. For more information about what was in this release. Check upstream.
  • Errors are now properly thrown from
    • Attr.prototype.get
    • Blob.createFrombuffer
    • Blob.createFromworkdir
    • Reference.list
    • Remote.prototype.getFetchRefspecs
    • Remote.prototype.getPushRefspecs
    • Status.file
  • WorkTree is now exposed
    • Static methods
      • add
      • list
      • lookup
      • openFromRepository
    • Instance methods
      • isLocked
      • isPrunable
      • lock
      • prune
      • unlock
      • validate
  • BREAKING Functions that are now async
    • Attr.prototype.getMany
    • Tag.prototype.target
    • Treebuilder.prototype.Write
  • BREAKING Diffs generated from Diff.treeToIndex and Diff.treeToWorkdirWithIndex conditionally support Diff.OPTION.IGNORE_CASE. Only on repositories where the index is case insensitive will the flag be set on the output diff. The flag itself is ignored when passed to DiffOptions.

Merged PRs into NodeGit

Included non-merged libgit2 PRs:

Full Changelog

Summary of changes

  • Drop support for node 7
  • Fixed an issue where fast-forward rebase would throw an error unexepctedly.
  • Expose git_commit_extract_signature
  • TreeEntry.prototype.path() should always return posix style separators
  • Expose git_config_open_ondisk
  • Expose git_config_find_global
  • Expose git_config_find_system
  • Expose git_config_find_xdg
  • Expose git_config_get_path

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixed an issue where having html escape characters in the path portion of an ssh url always fails when performing remote actions.

Included non-merged libgit2 PRs:

Full Changelog

Summary of changes to NodeGit:

Full Changelog

Summary of changes outside of libgit2 bump:

Included merged libgit2 PRs:

Included non-merged libgit2 PRs:

Full Changelog

Summary of changes outside of libgit2 bump:

Full Changelog

Summary of changes outside of libgit2 bump:

Included merged libgit2 PRs:

Included non-merged libgit2 PRs:

Full Changelog

Summary of changes outside of libgit2 bump:

  • You can now convert tree entries in blobs PR #1272

Included merged libgit2 PRs:

Included non-merged libgit2 PRs:

Full Changelog

API Changes

  • All callbacks that go to libgit2 now have an optional waitForResult flag that can be true/false. Defaults to false. When true it will not stop libgit2 from continuing on before the JS code is fully executed and resolved (in cases of a Promise). This is useful for progress callbacks (like fetching) where the bubbling up of the progress to JS doesn't really need the C/C++ code to wait for the JS code to fully handle the event before continuing. This can have serious performance implications for many callbacks that can be fired quite frequently.
  • given_opts in Revert.revert are now optional
  • checkout_opts in Reset.fromAnnotated and Reset.reset are now optional
  • Reset.fromAnnotated is now async
  • message on Stash.save is now optional
  • Added processMergeMessageCallback on Repository#mergeBranches to allow for custom merge messages
  • Add beforeFinishFn to Repository#rebaseBranches and Repository#continueRebase. This is called before the invocation of finish(). If the callback returns a promise, finish() will be called when the promise resolves. The beforeFinishFn will be called with an object that has on it:
  • ontoName The name of the branch that we rebased onto
  • ontoSha The sha that we rebased onto
  • originalHeadName The name of the branch that we rebased
  • originalHeadSha The sha of the branch that was rebased
  • rewitten which is an array of sha pairs that contain which contain what the commit sha was before the rebase and what the commit sha is after the rebase

Summary of Changes from bumping libgit2 to 43275f5

PR #1123 bumped libgit2 which brought in many changes and bug fixes.

Included merged libgit2 PRs:

Included non-merged libgit2 PRs:

Summary of Changes to NodeGit outside of libgit2 bump

  • Don't overwrite C++ files for things that haven't changed PR #1091
  • Add the option to "fire and forget" callbacks so libgit2 doesn't wait for JS to finish before proceeding PR #1208
  • Send back the error code from libgit2 when a call fails PR #1209
  • Initialize pointers to null PR #1210
  • Replace Gitter with Slack PR #1212
  • Make given_opts in Revert.revert optional PR #1213
  • Make Reset.fromAnnotated async and checkout_opts optional PR #1214
  • Make message on Stash.save optional PR #1215
  • Add Remote.ls to NodeGit PR #1218
  • Add processMergeMessageCallback to Repository#mergeBranches to allow for custom merge messages PR #1219
  • Bump libgit2 to 43275f5 PR #1223 from srajko/bump-libgit
  • Provide rebase details on finish PR #1224
  • Use wider int to calculate throttle window PR #1232
  • Update comment to reflect the correct path for generated code output PR #1236
  • Remove nwjs example from the docs PR #1238
  • Remove sudo requirement from linux 32-bit builds PR #1241

Full Changelog

Targeted Platform Changes

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.

Now building against shared libcurl lib

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.

Memory leak fixes and stability increases

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.

Fixes to the build

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.

Bump libgit2 to 0bf0526

The majority of changes to NodeGit v17 were in libgit2. The API breaking changes that are known are:

Summary of changes that were brought in:

nodegit#1187 (comment)

Changes to NodeGit outside of libgit2 bump

  • Define GIT_SSH_MEMORY_CREDENTIALS for libgit2 PR #949
  • Add "Path" to ssh variable names in tests for clarity PR #1135
  • Fix revwalk memory leaks PR #1137
  • Fix tree entry leaks PR #1138
  • Fix typo in postinstall script PR #1141
  • Fix windows exception handling in build PR #1143
  • Fix CI failures on node 0.12 PR #1144
  • Fix postinstall script crash when install location has spaces in its path PR #1148
  • Update 0.13 changelog PR #1151
  • Minor documentation fix in Checkout.index PR #1164
  • FreeBSD also uses struct timespec st_mtim PR #1165
  • README.md needs to show where to get Slack invitation PR #1170
  • Add @async tag to Tree#getEntry PR #1178
  • Fix incorrect anchor link in TESTING.md PR #1179
  • Added tests for Tag PR #1180
  • Added tests for Branch PR #1181
  • Escape the spaces in dir for shell command PR #1186
  • Bump libgit to 0bf0526 PR #1187
  • Checkout's tree* functions do not support Oid as a parameter PR #1190
  • Build against shared library for libcurl PR #1195
  • Move libuv calls to correct thread PR #1197
  • Update Repository#createBranch docs PR #1198
  • Remove Node v0.12 and v5 PR #1199
  • Specify acceptable types for lookup and dwim in Reference PR #1203
  • Build for Node 7.4.0 PR #1204
  • Write the index to a repository directly in merge-cleanly.js examples PR #1205

Full Changelog

  • Bump libssh2 to 1.7.0 PR #1071
  • Js cleanup PR #1074
  • Expose merge options and diff flags PR #1076
  • Fix Tree#entryByName function and add test PR #1079
  • Add isSubmodule() method PR #1080
  • Fix two typos in the documentation for Commit#parents PR #1081
  • Memory management: duplicate time PR #1090
  • Preempt nan to fix deprecated calls to Get/SetHiddenValue PR #1106
  • Try re-enabling node >6.2 PR #1107
  • Bump openssl to 1.0.2h (same as node 6.3.1) PR #1108
  • Don't run postbuild when we detect electron install PR #1111
  • Added instructions for CircleCI users PR #1113
  • Fix up electron and nw.js docs PR #1114
  • Patch libssh2 to work with vs2015 PR #1125
  • Fix CI PR #1126

Full Changelog

  • Fix postinstall breaking build if it fails.

Full Changelog

  • Fix postinstall breaking build if it fails.

Full Changelog

This updates NodeGit to use the latest HEAD version of libgit2. The plan for staying on the official tagged releases of libgit2 is that they will get a maintenance branch and not-breaking API fixes will be backported to them. The first branch of this sort is maint/0.14. Going forward new releases of NodeGit will follow closely to the master branch of libgit2.

Summary of changes that were brought in:

Changes or improvements

  • NodeGit.FetchOptions, and NodeGit.PushOptions now have a proxyOpts field that accepts a NodeGit.ProxyOptions object that allows NodeGit to use a proxy for all remote communication

  • NodeGit.MergeOptions has a defaultDriver field that lets the caller change the driver used to when both sides of a merge have changed

API additions

  • Commit.createWithSignature allows the caller to create a signed commit. There are no tests for this currently so it's labelled experimental.

  • Blob, Commit, Tag, and Tree all have a new prototype dup method on them to make a low-level copy of the libgit2 object if needed.

  • Odb#expandIds is exposed which takes in a list of short ids and expands them in-place to the full id of the object in the database

Full Changelog

  • Improve lifecycle scripts and install process PR #1055
  • Fix example code PR #1058

Full Changelog

  • Stop RevWalk#walk from swallowing errors in the callback PR #1047
  • Stop swallowing errors in the install script PR #1048
  • Fix initializing submodules when installing from npm PR #1050

Full Changelog

Added

  • Repository#discardLines is now a thing PR #1021

Modified

  • Async methods now use a custom threadpool to prevent thread-locking the event loop PR #1019

Bug fixes

  • Fix building NodeGit from NPM PR #1026
  • Plug a memory leak in RevWalk.fastWalk PR #1030
  • Plug a memory leak with Oid PR #1033
  • Fixed some underlying libgit2 objects getting freed incorrectly PR #1036

Full Changelog

Summary

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).

Node support

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.

API Changes


Modified

  • Index#add, Index#addByPath, Index#clear, Index#conflictAdd, Index#conflictCleanup, Index#conflictGet, Index#conflictRemove, Index.open, Index#read, Index#readTree, Index#remove, Index#removeByPath, Index#removeDirectory, Index#read, Index#write, Index#writeTree, and Index#writeTreeTo are all now asynchronous functions PR #971
  • Made ancestoryEntry, outEntry and theirEntry optional parameters on Index#conflictAdd PR #997
  • Repository#refreshIndex will return an Index object back that has the latest data loaded off of disk PR #986
  • Commit.create is now asynchronous PR #1022
  • Remote.create is now asynchronous PR #990

Added

  • Diff#merge will combine a diff into itself PR #1000
  • ReflogEntry#committer, ReflogEntry#idNew, ReflogEntry#idOld, and ReflogEntry#message have been added PR #1013

Removed

  • Repository#openIndex PR #989, use Repository#index or Repository#refreshIndex instead
  • Reflog#entryCommitter, Reflog#entryIdNew, Reflog#entryIdOld, and Reflog#entryMessage have been moved to be under ReflogEntry PR #1013

Bug fixes

Upgraded to libgit2 v0.24.1 PR #1010


Changes or improvements

  • 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.

API additions

  • Blob.createFromStream() and Blob.createFromStreamCommit allow you to create a blob by writing into a stream. Useful when you do not know the final size or want to copy the contents from another stream.

  • Config#lock has been added, which allow for transactional/atomic complex updates to the configuration, removing the opportunity for concurrent operations and not committing any changes until the unlock.

  • DiffOptions added a new callback progress_cb to report on the progress of the diff as files are being compared. The documentation of the existing callback notify_cb was updated to reflect that it only gets called when new deltas are added to the diff.

  • FetchOptions and PushOptions have gained a customHeaders field to set the extra HTTP header fields to send.

  • Commit#headerField allows you to look up a specific header field in a commit.

Breaking API changes

  • 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.

Full Changelog

Added

  • We now provide 32-bit binaries for linux PR #980

Bug fixes

Full Changelog

Bug fixes

  • Fixed post install script dying on windows PR #978

Full Changelog

API changes

  • Ignore
    • Made Ignore.pathIsIgnored async PR #970

Bug fixes

  • Added an error message when trying to install NodeGit without a required version of libstdc++ PR #972
  • Fix a crash when grabbing content out of a buffer that has unicode PR #966
  • Added some plumbing for better memory management PR #958
  • Fix checkoutOptions in Stash#apply PR #956
  • Fixed install when there is a space in the username on windows PR #951
  • Bump to [email protected] PR #952

Full Changelog

  • Fixed crash when calculating diff via ConvenientPatch PR #945

Full Changelog

  • Removed callback throttling due to segmentation faults. Will be implemented later. PR #943

Full Changelog

  • Added Repository#mergeheadForeach PR #937
  • Improved speed of all callbacks dramatically PR #932
  • Fixed Merge.merge docs to show it takes in an AnnotatedCommit and not a Commit PR #935
  • Fixed unicode in Diff.blobToBuffer getting corrupted PR #935
  • Fixed fetching/pulling to bitbucket in versions > v5.6 of node PR #942

Full Changelog

  • Added Repository#checkoutRef PR #891
  • Repository#createCommitOnHead no longer dies if the repo is empty PR #927
  • Fixed memory leak in Patch#convenientFromDiff PR #930
  • Generated files now have a header comment indicating that they are generated PR #924
  • Fixed http parsing errors in Node 5.6 PR #931
  • Fixed Tree#walk not returning the correct entries on end PR #929

Full Changelog

  • Fixed crash when calculating a diff PR #922
  • Fixed an issue with return values getting randomly corrupted PR #923)

Full Changelog

  • Fixed callback out values in callbacks from C++. This affects any NodeGit call that is passed a callback as an option PR #921
  • Fixed an issue with building the debug version of NodeGit on windows PR #918

Full Changelog

  • Fixed an issue where initializing NodeGit would sometimes seg fault. Also fixed an error when fetching concurrently PR #912

Full Changelog

  • Fixed an issue where when staging lines if the index is locked NodeGit just nuked it PR #906
  • Fixed diff calculation when staging lines/hunks PR #906
  • Fixed seg-fault in linux that happens when getting the diff of very small files PR #908
  • Fixed RevWalk#fastWalk dying when an error happens in libgit2 PR #909

Full Changelog

Full Changelog

  • Change Revert.commit and Revert.revert to by async. PR #887
  • Added RevWalk#fileHistoryWalk for a faster way to retrieve history for a specific file. PR #889

Full Changelog

  • Clean mutexes are part of GC. No longer leaves processes running after the script ends PR #880
  • Increased the performance of ConvenientPatch by an order of magnitude PR #883

API changes

  • ConvenientPatch
    • ConvenientPatch does not have a patch or a delta property associated with it, if you were using the delta, please just use prototype methods oldFile, newFile, and Status, which are stripped directly from the delta.
    • ConvenientPatch#hunks returns a promise with an array of ConvenientHunks.
  • ConvenientHunk
    • ConvenientHunk does not have an exposed diffHunk associated with it, but does have the same members as diffHunk:
      • size() : number of lines in the hunk
      • oldStart() : old starting position
      • oldLines() : number of lines in old file
      • newStart() : new starting position
      • newLines() : number of lines in new file
      • headerLen() : length of header
      • header() : returns the header of the hunk
      • lines() : returns a promise containing DiffLines, not ConvenientLines.
  • DiffLine
  • DiffLine now contains the members rawContent() and content().
    • rawContent() contains the unformatted content of the line. This is no longer a string from the line to the end of the file.
    • content() contains the utf8 formatted content of the line.

Full Changelog

  • Thread safe fix to stop crashing on releasing mutexes PR #876
  • Submodule#setIgnore, Submodule#setUpdate, and Submodule#setUrl are now all async. Submodule#status and Submodule#location are now available PR #867 and PR #870
  • Remote#defaultBranch is now available PR #872
  • Repository#mergeBranches now takes in a MergeOptions parameter PR #873
  • Remove a NodeGit specific hack to make Index#addAll faster since that is fixed in libgit2 PR #875)

Full Changelog

  • 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 methodss

Full Changelog

  • Bumped openssl to 1.0.2e to fix issues with prebuilts on linux platforms
  • Fixed a bug with GIT_ITER_OVER breaking rebase and other iterative methods
  • Make GraphDescendentOf asynchronous
  • Fixed line length of utf8 stringss

Full Changelog

  • Fixed a bug where manually building for vanilla node would fail without explicitly setting the target

Full Changelog

  • Fixed a bug where manually building on windows would fail (if unable to download a prebuilt binary)

Full Changelog

  • Fixed Treebuilder.create to have an optional source
  • Added Repository.getSubmoduleNames
  • Added Submodule.Foreach
  • Added file mode staging
  • Added a fast rev walk to do the rev walk in C++ and bubble the result up to JS
  • Updated to latest libgit2
  • Updated to latest openssl
  • Updated to latest nodegit-promise
  • Removed c++11 dependency
  • Fixed weirdness in lifecycle scripts
  • Added downloading prebuilt binaries for electron

Full Changelog

Closed issues:

  • 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

Merged pull requests:

Full Changelog

Closed issues:

  • 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

Merged pull requests:

Full Changelog

Merged pull requests:

Full Changelog

Closed issues:

  • Amazon S3 CDN link is broken #482

Merged pull requests:

Full Changelog

Merged pull requests:

Full Changelog

Closed issues:

  • 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

Merged pull requests:

Full Changelog

Full Changelog

Merged pull requests:

Full Changelog

Closed issues:

  • Lookup a non existent commit crashes the process. #353

  • Why node-git uses 90% rotated hexagon? #344

  • Needed pull example or help with code #341

  • Can't require nodegit without building it explicitly #340

  • Tracking down bugs #331

  • Document possible values of CloneOptions #330

  • Require generating error #329

  • Failed getting Banner #328

  • Documentation broken #327

  • Fetch doesn't seem to work with https urls. #322

Merged pull requests:

Full Changelog

Closed issues:

  • Fetch does not really fetch #314

  • Generate Missing Tests - Unable #313

  • Unable to get reference for HEAD #311

  • nodegit.Signature.now broken #306

  • current branch #305

  • Module fails to load #299

  • How to list all tags? #298

  • Building for ARM #292

  • Next release checklist #256

Merged pull requests:

Full Changelog

Full Changelog

Merged pull requests:

  • Moved some dependencies around to help the generate not fail #294 (johnhaley81)

Full Changelog

Merged pull requests:

Full Changelog

Closed issues:

  • 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

Merged pull requests:

Full Changelog

Closed issues:

  • Redis Backend #173

  • using "Branch" object results in "undefined" error => branch.cc missing from binding.gyp? #166

  • Windows: Failure on install #158

  • Can't install v0.1.2 under OSX #155

Merged pull requests:

Full Changelog

Merged pull requests:

  • Fix erroneous OS detection for installation in OS X. #156 (tbranyen)

Full Changelog

Closed issues:

  • gyp ERR cannot find -lgit2 #150

  • Read file from git server #145

  • "emulate git log" example error #144

  • repo.workdir() crashes (SIGSEGV) on a bare repo #128

  • How to create Branch using the API? #124

  • 'npm run-script gen && npm install' on Ubuntu 13.04 #122

  • Error while installing Nodegit 0.1.0 #120

  • Question: How would I implement the equivalent of git status? #117

  • Sync versions of all the methods #115

  • Tick version # #107

  • Windows support #71

  • Create test for history with merge commits #64

Merged pull requests:

Full Changelog

Closed issues:

  • 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

Merged pull requests:

  • Fix and improve testing. #139 (tbranyen)

  • Support for Node 0.11+ #135 (pierreinglebert)

  • Added git_diff_delta_dup to git_diff_get_patch to fix a memory issue whe... #113 (kmctown)

  • Try requiring build/Debug/nodegit if build/Release/nodegit wasn't found. #108 (papandreou)

  • Updated v0.18.0.json to make the index and DiffOptions arguments in Inde... #106 (kmctown)

  • Duplicate git_error struct before passing it on #105 (papandreou)

  • Changed v0.18.0.json so diffWorkDir DiffOptions argument is optional. Ad... #103 (kmctown)

  • Reviewd and fixed examples #102 (micha149)

  • cmake 2.8 is required to build nodegit #100 (dcolens)

  • new add-and-commit.js and remove-and-commit.js examples #99 (dcolens)

  • Add missing fields to index entry #95 (papandreou)

  • Made the tests pass and making each test self-contained #90 (FrozenCow)

  • Fixed compile error: memcpy not defined #89 (FrozenCow)

  • Add system dependencies for OSX install #82 (philschatz)

Full Changelog

Closed issues:

  • The api in README is incorrect #87

  • message_encoding in documentation for Repo.createCommit #86

  • How to retrieve blob with binary content? #83

  • Incorrect commit oid's when aggregated from commit.history() #81

  • How do you list branches in repo? #76

  • License? #74

  • Nested walks scatter memory and cause SEGFAULTS #72

  • feature request: Provide fileMode / getType method on tree entries #67

  • Document DiffList #66

  • Procedure for moving development to nodegit/nodegit #55

  • Cannot install on OSX #49

Merged pull requests:

Full Changelog

Closed issues:

  • Clarify commit.history documentation #63

  • Python error on installing nodegit 0.0.77 #59

Full Changelog

Merged pull requests:

Full Changelog

Full Changelog

Full Changelog

Closed issues:

  • incomplete error reporting #57

  • Segmentation Fault in raw-commit.js #56

  • Another Mac OSX install fail #53

  • unit tests broken in travis-ci #52

  • "Image not found" with require("nodegit") on Mac OS X #51

  • Cannot Compile on 0.8.* #47

  • No suitable image found. #46

  • Fails to require module on latest node version #43

  • Compilation error node 0.6.1 #32

  • commit.history work like slice #17

  • Sync and Async methods #16

  • Comment all code methods #1

Full Changelog

Full Changelog

Closed issues:

  • pass through python flag to node-gyp #54

  • update package.json #28

  • Rewrite Notes #27

  • Tree each method is synchronous #15

Full Changelog

Full Changelog

Closed issues:

  • Unable to load shared library #39

  • Expand Convenience Unit Tests #38

  • repo has no method 'branch' #35

  • update for node 0.5.9 #29

Merged pull requests:

Full Changelog

Closed issues:

  • commit event with undefined commit #26

  • Convenience methods are not convenience! #24

Merged pull requests:

Full Changelog

Closed issues:

  • repo.branch fails on empty repo #22

  • example/convenience-repo.js errors #21

  • Branch history each method is asynchronous #11

Full Changelog

Closed issues:

  • error handling #18

  • Windows link issue #12

Full Changelog

* This Change Log was automatically generated by github_changelog_generator