Skip to content

Latest commit

 

History

History
4101 lines (3013 loc) · 263 KB

CHANGELOG.md

File metadata and controls

4101 lines (3013 loc) · 263 KB

Change Log

Full Changelog

Summary of changes

  • Build on Electron 31+

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Build on Electron 29+

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fix use-after-free in getRemotes

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fix use-after-free in getReferences

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Use Collision Detection SHA1 implementation
  • Fix win32 Electron build due to incorrect OpenSSL include path

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Bump libgit2 to 1.7.2

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Compatibility with Electron 28
  • NodeGit now requires Node 16+

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Update OpenSSL to 1.1.1t
  • Update got + other packages with security vulnerabilities
  • Fix tag.createWithSignature function definition

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fix electron build issues

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • OpenSSL bump
  • OpenSSL binaries will be automatically downloaded when building for Electron on Windows and macOS
  • Crash fix on Electron 18+ due to Nan bug
  • Partial stash support

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Allow fetching partial patches from diff
  • Fix nanosecond comparison typo

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Enable nanosecond precision for file operations

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Allow disabling specific filters during checkout

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Expose GIT_OPT_GET_OWNER_VALIDATION and GIT_OPT_SET_OWNER_VALIDATION

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Allow statically linking OpenSSL on Linux
  • Update libgit2 to 1.3.1

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Partially fix issue with building for Electron

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Updated CI because of GitHub deprecations
  • Added workaround for LFS performance regression

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Updated libssh2 to add RSA SHA2 256/512 SSH key support

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Reworked CI due to GitHub dropping Ubuntu 16.04 support
  • When building for Electron on Windows/macOS and prebuilts are unavailable: NodeGit will attempt to build OpenSSL locally by default. This is due to Conan changing their API/provided OpenSSL binaries. There are options for pointing to an installed OpenSSL location or URL for downloading prebuilt binaries, see Building from source.
  • Updated OpenSSL to 1.1.1l
  • Updated libssh2 to 1.10.0
  • Added Repo.prototype.statistics method for calculating repository statistics
  • More progress towards becoming context-aware

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixes an issue where rebase.init and rebase.open were ignoring callbacks in some situations

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixes another issue where Kerberos proxy authentication causes network failures

Merged PRs into NodeGit

Merged PRs into Libgit2

Full Changelog

Summary of changes

  • Fixes issue with where proxy authentication fails on linux/osx with assertion error.

Merged PRs into NodeGit

Merged PRs into Libgit2

Full Changelog

Summary of changes

  • Rewrote options normalization such that it is done in C++. Provided deprecated classes for backwards compatibility. These will be removed in a later version of Nodegit.
  • Deprecated construction of these objects, in the future, please pass plain objects with just the fields you wish to override to NodeGit, and the library will take care of the rest.
    • NodeGit.ApplyOptions
    • NodeGit.BlameOptions
    • NodeGit.BlobFilterOptions
    • NodeGit.CheckoutOptions
    • NodeGit.CherrypickOptions
    • NodeGit.CloneOptions
    • NodeGit.DescribeFormatOptions
    • NodeGit.DiffFindOptions
    • NodeGit.FetchOptions
    • NodeGit.MergeFileInput
    • NodeGit.MergeFileOptions
    • NodeGit.MergeOptions
    • NodeGit.ProxyOptions
    • NodeGit.PushOptions
    • NodeGit.RebaseOptions
    • NodeGit.RemoteCreatOptions
    • NodeGit.RepositoryInitOptions
    • NodeGit.RevertOptions
    • NodeGit.StashApplyOptions
    • NodeGit.StatusOptions
    • NodeGit.SubmoduleUpdateOptions
  • Ensured the following functions have their optional arguments labeled/working as optional:
    • NodeGit.Apply
    • NodeGit.Checkout.index
    • NodeGit.Cherrypick
    • NodeGit.Cherrypick.commit
    • NodeGit.Merge
    • NodeGit.PatchBlobs
    • NodeGit.Rebase.open
    • NodeGit.Remote.prototype.connect
    • NodeGit.Remote.prototype.download
    • NodeGit.Remote.prototype.fetch
    • NodeGit.Remote.prototype.prune
    • NodeGit.Remote.prototype.push
    • NodeGit.Remote.prototype.upload
    • NodeGit.Stash.apply
    • NodeGit.Stash.pop
    • NodeGit.Worktree.isPrunable
    • NodeGit.Worktree.prune
  • Updated the following functions to be async:
    • NodeGit.Apply
    • NodeGit.Remote.prototype.prune
    • NodeGit.Worktree.isPrunable
    • NodeGit.Worktree.prune
  • Addressed issue where GitWorktreePruneOptions and GitWorktreeAddOptions were impossible to instantiate, thus making working with worktress possible now.
  • Addressed issue where GitIndexTime was not configurable
  • Addressed issue where the following functions did not return errors from libgit2:
    • NodeGit.Merge.analysis
    • NodeGit.Note.commitRemove

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Fixes crash in multithreaded checkout in fork of libgit2

Merged PRs into NodeGit

Merged PRs into Libgit2

Full Changelog

Summary of changes

  • Introduces harder safeguards on persistent references to prevent garbage collection during async work

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Addresses failure to open repo with empty default branch name

Merged PRs into NodeGit

Cherrypicked PRs into Libgit2

Full Changelog

Summary of changes

  • Addresses crash in mwindow from libgit2
  • Bumps libgit2 to bring in bug fixes

Merged PRs into NodeGit

Merged PRs into Libgit2

Full Changelog

Summary of changes

  • Notice We planned to fix / address Electron 11 compatibility, but ran into some roadblocks. Fix is coming soon, follow #114 for details
  • Drops support for Node 10.x.y, < 12.19.x, < 14.10.0
  • Brings in LibGit2 1.0.0
  • NodeGit.Config.prototype.setBool handles truthiness, and NodeGit.Config.prototype.getBool returns true or false
  • Fix GC ownership memory issue
  • Exposes sidebandProgress callback in GitRemoteCallbacks
  • Fixes issue with winhttp and optional client certificates
  • Addresses proxy issue with certification validation in Windows
  • Fix crash in NodeGit.Repository.prototype.refreshReferences
  • Deprecations
    • NodeGit.Cred is deprecated in favor of NodeGit.Credential

Merged PRs into NodeGit

Merged PRs into Libgit2

Full Changelog

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

Full Changelog

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

Full Changelog

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 from parent.

Merged PRs into NodeGit

Merged PRs into LibGit2

Full Changelog

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
  • Pulled in patch for Libssh2 that covers an integer overflow, see Libssh2#402

Merged PRs into NodeGit

Merged PRs into LibGit2

Full Changelog

Summary of changes

Merged PRs into NodeGit

Full Changelog

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

Full Changelog

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

Full Changelog

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

Full Changelog

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

Full Changelog

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

Full Changelog

Summary of changes

  • Adds support for Node 12
  • Updates lodash dependency to address security notice
  • Expose Tree.prototype.createUpdated(repo, numUpdates, updates)
  • Bumps libgit2
    • Fixes gitignore issue with pattern negation
    • Remote.list now gets the correct list of remotes if remotes are changed by external process

Merged PRs into NodeGit

Merged PRs into LibGit2

Full Changelog

Summary of changes

  • Removed NSEC optimization due to performance regressions in repositories that did not use NSEC optimization cloned via NodeGit.

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Always use builtin regex for linux for portability

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Turn on GIT_USE_NSEC on all platforms
  • Use Iconv on OSX for better internationalization support.
  • Bump libgit2 to bring in:
    • NTLM proxy support
    • Negotiate/Kerberos proxy support
    • 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
  • Fixed bug with Repository.prototype.refreshReferences dying on corrupted reference. We now ignore corrupted references

Merged PRs into NodeGit

Merged PRs into LibGit2

Full Changelog

Summary of changes

  • Fix bug in Repository.prototype.refreshReferences where new remote references from a new remote added/fetched on a separte repo instance do not show up in the result.
  • 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.

Merged PRs into NodeGit

Full Changelog

Summary of changes

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

Merged PRs into NodeGit

Full Changelog

Summary of changes

  • Drops support for Ubuntu 14 after EOL
  • Fixes openssl prebuilt downloads for electron builds
  • Fixes commits retrieved from Commit.prototype.parent
  • DEPRECATION 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.
  • Bump Node-Gyp to 4.0.0 to fix tar security vulnerability
  • BREAKING getRemotes no longer returns remote names, it now returns remote objects directly. Use getRemoteNames to get a list of remote names.
  • 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.

Merged PRs into NodeGit

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