Releases: nodegit/nodegit
Releases · nodegit/nodegit
v0.27.0 (2020-07-28)
Summary of changes
- Expose git_remote_rename
- Bump OpenSSL from 1.1.0i -> 1.1.1c in Windows/Mac OS Electron builds
- Replace unmaintained request library with got
- Remove promisify-node and use vanilla promises for all NodeGit promises
- Prebuilds for Node 14, deprecate Node 8
- Persist RemoteCallbacks and ProxyOptions on the remote if using Remote.prototype.connect. This fixes a segfault when using any routines on a connected remote.
Merged PRs into NodeGit
v0.27.0-alpha.1 (2020-03-26)
Summary of changes
- Expose git_remote_rename
- Bump OpenSSL from 1.1.0i -> 1.1.1c in Windows/Mac OS Electron builds
- Replace unmaintained request library with got
- Remove promisify-node and use vanilla promises for all NodeGit promises
#Merged PRs into NodeGit
v0.26.5 (2020-02-27)
Summary of changes
- Bring in improvement to client certificate handling on Windows from winhttp: support optional client cert #5384
Commit.prototype.parent()
now correctly assigns the repo property on the retrieved commit. This should solve certain bugs when working with a commit retrieved fromparent
.
Merged PRs into NodeGit
- Bring in Libgit2 #5384 to NodeGit
- Fix behavior of Commit#parent
- Remove DiffList
- Remove unnecessary assignment of Commit#repo
Merged PRs into LibGit2
v0.26.4 (2020-01-14)
Summary of changes
- Bumped LibGit2
- Now can be configured to support longpaths on Windows. Does not respect the config value, but is configured through
NodeGit.Libgit2.opts
. See #1748 for details. - Support for complex SSH auth creds handshakes
- Now can be configured to support longpaths on Windows. Does not respect the config value, but is configured through
- Pulled in patch for Libssh2 that covers an integer overflow, see Libssh2#402
Merged PRs into NodeGit
- Fix some issues from the libgit2 bump
- Add option to support longpaths on Windows
- Bring in libssh2#402
- Wait for copy and remove promises to finish
Merged PRs into LibGit2
- Support
core.longpaths
on Windows #5347 - Parallelize checkout_create_the_new for perf #4205
- win32: fix relative symlinks pointing into dirs
- ntlm: prevent (spurious) compiler warnings
- Adds support for multiple SSH auth mechanisms being used sequentially
- netops: handle intact query parameters in service_suffix removal
- Refactor packfile code to use zstream abstraction
- Fix git_submodule_sync with relative url
- http: avoid generating double slashes in url
- Correct typo in name of referenced parameter
- patch_parse: fix undefined behaviour due to arithmetic on NULL pointers
- smart_pkt: fix overflow resulting in OOB read/write of one byte
- branch: clarify documentation around branches
- examples: checkout: implement guess heuristic for remote branches
- Minor doc improvements
- attr: Update definition of binary macro
- Security fixes for master
- release.md: note that we do two security releases
- MSVC: Fix warning C4133 on x64: "function": Incompatible types - from "unsigned long *" to "size_t *"
- ci: only push docs from the libgit2/libgit2 repo
- global: convert to fiber-local storage to fix exit races
- Fix copy&paste in git_cherrypick_commit docstring
- patch_parse: fix out-of-bounds reads caused by integer underflow
- tests: fix compiler warning if tracing is disabled
- tests: config: only test parsing huge file with GITTEST_INVASIVE_SPEED
- diff: complete support for git patchid
- Memory optimizations for config entries
- ssh: include sha256 host key hash when supported
- Various examples shape-ups
- Improve trace support in tests
- Move
git_off_t
togit_object_size_t
- Add compat typdef for git_attr_t
- CI Build Updates
- patch_parse: use paths from "---"/"+++" lines for binary patches
- Follow 308 redirect in WinHTTP transport
- fileops: correct error return on p_lstat failures when mkdir
- config_mem: implement support for snapshots
- patch_parse: fix segfault when header path contains whitespace only
- config_file: fix race when creating an iterator
- Fix crash if snapshotting a config_snapshot
- fix a bug introduced in 8a23597b
- reflogs: fix behaviour around reflogs with newlines
- commit: verify objects exist in git_commit_with_signature
- patch_parse: fixes for fuzzing errors
- apply: add GIT_APPLY_CHECK
- refs: unlock unmodified refs on transaction commit
- fuzzers: add a new fuzzer for patch parsing
- patch_parse: handle patches without extended headers
- Provide a wrapper for simple submodule clone steps
- macOS GSS Support
- cmake: correct the link stanza for CoreFoundation
- Fix file locking on POSIX OS
- cmake: update minimum CMake version to v3.5.1
- patch_parse: handle patches with new empty files
- DRY commit parsing
- azure: avoid building and testing in Docker as root
- regexp: implement a new regular expression API
- git_refdb API fixes
- Don't use enum for flags
- valgrind: suppress memory leaks in libssh2_session_handshake
- buffer: fix writes into out-of-memory buffers
- cred: add missing private header in GSSAPI block
- CMake pkg-config modulification
- Update chat resources in README.md
- Circular header splitting
v0.26.3 (2019-12-10)
Summary of changes
- Include LibGit2 security patch: https://github.com/libgit2/libgit2/releases/tag/v0.28.4
Merged PRs into NodeGit
v0.26.2 (2019-09-26)
Summary of changes
- Added options to fetch additional data (gpg signature) from LibGit2 in revWalk.prototype.commitWalk and return plain objects
- revWalk.prototype.commitWalk(numCommits: number, { returnPlainObjects: boolean })
Merged PRs into NodeGit
v0.26.1 (2019-09-16)
Summary of changes
- Bumped LibGit2
- Additional git ignore fixes
- Allow credentials callback to return any credential type from list of supported types
- Memory leak and allocation fixes
- updateTips has optional parameters and should convert plain objects into options structs correctly now
- Added Nodegit.Blob.prototype.filter, this should be used instead of NodeGit.Blob.filteredContent as it is not deprecated.
Merged PRs into NodeGit
Merged PRs into LibGit2
- Parallelize checkout_create_the_new for perf #4205
- azure: build Docker images as part of the pipeline
- smart: use push_glob instead of manual filtering
- ntlm: fix failure to find openssl headers
- cmake: remove extraneous logging
- open:fix memory leak when passing NULL to git_repository_open_ext
- apply: Fix a patch corruption related to EOFNL handling
- ignore: correct handling of nested rules overriding wild card unignore
- Memory allocation fixes for diff generator
- Use an HTTP scheme that supports the given credentials
- apply: git_apply_to_tree fails to apply patches that add new files
- Optionally read
.gitattributes
from HEAD - config: implement "onbranch" conditional
- Fix include casing for case-sensitive filesystems.
- util: use 64 bit timer on Windows
- Memory allocation audit
- clone: don't decode URL percent encodings
- Security updates from 0.28.3
v0.26.0 (2019-09-09)
Summary of changes
- Bumped libssh2 to 1.9 for security patch
- Remote.prototype.upload and Remote.prototype.updateTips should be async now
Merged PRs into NodeGit
v0.25.1 (2019-08-13)
Summary of changes
Security patch for LibGit2:
-
A carefully constructed commit object with a very large number
of parents may lead to potential out-of-bounds writes or
potential denial of service. -
The ProgramData configuration file is always read for compatibility
with Git for Windows and Portable Git installations. The ProgramData
location is not necessarily writable only by administrators, so we
now ensure that the configuration file is owned by the administrator
or the current user.
Additionally:
- Stash should run much faster now.
Merged PRs into LibGit2
- Parallelize checkout_create_the_new for perf #4205
- stash: avoid recomputing tree when committing worktree
- Variadic macros
- Add sign capability to git_rebase_commit
- remote: remove unused block of code
- Adjust printf specifiers in examples code
- config: check if we are running in a sandboxed environment
- Fix example checkout to forbid rather than require --
- editorconfig: update to match our coding style
- Compare buffers in diff example
- Include ahead_behind in the test suite
- config: separate file and snapshot backends
- object: deprecate git_object__size for removal
v0.25.0 (2019-08-09)
Summary of changes
BREAKING
getRemotes
no longer returns remote names, it now returns remote objects directly. UsegetRemoteNames
to get a list of remote names.- Converted Buf.prototype.set and Buf.prototype.grow from async to sync
Repository.prototype.continueRebase
will now throw on any error except for EAPPLIED on the first call toRebase.prototype.next
- Drops support for Ubuntu 14 after EOL
- Removed access to the
diff_so_far
param ingit_diff_notify_cb
andgit_diff_progress_cb
- Changed
FilterSource.prototype.repo
to async to prevent segfaults on filters that run duringSubmodule.status
- 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 failing that did not fail before. This is the correct
behavior.
Deprecations
- Support signing commits in
Repository.prototype.mergeBranches
. The last parameterprocessMergeMessageCallback
is now deprecated, but will continue to work. Use the options object instead, which will contain theprocessMergeMessageCallback
, as well as thesigningCb
.
New
- Support for Node 12
- Add signing support for commits and annotated tags
- 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 isNodeGit.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 forNodeGit.Error.CODE.PASSTHROUGH
, the signing operation will fail.
If the code isNodeGit.Error.CODE.PASSTHROUGH
, the operation will continue without signing the object.
- Enforced consistent use of signing callbacks within the application. Any object that implements the signingCallback
- Exposed
AnnotatedCommit
methods:AnnotatedCommit.prototype.ref
- Exposed
Apply
methods:Apply.apply
applies a diff to the repositoryApply.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
IndexNameEntry
:IndexNameEntry.add
IndexNameEntry.clear
IndexNameEntry.entryCount
IndexNameEntry.getByIndex
IndexNameEntry.prototype.ancestor
IndexNameEntry.prototype.ours
IndexNameEntry.prototype.theirs
- Exposed
IndexReucEntry
:IndexReucEntry.add
IndexReucEntry.clear
IndexReucEntry.entryCount
IndexReucEntry.find
IndexReucEntry.getByIndex
IndexReucEntry.getByPath
IndexReucEntry.remove
IndexReucEntry.prototype.mode
IndexReucEntry.prototype.oid
IndexReucEntry.prototype.path
- Exposed
Mailmap
:Mailmap.prototype.addEntry
Mailmap.fromBuffer
Mailmap.fromRepository
Mailmap.create
Mailmap.prototype.resolve
Mailmap.prototype.resolveSignature
- Exposed
Merge
methods:Merge.analysis
Merge.analysisForRef
- Exposed
Path.isGitfile
- Added
RebaseOptions
toRepository.prototype.rebaseContinue
- Added
NodeGit.Reference.updateTerminal
- Exposed
Remote
methods:Remote.createWithOpts
- Exposed
Tag.createFromBuffer
- Expose
Tree.prototype.createUpdated(repo, numUpdates, updates)
Fixed
- Updates lodash dependency to address security notice
- Fixed a prototype problem with cherrypick, merge, and other collections that have a function at their root. call, apply, and bind should now be on NodeGit.Cherrypick.
- Bumped libssh2 to resolve security notice.
- Improve speed and correctness of fileHistoryWalk. The API should not have changed; however, when the end of the walk has been reached,
reachedEndOfHistory
will be specified on the resulting array. - Fixes openssl prebuilt downloads for electron builds
- Fixes commits retrieved from
Commit.prototype.parent
- Bump Node-Gyp to 4.0.0 to fix tar security vulnerability
- Optimized a set of routines in NodeGit. These methods as written in Javascript require hundreds or thousands of requests to async workers to retrieve data. We've batched these requests and performed them on a single async worker. There are now native implementations of the following:
Repository.prototype.getReferences
: Retrieves all references on async worker.Repository.prototype.getRemotes
: Retrieves all remotes on async worker.Repository.prototype.getSubmodules
: Retrieves all submodules on async worker.Repository.prototype.refreshReferences
: Open sourced function from GitKraken. Grabs a lot of information about references on an async worker.Revwalk.prototype.commitWalk
: Retrieves up to N commits from a revwalk on an async worker.
- 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 toRepository.discover
- Added support for building on IBM i (PASE) machines
- Fixed leak where struct/option types were leaking libgit2 pointers
- Switched
NodeGit.Oid.fromString
's internal implementation fromgit_oid_fromstr
togit_oid_fromstrp
- Fixed builds for Electron 4
- Updated
Signature.prototype.toString
to optionally include timestamps
LibGit2 Bump
- Fixes gitignore issue with pattern negation
Remote.list
now gets the correct list of remotes if remotes are changed by external process- Always use builtin regex for linux for portability
- Use Iconv on OSX for better internationalization support.
- Removed LibCurl from LibGit2:
- Now with built-in NTLM proxy support
- Now with built-in Negotiate/Kerberos proxy support
- Working with proxy URLs may be different as curl could auto detect scheme for proxies
- Various git config fixes
- Various git ignore fixes
- Various libgit2 performance improvements
- Windows/Linux now use PCRE for regex, OSX uses regcomp_l, this should address collation issues in diffing
Merged PRs into NodeGit
- Add deprecation warnings for enums that need them. #1711
- #1706
- Reintroduce Odb.prototype.addDiskAlternate #1695
- Fix behaviour of Repository#getReferences #1708
- Bump libgit2 #1705
- Fix Tree#createUpdated #1704
- Fix failing tests on CI #1703
- Audit lodash and fix package-lock.json #1702
- Implement support for Node 12 #1696
- Remove NSEC #1699
- Use builtin regex library for linux for better portability #1693
- Remove pcre-config from binding.gyp #1694
- refresh_references.cc: skip refs that can't be directly resolved #1689
- Bump libgit2 to fork of latest master #1690
- Bump libssh2 to 1.8.2 and fix some npm audit warnings #1678
- Root functions should keep their function prototypes correctly #1681
- refresh_references.cc: bust LibGit2 remote list cache by reading config #1685
- Implement faster file history walk #1676
- EOL for Node 6 and Ubuntu 14.04 #1649
- Ensures that commits from parent(*) has a repository #1658
- Update openssl conan distributions #1663
- Support signing in Repository#mergeBranches #1664
- Dependency upgrade node-gyp upgraded to 4.0.0 #1672
- Add additional getters to streamline information gathering (breaking change) #1671
- Clean up some dangerous memory accesses in callbacks #1642
- Output the item that was deprecated when giving deprecation notice #1643
- Don't fail yarn installs when we can't find npm #1644
ceiling_dirs
parameter inRepository.discover
is optional #1245- Add missing
shouldAlloc
declarations for git_merge_analysis* functions #1641 - Fix regex state causing subsequent runs of Tag.extractSignature to fail #1630
- Update LibGit2 docs to v0.28.0 #1631
- Add support for building on IBM i (PASE) #1634
- [Expose more config methods #1635](https://github.com/nodegit...