* Re: [PATCH 2/1] test-lib-functions: add object size functions
From: René Scharfe @ 2023-12-19 16:42 UTC (permalink / raw)
To: Jeff King; +Cc: git, Ondrej Pohorelsky, brian m . carlson, Junio C Hamano
In-Reply-To: <20231214205936.GA2272813@coredump.intra.peff.net>
Am 14.12.23 um 21:59 schrieb Jeff King:
> On Wed, Dec 13, 2023 at 01:28:56PM +0100, René Scharfe wrote:
>
>> Add test_object_size and its helpers test_loose_object_size and
>> test_packed_object_size, which allow determining the size of a Git
>> object using only the low-level Git commands rev-parse and show-index.
>>
>> Use it in t6300 to replace the bare-bones function test_object_file_size
>> as a motivating example. There it provides the expected output of the
>> high-level Git command for-each-ref.
>
> This adds a packed-object function, but I doubt anybody actually calls
> it. If we're going to do that, it's probably worth adding some tests for
> "cat-file --batch-check" or similar.
Yes, and I was assuming that someone else would be eager to add such
tests. *ahem*
> At which point I wonder if rather than having a function for a single
> object, we are better off just testing the result of:
>
> git cat-file --batch-all-objects --unordered --batch-check='%(objectsize:disk)'
>
> against a single post-processed "show-index" invocation.
Sure, we might want to optimize for bulk-processing and possibly end up
only checking the size of single objects in t6300, making new library
functions unnecessary.
When dumping size information of multiple objects, it's probably a good
idea to include "%(objectname)" as well in the format.
You'd need one show-index call for each .idx file. A simple test would
only have a single one; a library function might need to handle multiple
packs.
>> So how about this? I'm a bit nervous about all the rules about output
>> descriptors and error propagation and whatnot in the test library, but
>> this implementation seems simple enough and might be useful in more than
>> one test. No idea how to add support for alternate object directories,
>> but I doubt we'll ever need it.
>
> I'm not sure that we need to do anything special with output
> redirection. Shouldn't these functions just send errors to stderr as
> usual? If they are run inside a test_expect block, that goes to
> descriptor 4 (which is either /dev/null or the original stderr,
> depending on whether "-v" was used).
Good point. My bad excuse is that I copied the redirection to fd 4 from
test_grep.
>> + git show-index <"$idx" |
>> + awk -v oid="$oid" -v end="$end" '
>> + $2 == oid {start = $1}
>> + {offsets[$1] = 1}
>> + END {
>> + if (!start || start >= end)
>> + exit 1
>> + for (o in offsets)
>> + if (start < o && o < end)
>> + end = o
>> + print end - start
>> + }
>> + ' && return 0
>
> I was confused at first, because I didn't see any sorting happening. But
> if I understand correctly, you're just looking for the smallest "end"
> that comes after the start of the object we're looking for. Which I
> think works.
Yes, calculating the minimum offset suffices when handling a single
object -- no sorting required. For bulk mode we'd better sort, of
course:
git show-index <"$idx" |
sort -n |
awk -v end="$end" '
NR > 1 {print oid, $1 - start}
{start = $1; oid = $2}
END {print oid, end - start}
'
No idea how to make such a thing robust against malformed or truncated
output from show-index, but perhaps that's not necessary, depending on
how the result is used.
René
^ permalink raw reply
* Re: What's cooking in git.git (Dec 2023, #03; Mon, 18)
From: René Scharfe @ 2023-12-19 16:42 UTC (permalink / raw)
To: Junio C Hamano, git
In-Reply-To: <xmqqr0jjc86e.fsf@gitster.g>
Am 19.12.23 um 02:06 schrieb Junio C Hamano:
> * rs/t6300-compressed-size-fix (2023-12-13) 2 commits
> - test-lib-functions: add object size functions
> - t6300: avoid hard-coding object sizes
>
> Test fix.
>
> Will merge to 'next'?
> source: <9feeb6cf-aabf-4002-917f-3f6c27547bc8@web.de>
> source: <ff735aac-b60b-4d52-a6dc-180ab504fc8d@web.de>
The first patch is good to go. The seconds one isn't; please drop it.
René
^ permalink raw reply
* Is --minimal ever not the right thing?
From: Tao Klerks @ 2023-12-19 16:10 UTC (permalink / raw)
To: git
Hi folks,
A user today showed me a situation where `git diff` (and `git blame`)
seemed to be doing the wrong thing: where two big blocks of text were
removed from a file, leaving 4 lines untouched in the middle, the
default diff was noting all three regions as lines removed, with those
4 "untouched" lines as *added* in the same place.
We compared to another diffing tool, p4merge, and that was showing
"the right thing" - two deleted regions with untouched lines in the
middle.
We realized that `--minimal` does "the right thing" in git, and you
can set up `diff.algorithm` config to use it by default in `git diff`
(although `git blame` doesn't currently/yet support it... a small
enhancement opportunity there :) ), but that raises two questions:
1. Is there any practical reason for any user *not* to set
`diff.algorithm` to `minimal`? Has anyone ever done an analysis of the
performance cost (or "diff readability cost", if that is a thing) of
"minimal" vs "default"?
2. If "minimal" is just better, and its higher computational cost is
effectively trivial, then why wouldn't we change the default?
I suspect this comes down to situations where git does big diffs
behind the scenes...? But I don't know offhand.
Any feedback would be most appreciated!
Thanks,
Tao
^ permalink raw reply
* Re: [PATCH] doc: format.notes specify a ref under refs/notes/ hierarchy
From: Jiang Xin @ 2023-12-19 15:33 UTC (permalink / raw)
To: Junio C Hamano, Teng Long, Jean-Noël Avila, Peter Pan
Cc: Patrick Steinhardt, git, Ramsay Jones
In-Reply-To: <xmqq1qbjij0f.fsf@gitster.g>
On Tue, Dec 19, 2023 at 12:16 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> Patrick Steinhardt <ps@pks.im> writes:
> > the translation changes with a big grain of salt though,
>
> Hopefully pinging Jiang would be sufficient to ask help from the
> French, Chinese, and Taiwaneese translation teams.
The l10n team has a command line tool called git-po-helper that can
check for spelling errors in translations, such as mismatched command
names, configuration variables. A new pattern will be added to find
mismatched reference prefixes, and the following typos will be fixed
during the next localization window.
> > diff --git a/po/fr.po b/po/fr.po
> > index ee2e610ef1..744550b056 100644
> > --- a/po/fr.po
> > +++ b/po/fr.po
> > @@ -19773,7 +19773,7 @@ msgid ""
> > "Neither worked, so we gave up. You must fully qualify the ref."
> > msgstr ""
> > "La destination que vous avez fournie n'est pas un nom de référence complète\n"
> > -"(c'est-à-dire commençant par \"ref/\"). Essai d'approximation par :\n"
> > +"(c'est-à-dire commençant par \"refs/\"). Essai d'approximation par :\n"
> > "\n"
> > "- Recherche d'une référence qui correspond à '%s' sur le serveur distant.\n"
> > "- Vérification si la <source> en cours de poussée ('%s')\n"
> > diff --git a/po/zh_CN.po b/po/zh_CN.po
> > index 86402725b2..eb47e8f9b7 100644
> > --- a/po/zh_CN.po
> > +++ b/po/zh_CN.po
> > @@ -13224,8 +13224,8 @@ msgid ""
> > msgid_plural ""
> > "Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
> > "to delete them, use:"
> > -msgstr[0] "注意:ref/remotes 层级之外的一个分支未被移除。要删除它,使用:"
> > -msgstr[1] "注意:ref/remotes 层级之外的一些分支未被移除。要删除它们,使用:"
> > +msgstr[0] "注意:refs/remotes 层级之外的一个分支未被移除。要删除它,使用:"
> > +msgstr[1] "注意:refs/remotes 层级之外的一些分支未被移除。要删除它们,使用:"
> >
> > #: builtin/remote.c
> > #, c-format
> > diff --git a/po/zh_TW.po b/po/zh_TW.po
> > index f777a0596f..b2a79cdd93 100644
> > --- a/po/zh_TW.po
> > +++ b/po/zh_TW.po
> > @@ -13109,7 +13109,7 @@ msgid ""
> > msgid_plural ""
> > "Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
> > "to delete them, use:"
> > -msgstr[0] "注意:ref/remotes 層級之外的一個分支未被移除。要刪除它,使用:"
> > +msgstr[0] "注意:refs/remotes 層級之外的一個分支未被移除。要刪除它,使用:"
> >
> > #: builtin/remote.c
> > #, c-format
^ permalink raw reply
* Re: [PATCH 6/8] SubmittingPatches: clarify GitHub visual
From: René Scharfe @ 2023-12-19 14:44 UTC (permalink / raw)
To: Josh Soref via GitGitGadget, git; +Cc: Elijah Newren, Josh Soref
In-Reply-To: <043d2a24202d39c5564e4a4369c86ae4648dd721.1702975320.git.gitgitgadget@gmail.com>
Am 19.12.23 um 09:41 schrieb Josh Soref via GitGitGadget:
> From: Josh Soref <jsoref@gmail.com>
>
> Some people would expect a cross to be upright, and potentially have
> unequal lengths...
There are lots of types of crosses. And while looking them up on
Wikipedia I learned today that an x-cross is called "saltire" in
English. I only knew it as St. Andrew's cross before.
> GitHub uses a white x overlaying a solid red circle to indicate failure.
They call it "x-circle-fill"
(https://primer.github.io/octicons/x-circle-fill-16).
>
> Signed-off-by: Josh Soref <jsoref@gmail.com>
> ---
> Documentation/SubmittingPatches | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
> index d7a84f59478..8e19c7f82e4 100644
> --- a/Documentation/SubmittingPatches
> +++ b/Documentation/SubmittingPatches
> @@ -604,7 +604,7 @@ to your fork of Git on GitHub. You can monitor the test state of all your
> branches here: `https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml`
>
> If a branch did not pass all test cases then it is marked with a red
> -cross. In that case you can click on the failing job and navigate to
> ++x+. In that case you can click on the failing job and navigate to
In the commit message you say the x is white, here it's red, so what is
it? IIUC the circle is red and the x-cross inside is the same color as
the background, i.e. white in light mode and black in dark mode. No
idea how to express that in one word. Perhaps "red circle containing
and x-cross"?
René
^ permalink raw reply
* Problem with commit-graph verify
From: Anton Sergeev @ 2023-12-19 13:39 UTC (permalink / raw)
To: git
Hi folks,
I have a problem with 'commit-graph verify' in poco repository ([1]).
A commit appeared there with an odd timestamp and time zone ([2]):
git show --no-patch --pretty=%ai
381ac1d9a82c9682a5046dd51802a687a81ace91
# 2106-02-07 06:28:18 -11309508
The main problem is that the 'commit-graph verify' return error:
git commit-graph write
git commit-graph verify
# commit-graph generation for commit
1763a5017d8c0a9af6094fde91c43a5722bbde4c is 1699836629 < 4702109779
# Verifying commits in commit graph: 100% (9489/9489), done.
echo $?
# 1
And this results in an error on fsck:
git fsck
# ...
# error in commit 381ac1d9a82c9682a5046dd51802a687a81ace91:
badTimezone: invalid author/committer line - bad time zone
# ...
# commit-graph generation for commit
1763a5017d8c0a9af6094fde91c43a5722bbde4c is 1699836629 < 4702109779
# ...
echo $?
# 20
I found that first error can be masked using 'fsck.skiplist' file. But
can't find how to mask the second.
Is there a workaround for this case?
System info:
* git version: 2.43.0
* OS: Debian GNU/Linux 11 (bullseye), x86_64
Notes:
* This error originally occurred on a local GitLab installation, that
periodically run fsck on all repos. And the poco repo mirror in our
GitLab instance is now marked as failed.
* Another strange thing about this commit is that git can't find any
belonging branch for it, but parent and child commits are has ones:
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
-n10 4261-move-autocommit-abstractsession
# ac7e39ff8 2023-11-14 | Fixed indentation in ci.yml
(4261-move-autocommit-abstractsession) [Friedrich Wilckens]
# 543ea150a 2023-11-14 | Github workflow: re-activated
linux-gcc-make-postgres [Friedrich Wilckens]
# a2d10dffe 2023-11-13 | PostgreSQL SessionImpl: reuse autocommit
flag of AbstractSessionImpl. [Friedrich Wilckens]
# d32f62031 2023-11-13 | MySQL SessionImpl: make sure autocommit
mode is on when session is openend or reset. [Friedrich Wilckens]
# c919b7f79 2023-11-13 | chore(CI): re-enable mysql [Alex Fabijanic]
# ffd0007f2 2023-11-13 | fix(Data::AbstracSessionImpl): protect
autocommit feature handlers #4261 [Alex Fabijanic]
# 1763a5017 2023-11-12 | Brought MySQL backend in line with
_autoCommit flag of AbstractSessionImpl. [Friedrich Wilckens]
# 381ac1d9a 2106-02-07 | feat(Data::AbstractSessionImpl): add
autoCommit property and tests #4261 [Alex Fabijanic] <---
# 18eea1bb7 2023-11-11 | temporarily comment failing mysql ci until
fixed [Aleksandar Fabijanic]
# 6a5387ec2 2023-11-11 | add visitor pattern implementation for
Poco::Dynamic::Var (#4144) [Alexander B]
for _c in 1763a5017 381ac1d9a 18eea1bb7; do
echo "* $_c:";
git branch --contains=$_c | sed 's/^/ /';
done
# * 1763a5017:
# 4261-move-autocommit-abstractsession
# * 381ac1d9a:
# * 18eea1bb7:
#
2366-pocoprocesslaunch-unix-possible-memory-leak-when-launching-invalid-command
# 4261-move-autocommit-abstractsession
# 569-DateTimeParser-cherry-pick
# devel
Links:
[1]: https://github.com/pocoproject/poco
[2]:
https://github.com/pocoproject/poco/commit/381ac1d9a82c9682a5046dd51802a687a81ace91
^ permalink raw reply
* Re: [PATCH] git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
From: René Scharfe @ 2023-12-19 13:36 UTC (permalink / raw)
To: Junio C Hamano, Phillip Wood
Cc: git, AtariDreams via GitGitGadget, Seija Kijin, Jeff King,
Phillip Wood
In-Reply-To: <xmqqa5q7e00q.fsf@gitster.g>
Am 18.12.23 um 21:19 schrieb Junio C Hamano:
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>> Thanks for the comprehensive commit message, I agree that we'd be
>> better off avoiding adding a fallback. The patch looks good, I did
>> wonder if we really need to covert all of these functions for a
>> test-balloon but the patch is still pretty small overall.
>
> I do have to wonder, though, if we want to be a bit more careful
> than just blindly trusting the platform (i.e. <stdbool.h> might
> exist and __STDC_VERSION__ may say C99, but under the hood their
> implementation may be buggy and coerce the result of an assignment
> of 2 to be different from assigning true).
We could add a compile-time check like below. I can't decide if this
would be prudent or paranoid. It's cheap, though, so perhaps just add
this tripwire for non-conforming compilers without making a judgement?
René
diff --git a/git-compat-util.h b/git-compat-util.h
index 603c97e3b3..8212feaa37 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -705,7 +705,7 @@ static inline bool skip_prefix(const char *str, const char *prefix,
{
do {
if (!*prefix) {
- *out = str;
+ *out = str + BUILD_ASSERT_OR_ZERO((bool)1 == (bool)2);
return true;
}
} while (*str++ == *prefix++);
^ permalink raw reply related
* Re: [PATCH] rebase: use strvec_pushf() for format-patch revisions
From: Patrick Steinhardt @ 2023-12-19 12:25 UTC (permalink / raw)
To: René Scharfe; +Cc: Git List
In-Reply-To: <4ab7431c-6c1b-448c-b4d2-e8b9be0e4eef@web.de>
[-- Attachment #1: Type: text/plain, Size: 2991 bytes --]
On Tue, Dec 19, 2023 at 08:42:18AM +0100, René Scharfe wrote:
> In run_am(), a strbuf is used to create a revision argument that is then
> added to the argument list for git format-patch using strvec_push().
> Use strvec_pushf() to add it directly instead, simplifying the code.
>
> Signed-off-by: René Scharfe <l.s.r@web.de>
Thanks, this simplification looks good to me!
Patrick
> ---
> Formatted with --inter-hunk-context=14 for easier review.
>
> builtin/rebase.c | 17 ++++++-----------
> 1 file changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index 9f8192e0a5..ddde4cbb87 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -582,7 +582,6 @@ static int run_am(struct rebase_options *opts)
> {
> struct child_process am = CHILD_PROCESS_INIT;
> struct child_process format_patch = CHILD_PROCESS_INIT;
> - struct strbuf revisions = STRBUF_INIT;
> int status;
> char *rebased_patches;
>
> @@ -615,34 +614,32 @@ static int run_am(struct rebase_options *opts)
> return run_command(&am);
> }
>
> - strbuf_addf(&revisions, "%s...%s",
> - oid_to_hex(opts->root ?
> - /* this is now equivalent to !opts->upstream */
> - &opts->onto->object.oid :
> - &opts->upstream->object.oid),
> - oid_to_hex(&opts->orig_head->object.oid));
> -
> rebased_patches = xstrdup(git_path("rebased-patches"));
> format_patch.out = open(rebased_patches,
> O_WRONLY | O_CREAT | O_TRUNC, 0666);
> if (format_patch.out < 0) {
> status = error_errno(_("could not open '%s' for writing"),
> rebased_patches);
> free(rebased_patches);
> strvec_clear(&am.args);
> return status;
> }
>
> format_patch.git_cmd = 1;
> strvec_pushl(&format_patch.args, "format-patch", "-k", "--stdout",
> "--full-index", "--cherry-pick", "--right-only",
> "--default-prefix", "--no-renames",
> "--no-cover-letter", "--pretty=mboxrd", "--topo-order",
> "--no-base", NULL);
> if (opts->git_format_patch_opt.len)
> strvec_split(&format_patch.args,
> opts->git_format_patch_opt.buf);
> - strvec_push(&format_patch.args, revisions.buf);
> + strvec_pushf(&format_patch.args, "%s...%s",
> + oid_to_hex(opts->root ?
> + /* this is now equivalent to !opts->upstream */
> + &opts->onto->object.oid :
> + &opts->upstream->object.oid),
> + oid_to_hex(&opts->orig_head->object.oid));
> if (opts->restrict_revision)
> strvec_pushf(&format_patch.args, "^%s",
> oid_to_hex(&opts->restrict_revision->object.oid));
> @@ -665,10 +662,8 @@ static int run_am(struct rebase_options *opts)
> "As a result, git cannot rebase them."),
> opts->revisions);
>
> - strbuf_release(&revisions);
> return status;
> }
> - strbuf_release(&revisions);
>
> am.in = open(rebased_patches, O_RDONLY);
> if (am.in < 0) {
> --
> 2.43.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* [BUG] `git add -p` seems to corrupt a sparse index
From: Sean Allred @ 2023-12-19 11:20 UTC (permalink / raw)
To: git
What did you do before the bug happened? (Steps to reproduce your issue)
git init
for dir in a b c; do mkdir $dir && seq 1 20 > $dir/file; done
git add -A && git commit -m'Some content'
git sparse-checkout set --sparse-index b
seq 1 20 > b/file-2
git add -N b/file-2
git add -p b/file-2
git status
What did you expect to happen? (Expected behavior)
I expected to be dropped into the interactive-add workflow / see my
changes in git-status.
What happened instead? (Actual behavior)
git-add reports 'No changes' and git-status reports nothing at all
(empty output).
The original internal report also was able reproduce messaging like
fatal: cache entry out of order
warning: die() called many times. Recursion error or racy threaded death!
fatal: cache entry out of order
fatal: cache entry out of order
fatal: cache entry out of order
though I've not been able to reproduce that myself. It seems relevant
/ worth noting that core.fsmonitor would be set to 'true' in that
repository.
What's different between what you expected and what actually happened?
git-status appears to silently crash in the error case.
Compare the broken workflow with any of the following variants (all of
which work as expected):
- don't use `--intent-to-add`:
git init
for dir in a b c; do mkdir $dir && seq 1 20 > $dir/file; done
git add -A && git commit -m'Some content'
git sparse-checkout set --sparse-index b
seq 1 20 > b/file-2
git add b/file-2
git status
- don't use `sparse-checkout` at all:
git init
for dir in a b c; do mkdir $dir && seq 1 20 > $dir/file; done
git add -A && git commit -m'Some content'
seq 1 20 > b/file-2
git add -N b/file-2
git add -p b/file-2
git status
- don't use `--sparse-index` specifically:
git init
for dir in a b c; do mkdir $dir && seq 1 20 > $dir/file; done
git add -A && git commit -m'Some content'
git sparse-checkout set b
seq 1 20 > b/file-2
git add -N b/file-2
git add -p b/file-2
git status
Anything else you want to add:
Seems very related to the use of sparse-index.
Please review the rest of the bug report below.
You can delete any lines you don't wish to share.
[System Info]
git version:
git version 2.43.0.windows.1
cpu: x86_64
built from commit: 4b968f3ea3b32a7bc50846bab49f3f381841d297
sizeof-long: 4
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Windows 10.0 19044
compiler info: gnuc: 13.2
libc info: no libc information available
$SHELL (typically, interactive shell): C:\Program Files\Git\usr\bin\bash.exe
[Enabled Hooks]
--
Sean Allred
^ permalink raw reply
* Re: [PATCH] rebase: use strvec_pushf() for format-patch revisions
From: Phillip Wood @ 2023-12-19 11:07 UTC (permalink / raw)
To: René Scharfe, Git List
In-Reply-To: <4ab7431c-6c1b-448c-b4d2-e8b9be0e4eef@web.de>
Hi René
On 19/12/2023 07:42, René Scharfe wrote:
> In run_am(), a strbuf is used to create a revision argument that is then
> added to the argument list for git format-patch using strvec_push().
> Use strvec_pushf() to add it directly instead, simplifying the code.
This looks like a nice simplification and the extra context lines in the
patch are much appreciated
Thanks
Phillip
> Signed-off-by: René Scharfe <l.s.r@web.de>
> ---
> Formatted with --inter-hunk-context=14 for easier review.
>
> builtin/rebase.c | 17 ++++++-----------
> 1 file changed, 6 insertions(+), 11 deletions(-)
>
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index 9f8192e0a5..ddde4cbb87 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -582,7 +582,6 @@ static int run_am(struct rebase_options *opts)
> {
> struct child_process am = CHILD_PROCESS_INIT;
> struct child_process format_patch = CHILD_PROCESS_INIT;
> - struct strbuf revisions = STRBUF_INIT;
> int status;
> char *rebased_patches;
>
> @@ -615,34 +614,32 @@ static int run_am(struct rebase_options *opts)
> return run_command(&am);
> }
>
> - strbuf_addf(&revisions, "%s...%s",
> - oid_to_hex(opts->root ?
> - /* this is now equivalent to !opts->upstream */
> - &opts->onto->object.oid :
> - &opts->upstream->object.oid),
> - oid_to_hex(&opts->orig_head->object.oid));
> -
> rebased_patches = xstrdup(git_path("rebased-patches"));
> format_patch.out = open(rebased_patches,
> O_WRONLY | O_CREAT | O_TRUNC, 0666);
> if (format_patch.out < 0) {
> status = error_errno(_("could not open '%s' for writing"),
> rebased_patches);
> free(rebased_patches);
> strvec_clear(&am.args);
> return status;
> }
>
> format_patch.git_cmd = 1;
> strvec_pushl(&format_patch.args, "format-patch", "-k", "--stdout",
> "--full-index", "--cherry-pick", "--right-only",
> "--default-prefix", "--no-renames",
> "--no-cover-letter", "--pretty=mboxrd", "--topo-order",
> "--no-base", NULL);
> if (opts->git_format_patch_opt.len)
> strvec_split(&format_patch.args,
> opts->git_format_patch_opt.buf);
> - strvec_push(&format_patch.args, revisions.buf);
> + strvec_pushf(&format_patch.args, "%s...%s",
> + oid_to_hex(opts->root ?
> + /* this is now equivalent to !opts->upstream */
> + &opts->onto->object.oid :
> + &opts->upstream->object.oid),
> + oid_to_hex(&opts->orig_head->object.oid));
> if (opts->restrict_revision)
> strvec_pushf(&format_patch.args, "^%s",
> oid_to_hex(&opts->restrict_revision->object.oid));
> @@ -665,10 +662,8 @@ static int run_am(struct rebase_options *opts)
> "As a result, git cannot rebase them."),
> opts->revisions);
>
> - strbuf_release(&revisions);
> return status;
> }
> - strbuf_release(&revisions);
>
> am.in = open(rebased_patches, O_RDONLY);
> if (am.in < 0) {
> --
> 2.43.0
>
^ permalink raw reply
* RE: Problems with Windows + schannel + http.sslCert
From: Ragesh Krishna @ 2023-12-19 10:18 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git@vger.kernel.org
In-Reply-To: <710affcd-f6bf-371c-d7e3-8bce3b01da3c@gmx.de>
Hi Johannes,
> However, contrary to what `git -c http.sslBackend=list ls-remote <url>` says on Windows, `git -c http.sslBackend=openssl ls-remote <url>` should work, too.
Thanks for the tip! Although I haven't made any further attempts to try and force openssl, I was able to get client auth to work with Git for Windows by ensuring the client cert and root cert are present in the Windows certificate store and then setting "http.sslCert" to "CurrentUser\\MY\\{certificate thumbprint}}". This gets everything to fall into place and I suspect that it is the "correct" way, for better or worse, to make it work on Windows.
One thing that tripped me up was that my root CA was using ed25519 for signatures, and my installation of Windows did not seem to like that one bit. Switching to ECDSA seemed to fix it. I suppose that's another rabbit hole I need to jump into, but it has nothing to do with Git :)
Regards,
-- Ragesh.
^ permalink raw reply
* [PATCH 8/8] SubmittingPatches: hyphenate non-ASCII
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
Git documentation does this with the exception of ancient release notes.
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index b4fa52ae348..3c53592cfc8 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -700,7 +700,7 @@ message to an external program, and this is a handy way to drive
`git am`. However, if the message is MIME encoded, what is
piped into the program is the representation you see in your
`*Article*` buffer after unwrapping MIME. This is often not what
-you would want for two reasons. It tends to screw up non ASCII
+you would want for two reasons. It tends to screw up non-ASCII
characters (most notably in people's names), and also
whitespaces (fatal in patches). Running "C-u g" to display the
message in raw form before using "|" to run the pipe can work
--
gitgitgadget
^ permalink raw reply related
* [PATCH 7/8] SubmittingPatches: clarify GitHub artifact format
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
GitHub wraps artifacts generated by workflows in a .zip file.
Internally workflows can package anything they like in them.
A recently generated failure artifact had the form:
windows-artifacts.zip
Length Date Time Name
--------- ---------- ----- ----
76001695 12-19-2023 01:35 artifacts.tar.gz
11005650 12-19-2023 01:35 tracked.tar.gz
--------- -------
87007345 2 files
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 8e19c7f82e4..b4fa52ae348 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -606,7 +606,8 @@ branches here: `https://github.com/<Your GitHub handle>/git/actions/workflows/ma
If a branch did not pass all test cases then it is marked with a red
+x+. In that case you can click on the failing job and navigate to
"ci/run-build-and-tests.sh" and/or "ci/print-test-failures.sh". You
-can also download "Artifacts" which are tarred (or zipped) archives
+can also download "Artifacts" which are zip archives containing
+tarred (or zipped) archives
with test data relevant for debugging.
Then fix the problem and push your fix to your GitHub fork. This will
--
gitgitgadget
^ permalink raw reply related
* [PATCH 6/8] SubmittingPatches: clarify GitHub visual
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
Some people would expect a cross to be upright, and potentially have
unequal lengths...
GitHub uses a white x overlaying a solid red circle to indicate failure.
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index d7a84f59478..8e19c7f82e4 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -604,7 +604,7 @@ to your fork of Git on GitHub. You can monitor the test state of all your
branches here: `https://github.com/<Your GitHub handle>/git/actions/workflows/main.yml`
If a branch did not pass all test cases then it is marked with a red
-cross. In that case you can click on the failing job and navigate to
++x+. In that case you can click on the failing job and navigate to
"ci/run-build-and-tests.sh" and/or "ci/print-test-failures.sh". You
can also download "Artifacts" which are tarred (or zipped) archives
with test data relevant for debugging.
--
gitgitgadget
^ permalink raw reply related
* [PATCH 5/8] SubmittingPatches: improve extra tags advice
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
Current statistics show a strong preference to only capitalize the first
letter in a hyphenated tag, but that some guidance would be helpful:
git log |
perl -ne 'next unless /^\s+(?:Signed-[oO]ff|Acked)-[bB]y:/;
s/^\s+//;s/:.*/:/;print'|
sort|uniq -c|sort -n
2 Signed-off-By:
4 Signed-Off-by:
22 Acked-By:
47 Signed-Off-By:
2202 Acked-by:
95315 Signed-off-by:
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 694a7bafb68..d7a84f59478 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -369,6 +369,9 @@ If you like, you can put extra tags at the end:
You can also create your own tag or use one that's in common usage
such as "Thanks-to:", "Based-on-patch-by:", or "Improved-by:".
+Extra tags should only capitalize the very first letter, i.e. favor
+"Signed-off-by" over "Signed-Off-By" and "Acked-by:" over "Acked-By".
+
[[git-tools]]
=== Generate your patch using Git tools out of your commits.
--
gitgitgadget
^ permalink raw reply related
* [PATCH 4/8] SubmittingPatches: update extra tags list
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
Add items with at least 100 uses:
- Co-authored-by
- Helped-by
- Mentored-by
- Suggested-by
Updating the create suggestion to something less commonly used.
git log |
perl -ne 'next unless /^\s+[A-Z][a-z]+-\S+:/;s/^\s+//;s/:.*/:/;print'|
sort|uniq -c|sort -n|grep '[0-9][0-9] '
11 Helped-By:
13 Message-ID:
14 Reported-By:
22 Acked-By:
27 Inspired-by:
29 Requested-by:
35 Original-patch-by:
43 Contributions-by:
47 Signed-Off-By:
65 Based-on-patch-by:
68 Thanks-to:
88 Improved-by:
145 Co-authored-by:
171 Noticed-by:
182 Tested-by:
361 Suggested-by:
469 Mentored-by:
1196 Reported-by:
1727 Helped-by:
2177 Reviewed-by:
2202 Acked-by:
95313 Signed-off-by:
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 32e90238777..694a7bafb68 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -348,6 +348,8 @@ If you like, you can put extra tags at the end:
. `Reported-by:` is used to credit someone who found the bug that
the patch attempts to fix.
+. `Noticed-by:` liked `Reported-by:` indicates someone who noticed
+ the item being fixed.
. `Acked-by:` says that the person who is more familiar with the area
the patch attempts to modify liked the patch.
. `Reviewed-by:`, unlike the other tags, can only be offered by the
@@ -355,9 +357,17 @@ If you like, you can put extra tags at the end:
patch after a detailed analysis.
. `Tested-by:` is used to indicate that the person applied the patch
and found it to have the desired effect.
+. `Co-authored-by:` is used to indicate that multiple people
+ contributed to the work of a patch.
+. `Helped-by:` is used to credit someone with helping develop a
+ patch.
+. `Mentored-by:` is used to credit someone with helping develop a
+ patch.
+. `Suggested-by:` is used to credit someone with suggesting the idea
+ for a patch.
You can also create your own tag or use one that's in common usage
-such as "Thanks-to:", "Based-on-patch-by:", or "Mentored-by:".
+such as "Thanks-to:", "Based-on-patch-by:", or "Improved-by:".
[[git-tools]]
=== Generate your patch using Git tools out of your commits.
--
gitgitgadget
^ permalink raw reply related
* [PATCH 3/8] SubmittingPatches: drop ref to "What's in git.git"
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
"What's in git.git" was last seen in 2010:
https://lore.kernel.org/git/?q=%22what%27s+in+git.git%22
https://lore.kernel.org/git/7vaavikg72.fsf@alter.siamese.dyndns.org/
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/SubmittingPatches | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index bce7f97815c..32e90238777 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -570,7 +570,7 @@ their trees themselves.
master).
* Read the Git mailing list, the maintainer regularly posts messages
- entitled "What's cooking in git.git" and "What's in git.git" giving
+ entitled "What's cooking in git.git" giving
the status of various proposed changes.
== GitHub CI[[GHCI]]
--
gitgitgadget
^ permalink raw reply related
* [PATCH 2/8] CodingGuidelines: write punctuation marks
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
- Match style in Release Notes
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/CodingGuidelines | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index af94ed3a75d..578587a4715 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -578,7 +578,7 @@ Externally Visible Names
. The variable name describes the effect of tweaking this knob.
The section and variable names that consist of multiple words are
- formed by concatenating the words without punctuations (e.g. `-`),
+ formed by concatenating the words without punctuation marks (e.g. `-`),
and are broken using bumpyCaps in documentation as a hint to the
reader.
--
gitgitgadget
^ permalink raw reply related
* [PATCH 1/8] CodingGuidelines: move period inside parentheses
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref, Josh Soref
In-Reply-To: <pull.1623.git.1702975319.gitgitgadget@gmail.com>
From: Josh Soref <jsoref@gmail.com>
The contents within parenthesis should be omittable without resulting
in broken text.
Eliding the parenthesis left a period to end a run without any content.
Signed-off-by: Josh Soref <jsoref@gmail.com>
---
Documentation/CodingGuidelines | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 8ed517a5ca0..af94ed3a75d 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -450,7 +450,7 @@ For C programs:
one of the approved headers that includes it first for you. (The
approved headers currently include "builtin.h",
"t/helper/test-tool.h", "xdiff/xinclude.h", or
- "reftable/system.h"). You do not have to include more than one of
+ "reftable/system.h".) You do not have to include more than one of
these.
- A C file must directly include the header files that declare the
--
gitgitgadget
^ permalink raw reply related
* [PATCH 0/8] Minor improvements to CodingGuidelines and SubmittingPatches
From: Josh Soref via GitGitGadget @ 2023-12-19 8:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Josh Soref
These are a bunch of things I've run into over my past couple of attempts to
contribute to Git.
* Incremental punctuation/grammatical improvements
* Update extra tags suggestions based on common usage
* drop reference to an article that was discontinued over a decade ago
* update GitHub references
* harmonize non-ASCII while I'm here
Note that I'm trying to do things "in the neighborhood". It'll be slower
than me replacing things topically, but hopefully easier for others to
digest. My current estimate is a decade or two :).
Josh Soref (8):
CodingGuidelines: move period inside parentheses
CodingGuidelines: write punctuation marks
SubmittingPatches: drop ref to "What's in git.git"
SubmittingPatches: update extra tags list
SubmittingPatches: improve extra tags advice
SubmittingPatches: clarify GitHub visual
SubmittingPatches: clarify GitHub artifact format
SubmittingPatches: hyphenate non-ASCII
Documentation/CodingGuidelines | 4 ++--
Documentation/SubmittingPatches | 24 +++++++++++++++++++-----
2 files changed, 21 insertions(+), 7 deletions(-)
base-commit: 624eb90fa8f65a79396615f3c2842ac5a3743350
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1623%2Fjsoref%2Fdocumentation-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1623/jsoref/documentation-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1623
--
gitgitgadget
^ permalink raw reply
* Re: Unable to install git-2.43.0 from source on macOS Big Sur 11.7.10
From: Eric Sunshine @ 2023-12-19 7:55 UTC (permalink / raw)
To: Jonathan Abrams; +Cc: git@vger.kernel.org
In-Reply-To: <IA1PR12MB60445F50DD0F844B2B779BA8B890A@IA1PR12MB6044.namprd12.prod.outlook.com>
On Mon, Dec 18, 2023 at 7:03 AM Jonathan Abrams
<jonathansabrams@outlook.com> wrote:
> The contents of "config.mak.autogen" are as follows:
> --
> CURL_LDFLAGS=-L/Users/jonathana/opt/anaconda3/lib -lcurl
> CHARSET_LIB=-liconv
So, 'configure' found a "libiconv". Okay.
> The last output of make V=1 all is as follows.
> --
> gcc -g -O2 -I. -o git-daemon daemon.o common-main.o libgit.a xdiff/lib.a reftable/libreftable.a libgit.a -lz -liconv -liconv
And it's linking against "libiconv" (the "-iconv" part). Good.
> Undefined symbols for architecture x86_64:
> "_libiconv", referenced from:
> _precompose_utf8_readdir in libgit.a(precompose_utf8.o)
> _reencode_string_iconv in libgit.a(utf8.o)
But it doesn't seem to like your "libiconv" for some reason.
I notice that you seem to have an Anaconda environment active. Do you
know if this "libiconv" happens to reside within the Anaconda
environment? If so, what version is it and from where was it installed
("conda-forge", "anaconda", some other)?
Have you tried deactivating the Anaconda environment ("conda
deactivate") before building Git? Also, I would suggest trying without
even running the configure script at all. So, for instance:
% cd git
% conda deactivate
% make distclean
% make all
^ permalink raw reply
* [PATCH] rebase: use strvec_pushf() for format-patch revisions
From: René Scharfe @ 2023-12-19 7:42 UTC (permalink / raw)
To: Git List
In run_am(), a strbuf is used to create a revision argument that is then
added to the argument list for git format-patch using strvec_push().
Use strvec_pushf() to add it directly instead, simplifying the code.
Signed-off-by: René Scharfe <l.s.r@web.de>
---
Formatted with --inter-hunk-context=14 for easier review.
builtin/rebase.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 9f8192e0a5..ddde4cbb87 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -582,7 +582,6 @@ static int run_am(struct rebase_options *opts)
{
struct child_process am = CHILD_PROCESS_INIT;
struct child_process format_patch = CHILD_PROCESS_INIT;
- struct strbuf revisions = STRBUF_INIT;
int status;
char *rebased_patches;
@@ -615,34 +614,32 @@ static int run_am(struct rebase_options *opts)
return run_command(&am);
}
- strbuf_addf(&revisions, "%s...%s",
- oid_to_hex(opts->root ?
- /* this is now equivalent to !opts->upstream */
- &opts->onto->object.oid :
- &opts->upstream->object.oid),
- oid_to_hex(&opts->orig_head->object.oid));
-
rebased_patches = xstrdup(git_path("rebased-patches"));
format_patch.out = open(rebased_patches,
O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (format_patch.out < 0) {
status = error_errno(_("could not open '%s' for writing"),
rebased_patches);
free(rebased_patches);
strvec_clear(&am.args);
return status;
}
format_patch.git_cmd = 1;
strvec_pushl(&format_patch.args, "format-patch", "-k", "--stdout",
"--full-index", "--cherry-pick", "--right-only",
"--default-prefix", "--no-renames",
"--no-cover-letter", "--pretty=mboxrd", "--topo-order",
"--no-base", NULL);
if (opts->git_format_patch_opt.len)
strvec_split(&format_patch.args,
opts->git_format_patch_opt.buf);
- strvec_push(&format_patch.args, revisions.buf);
+ strvec_pushf(&format_patch.args, "%s...%s",
+ oid_to_hex(opts->root ?
+ /* this is now equivalent to !opts->upstream */
+ &opts->onto->object.oid :
+ &opts->upstream->object.oid),
+ oid_to_hex(&opts->orig_head->object.oid));
if (opts->restrict_revision)
strvec_pushf(&format_patch.args, "^%s",
oid_to_hex(&opts->restrict_revision->object.oid));
@@ -665,10 +662,8 @@ static int run_am(struct rebase_options *opts)
"As a result, git cannot rebase them."),
opts->revisions);
- strbuf_release(&revisions);
return status;
}
- strbuf_release(&revisions);
am.in = open(rebased_patches, O_RDONLY);
if (am.in < 0) {
--
2.43.0
^ permalink raw reply related
* Re: ps/clone-into-reftable-repository, was: What's cooking in git.git (Dec 2023, #03; Mon, 18)
From: Patrick Steinhardt @ 2023-12-19 5:41 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <xmqqr0jjc86e.fsf@gitster.g>
[-- Attachment #1: Type: text/plain, Size: 1224 bytes --]
On Mon, Dec 18, 2023 at 05:06:33PM -0800, Junio C Hamano wrote:
> * ps/clone-into-reftable-repository (2023-12-12) 7 commits
> - builtin/clone: create the refdb with the correct object format
> - builtin/clone: skip reading HEAD when retrieving remote
> - builtin/clone: set up sparse checkout later
> - builtin/clone: fix bundle URIs with mismatching object formats
> - remote-curl: rediscover repository when fetching refs
> - setup: allow skipping creation of the refdb
> - setup: extract function to create the refdb
>
> "git clone" has been prepared to allow cloning a repository with
> non-default hash function into a repository that uses the reftable
> backend.
>
> Will merge to 'next'?
> source: <cover.1702361370.git.ps@pks.im>
I personally consider the series to be ready for 'next'. There are no
outstanding review comments that need to be addressed, and reviews of v1
were favorable. I don't think we need to wait for additional reviews on
v2 of the series given that it really only improved commit messages and
adapted a test.
In case you feel uncomfortable with the lack of more reviews I can try
to get some additional eyes onto this patch series though.
Patrick
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply
* What's cooking in git.git (Dec 2023, #03; Mon, 18)
From: Junio C Hamano @ 2023-12-19 1:06 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive. A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).
The 'maint' branch now points at the maintenance track of Git 2.43,
which was released earlier in the month, and the tip of 'next' has
been rewound and rebuilt on top of Git 2.43. I am planning to start
ejecting topics that have been in the "stalled" state for too long.
The RelNotes symbolic link says we are now working towards Git 2.44.
It may not be a bad idea to reflect on what technical debt and UI
warts we have accumulated so far to see if we have enough of them to
start planning for a breaking Git 3.0 release (or, of course, keep
incrementally improve the system, which is much more preferrable---
continuity and stability is good).
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ac/fuzz-show-date (2023-11-20) 1 commit
(merged to 'next' on 2023-12-11 at f36795a896)
+ fuzz: add new oss-fuzz fuzzer for date.c / date.h
Subject approxidate() and show_date() machinery to OSS-Fuzz.
source: <pull.1612.v4.git.1700243267653.gitgitgadget@gmail.com>
* ad/merge-file-diff-algo (2023-11-22) 1 commit
(merged to 'next' on 2023-12-11 at ab43a54c43)
+ merge-file: add --diff-algorithm option
"git merge-file" learned to take the "--diff-algorithm" option to
use algorithm different from the default "myers" diff.
source: <pull.1606.v2.git.git.1700507932937.gitgitgadget@gmail.com>
* cc/git-replay (2023-11-26) 14 commits
(merged to 'next' on 2023-12-11 at 6f7d123578)
+ replay: stop assuming replayed branches do not diverge
+ replay: add --contained to rebase contained branches
+ replay: add --advance or 'cherry-pick' mode
+ replay: use standard revision ranges
+ replay: make it a minimal server side command
+ replay: remove HEAD related sanity check
+ replay: remove progress and info output
+ replay: add an important FIXME comment about gpg signing
+ replay: change rev walking options
+ replay: introduce pick_regular_commit()
+ replay: die() instead of failing assert()
+ replay: start using parse_options API
+ replay: introduce new builtin
+ t6429: remove switching aspects of fast-rebase
Introduce "git replay", a tool meant on the server side without
working tree to recreate a history.
cf. <6bfe1541-54dd-ca6b-e930-94d3038060f1@gmx.de>
source: <20231124111044.3426007-1-christian.couder@gmail.com>
* jb/reflog-expire-delete-dry-run-options (2023-11-26) 1 commit
(merged to 'next' on 2023-12-11 at c7e9846963)
+ builtin/reflog.c: fix dry-run option short name
Command line parsing fix for "git reflog".
source: <20231126000514.85509-1-josh@brob.st>
* jh/trace2-redact-auth (2023-11-23) 4 commits
(merged to 'next' on 2023-12-11 at 7e679a4c4d)
+ t0212: test URL redacting in EVENT format
+ t0211: test URL redacting in PERF format
+ trace2: redact passwords from https:// URLs by default
+ trace2: fix signature of trace2_def_param() macro
trace2 streams used to record the URLs that potentially embed
authentication material, which has been corrected.
source: <pull.1616.git.1700680717.gitgitgadget@gmail.com>
* js/packfile-h-typofix (2023-11-20) 1 commit
(merged to 'next' on 2023-12-11 at 328399439a)
+ packfile.c: fix a typo in `each_file_in_pack_dir_fn()`'s declaration
Typofix.
source: <pull.1614.git.1700226915859.gitgitgadget@gmail.com>
* js/update-urls-in-doc-and-comment (2023-11-26) 4 commits
(merged to 'next' on 2023-12-11 at 3cda3f2a03)
+ doc: refer to internet archive
+ doc: update links for andre-simon.de
+ doc: switch links to https
+ doc: update links to current pages
Stale URLs have been updated to their current counterparts (or
archive.org) and HTTP links are replaced with working HTTPS links.
source: <pull.1589.v3.git.1700796916.gitgitgadget@gmail.com>
* ps/commit-graph-less-paranoid (2023-11-26) 1 commit
(merged to 'next' on 2023-12-11 at 618bd08fa1)
+ commit-graph: disable GIT_COMMIT_GRAPH_PARANOIA by default
Earlier we stopped relying on commit-graph that (still) records
information about commits that are lost from the object store,
which has negative performance implications. The default has been
flipped to disable this pessimization.
source: <17e08289cd59d20de0de9b4e18f5e6bf77987351.1700823746.git.ps@pks.im>
* ps/ref-deletion-updates (2023-11-17) 4 commits
(merged to 'next' on 2023-12-11 at ca551a0c36)
+ refs: remove `delete_refs` callback from backends
+ refs: deduplicate code to delete references
+ refs/files: use transactions to delete references
+ t5510: ensure that the packed-refs file needs locking
Simplify API implementation to delete references by eliminating
duplication.
source: <cover.1699951815.git.ps@pks.im>
* rs/column-leakfix (2023-11-27) 1 commit
(merged to 'next' on 2023-12-11 at 9ac1707337)
+ column: release strbuf and string_list after use
Leakfix.
source: <f087137d-a5aa-487e-a1cb-0ad7117b38ed@web.de>
* rs/i18n-cannot-be-used-together (2023-11-27) 1 commit
(merged to 'next' on 2023-12-11 at a44e1c84c9)
+ i18n: factorize even more 'incompatible options' messages
Clean-up code that handles combinations of incompatible options.
source: <e6eb12e4-bb63-473c-9c2f-965a4d5981ad@web.de>
--------------------------------------------------
[New Topics]
* jk/mailinfo-oob-read-fix (2023-12-12) 1 commit
(merged to 'next' on 2023-12-14 at 0dcfcb0d02)
+ mailinfo: fix out-of-bounds memory reads in unquote_quoted_pair()
(this branch is used by jk/mailinfo-iterative-unquote-comment.)
OOB read fix.
Will merge to 'master'.
source: <20231212221243.GA1656116@coredump.intra.peff.net>
* ps/pseudo-refs (2023-12-14) 4 commits
- bisect: consistently write BISECT_EXPECTED_REV via the refdb
- refs: complete list of special refs
- refs: propagate errno when reading special refs fails
- wt-status: read HEAD and ORIG_HEAD via the refdb
Assorted changes around pseudoref handling.
source: <cover.1702560829.git.ps@pks.im>
* rs/t6300-compressed-size-fix (2023-12-13) 2 commits
- test-lib-functions: add object size functions
- t6300: avoid hard-coding object sizes
Test fix.
Will merge to 'next'?
source: <9feeb6cf-aabf-4002-917f-3f6c27547bc8@web.de>
source: <ff735aac-b60b-4d52-a6dc-180ab504fc8d@web.de>
* es/add-doc-list-short-form-of-all-in-synopsis (2023-12-15) 1 commit
(merged to 'next' on 2023-12-18 at a4f20da2bf)
+ git-add.txt: add missing short option -A to synopsis
Doc update.
Will merge to 'master'.
source: <20231215204333.1253-1-ericsunshine@charter.net>
* jc/doc-misspelt-refs-fix (2023-12-18) 1 commit
(merged to 'next' on 2023-12-18 at e7799fd5c9)
+ doc: format.notes specify a ref under refs/notes/ hierarchy
Doc update.
Will merge to 'master'.
source: <xmqqjzpfje33.fsf_-_@gitster.g>
* jc/doc-most-refs-are-not-that-special (2023-12-15) 5 commits
(merged to 'next' on 2023-12-18 at aead30fcc8)
+ docs: MERGE_AUTOSTASH is not that special
+ docs: AUTO_MERGE is not that special
+ refs.h: HEAD is not that special
+ git-bisect.txt: BISECT_HEAD is not that special
+ git.txt: HEAD is not that special
Doc updates.
Will merge to 'master'.
source: <20231215203245.3622299-1-gitster@pobox.com>
* jk/mailinfo-iterative-unquote-comment (2023-12-14) 2 commits
(merged to 'next' on 2023-12-18 at 92363605fd)
+ mailinfo: avoid recursion when unquoting From headers
+ t5100: make rfc822 comment test more careful
(this branch uses jk/mailinfo-oob-read-fix.)
The code to parse the From e-mail header has been updated to avoid
recursion.
Will merge to 'master'.
source: <20231214214444.GB2297853@coredump.intra.peff.net>
* ps/chainlint-self-check-update (2023-12-15) 1 commit
(merged to 'next' on 2023-12-18 at 0de2e1807f)
+ tests: adjust whitespace in chainlint expectations
Test framework update.
Will merge to 'master'.
source: <fb312f559de7b99244e4c86a995250599cd9be06.1702622508.git.ps@pks.im>
* tb/multi-pack-verbatim-reuse (2023-12-14) 26 commits
- t/perf: add performance tests for multi-pack reuse
- pack-bitmap: enable reuse from all bitmapped packs
- pack-objects: allow setting `pack.allowPackReuse` to "single"
- t/test-lib-functions.sh: implement `test_trace2_data` helper
- pack-objects: add tracing for various packfile metrics
- pack-bitmap: prepare to mark objects from multiple packs for reuse
- pack-revindex: implement `midx_pair_to_pack_pos()`
- pack-revindex: factor out `midx_key_to_pack_pos()` helper
- midx: implement `midx_preferred_pack()`
- git-compat-util.h: implement checked size_t to uint32_t conversion
- pack-objects: include number of packs reused in output
- pack-objects: prepare `write_reused_pack_verbatim()` for multi-pack reuse
- pack-objects: prepare `write_reused_pack()` for multi-pack reuse
- pack-objects: pass `bitmapped_pack`'s to pack-reuse functions
- pack-objects: keep track of `pack_start` for each reuse pack
- pack-objects: parameterize pack-reuse routines over a single pack
- pack-bitmap: return multiple packs via `reuse_partial_packfile_from_bitmap()`
- pack-bitmap: simplify `reuse_partial_packfile_from_bitmap()` signature
- ewah: implement `bitmap_is_empty()`
- pack-bitmap: pass `bitmapped_pack` struct to pack-reuse functions
- midx: implement `midx_locate_pack()`
- midx: implement `BTMP` chunk
- midx: factor out `fill_pack_info()`
- pack-bitmap: plug leak in find_objects()
- pack-bitmap-write: deep-clear the `bb_commit` slab
- pack-objects: free packing_data in more places
Streaming spans of packfile data used to be done only from a
single, primary, pack in a repository with multiple packfiles. It
has been extended to allow reuse from other packfiles, too.
Will merge to 'next'?
source: <cover.1702592603.git.me@ttaylorr.com>
* rs/c99-stdbool-test-balloon (2023-12-18) 1 commit
(merged to 'next' on 2023-12-18 at 5a62aaa127)
+ git-compat-util: convert skip_{prefix,suffix}{,_mem} to bool
Test balloon to use C99 "bool" type from <stdbool.h>.
Will merge to 'master'.
source: <2d30dc36-6091-4b47-846f-92d3f4a8b135@web.de>
* sp/test-i18ngrep (2023-12-18) 1 commit
(merged to 'next' on 2023-12-18 at d54442693a)
+ test-lib-functions.sh: fix test_grep fail message wording
Error message fix in the test framework.
Will merge to 'master'.
source: <20231203171956.771-1-shreyanshpaliwalcmsmn@gmail.com>
--------------------------------------------------
[Cooking]
* jx/fetch-atomic-error-message-fix (2023-12-18) 2 commits
(merged to 'next' on 2023-12-18 at a1988b00e5)
+ fetch: no redundant error message for atomic fetch
+ t5574: test porcelain output of atomic fetch
"git fetch --atomic" issued an unnecessary empty error message,
which has been corrected.
Will merge to 'master'.
cf. <ZX__e7VjyLXIl-uV@tanuki>
source: <cover.1702821462.git.zhiyou.jx@alibaba-inc.com>
* jc/bisect-doc (2023-12-09) 1 commit
- bisect: document "terms" subcommand more fully
Doc update.
Needs review.
source: <xmqqzfyjmk02.fsf@gitster.g>
* rs/show-ref-incompatible-options (2023-12-11) 1 commit
(merged to 'next' on 2023-12-18 at 5a092285f7)
+ show-ref: use die_for_incompatible_opt3()
Code clean-up for sanity checking of command line options for "git
show-ref".
Will merge to 'master'.
source: <e5304253-3347-4900-bbf2-d3c6ee3fb976@web.de>
* jp/use-diff-index-in-pre-commit-sample (2023-12-03) 1 commit
(merged to 'next' on 2023-12-12 at 4771ea61b9)
+ hooks--pre-commit: detect non-ASCII when renaming
The sample pre-commit hook that tries to catch introduction of new
paths that use potentially non-portable characters did not notice
an existing path getting renamed to such a problematic path, when
rename detection was enabled.
Will merge to 'master'.
source: <pull.1291.v2.git.git.1701360836307.gitgitgadget@gmail.com>
* mk/doc-gitfile-more (2023-12-03) 1 commit
(merged to 'next' on 2023-12-12 at 7990e4a163)
+ doc: make the gitfile syntax easier to discover
Doc update.
Will merge to 'master'.
source: <20231128065558.1061206-1-mk+copyleft@pimpmybyte.de>
* ps/ref-tests-update-more (2023-12-03) 10 commits
(merged to 'next' on 2023-12-12 at 3d4004fe3b)
+ t6301: write invalid object ID via `test-tool ref-store`
+ t5551: stop writing packed-refs directly
+ t5401: speed up creation of many branches
+ t4013: simplify magic parsing and drop "failure"
+ t3310: stop checking for reference existence via `test -f`
+ t1417: make `reflog --updateref` tests backend agnostic
+ t1410: use test-tool to create empty reflog
+ t1401: stop treating FETCH_HEAD as real reference
+ t1400: split up generic reflog tests from the reffile-specific ones
+ t0410: mark tests to require the reffiles backend
Tests update.
Will merge to 'master'.
source: <cover.1701242407.git.ps@pks.im>
* sh/completion-with-reftable (2023-12-03) 2 commits
- completion: stop checking for reference existence via `test -f`
- completion: refactor existence checks for special refs
Command line completion script (in contrib/) learned to work better
with the reftable backend.
Expecting a reroll.
source: <20231130202404.89791-1-stanhu@gmail.com>
* en/header-cleanup (2023-12-03) 12 commits
- treewide: remove unnecessary includes in source files
- treewide: add direct includes currently only pulled in transitively
- trace2/tr2_tls.h: remove unnecessary include
- submodule-config.h: remove unnecessary include
- pkt-line.h: remove unnecessary include
- line-log.h: remove unnecessary include
- http.h: remove unnecessary include
- fsmonitor--daemon.h: remove unnecessary includes
- blame.h: remove unnecessary includes
- archive.h: remove unnecessary include
- treewide: remove unnecessary includes in source files
- treewide: remove unnecessary includes from header files
Remove unused header "#include".
Has a few interactions with topics in flight.
source: <pull.1617.git.1701585682.gitgitgadget@gmail.com>
* jc/revision-parse-int (2023-12-09) 1 commit
(merged to 'next' on 2023-12-12 at 6209b4c97c)
+ revision: parse integer arguments to --max-count, --skip, etc., more carefully
The command line parser for the "log" family of commands was too
loose when parsing certain numbers, e.g., silently ignoring the
extra 'q' in "git log -n 1q" without complaining, which has been
tightened up.
Will merge to 'master'.
source: <xmqq5y181fx0.fsf_-_@gitster.g>
* jk/bisect-reset-fix (2023-12-09) 1 commit
(merged to 'next' on 2023-12-12 at 8f946eafb6)
+ bisect: always clean on reset
"git bisect reset" has been taught to clean up state files and refs
even when BISECT_START file is gone.
Will merge to 'master'.
source: <20231207065341.GA778781@coredump.intra.peff.net>
* jk/implicit-true (2023-12-09) 7 commits
(merged to 'next' on 2023-12-12 at 2a42fdc998)
+ fsck: handle NULL value when parsing message config
+ trailer: handle NULL value when parsing trailer-specific config
+ submodule: handle NULL value when parsing submodule.*.branch
+ help: handle NULL value for alias.* config
+ trace2: handle NULL values in tr2_sysenv config callback
+ setup: handle NULL value when parsing extensions
+ config: handle NULL value when parsing non-bools
(this branch is used by jk/config-cleanup.)
Some codepaths did not correctly parse configuration variables
specified with valueless "true", which has been corrected.
Will merge to 'master'.
source: <20231207071030.GA1275835@coredump.intra.peff.net>
* jk/config-cleanup (2023-12-09) 9 commits
(merged to 'next' on 2023-12-12 at 44ee006c25)
+ sequencer: simplify away extra git_config_string() call
+ gpg-interface: drop pointless config_error_nonbool() checks
+ push: drop confusing configset/callback redundancy
+ config: use git_config_string() for core.checkRoundTripEncoding
+ diff: give more detailed messages for bogus diff.* config
+ config: use config_error_nonbool() instead of custom messages
+ imap-send: don't use git_die_config() inside callback
+ git_xmerge_config(): prefer error() to die()
+ config: reject bogus values for core.checkstat
(this branch uses jk/implicit-true.)
Code clean-up around use of configuration variables.
Will merge to 'master'.
source: <20231207071030.GA1275835@coredump.intra.peff.net>
source: <20231207072338.GA1277727@coredump.intra.peff.net>
* jk/end-of-options (2023-12-09) 1 commit
(merged to 'next' on 2023-12-12 at 4ae454b26d)
+ parse-options: decouple "--end-of-options" and "--"
"git $cmd --end-of-options --rev -- --path" for some $cmd failed
to interpret "--rev" as a rev, and "--path" as a path. This was
fixed for many programs like "reset" and "checkout".
Will merge to 'master'.
source: <20231206222145.GA136253@coredump.intra.peff.net>
* ps/clone-into-reftable-repository (2023-12-12) 7 commits
- builtin/clone: create the refdb with the correct object format
- builtin/clone: skip reading HEAD when retrieving remote
- builtin/clone: set up sparse checkout later
- builtin/clone: fix bundle URIs with mismatching object formats
- remote-curl: rediscover repository when fetching refs
- setup: allow skipping creation of the refdb
- setup: extract function to create the refdb
"git clone" has been prepared to allow cloning a repository with
non-default hash function into a repository that uses the reftable
backend.
Will merge to 'next'?
source: <cover.1702361370.git.ps@pks.im>
* rs/incompatible-options-messages (2023-12-09) 7 commits
(merged to 'next' on 2023-12-12 at a13847a7f6)
+ worktree: simplify incompatibility message for --orphan and commit-ish
+ worktree: standardize incompatibility messages
+ clean: factorize incompatibility message
+ revision, rev-parse: factorize incompatibility messages about - -exclude-hidden
+ revision: use die_for_incompatible_opt3() for - -graph/--reverse/--walk-reflogs
+ repack: use die_for_incompatible_opt3() for -A/-k/--cruft
+ push: use die_for_incompatible_opt4() for - -delete/--tags/--all/--mirror
Clean-up code that handles combinations of incompatible options.
Will merge to 'master'.
source: <20231206115215.94467-1-l.s.r@web.de>
* jc/checkout-B-branch-in-use (2023-12-13) 2 commits
(merged to 'next' on 2023-12-14 at 0a3998619e)
+ checkout: forbid "-B <branch>" from touching a branch used elsewhere
+ checkout: refactor die_if_checked_out() caller
"git checkout -B <branch> [<start-point>]" allowed a branch that is
in use in another worktree to be updated and checked out, which
might be a bit unexpected. The rule has been tightened, which is a
breaking change. "--ignore-other-worktrees" option is required to
unbreak you, if you are used to the current behaviour that "-B"
overrides the safety.
Will merge to 'master'.
source: <xmqqjzq9cl70.fsf@gitster.g>
* ps/reftable-fixes (2023-12-11) 11 commits
(merged to 'next' on 2023-12-15 at ebba966016)
+ reftable/block: reuse buffer to compute record keys
+ reftable/block: introduce macro to initialize `struct block_iter`
+ reftable/merged: reuse buffer to compute record keys
+ reftable/stack: fix use of unseeded randomness
+ reftable/stack: fix stale lock when dying
+ reftable/stack: reuse buffers when reloading stack
+ reftable/stack: perform auto-compaction with transactional interface
+ reftable/stack: verify that `reftable_stack_add()` uses auto-compaction
+ reftable: handle interrupted writes
+ reftable: handle interrupted reads
+ reftable: wrap EXPECT macros in do/while
Bunch of small fix-ups to the reftable code.
Will merge to 'master'.
source: <cover.1702285387.git.ps@pks.im>
* en/complete-sparse-checkout (2023-12-03) 4 commits
(merged to 'next' on 2023-12-12 at 3de75bd6af)
+ completion: avoid user confusion in non-cone mode
+ completion: avoid misleading completions in cone mode
+ completion: fix logic for determining whether cone mode is active
+ completion: squelch stray errors in sparse-checkout completion
Command line completion (in contrib/) learned to complete path
arguments to the "add/set" subcommands of "git sparse-checkout"
better.
Will merge to 'master'.
source: <pull.1349.v3.git.1701583024.gitgitgadget@gmail.com>
* jc/orphan-unborn (2023-11-24) 2 commits
- orphan/unborn: fix use of 'orphan' in end-user facing messages
- orphan/unborn: add to the glossary and use them consistently
Doc updates to clarify what an "unborn branch" means.
Comments?
source: <xmqq4jhb977x.fsf@gitster.g>
* jw/builtin-objectmode-attr (2023-12-12) 2 commits
- SQUASH??? - leakfix
- attr: add builtin objectmode values support
The builtin_objectmode attribute is populated for each path
without adding anything in .gitattributes files, which would be
useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
to limit to executables.
Needs to get leakfix reviewed.
source: <20231116054437.2343549-1-jojwang@google.com>
* tb/merge-tree-write-pack (2023-10-23) 5 commits
- builtin/merge-tree.c: implement support for `--write-pack`
- bulk-checkin: introduce `index_tree_bulk_checkin_incore()`
- bulk-checkin: introduce `index_blob_bulk_checkin_incore()`
- bulk-checkin: generify `stream_blob_to_pack()` for arbitrary types
- bulk-checkin: extract abstract `bulk_checkin_source`
"git merge-tree" learned "--write-pack" to record its result
without creating loose objects.
Broken when an object created during a merge is needed to continue merge
cf. <CABPp-BEfy9VOvimP9==ry_rZXu=metOQ8s=_-XiG_Pdx9c06Ww@mail.gmail.com>
source: <cover.1698101088.git.me@ttaylorr.com>
* tb/pair-chunk-expect (2023-11-10) 8 commits
- midx: read `OOFF` chunk with `pair_chunk_expect()`
- midx: read `OIDL` chunk with `pair_chunk_expect()`
- commit-graph: read `BIDX` chunk with `pair_chunk_expect()`
- commit-graph: read `GDAT` chunk with `pair_chunk_expect()`
- commit-graph: read `CDAT` chunk with `pair_chunk_expect()`
- commit-graph: read `OIDL` chunk with `pair_chunk_expect()`
- chunk-format: introduce `pair_chunk_expect()` helper
- Merge branch 'jk/chunk-bounds-more' into HEAD
Further code clean-up.
Needs review.
source: <cover.1699569246.git.me@ttaylorr.com>
* tb/path-filter-fix (2023-10-18) 17 commits
- bloom: introduce `deinit_bloom_filters()`
- commit-graph: reuse existing Bloom filters where possible
- object.h: fix mis-aligned flag bits table
- commit-graph: drop unnecessary `graph_read_bloom_data_context`
- commit-graph.c: unconditionally load Bloom filters
- bloom: prepare to discard incompatible Bloom filters
- bloom: annotate filters with hash version
- commit-graph: new filter ver. that fixes murmur3
- repo-settings: introduce commitgraph.changedPathsVersion
- t4216: test changed path filters with high bit paths
- t/helper/test-read-graph: implement `bloom-filters` mode
- bloom.h: make `load_bloom_filter_from_graph()` public
- t/helper/test-read-graph.c: extract `dump_graph_info()`
- gitformat-commit-graph: describe version 2 of BDAT
- commit-graph: ensure Bloom filters are read with consistent settings
- revision.c: consult Bloom filters for root commits
- t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()`
The Bloom filter used for path limited history traversal was broken
on systems whose "char" is unsigned; update the implementation and
bump the format version to 2.
Needs (hopefully final and quick) review.
source: <cover.1697653929.git.me@ttaylorr.com>
* ak/color-decorate-symbols (2023-10-23) 7 commits
- log: add color.decorate.pseudoref config variable
- refs: exempt pseudorefs from pattern prefixing
- refs: add pseudorefs array and iteration functions
- log: add color.decorate.ref config variable
- log: add color.decorate.symbol config variable
- log: use designated inits for decoration_colors
- config: restructure color.decorate documentation
A new config for coloring.
Needs review.
source: <20231023221143.72489-1-andy.koppe@gmail.com>
* la/trailer-cleanups (2023-10-20) 3 commits
- trailer: use offsets for trailer_start/trailer_end
- trailer: find the end of the log message
- commit: ignore_non_trailer computes number of bytes to ignore
Code clean-up.
Comments?
source: <pull.1563.v5.git.1697828495.gitgitgadget@gmail.com>
* eb/hash-transition (2023-10-02) 30 commits
- t1016-compatObjectFormat: add tests to verify the conversion between objects
- t1006: test oid compatibility with cat-file
- t1006: rename sha1 to oid
- test-lib: compute the compatibility hash so tests may use it
- builtin/ls-tree: let the oid determine the output algorithm
- object-file: handle compat objects in check_object_signature
- tree-walk: init_tree_desc take an oid to get the hash algorithm
- builtin/cat-file: let the oid determine the output algorithm
- rev-parse: add an --output-object-format parameter
- repository: implement extensions.compatObjectFormat
- object-file: update object_info_extended to reencode objects
- object-file-convert: convert commits that embed signed tags
- object-file-convert: convert commit objects when writing
- object-file-convert: don't leak when converting tag objects
- object-file-convert: convert tag objects when writing
- object-file-convert: add a function to convert trees between algorithms
- object: factor out parse_mode out of fast-import and tree-walk into in object.h
- cache: add a function to read an OID of a specific algorithm
- tag: sign both hashes
- commit: export add_header_signature to support handling signatures on tags
- commit: convert mergetag before computing the signature of a commit
- commit: write commits for both hashes
- object-file: add a compat_oid_in parameter to write_object_file_flags
- object-file: update the loose object map when writing loose objects
- loose: compatibilty short name support
- loose: add a mapping between SHA-1 and SHA-256 for loose objects
- repository: add a compatibility hash algorithm
- object-names: support input of oids in any supported hash
- oid-array: teach oid-array to handle multiple kinds of oids
- object-file-convert: stubs for converting from one object format to another
Teach a repository to work with both SHA-1 and SHA-256 hash algorithms.
Needs review.
source: <878r8l929e.fsf@gmail.froward.int.ebiederm.org>
* jx/remote-archive-over-smart-http (2023-12-14) 4 commits
- archive: support remote archive from stateless transport
- transport-helper: call do_take_over() in connect_helper
- transport-helper: call do_take_over() in process_connect
- transport-helper: no connection restriction in connect_helper
"git archive --remote=<remote>" learned to talk over the smart
http (aka stateless) transport.
Needs review.
source: <cover.1702562879.git.zhiyou.jx@alibaba-inc.com>
* jx/sideband-chomp-newline-fix (2023-12-18) 3 commits
- pkt-line: do not chomp newlines for sideband messages
- pkt-line: memorize sideband fragment in reader
- test-pkt-line: add option parser for unpack-sideband
Sideband demultiplexer fixes.
Will merge to 'next'?
source: <cover.1702823801.git.zhiyou.jx@alibaba-inc.com>
* jc/fake-lstat (2023-09-15) 1 commit
(merged to 'next' on 2023-12-15 at 48e34cc0b4)
+ cache: add fake_lstat()
(this branch is used by jc/diff-cached-fsmonitor-fix.)
A new helper to let us pretend that we called lstat() when we know
our cache_entry is up-to-date via fsmonitor.
Will merge to 'master'.
cf. <e5295dbe-94d2-3186-5663-2466eba4bdde@jeffhostetler.com>
source: <xmqqcyykig1l.fsf@gitster.g>
* jc/rerere-cleanup (2023-08-25) 4 commits
- rerere: modernize use of empty strbuf
- rerere: try_merge() should use LL_MERGE_ERROR when it means an error
- rerere: fix comment on handle_file() helper
- rerere: simplify check_one_conflict() helper function
Code clean-up.
Not ready to be reviewed yet.
source: <20230824205456.1231371-1-gitster@pobox.com>
* rj/status-bisect-while-rebase (2023-10-16) 1 commit
- status: fix branch shown when not only bisecting
"git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
Needs review.
source: <2e24ca9b-9c5f-f4df-b9f8-6574a714dfb2@gmail.com>
--------------------------------------------------
[Discarded]
* ak/p4-initial-empty-commits (2023-11-23) 1 commit
- git-p4: fix fast import when empty commit is first
Expecting a reroll.
source: <pull.1609.git.git.1700639764041.gitgitgadget@gmail.com>
* js/bugreport-in-the-same-minute (2023-10-16) 1 commit
- bugreport: include +i in outfile suffix as needed
Instead of auto-generating a filename that is already in use for
output and fail the command, `git bugreport` learned to fuzz the
filename to avoid collisions with existing files.
Expecting a reroll.
cf. <ZTtZ5CbIGETy1ucV.jacob@initialcommit.io>
source: <20231016214045.146862-2-jacob@initialcommit.io>
* kh/t7900-cleanup (2023-10-17) 9 commits
- t7900: fix register dependency
- t7900: factor out packfile dependency
- t7900: fix `print-args` dependency
- t7900: fix `pfx` dependency
- t7900: factor out common schedule setup
- t7900: factor out inheritance test dependency
- t7900: create commit so that branch is born
- t7900: setup and tear down clones
- t7900: remove register dependency
Test clean-up.
Perhaps discard?
cf. <655ca147-c214-41be-919d-023c1b27b311@app.fastmail.com>
source: <cover.1697319294.git.code@khaugsbakk.name>
* js/config-parse (2023-09-21) 5 commits
- config-parse: split library out of config.[c|h]
- config.c: accept config_parse_options in git_config_from_stdin
- config: report config parse errors using cb
- config: split do_event() into start and flush operations
- config: split out config_parse_options
The parsing routines for the configuration files have been split
into a separate file.
Needs review.
source: <cover.1695330852.git.steadmon@google.com>
* jc/diff-cached-fsmonitor-fix (2023-09-15) 3 commits
(merged to 'next' on 2023-12-15 at 4aa7596593)
+ diff-lib: fix check_removed() when fsmonitor is active
+ Merge branch 'jc/fake-lstat' into jc/diff-cached-fsmonitor-fix
+ Merge branch 'js/diff-cached-fsmonitor-fix' into jc/diff-cached-fsmonitor-fix
(this branch uses jc/fake-lstat.)
The optimization based on fsmonitor in the "diff --cached"
codepath is resurrected with the "fake-lstat" introduced earlier.
Will merge to 'master'.
cf. <e5295dbe-94d2-3186-5663-2466eba4bdde@jeffhostetler.com>
source: <xmqqr0n0h0tw.fsf@gitster.g>
* pw/rebase-sigint (2023-09-07) 1 commit
- rebase -i: ignore signals when forking subprocesses
If the commit log editor or other external programs (spawned via
"exec" insn in the todo list) receive internactive signal during
"git rebase -i", it caused not just the spawned program but the
"Git" process that spawned them, which is often not what the end
user intended. "git" learned to ignore SIGINT and SIGQUIT while
waiting for these subprocesses.
Expecting a reroll.
cf. <12c956ea-330d-4441-937f-7885ab519e26@gmail.com>
source: <pull.1581.git.1694080982621.gitgitgadget@gmail.com>
* tk/cherry-pick-sequence-requires-clean-worktree (2023-06-01) 1 commit
- cherry-pick: refuse cherry-pick sequence if index is dirty
"git cherry-pick A" that replays a single commit stopped before
clobbering local modification, but "git cherry-pick A..B" did not,
which has been corrected.
Expecting a reroll.
cf. <999f12b2-38d6-f446-e763-4985116ad37d@gmail.com>
source: <pull.1535.v2.git.1685264889088.gitgitgadget@gmail.com>
^ permalink raw reply
* new config option "fetch.all"
From: Tamino Bauknecht @ 2023-12-18 20:15 UTC (permalink / raw)
To: git
Hi all,
when working on repositories with different remotes, I find myself
using "git fetch --all" quite often.
Thus, I thought that git might benefit from having a config option
"fetch.all" which will allow to always fetch all available remotes if
enabled (either in global or repository config).
The same already exists for "fetch.prune" and I don't really see any
downside to providing that convenience option also for "--all".
A probably necessary adjustment is that if the config is enabled and
a repository is explicitly specified, the specified repository should
be used instead of "--all".
Otherwise, the current output would be: "fatal: fetch --all does not
take a repository argument".
If no one sees any further issues, I'll gladly work on this feature
and provide a patch.
Best regards,
Tamino Bauknecht
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox