Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge tag 'v1.8.1' #7

Open
wants to merge 2,169 commits into
base: master
Choose a base branch
from
Open

Merge tag 'v1.8.1' #7

wants to merge 2,169 commits into from

Conversation

Ensure that the main builds are all identical in nightly. Nightly should
only add new, specialized builds.
ci: improvements to prepare for Cygwin support
blame example: Fix support for line range in CLI
Bypass shallow clone support for in-memory repositories
examples: use unsigned int for bitfields
zlib: upgrade bundled zlib to v1.3
Passing a function pointer with different parameters is UB, even if
those params are (void *). Use our separate `_cb` functions that will do
the correct casting.
`git_commit_create_v` takes _commits_ not _commit ids_. Fix the test to
call the API correctly.
Some static code analysis complains that we're putting a stack variable
into client->parser.data (which persists past the function calls). Clear
that on function exit to avoid confusion.
git_diff_find_similar doesn't always remove unmodified deltas
ntlmclient: update to latest upstream ntlmclient
httpclient: clear client->parser.data after use
Let's use the latest & greatest for building our sanitizer / fuzzing
builds.
Using modern rsa (sha2-256 or sha2-512) with libssh2 is complicated and
depends on numerous factors for support. Just use ecdsa, which is
supported by both libssh2 v1.11.0 and modern OpenSSH (which we use for
our server in CI).
…n-push-example

Support authentication in push example
Emulating `git commit` is clunky - identifying your commit's parents is
part of the problem. Provide a helper to give you the parents given the
current repository state.
There's been drift in our nightly builds vs our main builds.
Unfortunately, sharing steps remains clunky with our matrix-heavy setup.
So this remains copy-pasta.
csware and others added 17 commits May 8, 2024 17:36
Revparse: Correctly accept ref with '@' at the end
remote: drop bitfields in git_remote_fetch_options
examples: fix memory leak in for-each-ref.c
Promote mode to `uint32_t` before comparing it to an `uint16_t` to avoid
mixed signed comparison warnings.
Avoid sloppy aliasing in our (re-)allocation, which is undefined
behavior. This has been problematic before and was helped by `volatile`
(see b62a6a1) but that is not
technically correct, and some compilers / architectures do not
understand that `ptr` is changing due to its aliasing.

Just make `git_array_alloc` behave like `realloc`, taking a `void *` and
returning a `void *`.
rand: avoid uninitialized loadavg warnings
cli: include alloca on illumos / solaris / sunos
Update git_array allocator to obey strict aliasing rules
…ness

tree: avoid mixed signedness comparison
@orgads orgads marked this pull request as draft June 5, 2024 19:39
@orgads
Copy link
Author

orgads commented Jun 5, 2024

It compiles now. Functionality is completely untested :)

I'll try to test it later, but I'm unsure what exactly requires testing.

@romkatv
Copy link
Owner

romkatv commented Jun 6, 2024

Do you see a way for me to verify the correctness of this merge without redoing all the work you've done?

@orgads
Copy link
Author

orgads commented Jun 6, 2024

It will be easier to review the merge by inspecting your changes. I created a tag in my fork named v1.8.1-stripped, that is v1.8.1 with removed tests, fuzzers and .github. You can fetch my fork, and compare v1.8.1-stripped to romkatv-1.8.1.

@romkatv
Copy link
Owner

romkatv commented Jun 6, 2024

This doesn't seem to make the job easier for me compared to doing the merge from scratch. With the hindsight it seems obvious given that there are no tests in my fork, and that my changes break the original tests.

I suggest that we abandon this merge. I apologize for making you spend your time based on my misleading promise.

@orgads
Copy link
Author

orgads commented Jun 6, 2024

I can try to create 2 diffs - one for your current master against libgit2 base, and another one for this merge against v1.8.1. Then you can compare the diffs. I think this should be feasible.

@romkatv
Copy link
Owner

romkatv commented Jun 6, 2024

Sorry, I cannot sign up for this.

I've just put the following disclaimer at the top of https://github.com/romkatv/gitstatus:

  • THE PROJECT HAS VERY LIMITED SUPPORT
  • NO NEW FEATURES ARE IN THE WORKS
  • MOST BUGS WILL GO UNFIXED

Note that powerlvel10k already had this disclaimer.

@orgads
Copy link
Author

orgads commented Jun 6, 2024

I understand you. I prepared the patch files, if you decide to give it a look.

Done by:

git ls-files src | sed 's:.*/:**/*:; s/fs_path/path/' | sort -u > order
git diff -O order 7f4fa178629d559c037a1f72f79f79af9c1ef8ce 2ecf33948a4df9ef45a66c68b8ef24a5e60eaac6 -- src | grep -v '^index' > orig.patch
git diff -O order HEAD^2 HEAD -- src | grep -v '^index' > merged.patch

The output is still not short, but it looks feasible to compare.

I ran tests with lg2 of before and after, and it's still considerably faster with your patches compare to upstream. For vscode repo, it takes ~3.5s with upstream, and around 2.3s with the patched one (times before and after the merge are similar).

orig.patch
merged.patch

@orgads orgads marked this pull request as ready for review June 7, 2024 10:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet