Skip to content

Commit 1b9cc2e

Browse files
committed
Merge remote-tracking branch 'upstream/master' into diff-indent-heuristic
2 parents 5efe9d1 + 524c1d3 commit 1b9cc2e

File tree

552 files changed

+15648
-4452
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

552 files changed

+15648
-4452
lines changed

.github/ISSUE_TEMPLATE

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
You are opening a _bug report_ against the libgit2 project. If you have a
2+
question about an API or usage, please ask on StackOverflow:
3+
http://stackoverflow.com/questions/tagged/libgit2. Please fill out the
4+
reproduction steps (below) and delete this introductory paragraph. Thanks!
5+
6+
### Reproduction steps
7+
8+
### Expected behavior
9+
10+
### Actual behavior
11+
12+
### Version of libgit2 (release number or SHA1)
13+
14+
### Operating system(s) tested

.travis.yml

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# see travis-ci.org for details
33

44
language: c
5+
dist: trusty
56

67
os:
78
- linux
@@ -17,42 +18,37 @@ env:
1718
- secure: "YnhS+8n6B+uoyaYfaJ3Lei7cSJqHDPiKJCKFIF2c87YDfmCvAJke8QtE7IzjYDs7UFkTCM4ox+ph2bERUrxZbSCyEkHdjIZpKuMJfYWja/jgMqTMxdyOH9y8JLFbZsSXDIXDwqBlC6vVyl1fP90M35wuWcNTs6tctfVWVofEFbs="
1819
- GITTEST_INVASIVE_FS_SIZE=1
1920
matrix:
20-
- OPTIONS="-DTHREADSAFE=ON -DCMAKE_BUILD_TYPE=Release"
21-
- OPTIONS="-DTHREADSAFE=OFF -DBUILD_EXAMPLES=ON"
21+
- OPTIONS="-DTHREADSAFE=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_WERROR=ON"
22+
- OPTIONS="-DTHREADSAFE=OFF -DBUILD_EXAMPLES=ON -DENABLE_WERROR=ON"
2223

23-
addons:
24-
apt:
25-
packages:
26-
- cmake
27-
- libssh2-1-dev
28-
- openssh-client
29-
- openssh-server
30-
- valgrind
31-
32-
sudo: false
24+
dist: trusty
25+
sudo: true
3326

3427
matrix:
3528
fast_finish: true
3629
exclude:
3730
- os: osx
3831
compiler: gcc
3932
include:
33+
- compiler: gcc
34+
env: PRECISE=1
35+
os: linux
36+
dist: precise
4037
- compiler: gcc
4138
env: COVERITY=1
4239
os: linux
40+
dist: trusty
4341
- compiler: gcc
4442
env:
4543
- VALGRIND=1
4644
OPTIONS="-DBUILD_CLAR=ON -DBUILD_EXAMPLES=OFF -DDEBUG_POOL=ON -DCMAKE_BUILD_TYPE=Debug"
4745
os: linux
46+
dist: trusty
4847
allow_failures:
4948
- env: COVERITY=1
50-
- env:
51-
- VALGRIND=1
52-
OPTIONS="-DBUILD_CLAR=ON -DBUILD_EXAMPLES=OFF -DDEBUG_POOL=ON -DCMAKE_BUILD_TYPE=Debug"
5349

5450
install:
55-
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then ./script/install-deps-${TRAVIS_OS_NAME}.sh; fi
51+
- ./script/install-deps-${TRAVIS_OS_NAME}.sh
5652

5753
# Run the Build script and tests
5854
script:

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Dmitry Kakurin
2222
Dmitry Kovega
2323
Emeric Fermas
2424
Emmanuel Rodriguez
25+
Eric Myhre
2526
Florian Forster
2627
Holger Weiss
2728
Ingmar Vanhassel

CHANGELOG.md

Lines changed: 185 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,118 @@
1-
v0.24 + 1
1+
v0.26 + 1
2+
---------
3+
4+
### Changes or improvements
5+
6+
* Improved `p_unlink` in `posix_w32.c` to try and make a file writable
7+
before sleeping in the retry loop to prevent unnecessary calls to sleep.
8+
9+
### API additions
10+
11+
* `git_remote_create_detached()` creates a remote that is not associated
12+
to any repository (and does not apply configuration like 'insteadof' rules).
13+
This is mostly useful for e.g. emulating `git ls-remote` behavior.
14+
15+
### API removals
16+
17+
### Breaking API changes
18+
19+
v0.26
20+
-----
21+
22+
### Changes or improvements
23+
24+
* Support for opening, creating and modifying worktrees.
25+
26+
* We can now detect SHA1 collisions resulting from the SHAttered attack. These
27+
checks can be enabled at build time via `-DUSE_SHA1DC`.
28+
29+
* Fix for missing implementation of `git_merge_driver_source` getters.
30+
31+
* Fix for installed pkg-config file being broken when the prefix contains
32+
spaces.
33+
34+
* We now detect when the hashsum of on-disk objects does not match their
35+
expected hashsum.
36+
37+
* We now support open-ended ranges (e.g. "master..", "...master") in our
38+
revision range parsing code.
39+
40+
* We now correctly compute ignores with leading "/" in subdirectories.
41+
42+
* We now optionally call `fsync` on loose objects, packfiles and their indexes,
43+
loose references and packed reference files.
44+
45+
* We can now build against OpenSSL v1.1 and against LibreSSL.
46+
47+
* `GIT_MERGE_OPTIONS_INIT` now includes a setting to perform rename detection.
48+
This aligns this structure with the default by `git_merge` and
49+
`git_merge_trees` when `NULL` was provided for the options.
50+
51+
* Improvements for reading index v4 files.
52+
53+
* Perform additional retries for filesystem operations on Windows when files
54+
are temporarily locked by other processes.
55+
56+
### API additions
57+
58+
* New family of functions to handle worktrees:
59+
60+
* `git_worktree_list()` lets you look up worktrees for a repository.
61+
* `git_worktree_lookup()` lets you get a specific worktree.
62+
* `git_worktree_open_from_repository()` lets you get the associated worktree
63+
of a repository.
64+
a worktree.
65+
* `git_worktree_add` lets you create new worktrees.
66+
* `git_worktree_prune` lets you remove worktrees from disk.
67+
* `git_worktree_lock()` and `git_worktree_unlock()` let you lock
68+
respectively unlock a worktree.
69+
* `git_repository_open_from_worktree()` lets you open a repository via
70+
* `git_repository_head_for_worktree()` lets you get the current `HEAD` for a
71+
linked worktree.
72+
* `git_repository_head_detached_for_worktree()` lets you check whether a
73+
linked worktree is in detached HEAD mode.
74+
75+
* `git_repository_item_path()` lets you retrieve paths for various repository
76+
files.
77+
78+
* `git_repository_commondir()` lets you retrieve the common directory of a
79+
repository.
80+
81+
* `git_branch_is_checked_out()` allows you to check whether a branch is checked
82+
out in a repository or any of its worktrees.
83+
84+
* `git_repository_submodule_cache_all()` and
85+
`git_repository_submodule_cache_clear()` functions allow you to prime or clear
86+
the submodule cache of a repository.
87+
88+
* You can disable strict hash verifications via the
89+
`GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION` option with `git_libgit2_opts()`.
90+
91+
* You can enable us calling `fsync` for various files inside the ".git"
92+
directory by setting the `GIT_OPT_ENABLE_FSYNC_GITDIR` option with
93+
`git_libgit2_opts()`.
94+
95+
* You can now enable "offset deltas" when creating packfiles and negotiating
96+
packfiles with a remote server by setting `GIT_OPT_ENABLE_OFS_DELTA` option
97+
with `GIT_libgit2_opts()`.
98+
99+
* You can now set the default share mode on Windows for opening files using
100+
`GIT_OPT_SET_WINDOWS_SHAREMODE` option with `git_libgit2_opts()`.
101+
You can query the current share mode with `GIT_OPT_GET_WINDOWS_SHAREMODE`.
102+
103+
* `git_transport_smart_proxy_options()' enables you to get the proxy options for
104+
smart transports.
105+
106+
* The `GIT_FILTER_INIT` macro and the `git_filter_init` function are provided
107+
to initialize a `git_filter` structure.
108+
109+
### Breaking API changes
110+
111+
* `clone_checkout_strategy` has been removed from
112+
`git_submodule_update_option`. The checkout strategy used to clone will
113+
be the same strategy specified in `checkout_opts`.
114+
115+
v0.25
2116
-------
3117

4118
### Changes or improvements
@@ -15,14 +129,39 @@ v0.24 + 1
15129

16130
* Support for reading and writing git index v4 files
17131

132+
* Improve the performance of the revwalk and bring us closer to git's code.
133+
134+
* The reference db has improved support for concurrency and returns `GIT_ELOCKED`
135+
when an operation could not be performed due to locking.
136+
137+
* Nanosecond resolution is now activated by default, following git's change to
138+
do this.
139+
140+
* We now restrict the set of ciphers we let OpenSSL use by default.
141+
142+
* Users can now register their own merge drivers for use with `.gitattributes`.
143+
The library also gained built-in support for the union merge driver.
144+
145+
* The default for creating references is now to validate that the object does
146+
exist.
147+
148+
* Add `git_proxy_options` which is used by the different networking
149+
implementations to let the caller specify the proxy settings instead of
150+
relying on the environment variables.
151+
18152
### API additions
19153

20154
* You can now get the user-agent used by libgit2 using the
21155
`GIT_OPT_GET_USER_AGENT` option with `git_libgit2_opts()`.
22156
It is the counterpart to `GIT_OPT_SET_USER_AGENT`.
23157

158+
* The `GIT_OPT_SET_SSL_CIPHERS` option for `git_libgit2_opts()` lets you specify
159+
a custom list of ciphers to use for OpenSSL.
160+
24161
* `git_commit_create_buffer()` creates a commit and writes it into a
25-
user-provided buffer instead of writing it into the object db.
162+
user-provided buffer instead of writing it into the object db. Combine it with
163+
`git_commit_create_with_signature()` in order to create a commit with a
164+
cryptographic signature.
26165

27166
* `git_blob_create_fromstream()` and
28167
`git_blob_create_fromstream_commit()` allow you to create a blob by
@@ -48,12 +187,48 @@ v0.24 + 1
48187
`git_repository_open_ext` with this flag will error out if either
49188
`$GIT_WORK_TREE` or `$GIT_COMMON_DIR` is set.
50189

51-
* `git_diff_from_buffer` can create a `git_diff` object from the contents
190+
* `git_diff_from_buffer()` can create a `git_diff` object from the contents
52191
of a git-style patch file.
53192

54193
* `git_index_version()` and `git_index_set_version()` to get and set
55194
the index version
56195

196+
* `git_odb_expand_ids()` lets you check for the existence of multiple
197+
objects at once.
198+
199+
* The new `git_blob_dup()`, `git_commit_dup()`, `git_tag_dup()` and
200+
`git_tree_dup()` functions provide type-specific wrappers for
201+
`git_object_dup()` to reduce noise and increase type safety for callers.
202+
203+
* `git_reference_dup()` lets you duplicate a reference to aid in ownership
204+
management and cleanup.
205+
206+
* `git_signature_from_buffer()` lets you create a signature from a string in the
207+
format that appear in objects.
208+
209+
* `git_tree_create_updated()` lets you create a tree based on another one
210+
together with a list of updates. For the covered update cases, it's more
211+
efficient than the `git_index` route.
212+
213+
* `git_apply_patch()` applies hunks from a `git_patch` to a buffer.
214+
215+
* `git_diff_to_buf()` lets you print an entire diff directory to a buffer,
216+
similar to how `git_patch_to_buf()` works.
217+
218+
* `git_proxy_init_options()` is added to initialize a `git_proxy_options`
219+
structure at run-time.
220+
221+
* `git_merge_driver_register()`, `git_merge_driver_unregister()` let you
222+
register and unregister a custom merge driver to be used when `.gitattributes`
223+
specifies it.
224+
225+
* `git_merge_driver_lookup()` can be used to look up a merge driver by name.
226+
227+
* `git_merge_driver_source_repo()`, `git_merge_driver_source_ancestor()`,
228+
`git_merge_driver_source_ours()`, `git_merge_driver_source_theirs()`,
229+
`git_merge_driver_source_file_options()` added as accessors to
230+
`git_merge_driver_source`.
231+
57232
### API removals
58233

59234
* `git_blob_create_fromchunks()` has been removed in favour of
@@ -78,6 +253,13 @@ v0.24 + 1
78253
If this is `NULL`, then it will not be called and the `exists` function
79254
will be used instead.
80255

256+
* `git_remote_connect()` now accepts `git_proxy_options` argument, and
257+
`git_fetch_options` and `git_push_options` each have a `proxy_opts` field.
258+
259+
* `git_merge_options` now provides a `default_driver` that can be used
260+
to provide the name of a merge driver to be used to handle files changed
261+
during a merge.
262+
81263
v0.24
82264
-------
83265

@@ -153,10 +335,6 @@ v0.24
153335

154336
### Breaking API changes
155337

156-
* `git_merge_options` now provides a `default_driver` that can be used
157-
to provide the name of a merge driver to be used to handle files changed
158-
during a merge.
159-
160338
* The `git_merge_tree_flag_t` is now `git_merge_flag_t`. Subsequently,
161339
its members are no longer prefixed with `GIT_MERGE_TREE_FLAG` but are
162340
now prefixed with `GIT_MERGE_FLAG`, and the `tree_flags` field of the

0 commit comments

Comments
 (0)