Skip to content

Commit 616628d

Browse files
authored
Merge branch 'main' into typos
2 parents 90df430 + 2bfd8dd commit 616628d

38 files changed

+1175
-596
lines changed

ci/test.sh

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ echo "##########################################################################
8383
if [ -z "$SKIP_GITDAEMON_TESTS" ]; then
8484
echo "Starting git daemon..."
8585
GITDAEMON_DIR=`mktemp -d ${TMPDIR}/gitdaemon.XXXXXXXX`
86-
git init --bare "${GITDAEMON_DIR}/test.git"
86+
git init --bare "${GITDAEMON_DIR}/test.git" >/dev/null
8787
git daemon --listen=localhost --export-all --enable=receive-pack --base-path="${GITDAEMON_DIR}" "${GITDAEMON_DIR}" 2>/dev/null &
8888
GITDAEMON_PID=$!
8989
disown $GITDAEMON_PID
@@ -101,8 +101,8 @@ if [ -z "$SKIP_PROXY_TESTS" ]; then
101101
java -jar poxyproxy.jar --address 127.0.0.1 --port 8090 --credentials foo:bar --auth-type ntlm --quiet &
102102
fi
103103

104-
if [ -z "$SKIP_NTLM_TESTS" ]; then
105-
curl --location --silent --show-error https://github.com/ethomson/poxygit/releases/download/v0.4.0/poxygit-0.4.0.jar >poxygit.jar
104+
if [ -z "$SKIP_NTLM_TESTS" -o -z "$SKIP_ONLINE_TESTS" ]; then
105+
curl --location --silent --show-error https://github.com/ethomson/poxygit/releases/download/v0.5.1/poxygit-0.5.1.jar >poxygit.jar
106106

107107
echo ""
108108
echo "Starting HTTP server..."
@@ -112,10 +112,11 @@ if [ -z "$SKIP_NTLM_TESTS" ]; then
112112
fi
113113

114114
if [ -z "$SKIP_SSH_TESTS" ]; then
115+
echo ""
115116
echo "Starting ssh daemon..."
116117
HOME=`mktemp -d ${TMPDIR}/home.XXXXXXXX`
117118
SSHD_DIR=`mktemp -d ${TMPDIR}/sshd.XXXXXXXX`
118-
git init --bare "${SSHD_DIR}/test.git"
119+
git init --bare "${SSHD_DIR}/test.git" >/dev/null
119120
cat >"${SSHD_DIR}/sshd_config" <<-EOF
120121
Port 2222
121122
ListenAddress 0.0.0.0
@@ -188,9 +189,11 @@ if [ -z "$SKIP_ONLINE_TESTS" ]; then
188189
echo "## Running (online) tests"
189190
echo "##############################################################################"
190191

191-
export GITTEST_FLAKY_RETRY=5
192+
export GITTEST_REMOTE_REDIRECT_INITIAL="http://localhost:9000/initial-redirect/libgit2/TestGitRepository"
193+
export GITTEST_REMOTE_REDIRECT_SUBSEQUENT="http://localhost:9000/subsequent-redirect/libgit2/TestGitRepository"
192194
run_test online
193-
unset GITTEST_FLAKY_RETRY
195+
unset GITTEST_REMOTE_REDIRECT_INITIAL
196+
unset GITTEST_REMOTE_REDIRECT_SUBSEQUENT
194197

195198
# Run the online tests that immutably change global state separately
196199
# to avoid polluting the test environment.
@@ -231,9 +234,7 @@ if [ -z "$SKIP_PROXY_TESTS" ]; then
231234
export GITTEST_REMOTE_PROXY_HOST="localhost:8090"
232235
export GITTEST_REMOTE_PROXY_USER="foo"
233236
export GITTEST_REMOTE_PROXY_PASS="bar"
234-
export GITTEST_FLAKY_RETRY=5
235237
run_test proxy
236-
unset GITTEST_FLAKY_RETRY
237238
unset GITTEST_REMOTE_PROXY_HOST
238239
unset GITTEST_REMOTE_PROXY_USER
239240
unset GITTEST_REMOTE_PROXY_PASS

docs/api-stability.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
The maintainers of the libgit2 project believe that having a stable API
2+
to program against is important for our users and the ecosystem - whether
3+
you're building against the libgit2 C APIs directly, creating a wrapper to
4+
a managed language, or programming against one of those managed wrappers
5+
like LibGit2Sharp or Rugged.
6+
7+
Our API stability considerations are:
8+
9+
* Our standard API is considered stable through a major release.
10+
11+
* We define our "standard API" to be anything included in the "git2.h"
12+
header - in other words, anything defined in a header in the `git2`
13+
directory.
14+
15+
* APIs will maintain their signature and will not be removed within a
16+
major release, but new APIs may be added.
17+
18+
* Any APIs may be marked as deprecated within a major release, but will
19+
not be removed until the next major release (at the earliest). You
20+
may define `GIT_DEPRECATE_HARD` to produce compiler warnings if you
21+
target these deprecated APIs.
22+
23+
* We consider API compatibility to be against the C APIs. That means
24+
that we may use macros to keep API compatibility - for example, if we
25+
rename a structure from `git_widget_options` to `git_foobar_options`
26+
then we would `#define git_widget_options git_foobar_options` to retain
27+
API compatibility. Note that this does _not_ provide ABI compatibility.
28+
29+
* Our systems API is only considered stable through a _minor_ release.
30+
31+
* We define our "systems API" to be anything included in the `git2/sys`
32+
directory. These are not "standard" APIs but are mechanisms to extend
33+
libgit2 by adding new extensions - for example, a custom HTTPS transport,
34+
TLS engine, or merge strategy.
35+
36+
* Additionally, the cmake options and the resulting constants that it
37+
produces to be "systems API".
38+
39+
* Generally these mechanism are well defined and will not need significant
40+
changes, but are considered a part of the library itself and may need
41+
42+
* Systems API changes will be noted specially within a release's changelog.
43+
44+
* Our ABI is only considered stable through a _minor_ release.
45+
46+
* Our ABI consists of actual symbol names in the library, the function
47+
signatures, and the actual layout of structures. These are only
48+
stable within minor releases, they are not stable within major releases
49+
(yet).
50+
51+
* Since many FFIs use ABIs directly (for example, .NET P/Invoke or Rust),
52+
this instability is unfortunate.
53+
54+
* In a future major release, we will begin providing ABI stability
55+
throughout the major release cycle.
56+
57+
* ABI changes will be noted specially within a release's changelog.
58+
59+
* Point releases are _generally_ only for bugfixes, and generally do _not_
60+
include new features. This means that point releases generally do _not_
61+
include new APIs. Point releases will never break API, systems API or
62+
ABI compatibility.
63+

0 commit comments

Comments
 (0)