libgit2 v0.23.0 RC1 发布,该版本对如何处理遥控器和子模块的配置作出重大变化,主要更新内容如下:
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 inUTF-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 usewhen 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 cryptographicsupport 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.
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.
The git_merge_options
gained a file_flags
member.
Parsing and retrieving a configuration value as a path is exposed
viagit_config_parse_path()
and git_config_get_path()
respectively.
git_repository_set_ident()
and git_repository_ident()
serve to
set and query which identity will be used when writing to the
reflog.
git_config_entry_free()
frees a config entry.
git_config_get_string_buf()
provides a way to safely retrieve a
string from a non-snapshot configuration.
git_annotated_commit_from_revspec()
allows to get an annotated
commit from an extended sha synatx string.
git_repository_set_head_detached_from_annotated()
,
git_branch_create_from_annotated()
and
git_reset_from_annotated()
allow for the caller to provide an
annotated commit through which they can control what expression is
put into the reflog as the source/target.
git_index_add_frombuffer()
can now create a blob from memory
buffer and add it to the index which is attached to a repository.
The structure git_fetch_options
has been added to determine the
runtime configuration for fetching, such as callbacks, pruning and
autotag behaviour. It has the runtime initializer
git_fetch_init_options()
.
The enum git_fetch_prune_t
has been added, letting you specify the
pruning behaviour for a fetch.
A push operation will notify the caller of what updates it indends
to perform on the remote, which provides similar information to
git's pre-push hook.
git_stash_apply()
can now apply a stashed state from the stash list,
placing the data into the working directory and index.
git_stash_pop()
will apply a stashed state (like git_stash_apply()
)
but will remove the stashed state after a successful application.
A new error code GIT_EEOF
indicates an early EOF from the
server. This typically indicates an error with the URL or
configuration of the server, and tools can use this to show messages
about failing to communicate with the server.
A new error code GIT_EINVALID
indicates that an argument to a
function is invalid, or an invalid operation was requested.
git_diff_index_to_workdir()
and git_diff_tree_to_index()
will now
produce deltas of type GIT_DELTA_CONFLICTED
to indicate that the index
side of the delta is a conflict.
The git_status
family of functions will now produce status of type
GIT_STATUS_CONFLICTED
to indicate that a conflict exists for that file
in the index.
git_index_entry_is_conflict()
is a utility function to determine if
a given index entry has a non-zero stage entry, indicating that it is
one side of a conflict.
It is now possible to pass a keypair via a buffer instead of a
path. For this, GIT_CREDTYPE_SSH_MEMORY
and
git_cred_ssh_key_memory_new()
have been added.
git_filter_list_contains
will indicate whether a particular
filter will be run in the given filter list.
git_commit_header_field()
has been added, which allows retrieving
the contents of an arbitrary header field.
git_submodule_set_branch()
allows to set the configured branch for
a submodule.
更多内容请查看 更新日志 。
该版本下载地址: Source code (zip)
ibgit2 是一个可移植、纯C语言实现的 Git 核心开发包,你可以使用它来编写自定义的 Git 应用。
libgit2已被广泛应用在许多应用程序上,包括GitHub网站,还被应用在Plastic SCM和强大的微软Visual Studio工具箱。