Version: 0.24.0-2.1
* Wed Mar 16 2016 dimstar@opensuse.org
- Update to version 0.24.0:
+ 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 GIT_OPT_SET_USER_AGENT with
git_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
GIT_OPT_ENABLE_STRICT_OBJECT_CREATION option.
+ The WinHTTP transport's handling of bad credentials now behaves
like the others, asking for credentials again.
+ Various API changes (additions AND removals).
- Rename libgit2-23 subpackage to libgit2-24, following upstraems
soname bump (also in baselibs.conf).
* Mon Nov 30 2015 astieger@suse.com
- libgit2 0.23.4:
* various bug fixes and improvements
- drop upstreamed libgit2-fix-.pc-file.patch
* Wed Oct 07 2015 astieger@suse.com
- libgit2 0.23.3, containing critical fixes:
* blame: guard xdiff calls for large files
* diff: don't feed large files to xdiff
* merge_file: treat large files as binary
* xdiff: convert size variables to size_t
* GITERR_CHECK_ALLOC_ADDn: multi-arg adders
* Thu Sep 10 2015 dimstar@opensuse.org
- Add libgit2-fix-.pc-file.patch: Fix paths written in libgit2.pc.
* Mon Sep 07 2015 astieger@suse.com
- libgit2 0.23.2:
* documentation fixes
* diff: don't error out on an invalid regex
* http: propagate the credentials callback's error code
* Fix bug in git_smart__push: push_transfer_progress cb is never called
* remote: don't confuse tag auto-follow rules with refspec matching
* curl: use the most secure auth method for the proxy
* Forcing libssh2 lib location
* fix duplicate basenames to support older VS
- includes changes from 0.23.1:
* Stage an unregistered submodule in _add_bypath()
* filebuf: remove lockfile upon rename errors
* Increase required version of cmake to 2.8
* Handle ssh:// and git:// urls containing a '~' character.
* documentation updates
* submodule URL handling fixes
* index: allow add_bypath to update submodules
* blob: fail to create a blob from a dir with EDIRECTORY
* submodule: lookup the submodule by path if available
* submdule: reproduce double-reporting of a submodule in foreach
- note cmake requirement and use cmake makros
- build with system libcurl
- build with system http-parser
* Tue Jul 28 2015 dimstar@opensuse.org
- Update to version 0.23.0:
+ Changes or improvements:
- Patience and minimal diff drivers can now be used for merges.
- Merges can now ignore whitespace changes.
- Updated binary identification in CRLF filtering to avoid
false positives in UTF-8 files.
- Rename and copy detection is enabled for small files.
- Checkout can now handle an initial checkout of a repository,
making GIT_CHECKOUT_SAFE_CREATE unnecessary for users of
clone.
- The signature parameter in the ref-modifying functions has
been removed. Use git_repository_set_ident() and
git_repository_ident() to override the signature to be used.
- The local transport now auto-scales the number of threads to
use when creating the packfile instead of sticking to one.
- Reference renaming now uses the right id for the old value.
- The annotated version of branch creation, HEAD detaching and
reset allow for specifying the expression from the user to be
put into the reflog.
- git_rebase_commit now returns GIT_EUNMERGED when you attempt
to commit with unstaged changes.
- On Mac OS X, we now use SecureTransport to provide the
cryptographic support for HTTPS connections insead of
OpenSSL.
- Checkout can now accept an index for the baseline
computations via the baseline_index member.
- The configuration for fetching is no longer stored inside the
git_remote struct but has been moved to a git_fetch_options.
The remote functions now take these options or the callbacks
instead of setting them beforehand.
- git_submodule instances are no longer cached or shared across
lookup. Each submodule represents the configuration at the
time of loading.
- The index now uses diffs for add_all() and update_all() which
gives it a speed boost and closer semantics to git.
- The ssh transport now reports the stderr output from the
server as the error message, which allows you to get the
"repository not found" messages.
- git_index_conflict_add() will remove staged entries that
exist for conflicted paths.
- The flags for a git_diff_file will now have the
GIT_DIFF_FLAG_EXISTS bit set when a file exists on that side
of the diff. This is useful for understanding whether a side
of the diff exists in the presence of a conflict.
- The constructor for a write-stream into the odb now takes
git_off_t instead of size_t for the size of the blob, which
allows putting large files into the odb on 32-bit systems.
- The remote's push and pull URLs now honor the
url.$URL.insteadOf configuration. This allows modifying URL
prefixes to a custom value via gitconfig.
- git_diff_foreach, git_diff_blobs, git_diff_blob_to_buffer,
and git_diff_buffers now accept a new binary callback of type
git_diff_binary_cb that includes the binary diff information.
- The race condition mitigations described in racy-git.txt have
been implemented.
- If libcurl is installed, we will use it to connect to HTTP(S)
servers.
+ Various API changes (incl. breaking changes).
- Rename libgit2-22 subpackage to libgit2-23, following upstreams
soname bump (also in baselibs.conf).
* Tue Jan 27 2015 dimstar@opensuse.org
- Update to version 0.22.1:
+ The following (critical) fixes have been backported to this
maintenance release:
- checkout: introduce git_checkout_perfdata.
- git_path_join_unrooted: return base len.
- checkout: don't recreate previous directory.
- checkout tests: nasty symlinks.
- checkout: drop newline in error message.
- checkout: remove files before writing new ones.
- checkout tests: emulate p_realpath poorly on Win32.
- checkout tests: cleanup realpath impl on Win32.
- Changes from version 0.22.0:
+ git_signature_new() now requires a non-empty email address.
+ Use CommonCrypto libraries for SHA-1 calculation on Mac OS X.
+ Disable SSL compression and SSLv2 and SSLv3 ciphers in favor of
TLSv1 in OpenSSL.
+ The fetch behavior of remotes with autotag set to
GIT_REMOTE_DOWNLOAD_TAGS_ALL has been changed to match git
1.9.0 and later. In this mode, libgit2 now fetches all tags in
addition to whatever else needs to be fetched.
+ git_checkout() now handles case-changing renames correctly on
case-insensitive filesystems; for example renaming "readme" to
"README".
+ The search for libssh2 is now done via pkg-config instead of a
custom search of a few directories.
+ Add support for core.protectHFS and core.protectNTFS. Add more
validation for filenames which we write such as references.
+ The local transport now generates textual progress output like
git-upload-pack does ("counting objects").
+ git_checkout_index() can now check out an in-memory index that
is not necessarily the repository's index, so you may check out
an index that was produced by git_merge and friends while
retaining the cached information.
+ Remove the default timeout for receiving / sending data over
HTTP using the WinHTTP transport layer.
+ Add SPNEGO (Kerberos) authentication using GSSAPI on Unix
systems.
+ Provide built-in objects for the empty blob (e69de29) and empty
tree (4b825dc) objects.
+ The index' tree cache is now filled upon read-tree and
write-tree and the cache is written to disk.
+ LF -> CRLF filter refuses to handle mixed-EOL files.
+ LF -> CRLF filter now runs when * text = auto (with Git for
Windows 1.9.4).
+ File unlocks are atomic again via rename. Read-only files on
Windows are made read-write if necessary.
+ Share open packfiles across repositories to share descriptors
and mmaps.
+ Use a map for the treebuilder, making insertion O(1).
+ The build system now accepts an option EMBED_SSH_PATH which
when set tells it to include a copy of libssh2 at the given
location. This is enabled for MSVC.
+ Add support for refspecs with the asterisk in the middle of a
pattern.
+ Fetching now performs opportunistic updates. To achieve this,
we introduce a difference between active and passive refspecs,
which make git_remote_download() and git_remote_fetch() to take
a list of resfpecs to be the active list, similarly to how git
fetch accepts a list on the command-line.
+ The THREADSAFE option to build libgit2 with threading support
has been flipped to be on by default.
+ The remote object has learnt to prune remote-tracking branches.
If the remote is configured to do so, this will happen via
git_remote_fetch(). You can also call git_remote_prune() after
connecting or fetching to perform the prune.
- Rename libgit2-21 subpackage to libgit2-22, following upstreams
soname bump (also in baselibs.conf).
* Thu Oct 16 2014 hrvoje.senjan@gmail.com
- Add baselibs.conf
* Thu Jul 10 2014 dimstar@opensuse.org
- Update to version 0.21.1:
+ Added a new config snapshotting API to fix race issues when
different applications (e.g. Git and a libgit2 client) access
the same repository simultaneously.
+ Added reflog support to all APIs that could alter a reference.
+ Avoided race conditions when updating references.
+ Converted all APIs that output string data to use git_buf
objects for the return value.
+ Added standard git_<object>_init_options functions to
initialize options structures when static initialization is not
possible, and renamed options structures to standard
git_<object>_options (replacing _opts suffix used in some
places).
+ Improved use of const on pointers in many APIs (which may
affect some bindings).
+ Replaced use of oid with simply id for references to
git_oid value.s
+ Previously, when a callback function returned an error value
(i.e. non-zero), libgit2 converted it to GIT_EUSER for the
parent function's return value. Now, libgit2 tries to pass
through the callback's return value all the way back to the
caller.
+ All inline functions were eliminated from the public libgit2
API.
+ Removed all Apache licensed code from library.
+ For more changes, please see detailed ChangeLog in package.
- Rename libgit2-0 subpackage to libgit2-21, following upstreams
soname change (another project believing the soname should match
the version).
- Enable SSH Support:
+ Add pkgconfig(libssh2) BuildRequires.
+ Pass -DUSE_SSH:BOOL=ON to cmake call in order to enable SSH
support.
* Mon Jan 06 2014 dimstar@opensuse.org
- Build libgit2 threadsafe:
+ Pass -DTHREADSAFE:BOOL=ON to cmake call.
* Mon Nov 25 2013 dimstar@opensuse.org
- Update to version 0.20.0:
+ Blame APIs.
+ Filter APIs.
+ Public git_buffer APIs.
+ Merge conflict support in Checkout.
+ Simplified Clone options and git_clone_into.
+ Config iterator APIs and updated Config multivar API.
+ Diff API reorganization and renaming, with Patch API split off.
+ Indexer API renaming and improvements.
+ ODB backend API cleanup.
+ Improves progress callbacks for Packbuilder, Push, Fetch (and
any other Remote operation).
+ Public Pathspec matching APIs.
+ Reflog API and RefDB Backend API cleanup.
+ Remote API extensions.
+ SSH Transport configuration cleanup.
+ Submodule status improvements.
+ Pluggable Transport APIs.
+ Lots of other small features (e.g. decomposed unicode support on
MacOS, revwalk simplifying by first parent),
+ Bug fixes (e.g. junction support on Win32, redirect handling
in HTTP transport) and performance improvements.
+ Lots of new examples (init, status, log, blame, etc.) and
relicensing of example code under CC0 license.
* Mon Jul 08 2013 dimstar@opensuse.org
- Update to version 0.19.0:
+ New (threadsafe) cache for objects.
+ Iterator for Status.
+ New Merge APIs.
+ SSH support on *NIX.
+ Function context on diff.
+ Namespaces support.
+ Index add/update/remove with wildcard support.
+ Iterator for References.
+ Fetch and push refspecs for Remotes.
+ Rename support in Status.
+ New 'sys/` namespace for external headers with low-level APIs.
* Sun Jun 23 2013 dimstar@opensuse.org
- Update to version 0.18:
+ Almost one year worth of bug fixing... yet, upstream does not
publish a statement / announcement of what is actually new...
* Fri Aug 31 2012 cgiboudeaux@gmx.com
- Update to 0.17
Attributes:
- Added function macros to check attribute values instead of having
to manually compare them
- Added support for choosing the attribute loading order (workdir files
vs index) and to skip the systems' default `.gitattributes`
- Fixed issues when fetching attribute data on bare repositories
Blob:
- Added support for creating blobs from any file on disk (not
restricted to the repository's working directory)
- Aded support for smudge filters when writing blobs to the ODB
- So far only CRLF normalization is available
Branches:
- Added a high-level branch API:
- git_branch_create
- git_branch_delete
- git_branch_list
- git_branch_move
Commit:
- Commit messages are now filtered to match Git rules (stripping
comments and adding proper whitespacing rules)
Config:
- Added support for setting and getting multivars
- Added `git_config_get_mapped` to map the value of a config
variable based on its defaults
Diff:
- Added full diff API:
- tree to tree
- index to tree
- workdir to index
- workdir to tree
- blob to blob
- Added helper functions to print the diffs as valid patchfiles
Error handling:
- New design for the error handling API, taking into consideration
the requirements of dynamic languages
Indexer:
- Added streaming packfile indexer
Merge:
- Added support for finding the merge base between two commits
Notes:
- Full git-notes support:
- git_note_read
- git_note_message/git_note_oid
- git_note_create
- git_note_remove
- git_note_free
- git_note_foreach
References:
- Added `git_reference_name_to_oid` helper to resolve
a reference to its final OID
- Added `git_reference_cmp` to compare two references with
a stable order
Remotes:
- Added support for writing and saving remotes
- `git_remote_add`
- `git_remote_save`
- Setters for all the attributes of a remote
- Switched remote download to the new streaming packfile indexer
- Fixed fetch on HTTP and Git under Windows
- Added `git_remote_supported_url` helper to check if a protocol
can be accessed by the library
- Added `git_remote_list`
Repository:
- Made `git_repository_open` smarter when finding the `.git` folder.
- Added `git_repository_open_ext` with extra options when
opening a repository
Revwalk:
- Added support for pushing/hiding several references through a glob
- Added helper to push/hide the current HEAD to the walker
- Added helper to push/hide a single reference to the walker
Status:
- Greatly improved Status implementation using the new `diff` code
as a backend
Submodules:
- Added a partial submodules API to get information about a
submodule and list all the submodules in a repository
- git_submodule_foreach
- git_submodule_lookup
Tag:
- Added `git_tag_peel` helper to peel a tag to its pointed object
- Tag messages are now filtered to match Git rules (stripping comments
and adding proper whitespacing rules)
Tree:
- Killed the old `git_tree_diff` API, which is replaced by the
new diff code.
* Mon May 07 2012 idonmez@suse.com
- Fix license to be GPL-2.0-with-GCC-exception
* Mon Apr 16 2012 cgiboudeaux@gmx.com
- Update to 0.16.0
- Git Attributes support (see git2/attr.h)
There is now support to efficiently parse and retrieve information
from `.gitattribute` files in a repository. Note that this
information is not yet used e.g. when checking out files.
- .gitignore support
Likewise, all the operations that are affected by `.gitignore` files
now take into account the global, user and local ignores when
skipping the relevant files.
- Cleanup of the object ownership semantics
The ownership semantics for all repository subparts (index, odb,
config files, etc) has been redesigned. All these objects are now
reference counted, and can be hot-swapped in the middle of
execution, allowing for instance to add a working directory and an
index to a repository that was previously opened as bare, or to
change the source of the ODB objects after initialization.
Consequently, the repository API has been simplified to remove all
the `_openX` calls that allowed setting these subparts *before*
initialization.
- git_index_read_tree()
Git trees can now be read into the index.
- More reflog functionality
The reference log has been optimized, and new API calls to rename
and delete the logs for a reference have been added.
- Rewrite of the References code with explicit ownership semantics
The references code has been mostly rewritten to take into account
the cases where another Git application was modifying a repository's
references while the Library was running.
References are now explicitly loaded and free'd by the user, and
they may be reloaded in the middle of execution if the user suspects
that their values may have changed on disk. Despite the new
ownership semantics, the references API stays the same.
- Simplified the Remotes API
Some of the more complex Remote calls have been refactored into
higher level ones, to facilitate the usual `fetch` workflow of a
repository.
- Greatly improved thread-safety
The library no longer has race conditions when loading objects from
the same ODB and different threads at the same time. There's now
full TLS support, even for error codes. When the library is built
with `THREADSAFE=1`, the threading support must be globally
initialized before it can be used (see `git_threads_init()`)
- Tree walking API
A new API can recursively traverse trees and subtrees issuing callbacks for
every single entry.
- Tree diff API
There is basic support for diff'ing an index against two trees.
* Tue Jan 31 2012 jengelh@medozas.de
- Provide pkgconfig symbols
* Thu Oct 27 2011 saschpe@suse.de
- Change license to 'GPL-2.0 with linking', fixes bnc#726789
* Wed Oct 26 2011 saschpe@suse.de
- Update to version 0.15.0:
* Upstream doesn't provide changes
- Removed outdated %clean section
* Tue Jan 18 2011 saschpe@gmx.de
- Proper Requires for devel package