nodegit v0.24.1 Release Notes
-
๐ 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 thecheck
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
withLibgit2.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()
andBlob.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 callbackprogress_cb
to report on the progress of the diff as files are being compared. The documentation of the existing callbacknotify_cb
was updated to reflect that it only gets called when new deltas are added to the diff.FetchOptions
andPushOptions
have gained acustomHeaders
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 adefaultDriver
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 nowMerge.FLAG
. Subsequently,treeFlags
field of theMergeOptions
structure is now namedflags
.๐ The
Merge.FILE_FLAGS
enum is nowMerge.FILE_FLAG
for consistency with other enum type names.Cert
descendent types now have a properparent
memberIt 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
andIndex#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-levelIndex#addByPath
orIndex#addFromBuffer
functions.The
Config.LEVEL
enum has gained a higher-priority valuePROGRAMDATA
which represent a rough Windows equivalent to the system level configuration.๐
RebaseOptions
now has amergeOptions
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 acustomHeaders
argument to set the extra HTTP header fields to send.Tree.entryFilemode
,Tree.entryFilemodeRaw
,Tree.entryId
,Tree.entryName
,Tree.entryToObject
, andTree.entryType
have all been moved to theTreeEntry
prototype. Additionally, theTreeEntry
fields have been removed in lieu of the corresponding functions to return the data.