Skip to content

Latest commit

 

History

History
1454 lines (786 loc) · 77.3 KB

CHANGELOG.md

File metadata and controls

1454 lines (786 loc) · 77.3 KB

Change Log

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

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