Releases: nodegit/nodegit
v0.20.0 (2017-08-16)
API Changes
Blob.createFromBuffer
is now asyncBlob.createFromWorkdir
is now async- Added
Blob.createFromDisk
to create a blob from a file on disk - Added
Blob.filteredContent
to retrieve filtered content from a blob similar to as if it was being checked out to the working directory Status.file
is now asyncMerge.merge
is now asyncRebase.commit
is now asyncRebase.abort
is now asyncCommit.amend
is now asyncReflog.write
is now async- Added
Branch.remoteName
to get the name of the remote of a branch Filter
's functions are now async- Added
FilterRegistry
to register and unregister filters.
Summary of changes bumping libgit2
PR #1329 bumped libgit2 which brought in many changes and bug fixes.
Included merged libgit2 PRs:
- Include fixups #4288
- Docs: Fix inline comments for git_diff_hunk #4330
- oid: use memcmp in git_oid__hashcmp #4328
- sha1_lookup: drop sha1_entry_pos function #4327
- sha1_position: convert do-while to while #4326
- patch_generate: represent buffers as void pointers #4304
- Remove unused 'sys/remote.h' header #4323
- tests: rebase::submodule: verify initialization method calls #4320
- tests: rewrite rebase-submodule .gitmodule file #4275
- tsort: remove idempotent conditional assignment #4314
- Build with patched libcurl #4317
- win32: provide fast-path for retrying filesystem operations #4311
- Configuration file fixes with includes #4250
- Patch ID calculation #4272
- signature: don't leave a dangling pointer to the strings on parse failure #4306
- git_reset_*: pass parameters as const pointers #4287
- tests: config: fix missing declaration causing error #4291
- Convert port with htons() in p_getaddrinfo() #4280
- Out of tree builds #4235
- cmake: Permit disabling external http-parser #4278
- merge: fix potential free of uninitialized memory #4277
- merge: perform exact rename detection in linear time #4202
- travis: upgrade container to Ubuntu 14.04 #4211
- Fix template dir empty string #4273
- adding GIT_FILTER_VERSION to GIT_FILTER_INIT as part of convention #4267
- travis: replace use of deprecated homebrew/dupes tap #4268
- Test improvements #4269
- Read prefix tests #4265
- Allow creation of a configuration object in an in-memory repository #4263
- travis: install openssl explicitly #4266
- smart_protocol: fix parsing of server ACK responses #4261
- odb_read_prefix: reset error in backends loop #4264
- Update version number to 0.26 #4262
- CHANGELOG: add various changes introduced since v0.25 #4254
- Ensure packfiles with different contents have different names #4088
- Update to forced checkout and untracked files #4260
- settings: rename
GIT_OPT_ENABLE_SYNCHRONOUS_OBJECT_CREATION
#4259 - Buffer growing cleanups #4255
- Coverity fixes #4253
- SHA1DC update #4258
- Fix path computations for compressed index entries #4236
- (Temporarily) disable UNC tests #4256
- fix build with libressl #4251
- Fix issue with directory glob ignore in subdirectories #4239
- Submodule working directory #4243
- Introduce home directory expansion function for config files, attribute files #4179
- Fix proxy auto detect not utilizing callbacks #4097
- git_repository_set_head: use tag name in reflog #4174
- revparse: support open-ended ranges #4231
- Fix GCC warnings #4240
- Update README: VS -> VSTS #4238
- tests: repo: fix repo discovery tests on overlayfs #4232
- libssh2 shutdown #4229
- WIP: squash some memleaks #4226
- Verify object hashes #4197
- transport: provide a getter for the proxy options #4206
- Debian HTTPS feature test failure #4216
- Do not free config when creating remote #4224
- socket_stream: continue to next addrinfo on socket creation failure #4219
- Honor read-only flag when writing to config backends #4217
- diff_parse: free object instead of its pointer #4215
Included non-merged libgit2 PRs:
- Parallelize checkout_create_the_new for ntfs perf gains #4205
- negotiate always fails via libcurl #4126
Summary of changes to NodeGit outside of libgit2 bump:
v0.19.0
Summary of changes outside of libgit2 bump:
- You can now convert tree entries in blobs PR #1272
Included merged libgit2 PRs:
- fileops: fix leaking fd in
mmap_ro_file
#4201 - README: document our relation to changes in upstream #4198
- filter: only close filter if it's been initialized correctly #4196
- Fix building against OpenSSL v1.1 #4195
- pkgconfig: fix handling of prefixes containing whitespaces #4193
- Refactor some of the win32 POSIX emulation #4192
- Correct non-existent file references in
odb.h
#4188 - Coverity #4183
- git_treebuilder_write_with_buffer refactorings #4182
- Fix memory leaks #4180
- sha1dc: perf improvements from upstream #4178
- inet_pton: don't assume addr families don't exist #4176
- git_futils: don't O_EXCL and O_TRUNC #4175
- Fix the documentation for git_cred_acquire_cb #4172
- Fix typo in remote.h API #4171
- Fix resolving absolute symlinks (on at least Win32) #4169
- Coverity fixes #4167
- Remove
map_free
macros #4166 - Worktree fixes #4163
- merge_driver: fix const-correctness for source getters #4162
- submodule: catch when submodule is not staged on update #4161
- Diff fixes #4160
- Skip uninteresting commits in revwalk timesort iterator #4157
- git_futils_readbuffer: don't compute sha-1 #4156
- Support namespaced references again #4154
- rebase: ignore untracked files in submodules #4151
- git_commit_create: freshen tree objects in commit #4150
- cmake: only enable supported compiler warning flags #4148
- winhttp: disambiguate error messages when sending requests #4146
- tests: refs::create: fix memory leak #4145
- Fix: make reflog include "(merge)" for merge commits #4143
- Fix minor typos in CONVENTIONS.md #4142
- Fix inet_pton tests triggering an assert in Haiku #4141
- README: Mention how to run tests #4139
- tests: Add create__symbolic_with_arbitrary_content #4138
- appveyor: don't rewrite the system mingw #4137
- Introduce (optional) SHA1 collision attack detection #4136
- Provide error on gcc < 4.1 when THREADSAFE #4135
- fix regression from #4092 #4133
- Attrcache cleanups #4131
- Improve clar messages #4130
- Minor comment fix #4127
- refdb: catch additional per-worktree refs #4124
- Signature cleanups #4122
- Changes to provide option to turn off/on ofs_delta #4115
- khash cleanups #4092
- fsync all the things #4030
- Worktree implementation #3436
Included non-merged libgit2 PRs:
v0.18.0
API Changes
- All callbacks that go to libgit2 now have an optional
waitForResult
flag that can betrue
/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
inRevert.revert
are now optionalcheckout_opts
inReset.fromAnnotated
andReset.reset
are now optionalReset.fromAnnotated
is now asyncmessage
onStash.save
is now optional- Added
processMergeMessageCallback
onRepository#mergeBranches
to allow for custom merge messages - Add
beforeFinishFn
toRepository#rebaseBranches
andRepository#continueRebase
. This is called before the invocation offinish()
. If the callback returns a promise,finish()
will be called when the promise resolves. ThebeforeFinishFn
will be called with an object that has on it:ontoName
The name of the branch that we rebased ontoontoSha
The sha that we rebased ontooriginalHeadName
The name of the branch that we rebasedoriginalHeadSha
The sha of the branch that was rebasedrewitten
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:
- Use a shared buffer in calls of git_treebuilder_write to avoid heap contention #3892
- WinHTTP: set proper error messages when SSL fails #4050
- Clang analyzer run #4051
- Extend packfile in increments of page_size. #4053
- Fix general example memory leaks #4078
- WIP: some coverity & compiler warning fixes #4086
- Fix a few recent warnings #4087
- Fix uninitialized variable warning #4095
- Update docs for git_oid_fromstrn and p #4096
- Fix digest credentials for proxy in windows #4104
- Vector reverse overflow #4105
- Flag given_opts in git_revert as optional #4108
- Flag checkout_opts in git_reset as optional #4109
- dirname with DOS prefixes #4111
- Add support for lowercase proxy environment variables #4112
- Flag options in git_stash_apply and git_stash_pop as being optional #4117
- rename detection: don't try to detect submodule renames #4119
- tests: fix permissions on testrepo.git index file #4121
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
inRevert.revert
optional PR #1213 - Make
Reset.fromAnnotated
async andcheckout_opts
optional PR #1214 - Make
message
onStash.save
optional PR #1215 - Add
Remote.ls
to NodeGit PR #1218 - Add
processMergeMessageCallback
toRepository#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
v0.17.0
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:
RevWalk
is returning different results libgit2 PR #3921- Changes in error messages returned libgit2 PR #4049
Summary of changes that were brought in:
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
anddwim
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
v0.16.0
- 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
v0.15.1
- Fix postinstall breaking build if it fails.
v0.14.1
- Fix postinstall breaking build if it fails.
v0.15.0
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:
libgit2/libgit2@37dba1a
Changes or improvements
NodeGit.FetchOptions
, andNodeGit.PushOptions
now have aproxyOpts
field that accepts aNodeGit.ProxyOptions
object that allows NodeGit to use a proxy for all remote communicationNodeGit.MergeOptions
has adefaultDriver
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
, andTree
all have a new prototypedup
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