Skip to content

v0.25.0 (2019-08-09)

Compare
Choose a tag to compare
@implausible implausible released this 09 Aug 16:47
· 407 commits to master since this release

Summary of changes

BREAKING
  • getRemotes no longer returns remote names, it now returns remote objects directly. Use getRemoteNames 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 to Rebase.prototype.next
  • Drops support for Ubuntu 14 after EOL
  • 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
  • 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 parameter processMergeMessageCallback is now deprecated, but will continue to work. Use the options object instead, which will contain the processMergeMessageCallback, as well as the signingCb.
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 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.
  • Exposed 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 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 to Repository.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 to Repository.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 from git_oid_fromstr to git_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

Merged PRs into LibGit2