This improves the documentation for `git_repository_is_empty`
which currently does not accurately describe libgit2's definition
of "empty".
It says that HEAD must point to the "unborn master branch", when
in fact, this is not the case if the repo's `init.defaultBranch`
configuration is set. If it is set, it will check that HEAD points
there. Only if it is not set does it fall back to `master`.
`git_odb_stream` should have an `oid_type` to disambiguate; that's not
necessary on non-experimental SHA256 builds. Avoid unnecessary ABI
breakage for consumers and hide it behind an ifdef for now.
The remote::httpproxy::env test (correctly) reset the environment before
running; however the other tests are also impacted by the environment
and need to have it isolated.
We say that you can link libgit2 "unmodified"... "without having to release
its source code". Clarify that you can modify libgit2 - but you must
release _its_ source code back - and you can link libgit2 without having
to release _your software's_ source code.
Git for Windows does some truly bizarre things with
paths that start with a forward slash; and expects you
to escape that with `%(prefix)`. This syntax generally
means to add the prefix that Git was installed to -- eg
`/usr/local` -- unless it's an absolute path, in which
case the leading `%(prefix)/` is just removed. And Git
for Windows expects you to use this syntax for absolute
Unix-style paths (in "Git Bash" or Windows Subsystem for
Linux).
Worse, the behavior used to be that a leading `/` was
not absolute. It would indicate that Git for Windows
should add the prefix. So `//` is required for absolute
Unix-style paths. Yes, this is truly horrifying.
Emulate that behavior, I guess, but only for absolute
paths. We won't deal with the Git install prefix. Also,
give WSL users an escape hatch where they don't have to
think about this and can use the literal path that the
filesystem APIs provide (`//wsl.localhost/...`).
With some paths on Win32, we cannot identify the owner because it's on a
file share (WSL2 or UNC). In that case, don't fail, but identify that
the current user does not own the path. This matches Git for Windows
behavior.
`git_strarray_copy` is deprecated (and has been included in
`deprecated.h` for some time). It should not have remained in
the public `strarray.h`. Remove it.