2590 Commits

Author SHA1 Message Date
Edward Thomson
933b62eedf checkout: make safe checkout the default
Make `GIT_CHECKOUT_SAFE` the default.  `NONE` is never what the user
wants _by default_; people expect checkout to, well, check things out.
Instead, it should be an opt-in "dry run" mode.

This removes some odd code in internal callers of `checkout` that takes
a `git_checkout_options` and updates the mode to `SAFE`.  This is now
unnecessary since everything has better defaults.
2024-10-19 23:01:35 +01:00
GravisZro
f1cac063ba Mandate C90 conformance
This PR ensures and enforces C90 conformance for all files C, including tests.

* Modify CMakeLists.txt to mandate C90 conformance (for better compiler compatibility)
* Update deps/ntlmclient/utf8.h to latest version
* Modify two tests and one header to use C comments instead of C++ comments
2024-10-18 22:26:57 +01:00
Edward Thomson
1ee2c33993 blame: provide line accessor
blame: introduce git_blame_line

Provide a structure that can provide the line-level information.
2024-10-18 10:02:02 +01:00
Edward Thomson
49402cc614 blame: add commit summary information 2024-10-18 10:02:02 +01:00
Edward Thomson
5378b80a9f blame: add final committer information
Our blame implementation tracks final _author_ but not final
_committer_. Make it so.
2024-10-18 10:02:02 +01:00
Edward Thomson
9cea29d154 blame: update API
Use `size_t` for sizes, standardize naming with the rest of the library.
2024-10-18 10:02:02 +01:00
John Colvin
c2d697e3ce s/size on bytes/size in bytes/ 2024-10-16 14:55:12 +01:00
Edward Thomson
751c68f1b6 Merge pull request #6877 from yerseg/ability_to_add_custom_x509_certs
ssl: ability to add raw X509 certs to the cert store
2024-10-02 13:09:31 +01:00
Edward Thomson
fa5b832544 openssl: point out the interaction between certs
The OpenSSL certificate setting functions _may_ interact; try to
document that a bit better.
2024-10-01 20:53:59 +01:00
Edward Thomson
2ba17303d0 Merge pull request #6882 from HamedMasafi/main
Add LIBGIT2_VER_CHECK Macro for Version Comparison
2024-09-30 23:26:41 +01:00
Edward Thomson
50d492063a Rename version constants to LIBGIT2_VERSION
For consistency, use LIBGIT2_VERSION_... as the constant name; deprecate
LIBGIT2_VER_... names.
2024-09-30 23:02:00 +01:00
Edward Thomson
e0b8b4b960 Add LIBGIT2_VERSION_CHECK and LIBGIT2_VERSION_NUMBER 2024-09-30 22:13:44 +01:00
Edward Thomson
54100fc081 Update include/git2/common.h 2024-09-29 22:58:39 +01:00
Edward Thomson
9ddd72f22a Merge pull request #6875 from roberth/mempack-thin-packfile 2024-09-27 17:20:00 +02:00
Robert Hensing
f9c35fb509 Add git_mempack_write_thin_pack
Unlike existing functions, this produces a _thin_ packfile by
making use of the fact that only new objects appear in the
mempack Object Database.

A thin packfile only contains certain objects, but not its whole
closure of references. This makes it suitable for efficiently
writing sets of new objects to a local repository, by avoiding
many small I/O operations.

This relies on write_pack (e.g. git_packbuilder_write_buf) to
implement the "recency order" optimization step.

Basic measurements comparing against the writing of individual
objects show a speedup during when writing large amounts of
content on machines with comparatively slow I/O operations,
and little to no change on machines with fast I/O operations.
2024-09-27 12:39:05 +02:00
Edward Thomson
9f3406163b Merge pull request #6804 from libgit2/ethomson/config_entry
config: remove `free` ptr from `git_config_entry`
2024-09-25 11:24:48 +02:00
Hamed Masafi
88bd589f7c Add VER_CHECK macro 2024-09-14 12:03:17 +03:30
Sergey Kazmin
6c9ef79aeb more verbose doc 2024-09-09 11:11:39 +03:00
Sergey Kazmin
ad04bf2566 ssl: ability to add raw X509 certs to the cert store 2024-09-06 14:59:37 +03:00
Robert Hensing
ab1b7aded5 Make packbuilder interruptible using progress callback
Specifically, forward errors from packbuilder->progress_cb

This allows the callback to gracefully terminate long-running
operations when the application is interrupted.

Interruption could be ^C in the terminal, but this could be any
other condition or event, as this is up to the callback function
to implement.
2024-09-02 17:09:13 +02:00
Anatol Pomozov
1f83c4652c Remove duplicating declaration of git_email_create_from_diff()
Exactly the same function already declared in include/git2/email.h
2024-07-10 17:16:32 -07:00
Anatol Pomozov
0c39ee1b1f Use typedef type for git_odb
This makes the function signature consistent with other cases
2024-07-10 17:14:09 -07:00
Edward Thomson
f3518eee26 Merge pull request #6706 from u-quark/signature-use-env-vars
Use environment variables when creating signatures
2024-07-10 08:31:15 +01:00
Eric Huss
ca1e3dbb06 Fix docs for git_odb_stream_read return value. 2024-06-22 12:59:37 -07:00
Edward Thomson
649ef1cca6 signature: add git_signature_default_from_env
People who are doing a commit expect a unified timestamp between
author and committer information when we're using the current timestamp.
Provide a single function that returns both author and committer
information so that they can have an identical timestamp when none is
specified in the environment.
2024-06-14 14:55:37 +02:00
Edward Thomson
e9d56b0b14 v1.8.2: update version numbers 2024-06-13 19:43:46 +02:00
Edward Thomson
49d3fadfca Revert "commit: fix const declaration"
This reverts commit cf19ddc522, which
was breaking for several projects.
2024-06-13 15:20:40 +02:00
Edward Thomson
834ec0f52f v1.8.1: update version numbers 2024-05-16 00:49:40 +01:00
Edward Thomson
2d649ccd23 remote: drop bitfields in git_remote_fetch_options
In attempting to make a clever change that added fetch options as flags,
while keeping ABI and API compatibility, we screwed up. Bitfields in
structs are implementation-specific and are not necessarily ABI
compatible across compilers.

Make `update_fetchhead` a flags value which is weirdly named, but
that's a future problem. This removes the `report_unchanged` option from
API.
2024-05-06 15:46:21 +01:00
Edward Thomson
aa093c4b07 config: remove free ptr from git_config_entry
This is a leftover leaky abstraction. If consumers aren't meant to
_call_ the `free` function then they shouldn't _see_ the free function.
Move it out into a `git_config_backend_entry` that is, well, produced by
the config backends.

This makes our code messier but is an improvement for consumers.
2024-04-29 22:58:09 +01:00
Edward Thomson
9ddf612a00 Merge pull request #6788 from libgit2/ethomson/user_agent
Allow more control over the user-agent
2024-04-18 21:02:59 +01:00
Edward Thomson
cc2a01524d docs: document git_remote_capability_t 2024-04-02 22:14:51 +01:00
Edward Thomson
6122f008c6 docs: it's _return_ not _returns_ 2024-04-02 22:14:51 +01:00
Edward Thomson
6bed71e05d docs: update includes
Update our headers so that they can include the necessary definitions.
Docs generators (in particular, `clang -Xclang -ast-dump`) were unable
to see the necessary definitions.
2024-04-02 22:14:47 +01:00
Edward Thomson
4839f4fbfc http: allow users more control over user-agent
Users can now override the "product" portion of the user-agent (via
GIT_OPT_SET_USER_AGENT_PRODUCT). This continues to default to "git/2.0",
but users may define their own string, or may opt out of sending a
user-agent entirely (by passing an empty string). Similarly, users may
now also opt-out of sending any additional "comment" information by
setting the GIT_OPT_SET_USER_AGENT value to an empty string.
2024-03-28 10:10:50 +00:00
Edward Thomson
5aa3ce7225 v1.8: update version numbers 2024-03-20 08:19:09 +00:00
Edward Thomson
dd35af37d8 repository: rearrange git_repository_item_t values
Update the ordering of `GIT_REPOSITORY_ITEM_WORKTREE_CONFIG` to avoid
breaking the ABI unnecessarily.
2024-03-17 21:52:11 +00:00
Edward Thomson
2eb3fecd03 fetch: avoid API breaking-changes from v1.7
Update `git_fetch_options` to break out the fetch options into
individual options. This prevents creating an API breaking change from
v1.7.0. `git_remote_update_tips` retains the `update_flags` to also
avoid an API breaking change.
2024-03-17 21:26:27 +00:00
Edward Thomson
cb4b61770f Merge branch 'main' into ethomson/worktree-config 2024-03-11 22:41:25 +00:00
Edward Thomson
b454eba9a7 errors: introduce GIT_ENOTSUPPORTED
libgit2 lacks many of the things that git supports. Give a reasonable
error code for these cases.
2024-03-11 21:07:21 +00:00
Edward Thomson
fb187bd003 config: return GIT_EREADONLY on read-only configs
Introduce `GIT_EREADONLY` and return it when a read-only configuration
is attempted to be mutated. This is preferred over the prior
`GIT_ENOTFOUND` which is not accurate.
2024-03-10 21:35:24 +00:00
Edward Thomson
b499a3465c config: introduce a writers list
Configuration read order and write order should be separated. For
example: configuration readers have a worktree level that is higher
priority than the local configuration _for reads_. Despite that, the
worktree configuration is not written to by default.

Use a new list, `writers`, to identify the write target.

To do this, we need another level of indirection between backend
instances (which are refcounted and shared amongst different git_config
instances) and the config reader/writer list (since each of those
different git_config instances can have different read/write
priorities).
2024-03-10 21:35:24 +00:00
Edward Thomson
85f5aec13e Merge remote-tracking branch 'origin/main' into worktree 2024-03-05 09:44:16 +00:00
Edward Thomson
885744a77e worktree: keep version number at 1
We aren't upgrading options struct version numbers when we make ABI
changes. This is a future (v2.0+) plan for libgit2. In the meantime,
keep the version numbers at 1.
2024-03-05 09:23:03 +00:00
Edward Thomson
70ab821607 config: improve documentation for config levels 2024-03-02 09:06:46 +00:00
Sean Allred
c4df10285e config: load worktree config from disk
Now that GIT_CONFIG_LEVEL_WORKTREE exists logically, define and load
$GIT_DIR/config.worktree into that level.
2024-02-20 11:30:34 -06:00
Sean Allred
aa31120f7c config: introduce GIT_CONFIG_LEVEL_WORKTREE
Introduce the logical concept of a worktree-level config.  The new
value sits between _LOCAL and _APP to allow `git_config_get_*` to
'just work'.

The assumption of how `git_config_get_*` works was tested
experimentally by setting _WORKTREE to some nonsense value (like -3)
and watching the new test fail.
2024-02-20 11:30:34 -06:00
Edward Thomson
39669956fb push: "push_options" are now "remote_push_options"
Since we use `git_push_options` as the options structure to our
`git_push` command, much like we do everywhere else, "push_options"
becomes ambiguous. "remote_options" isn't much better for us. Call them
"remote_push_options", which is still quite bad, and not particularly
insightful for end users, but at least something that we can discuss
unambiguously.
2024-02-06 20:40:26 +00:00
Edward Thomson
b4263c2303 Merge remote-tracking branch 'origin/main' into push-options 2024-02-06 20:38:55 +00:00
Edward Thomson
802f08c696 Merge pull request #6721 from vafada/ssh-timeout
set SSH timeout
2024-02-05 11:54:55 +00:00