git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* Re: [PATCH v2] merge: fix cache_entry use-after-free
    2015-10-14 21:17  2% ` Junio C Hamano
@ 2015-10-12 22:28  2% ` Junio C Hamano
  2015-10-13 19:22  2%   ` David Turner
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-12 22:28 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> From: Keith McGuigan <kmcguigan@twitter.com>
>
> During merges, we would previously free entries that we no longer need
> in the destination index.  But those entries might also be stored in
> the dir_entry cache, and when a later call to add_to_index found them,
> they would be used after being freed.
>
> To prevent this, add a ref count for struct cache_entry.  Whenever
> a cache entry is added to a data structure, the ref count is incremented;
> when it is removed from the data structure, it is decremented.  When
> it hits zero, the cache_entry is freed.
>
> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> ---

I'll forge your "messenger's sign-off" here ;-)

> diff --git a/unpack-trees.c b/unpack-trees.c
> index f932e80..1a0a637 100644
> --- a/unpack-trees.c
> +++ b/unpack-trees.c
> @@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
>  					o);
>  		for (i = 0; i < n; i++) {
>  			struct cache_entry *ce = src[i + o->merge];
> -			if (ce != o->df_conflict_entry)
> -				free(ce);
> +			if (ce != o->df_conflict_entry) {
> +				drop_ce_ref(ce);
> +				src[i + o->merge] = NULL;
> +			}

This one smelled iffy.  I think it is safe because the caller does
not look at src[] other than src[0] after this function returns, and
this setting to NULL happens only when o->merge is set to 1, so I do
not think this is buggy, but at the same time I do not think setting
to NULL is necessary.

Other than that, looks nice.  Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-12 22:28  2% ` Junio C Hamano
@ 2015-10-13 19:22  2%   ` David Turner
  2015-10-13 21:05  2%     ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-13 19:22 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Keith McGuigan

On Mon, 2015-10-12 at 15:28 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > From: Keith McGuigan <kmcguigan@twitter.com>
> >
> > During merges, we would previously free entries that we no longer need
> > in the destination index.  But those entries might also be stored in
> > the dir_entry cache, and when a later call to add_to_index found them,
> > they would be used after being freed.
> >
> > To prevent this, add a ref count for struct cache_entry.  Whenever
> > a cache entry is added to a data structure, the ref count is incremented;
> > when it is removed from the data structure, it is decremented.  When
> > it hits zero, the cache_entry is freed.
> >
> > Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> > ---
> 
> I'll forge your "messenger's sign-off" here ;-)

Thanks.

> > diff --git a/unpack-trees.c b/unpack-trees.c
> > index f932e80..1a0a637 100644
> > --- a/unpack-trees.c
> > +++ b/unpack-trees.c
> > @@ -606,8 +606,10 @@ static int unpack_nondirectories(int n, unsigned long mask,
> >  					o);
> >  		for (i = 0; i < n; i++) {
> >  			struct cache_entry *ce = src[i + o->merge];
> > -			if (ce != o->df_conflict_entry)
> > -				free(ce);
> > +			if (ce != o->df_conflict_entry) {
> > +				drop_ce_ref(ce);
> > +				src[i + o->merge] = NULL;
> > +			}
> 
> This one smelled iffy.  I think it is safe because the caller does
> not look at src[] other than src[0] after this function returns, and
> this setting to NULL happens only when o->merge is set to 1, so I do
> not think this is buggy, but at the same time I do not think setting
> to NULL is necessary.
> 
> Other than that, looks nice.  Thanks.

I like to set a pointer to NULL after I free the thing pointed to by it,
because it helps make use-after-free bugs easier to detect.  

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-13 19:22  2%   ` David Turner
@ 2015-10-13 21:05  2%     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-13 21:05 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

>> This one smelled iffy.  I think it is safe because the caller does
>> not look at src[] other than src[0] after this function returns, and
>> this setting to NULL happens only when o->merge is set to 1, so I do
>> not think this is buggy, but at the same time I do not think setting
>> to NULL is necessary.
>> 
>> Other than that, looks nice.  Thanks.
>
> I like to set a pointer to NULL after I free the thing pointed to by it,
> because it helps make use-after-free bugs easier to detect.  

Yes, but it also helps unintended bugs to creep in if done blindly,
and that is why I vetted what happens in the codepath of the caller
of this function after src[] entries are NULLed (the caller could be
expecting to do things only to NULLed fields, for example, in which
case clearing them like this patch would have changed the behaviour
of the caller after this function returns).

Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  @ 2015-10-14 21:17  2% ` Junio C Hamano
  2015-10-14 22:00  2%   ` David Turner
  2015-10-12 22:28  2% ` Junio C Hamano
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2015-10-14 21:17 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

David Turner <dturner@twopensource.com> writes:

> +	unsigned int ref_count; /* count the number of refs to this in dir_hash */

Me makes a mental note of the type used...

> @@ -213,6 +214,32 @@ struct cache_entry {
>  struct pathspec;
>  
>  /*
> + * Increment the cache_entry reference count.  Should be called
> + * whenever a pointer to a cache_entry is retained in a data structure,
> + * thus marking it as alive.
> + */
> +static inline void add_ce_ref(struct cache_entry *ce)
> +{
> +	assert(ce != NULL && ce->ref_count >= 0);

... and notices that ce->ref_count will always be non-negative here


> +	ce->ref_count++;
> +}
> +
> +/*
> + * Decrement the cache_entry reference count.  Should be called whenever
> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> + * the cache_entry memory will be safely freed.
> + */
> +static inline void drop_ce_ref(struct cache_entry *ce)
> +{
> +	if (ce != NULL) {
> +		assert(ce->ref_count >= 0);

... and here.

By not checking integer overflow/wraparound, the code is assuming
that a ce entry will never referenced more than 4 billion times on
32-bit platform.  And that is a sensible assumption as there aren't
that many pointers in the address space to make that many reference
anyway.

Perhaps the code can assume the number won't be more than 2 billion
and use a signed type instead for the reference counting?

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2] merge: fix cache_entry use-after-free
  2015-10-14 21:17  2% ` Junio C Hamano
@ 2015-10-14 22:00  2%   ` David Turner
  0 siblings, 0 replies; 200+ results
From: David Turner @ 2015-10-14 22:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Keith McGuigan

On Wed, 2015-10-14 at 14:17 -0700, Junio C Hamano wrote:
> David Turner <dturner@twopensource.com> writes:
> 
> > +	unsigned int ref_count; /* count the number of refs to this in dir_hash */
> 
> Me makes a mental note of the type used...
> 
> > @@ -213,6 +214,32 @@ struct cache_entry {
> >  struct pathspec;
> >  
> >  /*
> > + * Increment the cache_entry reference count.  Should be called
> > + * whenever a pointer to a cache_entry is retained in a data structure,
> > + * thus marking it as alive.
> > + */
> > +static inline void add_ce_ref(struct cache_entry *ce)
> > +{
> > +	assert(ce != NULL && ce->ref_count >= 0);
> 
> ... and notices that ce->ref_count will always be non-negative here
> 
> 
> > +	ce->ref_count++;
> > +}
> > +
> > +/*
> > + * Decrement the cache_entry reference count.  Should be called whenever
> > + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> > + * the cache_entry memory will be safely freed.
> > + */
> > +static inline void drop_ce_ref(struct cache_entry *ce)
> > +{
> > +	if (ce != NULL) {
> > +		assert(ce->ref_count >= 0);
> 
> ... and here.
> 
> By not checking integer overflow/wraparound, the code is assuming
> that a ce entry will never referenced more than 4 billion times on
> 32-bit platform.  And that is a sensible assumption as there aren't
> that many pointers in the address space to make that many reference
> anyway.
> 
> Perhaps the code can assume the number won't be more than 2 billion
> and use a signed type instead for the reference counting?

Will do.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  @ 2015-10-15  3:35  2% ` René Scharfe
  2015-10-15 19:02  2%   ` David Turner
  0 siblings, 1 reply; 200+ results
From: René Scharfe @ 2015-10-15  3:35 UTC (permalink / raw)
  To: David Turner, git; +Cc: Keith McGuigan

Am 15.10.2015 um 00:07 schrieb David Turner:
> From: Keith McGuigan <kmcguigan@twitter.com>
>
> During merges, we would previously free entries that we no longer need
> in the destination index.  But those entries might also be stored in
> the dir_entry cache, and when a later call to add_to_index found them,
> they would be used after being freed.
>
> To prevent this, add a ref count for struct cache_entry.  Whenever
> a cache entry is added to a data structure, the ref count is incremented;
> when it is removed from the data structure, it is decremented.  When
> it hits zero, the cache_entry is freed.
>
> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
>
> Fix type of ref_count (from unsigned int to int).
>
>
>   cache.h        | 27 +++++++++++++++++++++++++++
>   name-hash.c    |  7 ++++++-
>   read-cache.c   |  6 +++++-
>   split-index.c  | 13 ++++++++-----
>   unpack-trees.c |  6 ++++--
>   5 files changed, 50 insertions(+), 9 deletions(-)
>
> diff --git a/cache.h b/cache.h
> index 752031e..7906026 100644
> --- a/cache.h
> +++ b/cache.h
> @@ -149,6 +149,7 @@ struct stat_data {
>
>   struct cache_entry {
>   	struct hashmap_entry ent;
> +	int ref_count; /* count the number of refs to this in dir_hash */
>   	struct stat_data ce_stat_data;
>   	unsigned int ce_mode;
>   	unsigned int ce_flags;
> @@ -213,6 +214,32 @@ struct cache_entry {
>   struct pathspec;
>
>   /*
> + * Increment the cache_entry reference count.  Should be called
> + * whenever a pointer to a cache_entry is retained in a data structure,
> + * thus marking it as alive.
> + */
> +static inline void add_ce_ref(struct cache_entry *ce)
> +{
> +	assert(ce != NULL && ce->ref_count >= 0);
> +	ce->ref_count++;
> +}
> +
> +/*
> + * Decrement the cache_entry reference count.  Should be called whenever
> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> + * the cache_entry memory will be safely freed.
> + */
> +static inline void drop_ce_ref(struct cache_entry *ce)
> +{
> +	if (ce != NULL) {
> +		assert(ce->ref_count >= 0);

Shouldn't this be "> 0" to prevent double frees?

> +		if (--ce->ref_count < 1) {
> +			free(ce);
> +		}
> +	}
> +}

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15  3:35  2% ` René Scharfe
@ 2015-10-15 19:02  2%   ` David Turner
  2015-10-15 20:38  2%     ` René Scharfe
  0 siblings, 1 reply; 200+ results
From: David Turner @ 2015-10-15 19:02 UTC (permalink / raw)
  To: René Scharfe; +Cc: git, Keith McGuigan

On Thu, 2015-10-15 at 05:35 +0200, René Scharfe wrote:
> Am 15.10.2015 um 00:07 schrieb David Turner:
> > From: Keith McGuigan <kmcguigan@twitter.com>
> >
> > During merges, we would previously free entries that we no longer need
> > in the destination index.  But those entries might also be stored in
> > the dir_entry cache, and when a later call to add_to_index found them,
> > they would be used after being freed.
> >
> > To prevent this, add a ref count for struct cache_entry.  Whenever
> > a cache entry is added to a data structure, the ref count is incremented;
> > when it is removed from the data structure, it is decremented.  When
> > it hits zero, the cache_entry is freed.
> >
> > Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
> > Signed-off-by: David Turner <dturner@twopensource.com>
> > ---
> >
> > Fix type of ref_count (from unsigned int to int).
> >
> >
> >   cache.h        | 27 +++++++++++++++++++++++++++
> >   name-hash.c    |  7 ++++++-
> >   read-cache.c   |  6 +++++-
> >   split-index.c  | 13 ++++++++-----
> >   unpack-trees.c |  6 ++++--
> >   5 files changed, 50 insertions(+), 9 deletions(-)
> >
> > diff --git a/cache.h b/cache.h
> > index 752031e..7906026 100644
> > --- a/cache.h
> > +++ b/cache.h
> > @@ -149,6 +149,7 @@ struct stat_data {
> >
> >   struct cache_entry {
> >   	struct hashmap_entry ent;
> > +	int ref_count; /* count the number of refs to this in dir_hash */
> >   	struct stat_data ce_stat_data;
> >   	unsigned int ce_mode;
> >   	unsigned int ce_flags;
> > @@ -213,6 +214,32 @@ struct cache_entry {
> >   struct pathspec;
> >
> >   /*
> > + * Increment the cache_entry reference count.  Should be called
> > + * whenever a pointer to a cache_entry is retained in a data structure,
> > + * thus marking it as alive.
> > + */
> > +static inline void add_ce_ref(struct cache_entry *ce)
> > +{
> > +	assert(ce != NULL && ce->ref_count >= 0);
> > +	ce->ref_count++;
> > +}
> > +
> > +/*
> > + * Decrement the cache_entry reference count.  Should be called whenever
> > + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
> > + * the cache_entry memory will be safely freed.
> > + */
> > +static inline void drop_ce_ref(struct cache_entry *ce)
> > +{
> > +	if (ce != NULL) {
> > +		assert(ce->ref_count >= 0);
> 
> Shouldn't this be "> 0" to prevent double frees?

No.  If the ref_count is 1, then there is still some reference to the
ce.  If it is 0, there is no reference to it, and the next check (< 1)
will succeed and the ce will get freed.  

> > +		if (--ce->ref_count < 1) {
> > +			free(ce);
> > +		}
> > +	}
> > +}
> 

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v3] merge: fix cache_entry use-after-free
  2015-10-15 19:02  2%   ` David Turner
@ 2015-10-15 20:38  2%     ` René Scharfe
  0 siblings, 0 replies; 200+ results
From: René Scharfe @ 2015-10-15 20:38 UTC (permalink / raw)
  To: David Turner; +Cc: git, Keith McGuigan

Am 15.10.2015 um 21:02 schrieb David Turner:
> On Thu, 2015-10-15 at 05:35 +0200, René Scharfe wrote:
>> Am 15.10.2015 um 00:07 schrieb David Turner:
>>> From: Keith McGuigan <kmcguigan@twitter.com>
>>>
>>> During merges, we would previously free entries that we no longer need
>>> in the destination index.  But those entries might also be stored in
>>> the dir_entry cache, and when a later call to add_to_index found them,
>>> they would be used after being freed.
>>>
>>> To prevent this, add a ref count for struct cache_entry.  Whenever
>>> a cache entry is added to a data structure, the ref count is incremented;
>>> when it is removed from the data structure, it is decremented.  When
>>> it hits zero, the cache_entry is freed.
>>>
>>> Signed-off-by: Keith McGuigan <kmcguigan@twitter.com>
>>> Signed-off-by: David Turner <dturner@twopensource.com>
>>> ---
>>>
>>> Fix type of ref_count (from unsigned int to int).
>>>
>>>
>>>    cache.h        | 27 +++++++++++++++++++++++++++
>>>    name-hash.c    |  7 ++++++-
>>>    read-cache.c   |  6 +++++-
>>>    split-index.c  | 13 ++++++++-----
>>>    unpack-trees.c |  6 ++++--
>>>    5 files changed, 50 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/cache.h b/cache.h
>>> index 752031e..7906026 100644
>>> --- a/cache.h
>>> +++ b/cache.h
>>> @@ -149,6 +149,7 @@ struct stat_data {
>>>
>>>    struct cache_entry {
>>>    	struct hashmap_entry ent;
>>> +	int ref_count; /* count the number of refs to this in dir_hash */
>>>    	struct stat_data ce_stat_data;
>>>    	unsigned int ce_mode;
>>>    	unsigned int ce_flags;
>>> @@ -213,6 +214,32 @@ struct cache_entry {
>>>    struct pathspec;
>>>
>>>    /*
>>> + * Increment the cache_entry reference count.  Should be called
>>> + * whenever a pointer to a cache_entry is retained in a data structure,
>>> + * thus marking it as alive.
>>> + */
>>> +static inline void add_ce_ref(struct cache_entry *ce)
>>> +{
>>> +	assert(ce != NULL && ce->ref_count >= 0);
>>> +	ce->ref_count++;
>>> +}
>>> +
>>> +/*
>>> + * Decrement the cache_entry reference count.  Should be called whenever
>>> + * a pointer to a cache_entry is dropped.  Once the counter drops to 0
>>> + * the cache_entry memory will be safely freed.
>>> + */
>>> +static inline void drop_ce_ref(struct cache_entry *ce)
>>> +{
>>> +	if (ce != NULL) {
>>> +		assert(ce->ref_count >= 0);
>>
>> Shouldn't this be "> 0" to prevent double frees?
>
> No.  If the ref_count is 1, then there is still some reference to the
> ce.  If it is 0, there is no reference to it, and the next check (< 1)
> will succeed and the ce will get freed.
>
>>> +		if (--ce->ref_count < 1) {
>>> +			free(ce);
>>> +		}
>>> +	}
>>> +}

OK, let me think out loud, step by step:

Given ref_count == 1 then the assert passes, ref_count gets decremented 
to 0, which is less than 1, so ce is freed.

Given ref_count == 0 then the assert passes, refcount gets decremented 
to -1, which is less than 1, so ce is freed again.

Where did I go wrong?

René

^ permalink raw reply	[relevance 2%]

* Re: merge: fix NULL pointer dereference when merging nothing into void
  @ 2016-03-21 19:36  2%     ` Eric Sunshine
  0 siblings, 0 replies; 200+ results
From: Eric Sunshine @ 2016-03-21 19:36 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jose Ivan B. Vilarouca Filho, Git List

On Mon, Mar 21, 2016 at 3:01 PM, Junio C Hamano <gitster@pobox.com> wrote:
> When we are on an unborn branch and merging only one foreign parent,
> we allow "git merge" to fast-forward to that foreign parent commit.
>
> This codepath incorrectly attempted to dereference the list of
> parents that the merge is going to record even when the list is
> empty.  It must refuse to operate instead when there is no parent.
>
> All other codepaths make sure the list is not empty before they
> dereference it, and are safe.
>
> Reported by Jose Ivan B. Vilarouca Filho
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
> diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
> @@ -725,4 +725,14 @@ test_expect_success 'merge detects mod-256 conflicts (resolve)' '
> +test_expect_success 'merge nothing into void' '
> +       git init void &&
> +       (
> +               cd void &&
> +               git remote add up .. &&
> +               git fetch up &&
> +               test_must_fail git merge FETCH_HEAD

Ah, nice. I either didn't know or had forgotten that test_must_fail is
smart enough to detect unexpected failures (such as segfault), so my
advice to Jose about capturing stderr[1] was misdirected. Thanks.

[1]: http://article.gmane.org/gmane.comp.version-control.git/289405

> +       )
> +'
> +
>  test_done

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
  @ 2021-05-03  5:21  2%     ` Junio C Hamano
  2021-05-03  5:50  2%       ` Eric Sunshine
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2021-05-03  5:21 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: git, Josh Soref, Elijah Newren

Eric Sunshine <sunshine@sunshineco.com> writes:

> +	if (verbosity >= 0) {
> +		if (squash)
> +			puts(_("Already up to date. (nothing to squash)"));

The original scripted Porcelain may have said so, but the placement
of full-stop in the above feels a bit strange.  Should we rephrase
it to

	Already up to date (nothing to squash).

as we are fixing the phrasing now?

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
  2021-05-03  5:21  2%     ` Junio C Hamano
@ 2021-05-03  5:50  2%       ` Eric Sunshine
  2021-05-03  6:28  2%         ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Eric Sunshine @ 2021-05-03  5:50 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git List, Josh Soref, Elijah Newren

On Mon, May 3, 2021 at 1:21 AM Junio C Hamano <gitster@pobox.com> wrote:
> Eric Sunshine <sunshine@sunshineco.com> writes:
> > +     if (verbosity >= 0) {
> > +             if (squash)
> > +                     puts(_("Already up to date. (nothing to squash)"));
>
> The original scripted Porcelain may have said so, but the placement
> of full-stop in the above feels a bit strange.  Should we rephrase
> it to
>
>         Already up to date (nothing to squash).
>
> as we are fixing the phrasing now?

I don't have a strong opinion about it, and can go either way with it.
Josh's patch did place the full-stop after the closing parenthesis. I
can re-roll if people think that would be preferable (unless you want
to change it locally while queuing).

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
  2021-05-03  5:50  2%       ` Eric Sunshine
@ 2021-05-03  6:28  2%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-03  6:28 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: Git List, Josh Soref, Elijah Newren

Eric Sunshine <sunshine@sunshineco.com> writes:

> On Mon, May 3, 2021 at 1:21 AM Junio C Hamano <gitster@pobox.com> wrote:
>> Eric Sunshine <sunshine@sunshineco.com> writes:
>> > +     if (verbosity >= 0) {
>> > +             if (squash)
>> > +                     puts(_("Already up to date. (nothing to squash)"));
>>
>> The original scripted Porcelain may have said so, but the placement
>> of full-stop in the above feels a bit strange.  Should we rephrase
>> it to
>>
>>         Already up to date (nothing to squash).
>>
>> as we are fixing the phrasing now?
>
> I don't have a strong opinion about it, and can go either way with it.
> Josh's patch did place the full-stop after the closing parenthesis. I
> can re-roll if people think that would be preferable (unless you want
> to change it locally while queuing).

I am fine to leave this outisde the topic.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
  @ 2022-04-07 13:49  2%   ` Christian Couder
  2022-04-15 14:00  2%     ` Phillip Wood
  0 siblings, 1 reply; 200+ results
From: Christian Couder @ 2022-04-07 13:49 UTC (permalink / raw)
  To: Phillip Wood via GitGitGadget; +Cc: git, Phillip Wood

On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> The reflog message for a conflict resolution committed by "rebase
> --continue" looks like
>
>         rebase (continue): commit subject line
>
> Unfortunately the reflog message each subsequent pick look like
>
>         rebase (continue) (pick): commit subject line
>
> Fix this by setting the reflog message for "rebase --continue" in
> sequencer_continue() so it does not affect subsequent commits. This
> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> in pick_commits(). Both of these will be fixed in a future series that
> stops the sequencer calling setenv().

Yeah, it looks like we will leak only a small string.

> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
>  builtin/rebase.c          |   2 -
>  sequencer.c               |   5 ++
>  t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------

The changes to the test script look a bit involved and aren't
explained in the commit message. I wonder if some of those changes
could have been made in a preparatory commit.


>  3 files changed, 86 insertions(+), 41 deletions(-)

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
  2022-04-07 13:49  2%   ` Christian Couder
@ 2022-04-15 14:00  2%     ` Phillip Wood
  2022-04-17  1:57  2%       ` Elijah Newren
  0 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-04-15 14:00 UTC (permalink / raw)
  To: Christian Couder, Phillip Wood via GitGitGadget; +Cc: git, Phillip Wood

Hi Chirstian

Thanks for taking a look at this series

On 07/04/2022 14:49, Christian Couder wrote:
> On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
>>
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> The reflog message for a conflict resolution committed by "rebase
>> --continue" looks like
>>
>>          rebase (continue): commit subject line
>>
>> Unfortunately the reflog message each subsequent pick look like
>>
>>          rebase (continue) (pick): commit subject line
>>
>> Fix this by setting the reflog message for "rebase --continue" in
>> sequencer_continue() so it does not affect subsequent commits. This
>> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
>> in pick_commits(). Both of these will be fixed in a future series that
>> stops the sequencer calling setenv().
> 
> Yeah, it looks like we will leak only a small string.
> 
>> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
>> ---
>>   builtin/rebase.c          |   2 -
>>   sequencer.c               |   5 ++
>>   t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
> 
> The changes to the test script look a bit involved and aren't
> explained in the commit message. I wonder if some of those changes
> could have been made in a preparatory commit.

That's a good point. For some reason when I put the series together I 
thought it would be tricky to do that without the fixes in this commit 
but that is not actually the case so I'll split the test changes out.

Best Wishes

Phillip

> 
>>   3 files changed, 86 insertions(+), 41 deletions(-)

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
  2022-04-15 14:00  2%     ` Phillip Wood
@ 2022-04-17  1:57  2%       ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-04-17  1:57 UTC (permalink / raw)
  To: Phillip Wood; +Cc: Christian Couder, Phillip Wood via GitGitGadget, git

On Fri, Apr 15, 2022 at 5:23 PM Phillip Wood <phillip.wood123@gmail.com> wrote:
>
> Hi Chirstian
>
> Thanks for taking a look at this series
>
> On 07/04/2022 14:49, Christian Couder wrote:
> > On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
> > <gitgitgadget@gmail.com> wrote:
> >>
> >> From: Phillip Wood <phillip.wood@dunelm.org.uk>
> >>
> >> The reflog message for a conflict resolution committed by "rebase
> >> --continue" looks like
> >>
> >>          rebase (continue): commit subject line
> >>
> >> Unfortunately the reflog message each subsequent pick look like
> >>
> >>          rebase (continue) (pick): commit subject line
> >>
> >> Fix this by setting the reflog message for "rebase --continue" in
> >> sequencer_continue() so it does not affect subsequent commits. This
> >> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> >> in pick_commits(). Both of these will be fixed in a future series that
> >> stops the sequencer calling setenv().
> >
> > Yeah, it looks like we will leak only a small string.
> >
> >> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> >> ---
> >>   builtin/rebase.c          |   2 -
> >>   sequencer.c               |   5 ++
> >>   t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
> >
> > The changes to the test script look a bit involved and aren't
> > explained in the commit message. I wonder if some of those changes
> > could have been made in a preparatory commit.
>
> That's a good point. For some reason when I put the series together I
> thought it would be tricky to do that without the fixes in this commit
> but that is not actually the case so I'll split the test changes out.

That would be very nice; I'd like to see it split out too.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 3/7] rebase --merge: fix reflog message after skipping
  @ 2022-04-17  1:58  2%   ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-04-17  1:58 UTC (permalink / raw)
  To: Phillip Wood via GitGitGadget; +Cc: Git Mailing List, Phillip Wood

On Mon, Feb 21, 2022 at 3:19 PM Phillip Wood via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> The reflog message for every pick after running "rebase --skip" looks
> like
>
>         rebase (skip) (pick): commit subject line
>
> Fix this by not appending " (skip)" to the reflog action.

Nice catch, and cool that the fix was so simple.

> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
>  builtin/rebase.c          |  2 --
>  t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
>  2 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index cd9a4f3e2f1..36863117fba 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -1273,8 +1273,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>                 struct string_list merge_rr = STRING_LIST_INIT_DUP;
>
>                 options.action = "skip";
> -               set_reflog_action(&options);
> -
>                 rerere_clear(the_repository, &merge_rr);
>                 string_list_clear(&merge_rr, 1);
>                 ropts.flags = RESET_HEAD_HARD;
> diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
> index 3ca2fbb0d59..8aa6a79acc1 100755
> --- a/t/t3406-rebase-message.sh
> +++ b/t/t3406-rebase-message.sh
> @@ -163,6 +163,30 @@ test_reflog () {
>         # check there is only one new entry in the branch reflog
>         test_cmp_rev fast-forward@{1} X
>         '
> +
> +       test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
> +       git checkout conflicts &&
> +       test_when_finished "git reset --hard Q" &&
> +
> +       (
> +               if test -n "$reflog_action"
> +               then
> +                       GIT_REFLOG_ACTION="$reflog_action" &&
> +                       export GIT_REFLOG_ACTION
> +               fi &&
> +               test_must_fail git rebase $mode main &&
> +               git rebase --skip
> +       ) &&
> +
> +       git log -g --format=%gs -4 >actual &&
> +       write_reflog_expect <<-EOF &&
> +       ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
> +       ${reflog_action:-rebase} (pick): Q
> +       ${reflog_action:-rebase} (pick): P
> +       ${reflog_action:-rebase} (start): checkout main
> +       EOF
> +       test_cmp expect actual
> +       '
>  }
>
>  test_reflog --merge
> --
> gitgitgadget
>

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
  @ 2022-07-19 22:43  2%     ` Junio C Hamano
    1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-19 22:43 UTC (permalink / raw)
  To: Elijah Newren via GitGitGadget; +Cc: git, ZheNing Hu, Elijah Newren

"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:

> From: Elijah Newren <newren@gmail.com>
>
> When there are racy-dirty files, but no files are modified,
> `git stash create` exits with unsuccessful status.  This causes merge
> to fail.  Refresh the index first to avoid this problem.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
>  builtin/merge.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 00de224a2da..8ce4336dd3f 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
>  	int len;
>  	struct child_process cp = CHILD_PROCESS_INIT;
>  	struct strbuf buffer = STRBUF_INIT;
> +	struct lock_file lock_file = LOCK_INIT;
> +	int fd;
>  	int rc = -1;
>  
> +	fd = repo_hold_locked_index(the_repository, &lock_file, 0);
> +	refresh_cache(REFRESH_QUIET);
> +	if (0 <= fd)
> +		repo_update_index_if_able(the_repository, &lock_file);
> +	rollback_lock_file(&lock_file);

I might have added "else" but rolling back a lock file that was
already committed or rolled back is a safe no-op, so this is OK.
The pattern already appears elsewhere twice, anyway.

Is it sufficient to be opportunistic?  IOW, if we fail to refresh
the index or write the refreshed result to disk, can we be silent
here and rely on "stash create" and things that follow to safely
fail as necessary, or should we also be detecting errors?

>  	strvec_pushl(&cp.args, "stash", "create", NULL);
>  	cp.out = -1;
>  	cp.git_cmd = 1;

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
  @ 2022-07-19 22:49  2%       ` Junio C Hamano
  2022-07-21  1:09  2%         ` Elijah Newren
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-07-19 22:49 UTC (permalink / raw)
  To: ZheNing Hu; +Cc: Elijah Newren via GitGitGadget, Git List, Elijah Newren

ZheNing Hu <adlternative@gmail.com> writes:

> Elijah Newren via GitGitGadget <gitgitgadget@gmail.com> 于2022年6月19日周日 14:50写道:
>>
>> From: Elijah Newren <newren@gmail.com>
>>
>> When there are racy-dirty files, but no files are modified,
>> `git stash create` exits with unsuccessful status.  This causes merge
>> to fail.  Refresh the index first to avoid this problem.

Racily dirty?  Or just being stat-dirty is sufficient to cause the
"stash create" to fail?

> I just want to show what sence will meet this errors:
>
> 1. touch file
> 2. git add file
> 3. git stash push (user may do it before git merge)
> 4. touch file (update file but not update its content)
> 5. git merge (call git stash create and return 1)

I think, from the above reproduction recipe, that the breakage does
not depend on racily-clean index entries (i.e. file touched within
the same timestamp as the last write of the index without changing
their size).  So s/racy-dirty/stat-dirty/ (both on the title and the
body) would be a sufficient fix.

Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
  2022-07-19 22:49  2%       ` Junio C Hamano
@ 2022-07-21  1:09  2%         ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-21  1:09 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: ZheNing Hu, Elijah Newren via GitGitGadget, Git List

On Tue, Jul 19, 2022 at 3:49 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> ZheNing Hu <adlternative@gmail.com> writes:
>
> > Elijah Newren via GitGitGadget <gitgitgadget@gmail.com> 于2022年6月19日周日 14:50写道:
> >>
> >> From: Elijah Newren <newren@gmail.com>
> >>
> >> When there are racy-dirty files, but no files are modified,
> >> `git stash create` exits with unsuccessful status.  This causes merge
> >> to fail.  Refresh the index first to avoid this problem.
>
> Racily dirty?  Or just being stat-dirty is sufficient to cause the
> "stash create" to fail?
>
> > I just want to show what sence will meet this errors:
> >
> > 1. touch file
> > 2. git add file
> > 3. git stash push (user may do it before git merge)
> > 4. touch file (update file but not update its content)
> > 5. git merge (call git stash create and return 1)
>
> I think, from the above reproduction recipe, that the breakage does
> not depend on racily-clean index entries (i.e. file touched within
> the same timestamp as the last write of the index without changing
> their size).  So s/racy-dirty/stat-dirty/ (both on the title and the
> body) would be a sufficient fix.

Yep, stat-dirty.  I'll fix up the title and body; thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
  @ 2022-10-21 17:37  2%     ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-10-21 17:37 UTC (permalink / raw)
  To: Phillip Wood via GitGitGadget
  Cc: git, Phillip Wood, Christian Couder, Elijah Newren,
	Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
	Glen Choo, Victoria Dye, Phillip Wood

"Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com> writes:

> ... This
> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> in pick_commits().

Is it just the matter of freeing previous_reflog_action after you
call setenv(), or does it take much more involved changes?

> Both of these will be fixed in a future series that
> stops the sequencer calling setenv().

If it gets fixed in a future step in the same series, that is a
different matter, but if it is easy enough not to deliberately
introduce a new leak, we'd prefer to do so.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
  @ 2022-10-25 16:11  2%         ` Junio C Hamano
  2022-10-26 15:17  2%           ` Phillip Wood
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-10-25 16:11 UTC (permalink / raw)
  To: Phillip Wood
  Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
	Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
	Emily Shaffer, Glen Choo, Victoria Dye

Phillip Wood <phillip.wood123@gmail.com> writes:

>>> Both of these will be fixed in a future series that
>>> stops the sequencer calling setenv().
>> If it gets fixed in a future step in the same series, that is a
>> different matter, but if it is easy enough not to deliberately
>> introduce a new leak, we'd prefer to do so.
>
> It's a couple of patches to fix which are more or less finished, I'm
> planning to send them once this series is in next.

So we will do the "add a known breakage of the same kind as there
exists others, and then later fix them all up, including the one
that is added by this series, because fixes are non-trivial and this
topic is easier to finish if we allowed to add a known breakage"
approach?  Just making sure it is what you plan to do.

Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
  2022-10-25 16:11  2%         ` Junio C Hamano
@ 2022-10-26 15:17  2%           ` Phillip Wood
  2022-10-26 16:55  2%             ` Junio C Hamano
  0 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-10-26 15:17 UTC (permalink / raw)
  To: Junio C Hamano, Phillip Wood
  Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
	Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
	Emily Shaffer, Glen Choo, Victoria Dye

Hi Junio

On 25/10/2022 17:11, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
> 
>>>> Both of these will be fixed in a future series that
>>>> stops the sequencer calling setenv().
>>> If it gets fixed in a future step in the same series, that is a
>>> different matter, but if it is easy enough not to deliberately
>>> introduce a new leak, we'd prefer to do so.
>>
>> It's a couple of patches to fix which are more or less finished, I'm
>> planning to send them once this series is in next.
> 
> So we will do the "add a known breakage of the same kind as there
> exists others, and then later fix them all up, including the one
> that is added by this series, because fixes are non-trivial and this
> topic is easier to finish if we allowed to add a known breakage"
> approach?  Just making sure it is what you plan to do.

Yes, that's right

Thanks

Phillip

> Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
  2022-10-26 15:17  2%           ` Phillip Wood
@ 2022-10-26 16:55  2%             ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-26 16:55 UTC (permalink / raw)
  To: Phillip Wood
  Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
	Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
	Emily Shaffer, Glen Choo, Victoria Dye

Phillip Wood <phillip.wood123@gmail.com> writes:

> Hi Junio
>
> On 25/10/2022 17:11, Junio C Hamano wrote:
>> Phillip Wood <phillip.wood123@gmail.com> writes:
>> 
>>>>> Both of these will be fixed in a future series that
>>>>> stops the sequencer calling setenv().
>>>> If it gets fixed in a future step in the same series, that is a
>>>> different matter, but if it is easy enough not to deliberately
>>>> introduce a new leak, we'd prefer to do so.
>>>
>>> It's a couple of patches to fix which are more or less finished, I'm
>>> planning to send them once this series is in next.
>> So we will do the "add a known breakage of the same kind as there
>> exists others, and then later fix them all up, including the one
>> that is added by this series, because fixes are non-trivial and this
>> topic is easier to finish if we allowed to add a known breakage"
>> approach?  Just making sure it is what you plan to do.
>
> Yes, that's right

OK, I do not mind as long as we leave a NEEDSWORK note to tell
others that we know the leak and promise to fix it soon (so they do
not waste their effort to fix it independently).

Thanks.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
  @ 2023-05-20  9:25  2%   ` Minnie Shi
  2023-05-20  9:41  2%     ` Minnie Shi
  0 siblings, 1 reply; 200+ results
From: Minnie Shi @ 2023-05-20  9:25 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: git

The document says the “current” branch is master , which means the
HEAD is (G), which does not matter, it is not what I am challenging.

What I am challenging is that it continues the context and says:

Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`C`).

that is not true, current branch is master, and it is (G), Maybe it
should be changed to "topic branch", so it reads like this:

Before the operation,
-`ORIG_HEAD` is set to the tip of the ”topic” branch (`C`).


Min

On Sat, May 20, 2023 at 10:45 AM Kristoffer Haugsbakk
<code@khaugsbakk.name> wrote:
>
> `ORIG_HEAD` before the attempted merge points at the commit that you are
> on (the tip of `master`), not the tip of the branch that you are trying
> to merge in.
>
> Reported-by: Minnie Shi <minnie.shi@gmail.com>
> Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
> ---
>  Documentation/git-merge.txt | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
> index 0aeff572a59..9019b6a1e50 100644
> --- a/Documentation/git-merge.txt
> +++ b/Documentation/git-merge.txt
> @@ -38,7 +38,7 @@ Then "`git merge topic`" will replay the changes made on the
>  its current commit (`C`) on top of `master`, and record the result
>  in a new commit along with the names of the two parent commits and
>  a log message from the user describing the changes. Before the operation,
> -`ORIG_HEAD` is set to the tip of the current branch (`C`).
> +`ORIG_HEAD` is set to the tip of the current branch (`G`).
>
>  ------------
>           A---B---C topic
> --
> 2.41.0.rc1
>


-- 
Kind regards
Min

^ permalink raw reply	[relevance 2%]

* Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
  2023-05-20  9:25  2%   ` Minnie Shi
@ 2023-05-20  9:41  2%     ` Minnie Shi
  0 siblings, 0 replies; 200+ results
From: Minnie Shi @ 2023-05-20  9:41 UTC (permalink / raw)
  To: Kristoffer Haugsbakk; +Cc: git

Okay, i read one more time, i think it should be read as

Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`G`)

instead of
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`C`)

On Sat, May 20, 2023 at 11:25 AM Minnie Shi <minnie.shi@gmail.com> wrote:
>
> The document says the “current” branch is master , which means the
> HEAD is (G), which does not matter, it is not what I am challenging.
>
> What I am challenging is that it continues the context and says:
>
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the "current" branch (`C`).
>
> that is not true, current branch is master, and it is (G), Maybe it
> should be changed to "topic branch", so it reads like this:
>
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the ”topic” branch (`C`).
>
>
> Min
>
> On Sat, May 20, 2023 at 10:45 AM Kristoffer Haugsbakk
> <code@khaugsbakk.name> wrote:
> >
> > `ORIG_HEAD` before the attempted merge points at the commit that you are
> > on (the tip of `master`), not the tip of the branch that you are trying
> > to merge in.
> >
> > Reported-by: Minnie Shi <minnie.shi@gmail.com>
> > Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
> > ---
> >  Documentation/git-merge.txt | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
> > index 0aeff572a59..9019b6a1e50 100644
> > --- a/Documentation/git-merge.txt
> > +++ b/Documentation/git-merge.txt
> > @@ -38,7 +38,7 @@ Then "`git merge topic`" will replay the changes made on the
> >  its current commit (`C`) on top of `master`, and record the result
> >  in a new commit along with the names of the two parent commits and
> >  a log message from the user describing the changes. Before the operation,
> > -`ORIG_HEAD` is set to the tip of the current branch (`C`).
> > +`ORIG_HEAD` is set to the tip of the current branch (`G`).
> >
> >  ------------
> >           A---B---C topic
> > --
> > 2.41.0.rc1
> >
>
>
> --
> Kind regards
> Min



-- 
Kind regards
Min

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Aug 2023, #01; Wed, 2)
@ 2023-08-02 18:10  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2023-08-02 18:10 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).

We are getting closer to the final phase of this cycle, which begins
when -rc0 preview release is tagged this coming Friday, followed by
about 1 1/2 weeks of stabilization period that begins when -rc1 is
tagged (cf. tinyurl.com/gitCal).  There are a handful of topics that
still need reviews before getting merged to 'next', but because the
summer in the northern hemisphere is historically a slower season,
too few reviewers seem to be active, relative to the number of these
topics.

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']

* ah/autoconf-fixes (2023-07-19) 3 commits
  (merged to 'next' on 2023-07-25 at 35ff66e0cb)
 + configure.ac: always save NO_ICONV to config.status
 + configure.ac: don't overwrite NO_CURL option
 + configure.ac: don't overwrite NO_EXPAT option

 "./configure --with-expat=no" did not work as a way to refuse use
 of the expat library on a system with the library installed, which
 has been corrected.
 source: <20230719145211.17854-2-aherrmann@suse.de>


* ah/sequencer-rewrite-todo-fix (2023-07-24) 1 commit
  (merged to 'next' on 2023-07-26 at 24e74d9eda)
 + sequencer: finish parsing the todo list despite an invalid first line

 When the user edits "rebase -i" todo file so that it starts with a
 "fixup", which would make it invalid, the command truncated the
 rest of the file before giving an error and returning the control
 back to the user.  Stop truncating to make it easier to correct
 such a malformed todo file.
 cf. <https://lore.kernel.org/git/0d1c5bfd-3ae5-83f0-a333-bbb8510a973a@gmail.com/>
 source: <20230722212830.132135-2-alexhenrie24@gmail.com>


* bb/use-trace2-counters-for-fsync-stats (2023-07-20) 1 commit
  (merged to 'next' on 2023-07-26 at f2c2e3f2b9)
 + wrapper: use trace2 counters to collect fsync stats

 Instead of inventing a custom counter variables for debugging,
 use existing trace2 facility in the fsync customization codepath.
 source: <20230720164823.625815-1-dev+git@drbeat.li>


* jc/tree-walk-drop-base-offset (2023-07-07) 2 commits
  (merged to 'next' on 2023-07-25 at cc050c60a6)
 + tree-walk: drop unused base_offset from do_match()
 + tree-walk: lose base_offset that is never used in tree_entry_interesting

 Code simplification.
 source: <20230707222116.4129415-1-gitster@pobox.com>


* ks/ref-filter-describe (2023-07-24) 2 commits
  (merged to 'next' on 2023-07-26 at f4b3b3b7ef)
 + ref-filter: add new "describe" atom
 + ref-filter: add multiple-option parsing functions

 "git branch --list --format=<format>" and friends are taught
 a new "%(describe)" placeholder.
 source: <20230723162717.68123-1-five231003@gmail.com>

--------------------------------------------------
[New Topics]

* bc/ident-dot-is-no-longer-crud-letter (2023-08-02) 1 commit
 - ident: don't consider '.' a crud

 Exclude "." from the set of characters to be removed from the
 beginning and the end of the human-readable name.

 Will merge to 'next'?
 source: <xmqqsf918k4j.fsf@gitster.g>


* jc/unresolve-removal (2023-07-31) 7 commits
 - checkout: allow "checkout -m path" to unmerge removed paths
 - checkout/restore: add basic tests for --merge
 - checkout/restore: refuse unmerging paths unless checking out of the index
 - update-index: remove stale fallback code for "--unresolve"
 - update-index: use unmerge_index_entry() to support removal
 - resolve-undo: allow resurrecting conflicted state that resolved to deletion
 - update-index: do not read HEAD and MERGE_HEAD unconditionally

 "checkout --merge -- path" and "update-index --unresolve path" did
 not resurrect conflicted state that was resolved to remove path,
 but now they do.

 Needs review.
 source: <20230731224409.4181277-1-gitster@pobox.com>


* ew/hash-with-openssl-evp (2023-08-01) 2 commits
 - avoid SHA-1 functions deprecated in OpenSSL 3+
 - sha256: avoid functions deprecated in OpenSSL 3+

 Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
 its traditional API, by using its EVP API instead.

 Will merge to 'next'. 
 source: <20230801025454.1137802-1-e@80x24.org>


* rj/status-bisect-while-rebase (2023-08-01) 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: <48745298-f12b-8efb-4e48-90d2c22a8349@gmail.com>

--------------------------------------------------
[Stalled]

* 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>


* ab/tag-object-type-errors (2023-05-10) 4 commits
 - tag: don't emit potentially incorrect "object is a X, not a Y"
 - tag: don't misreport type of tagged objects in errors
 - object tests: add test for unexpected objects in tags
 - Merge branch 'jk/parse-object-type-mismatch' into ab/tag-object-type-errors

 Hardening checks around mismatched object types when one of those
 objects is a tag.

 Will discard.
 Stalled for too long.
 source: <cover-v2-0.3-00000000000-20221230T011725Z-avarab@gmail.com>


* ob/revert-of-revert (2023-05-05) 1 commit
 - sequencer: beautify subject of reverts of reverts

 Instead of "Revert "Revert "original"", give "Reapply "original""
 as the title for a revert of a revert.

 Will discard.
 Have been expecting a hopefully final reroll for too long.
 Looking much better, except for minor cosmetic issues.
 cf. <xmqqmt21txid.fsf@gitster.g>
 source: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de>


* pw/rebase-i-after-failure (2023-08-01) 7 commits
 - rebase -i: fix adding failed command to the todo list
 - rebase --continue: refuse to commit after failed command
 - rebase: fix rewritten list for failed pick
 - sequencer: factor out part of pick_commits()
 - sequencer: use rebase_path_message()
 - rebase -i: remove patch file after conflict resolution
 - rebase -i: move unlink() calls

 Various fixes to the behaviour of "rebase -i" when the command got
 interrupted by conflicting changes.

 Will merge to 'next'?
 cf. <xmqqa5vad6ea.fsf@gitster.g>
 cf. <xmqq5y5yd6d7.fsf@gitster.g>
 source: <pull.1492.v3.git.1690903412.gitgitgadget@gmail.com>

--------------------------------------------------
[Cooking]

* ew/sha256-gcrypt-leak-fixes (2023-07-31) 3 commits
  (merged to 'next' on 2023-08-01 at eed83801c3)
 + sha256/gcrypt: die on gcry_md_open failures
 + sha256/gcrypt: fix memory leak with SHA-256 repos
 + sha256/gcrypt: fix build with SANITIZE=leak

 Leakfixes.

 Will merge to 'master'.
 source: <20230731120808.1230210-1-e@80x24.org>


* rs/bundle-parseopt-cleanup (2023-07-31) 1 commit
  (merged to 'next' on 2023-08-01 at 405eb138fa)
 + bundle: use OPT_PASSTHRU_ARGV

 Code clean-up.

 Will merge to 'master'.
 source: <2dcb915f-b926-e024-6394-23aff200955c@web.de>


* pv/doc-submodule-update-settings (2023-07-25) 1 commit
  (merged to 'next' on 2023-07-27 at e27b5b7ba8)
 + doc: highlight that .gitmodules does not support !command

 Rewrite the description of giving a custom command to the
 submodule.<name>.update configuraiton variable.

 Will merge to 'master'.
 source: <20230725212218.711116-1-pvutov@imap.cc>


* la/doc-choose-starting-point-fixup (2023-07-27) 3 commits
  (merged to 'next' on 2023-07-28 at 047dcae31c)
 + SubmittingPatches: use of older maintenance tracks is an exception
 + SubmittingPatches: explain why 'next' and above are inappropriate base
 + SubmittingPatches: choice of base for fixing an older maintenance track
 (this branch uses la/doc-choose-starting-point.)

 Clarify how to pick a starting point for a new topic in the
 SubmittingPatches document.

 Will merge to 'master', together with the underlying topic.
 source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
 source: <pull.1556.v3.git.1690340701.gitgitgadget@gmail.com>


* am/doc-sha256 (2023-07-31) 1 commit
  (merged to 'next' on 2023-08-01 at d7419bf527)
 + doc: sha256 is no longer experimental

 Tone down the warning on SHA-256 repositories being an experimental
 curiosity.  We do not have support for them to interoperate with
 traditional SHA-1 repositories, but at this point, we do not plan
 to make breaking changes to SHA-256 repositories and there is no
 longer need for such a strongly phrased warning.

 Will merge to 'master'.
 source: <ZMe6KmzZGVubYpvO@adams>


* hy/blame-in-bare-with-contents (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-31 at 39ac96d8d8)
 + blame: allow --contents to work with bare repo

 "git blame --contents=file" has been taught to work in a bare
 repository.

 Will merge to 'master'.
 source: <20230721035758.61956-1-hanyang.tony@bytedance.com>


* ja/worktree-orphan-fix (2023-07-26) 3 commits
  (merged to 'next' on 2023-07-27 at e475016065)
 + t2400: rewrite regex to avoid unintentional PCRE
 + builtin/worktree.c: convert tab in advice to space
 + t2400: drop no-op `--sq` from rev-parse call

 Fix tests with unportable regex patterns.

 Will merge to 'master'.
 source: <20230726214202.15775-1-jacobabel@nullpo.dev>


* jc/retire-get-sha1-hex (2023-07-24) 1 commit
  (merged to 'next' on 2023-07-27 at eeb9cc37f5)
 + hex: retire get_sha1_hex()

 The implementation of "get_sha1_hex()" that reads a hexadecimal
 string that spells a full object name has been extended to cope
 with any hash function used in the repository, but the "sha1" in
 its name survived.  Rename it to get_hash_hex(), a name that is
 more consistent within its friends like get_hash_hex_algop().

 Will merge to 'master'.
 source: <xmqq1qgwoqgo.fsf_-_@gitster.g>


* rs/parse-options-negation-help (2023-07-24) 5 commits
 - parse-options: show negatability of options in short help
 - t1502: test option negation
 - t1502: move optionspec help output to a file
 - t1502, docs: disallow --no-help
 - subtree: disallow --no-{help,quiet,debug,branch,message}

 "git cmd -h" learned to signal which options can be negated by
 listing such options like "--[no-]opt".

 Comments?
 Would showing "--[[no-]no-]opt" for "no-opt" be worth it?
 cf. <9e8225dd-1e8b-8af2-c3e1-0c5834694244@web.de>
 source: <4d01e971-07cb-4f11-3cc6-9d9f21e590c1@web.de>


* tb/commit-graph-tests (2023-07-24) 5 commits
  (merged to 'next' on 2023-07-31 at 740a260315)
 + t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
 + t5328: avoid top-level directory changes
 + t5318: avoid top-level directory changes
 + t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
 + t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories

 Test updates.

 Will merge to 'master'.
 source: <cover.1690216758.git.me@ttaylorr.com>


* la/doc-choose-starting-point (2023-07-14) 5 commits
  (merged to 'next' on 2023-07-19 at 5a807cae46)
 + SubmittingPatches: simplify guidance for choosing a starting point
 + SubmittingPatches: emphasize need to communicate non-default starting points
 + SubmittingPatches: de-emphasize branches as starting points
 + SubmittingPatches: discuss subsystems separately from git.git
 + SubmittingPatches: reword awkward phrasing
 (this branch is used by la/doc-choose-starting-point-fixup.)

 Clarify how to choose the starting point for a new topic in
 developer guidance document.

 Will merge to 'master' together with the follow-on topic.
 source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>


* jc/doc-sent-patch-now-what (2023-07-27) 1 commit
  (merged to 'next' on 2023-07-31 at 51f5d9d465)
 + MyFirstContribution: refrain from self-iterating too much

 Process document update.

 Will merge to 'master'.
 source: <xmqqmszg987u.fsf_-_@gitster.g>


* jc/parse-options-short-help (2023-07-19) 3 commits
  (merged to 'next' on 2023-07-31 at e076d1f497)
 + short help: allow a gap smaller than USAGE_GAP
 + remote: simplify "remote add --tags" help text
 + short help: allow multi-line opthelp

 Command line parser fix, and a small parse-options API update.

 Will merge to 'master'.
 source: <xmqq5y6gg8fn.fsf@gitster.g>


* sl/sparse-check-attr (2023-07-18) 3 commits
 - check-attr: integrate with sparse-index
 - attr.c: read attributes in a sparse directory
 - t1092: add tests for 'git check-attr'

 Teach "git check-attr" work better with sparse-index.

 Expecting a reroll.
 cf. <c3ebe3b4-88b9-8ca2-2ee3-39a3e0d82201@github.com>
 cf. <5e478d8b-9ef4-864b-41e4-e0a79877d278@github.com>
 source: <20230718232916.31660-1-cheskaqiqi@gmail.com>


* jc/branch-in-use-error-message (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-31 at 22f17d131b)
 + branch: update the message to refuse touching a branch in-use

 "git branch -f X" to repoint the branch X seid that X was "checked
 out" in another worktree, even when branch X was not and instead
 being bisected or rebased.  The message was reworded to say the
 branch was "in use".

 Will merge to 'master'.
 source: <xmqqr0p1szhz.fsf_-_@gitster.g>


* mh/credential-erase-improvements-more (2023-07-26) 2 commits
 - credential/wincred: erase matching creds only
 - credential/libsecret: erase matching creds only

 Update two credential helpers to correctly match which credential
 to erase; they dropped not the ones with stale password.

 Needs review.
 source: <pull.1527.v2.git.git.1690387585634.gitgitgadget@gmail.com>
 source: <pull.1529.git.git.1687596777147.gitgitgadget@gmail.com>


* cc/repack-sift-filtered-objects-to-separate-pack (2023-07-24) 8 commits
 . gc: add `gc.repackFilterTo` config option
 . repack: implement `--filter-to` for storing filtered out objects
 . gc: add `gc.repackFilter` config option
 . repack: add `--filter=<filter-spec>` option
 . repack: refactor finding pack prefix
 . repack: refactor finishing pack-objects command
 . t/helper: add 'find-pack' test-tool
 . pack-objects: allow `--filter` without `--stdout`

 "git repack" machinery learns to pay attention to the "--filter="
 option.

 Breaks CI with some environment variables configured.
 cf. <xmqqo7jzh9mh.fsf@gitster.g>
 source: <20230724085909.3831831-1-christian.couder@gmail.com>


* js/doc-unit-tests (2023-06-30) 1 commit
 - unit tests: Add a project plan document

 Process to add some form of low-level unit tests has started.

 Still filling in blanks.
 source: <0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com>


* jt/path-filter-fix (2023-08-01) 7 commits
 - 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

 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.

 Still under discussion.
 cf. <20230801185232.1457172-1-jonathantanmy@google.com>
 source: <cover.1690912539.git.jonathantanmy@google.com>


* mh/credential-libsecret-attrs (2023-06-16) 1 commit
 - credential/libsecret: store new attributes

 The way authentication related data other than passwords (e.g.
 oath token and password expiration data) are stored in libsecret
 keyrings has been rethought.

 Needs review.
 source: <pull.1469.v5.git.git.1686945306242.gitgitgadget@gmail.com>


* cc/git-replay (2023-06-03) 15 commits
 - replay: stop assuming replayed branches do not diverge
 - replay: add --contained to rebase contained branches
 - replay: add --advance or 'cherry-pick' mode
 - replay: disallow revision specific options and pathspecs
 - 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: don't simplify history
 - 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

 What's the status of this thing?
 source: <20230602102533.876905-1-christian.couder@gmail.com>

--------------------------------------------------
[Discarded]

* jc/doc-submodule-update-settings (2023-07-13) 1 commit
 . submodule: clarify that "!custom command" is the only oddball

 Rewrite the description of giving a custom command to the
 submodule.<name>.update configuraiton variable.

 Superseded by pv/doc-submodule-update-settings topic.
 source: <xmqqwmz3oacg.fsf@gitster.g>


* jc/rerere-read-rr-fix (2023-07-21) 1 commit
 . rerere: match the hash algorithm with its length

 SHA-256 fix.

 Superseded by jc/retire-get-sha1-hex
 source: <xmqqa5vou9ar.fsf@gitster.g>


* cb/checkout-same-branch-twice (2023-03-22) 2 commits
 . SQUASH??? the test marked to expect failure passes from day one
 . checkout/switch: disallow checking out same branch in multiple worktrees

 "git checkout -B $branch" failed to protect against checking out
 a branch that is checked out elsewhere, unlike "git branch -f" did.

 Have been expecting a hopefully minor and final reroll for too long.
 cf. <CAPUEspj_Bh+LgYLnWfeBdcq_uV5Cbou-7H51GLFjzSa5Qzby9w@mail.gmail.com>
 source: <20230120113553.24655-1-carenas@gmail.com>


* ed/fsmonitor-windows-named-pipe (2023-03-24) 1 commit
 . fsmonitor: handle differences between Windows named pipe functions

 Fix fsmonitor on Windows when the filesystem path contains certain
 characters.

 Have been expecting a reroll for too long.
 cf. <b9cf67e4-22a7-2ff0-8310-9223bea10d6d@jeffhostetler.com>
 source: <pull.1503.git.1679678090412.gitgitgadget@gmail.com>


* rn/sparse-diff-index (2023-04-10) 1 commit
 . diff-index: enable sparse index

 "git diff-index" command has been taught to work better with the
 sparse index.

 Have been expecting a reroll for too long.
 cf. <62821012-4fc3-5ad8-695c-70f7ab14a8c9@github.com>
 source: <20230408112342.404318-1-nanth.raghul@gmail.com>


* es/recurse-submodules-option-is-a-bool (2023-04-10) 1 commit
 . usage: clarify --recurse-submodules as a boolean

 The "--[no-]recurse-submodules" option of "git checkout" and others
 supported an undocumented syntax --recurse-submodules=<value> where
 the value can spell a Boolean in various ways.  The support for the
 syntax is being dropped.

 Have been expecting a reroll for too long.
 cf. <ZDSTFwMFO7vbj/du@google.com>
 source: <ZDSTFwMFO7vbj/du@google.com>


* jc/checkout-merge-fix (2023-07-28) 2 commits
 . checkout/restore: add basic tests for --merge
 . checkout/restore: refuse unmerging paths unless checking out of the index

 "git checkout/restore --merge -- $path" improvements.

 Superseded by jc/unresolve-removal
 source: <xmqq7cqj4rme.fsf@gitster.g>


* jc/resolve-undo-fixes (2023-07-28) 4 commits
 . update-index: remove stale fallback code for "--unresolve"
 . update-index: use unmerge_index_entry() to support removal
 . resolve-undo: allow resurrecting conflicted state that resolved to deletion
 . update-index: do not read HEAD and MERGE_HEAD unconditionally

 Assorted fixes and clean-up around resolve-undo data.

 Superseded by jc/unresolve-removal
 source: <xmqqo7jv4y0t.fsf_-_@gitster.g>

^ permalink raw reply	[relevance 2%]

* Re: [PATCH v5] Add default merge options for all branches
  @ 2011-05-05  0:42  2%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-05  0:42 UTC (permalink / raw)
  To: Michael Grubb; +Cc: git, Jonathan Nieder

Thanks.

I think we still need to work on this a bit more, but I found an unrelated
and nastier issue before this patch can sanely be applied.

> +test_expect_success 'combine branch.master.mergeoptions with merge.ff' '
> +	git reset --hard c0 &&
> +	git config branch.master.mergeoptions --ff
> +	git config merge.ff false
> +	test_tick &&
> +	git merge c1 &&
> +	git config --remove-section "branch.master" &&
> +	git config --remove-section "merge" &&
> +	verify_merge file result.1 &&
> +	verify_parents "$c0"
> +'

If you insert an "exit" after this test and inspect the resulting commit,
you will see that it created a merge.

	Side note: I think verify_parents is buggy. It only makes sure
	that the earlier parents of HEAD match the commits given, and does
	not care if there actually are more parents.

In any case, your test exposed an ancient breakage ever since the
per-branch mergeoptions was introduced back when git-merge was a shell
script (aec7b36 (git-merge: add support for branch.<name>.mergeoptions,
2007-09-24).

I am not going to fix verify_parents tonight, as I have other git things
to do.

-- >8 --
Subject: [PATCH] merge: fix branch.<name>.mergeoptions

The parsing of the additional command line parameters supplied to
the branch.<name>.mergeoptions configuration variable was implemented
at the wrong stage.  If any merge-related variable came after we read
branch.<name>.mergeoptions, the earlier value was overwritten.

We should first read all the merge.* configuration, override them by
reading from branch.<name>.mergeoptions and then finally read from
the command line.

This patch should fix it, even though I now strongly suspect that
branch.<name>.mergeoptions that gives a single command line that
needs to be parsed was likely to be an ill-conceived idea to begin
with.  Sigh...

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-merge.c  |   39 +++++++++++++++++++++++++--------------
 t/t7600-merge.sh |   32 ++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 14 deletions(-)

diff --git a/builtin-merge.c b/builtin-merge.c
index 3aaec7b..01389a3 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -54,6 +54,7 @@ static size_t use_strategies_nr, use_strategies_alloc;
 static const char **xopts;
 static size_t xopts_nr, xopts_alloc;
 static const char *branch;
+static char *branch_mergeoptions;
 static int verbosity;
 static int allow_rerere_auto;
 
@@ -474,25 +475,33 @@ cleanup:
 	strbuf_release(&bname);
 }
 
+static void parse_branch_merge_options(char *bmo)
+{
+	const char **argv;
+	int argc;
+	char *buf;
+
+	if (!bmo)
+		return;
+	argc = split_cmdline(bmo, &argv);
+	if (argc < 0)
+		die("Bad branch.%s.mergeoptions string", branch);
+	argv = xrealloc(argv, sizeof(*argv) * (argc + 2));
+	memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));
+	argc++;
+	parse_options(argc, argv, NULL, builtin_merge_options,
+		      builtin_merge_usage, 0);
+	free(buf);
+}
+
 static int git_merge_config(const char *k, const char *v, void *cb)
 {
 	if (branch && !prefixcmp(k, "branch.") &&
 		!prefixcmp(k + 7, branch) &&
 		!strcmp(k + 7 + strlen(branch), ".mergeoptions")) {
-		const char **argv;
-		int argc;
-		char *buf;
-
-		buf = xstrdup(v);
-		argc = split_cmdline(buf, &argv);
-		if (argc < 0)
-			die("Bad branch.%s.mergeoptions string", branch);
-		argv = xrealloc(argv, sizeof(*argv) * (argc + 2));
-		memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));
-		argc++;
-		parse_options(argc, argv, NULL, builtin_merge_options,
-			      builtin_merge_usage, 0);
-		free(buf);
+		free(branch_mergeoptions);
+		branch_mergeoptions = xstrdup(v);
+		return 0;
 	}
 
 	if (!strcmp(k, "merge.diffstat") || !strcmp(k, "merge.stat"))
@@ -918,6 +927,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
 	if (diff_use_color_default == -1)
 		diff_use_color_default = git_use_color_default;
 
+	if (branch_mergeoptions)
+		parse_branch_merge_options(branch_mergeoptions);
 	argc = parse_options(argc, argv, prefix, builtin_merge_options,
 			builtin_merge_usage, 0);
 	if (verbosity < 0)
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index 57f6d2b..56c653d 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -372,6 +372,38 @@ test_expect_success 'merge c1 with c2 (no-commit in config)' '
 
 test_debug 'gitk --all'
 
+test_expect_success 'merge c1 with c2 (log in config)' '
+	git config branch.master.mergeoptions "" &&
+	git reset --hard c1 &&
+	git merge --log c2 &&
+	git show -s --pretty=tformat:%s%n%b >expect &&
+
+	git config branch.master.mergeoptions --log &&
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >actual &&
+
+	test_cmp expect actual
+'
+
+test_expect_success 'merge c1 with c2 (log in config gets overridden)' '
+	(
+		git config --remove-section branch.master
+		git config --remove-section merge
+	)
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >expect &&
+
+	git config branch.master.mergeoptions "--no-log" &&
+	git config merge.log true &&
+	git reset --hard c1 &&
+	git merge c2 &&
+	git show -s --pretty=tformat:%s%n%b >actual &&
+
+	test_cmp expect actual
+'
+
 test_expect_success 'merge c1 with c2 (squash in config)' '
 	git reset --hard c1 &&
 	git config branch.master.mergeoptions "--squash" &&
-- 
1.7.5.284.g84c3a8

        

^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (Dec 2009, #03; Tue, 08)
@ 2009-12-08  9:25  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-12-08  9:25 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

--------------------------------------------------
[New Topics]

* bg/maint-add-all-doc (2009-12-07) 4 commits.
 - squash! rm documentation--also mention add-u where we mention commit-a
 - git-rm doc: Describe how to sync index & work tree
 - git-add/rm doc: Consistently back-quote
 - Documentation: 'git add -A' can remove files

I didn't like the existing documentation for "add -u" myself (especially
because I wrote the initial version) and this neatly fix it as well.

* il/vcs-helper (2009-12-06) 8 commits
 - Remove special casing of http, https and ftp
 - Support remote archive from external protocol helpers
 - Support remote helpers implementing smart transports
 - Support taking over transports
 - Refactor git transport options parsing
 - Pass unknown protocols to external protocol handlers
 - Support mandatory capabilities
 - Add remote helper debug mode
 (this branch is related to sr/vcs-helper.)

Under active discussion and review; another round expected.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

* jk/maint-add-p-delete-fix (2009-12-08) 1 commit.
  (merged to 'next' on 2009-12-08 at 3c2c08a)
 + add-interactive: fix deletion of non-empty files

Fixes a regression in 1.6.5.3.

* mm/diag-path-in-treeish (2009-12-07) 1 commit
 - Detailed diagnosis when parsing an object name fails.

* ns/rebase-auto-squash (2009-12-08) 1 commit
 - rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

--------------------------------------------------
[Stalled]

* je/send-email-no-subject (2009-08-05) 1 commit.
  (merged to 'next' on 2009-10-11 at 1b99c56)
 + send-email: confirm on empty mail subjects

The existing tests cover the positive case (i.e. as long as the user says
"yes" to the "do you really want to send this message that lacks subject",
the message is sent) of this feature, but the feature itself needs its own
test to verify the negative case (i.e. does it correctly stop if the user
says "no"?)

* jc/checkout-merge-base (2009-11-20) 2 commits
 - "rebase --onto A...B" replays history on the merge base between A and B
 - "checkout A...B" switches to the merge base between A and B

I've been using the first one for a while myself but do not see many users
want this (yet); the new feature is not urgent anyway.

* tr/maint-merge-ours-clarification (2009-11-15) 1 commit
  (merged to 'next' on 2009-11-21 at fadaf7b)
 + rebase: refuse to rebase with -s ours

I do not think we reached a concensus for solving conflicts between "give
them rope" and "protect users from clearly meaningless combinations".  The
author obviously is for the latter (and I am inclined to agree); Dscho
seems to think otherwise.

* jc/fix-tree-walk (2009-10-22) 8 commits
  (merged to 'next' on 2009-10-22 at 10c0c8f)
 + Revert failed attempt since 353c5ee
 + read-tree --debug-unpack
  (merged to 'next' on 2009-10-11 at 0b058e2)
 + unpack-trees.c: look ahead in the index
 + unpack-trees.c: prepare for looking ahead in the index
 + Aggressive three-way merge: fix D/F case
 + traverse_trees(): handle D/F conflict case sanely
 + more D/F conflict tests
 + tests: move convenience regexp to match object names to test-lib.sh

This has some stupid bugs and reverted from 'next' until I can fix it, but
the "temporarily" turned out to be very loooong.  Sigh.  We won't have a
proper fix in 1.6.6.

* jc/grep-full-tree (2009-11-24) 1 commit.
 - grep: --full-tree

The interaction with this option and pathspecs need to be worked out
better.  I _think_ "grep --full-tree -e pattern -- '*.h'" should find from
all the header files in the tree, for example.

--------------------------------------------------
[Cooking]

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - Notes API: for_each_note(): Traverse the entire notes tree with a callback
 - Notes API: get_note(): Return the note annotating the given object
 - Notes API: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
 - Add more testcases to test fast-import of notes
 - Rename t9301 to t9350, to make room for more fast-import tests
 - fast-import: Proper notes tree manipulation

Rerolled and under discussion.

* jn/maint-pull-rebase-error-message (2009-11-27) 1 commit.
  (merged to 'next' on 2009-12-03 at 2ced03c)
 + pull: clarify advice for the unconfigured error case

Replaces old 'jn/rfc-pull-rebase-error-message' topic.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
 - General --quiet improvements

* mv/commit-date (2009-12-03) 2 commits
 - Document date formats accepted by parse_date()
 - builtin-commit: add --date option

* mh/rebase-fixup (2009-12-07) 2 commits
 - Add a command "fixup" to rebase --interactive
 - t3404: Use test_commit to set up test repository
 (this branch is used by ns/rebase-auto-squash.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* sr/gfi-options (2009-12-04) 7 commits
 - fast-import: add (non-)relative-marks feature
 - fast-import: allow for multiple --import-marks= arguments
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: add feature command
 - fast-import: put marks reading in its own function
 - fast-import: put option parsing code in separate functions

Rerolled.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - Document that merge strategies can now take their own options
 - Extend merge-subtree tests to test -Xsubtree=dir.
 - Make "subtree" part more orthogonal to the rest of merge-recursive.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* mo/bin-wrappers (2009-12-02) 3 commits
 - INSTALL: document a simpler way to run uninstalled builds
 - run test suite without dashed git-commands in PATH
 - build dashless "bin-wrappers" directory similar to installed bindir

Rerolled.

* tr/http-updates (2009-12-01) 3 commits
  (merged to 'next' on 2009-12-07 at f08d447)
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* jc/diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: flip the default diff.bwoutputonly to true
 - diff: optionally allow traditional "-b/-w affects only output" semantics
 (this branch uses gb/1.7.0-diff-whitespace-only-output and jc/1.7.0-diff-whitespace-only-status; is used by jc/1.7.0-diff-whitespace-prepare.)

This was to redo the two -b/-w semantic changes to prepare the migration of
existing users before 1.7.0 happens, but I think we should drop it.

Comments?

* sr/vcs-helper (2009-12-07) 14 commits
  (merged to 'next' on 2009-12-07 at 8f041bc)
 + tests: handle NO_PYTHON setting
  (merged to 'next' on 2009-12-03 at e45b562)
 + builtin-push: don't access freed transport->url
  (merged to 'next' on 2009-11-27 at 83268ab)
 + Add Python support library for remote helpers
 + Basic build infrastructure for Python scripts
 + Allow helpers to report in "list" command that the ref is unchanged
 + Fix various memory leaks in transport-helper.c
 + Allow helper to map private ref names into normal names
 + Add support for "import" helper command
 + Allow specifying the remote helper in the url
 + Add a config option for remotes to specify a foreign vcs
 + Allow fetch to modify refs
 + Use a function to determine whether a remote is valid
 + Allow programs to not depend on remotes having urls
 + Fix memory leak in helper method for disconnect
 (this branch is related to il/vcs-helper.)

Should be among the first to graduate after 1.6.6 final.

* tr/reset-checkout-patch (2009-11-19) 1 commit.
  (merged to 'next' on 2009-11-22 at b224950)
 + {checkout,reset} -p: make patch direction configurable

I do not particularly like a configuration like this that changes the
behaviour of a command in a drastic way---it will make helping others
much harder.

Comments?

* nd/sparse (2009-11-25) 20 commits.
  (merged to 'next' on 2009-11-25 at 71380f5)
 + tests: rename duplicate t1009
  (merged to 'next' on 2009-11-23 at f712a41)
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

There were some test glitches reported and at least one test seems to 
be broken in the sense that it is not testing what it is trying to.
Fix-up expected.

--------------------------------------------------
[For 1.7.0]

* jk/1.7.0-status (2009-12-07) 11 commits.
  (merged to 'next' on 2009-12-07 at 7723acf)
 + status: reduce duplicated setup code
 + status: disable color for porcelain format
  (merged to 'next' on 2009-12-05 at 44dcefd)
 + status -s: obey color.status
 + builtin-commit: refactor short-status code into wt-status.c
  (merged to 'next' on 2009-11-27 at 91691ec)
 + t7508-status.sh: Add tests for status -s
 + status -s: respect the status.relativePaths option
  (merged to 'next' on 2009-11-21 at 884bb56)
 + docs: note that status configuration affects only long format
  (merged to 'next' on 2009-10-11 at 65c8513)
 + commit: support alternate status formats
 + status: add --porcelain output format
 + status: refactor format option parsing
 + status: refactor short-mode printing to its own function
 (this branch uses jc/1.7.0-status.)

Gives the --short output format to post 1.7.0 "git commit --dry-run" that
is similar to that of post 1.7.0 "git status".

Immediately after 1.6.6 while rebuilding 'next', we may want to reorder a
few commits at the tip, as "docs: affects only long format" describes a
limitation that will disappear soon.

* jc/1.7.0-status (2009-09-05) 4 commits.
  (merged to 'next' on 2009-10-11 at 9558627)
 + status: typo fix in usage
 + git status: not "commit --dry-run" anymore
 + git stat -s: short status output
 + git stat: the beginning of "status that is not a dry-run of commit"
 (this branch is used by jk/1.7.0-status.)

With this, "git status" is no longer "git commit --dry-run".

* jc/1.7.0-send-email-no-thread-default (2009-08-22) 1 commit.
  (merged to 'next' on 2009-10-11 at 043acdf)
 + send-email: make --no-chain-reply-to the default

As the title says.

* jc/1.7.0-push-safety (2009-02-09) 2 commits.
  (merged to 'next' on 2009-10-11 at 81b8128)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

* jc/1.7.0-diff-whitespace-only-status (2009-08-30) 4 commits.
  (merged to 'next' on 2009-10-11 at 546c74d)
 + diff.c: fix typoes in comments
 + Make test case number unique
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

This changes exit code from "git diff --ignore-whitespace" and friends
when there is no actual output.  It is a backward incompatible change,
and jc/diff-whitespace-prepare topic is meant to ease the transition.

* gb/1.7.0-diff-whitespace-only-output (2009-11-19) 1 commit
  (merged to 'next' on 2009-11-21 at 3375bf4)
 + No diff -b/-w output for all-whitespace changes
 (this branch is used by jc/1.7.0-diff-whitespace-prepare and jc/diff-whitespace-prepare.)

Likewise but for the output of "diff --git" headers.

* jc/1.7.0-diff-whitespace-prepare (2009-11-28) 2 commits
 - diff: disable diff.bwoutputonly warning
 - diff: flip the diff.bwoutputonly default to false
 (this branch uses gb/1.7.0-diff-whitespace-only-output, jc/1.7.0-diff-whitespace-only-status and jc/diff-whitespace-prepare.)

And this is to actually flip the default and eventually remove the warning.
As I am contemplating of dropping jc/diff-whitespace-prepare, this should
also be dropped as well.

* ns/1.7.0-send-email-no-chain-reply-to (2009-08-22) 1 commit
 - send-email: make --no-chain-reply-to the default

And this is to actually flip the default in 1.7.0.

--------------------------------------------------
[Reverted from 'next']

* jc/botched-maint-cygwin-count-objects (2009-11-24) 2 commits.
  (merged to 'next' on 2009-11-25 at 8aa62a0)
 + Revert "ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)"
  (merged to 'next' on 2009-11-22 at 4ba5880)
 + ST_BLOCKS_COUNTS_IN_BLKSIZE to say on-disk size is (st_blksize * st_blocks)

This is a revert of the tip one I merged prematurely to 'next'.  The real
fix from Ramsay is already in 'master'.

* ks/precompute-completion (2009-11-15) 4 commits.
  (merged to 'next' on 2009-11-15 at 23cdb96)
 + Revert ks/precompute-completion series
  (merged to 'next' on 2009-10-28 at cd5177f)
 + completion: ignore custom merge strategies when pre-generating
  (merged to 'next' on 2009-10-22 at f46a28a)
 + bug: precomputed completion includes scripts sources
  (merged to 'next' on 2009-10-14 at adf722a)
 + Speedup bash completion loading

Reverted out of 'next', to be replaced with jn/faster-completion-startup
topic.

^ permalink raw reply	[relevance 2%]

* GIT 0.99.7d, and end of week status.
@ 2005-09-25  8:36  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2005-09-25  8:36 UTC (permalink / raw)
  To: git

* The fourth minor fix release, GIT 0.99.7d, is available at the
  usual places.

  RPMs and Debs are found in http://kernel.org/pub/software/scm/

  With git:

  $ git fetch http://kernel.org/pub/scm/git/git.git tag v0.99.7d
  $ git checkout -b <new-branch> v0.99.7d

  Fixes since 0.99.7c are:

  - Fix show-branch output that named commits incorrectly.
  - Fix git-grep -e not passing -e to underlying grep.

* Recent updates to the master branch includes:

  - The GIT_VERSION is now 0.99.7.GIT (thanks Pasky for the
    idea).

  - The symlinks for backward compatible names are not installed
    anymore (but existing ones are not automatically removed).

  - git-diff-* family acquired a new option, --name-status, to
    show the status and name for changed files.  Also -l<num>
    option disables rename/copy detection when the number of
    rename target candidates are more than <num> (idea by Linus
    some time ago).

* Proposed updates, not yet graduated to the master branch
  includes:

  - git-merge fix, not to require a clean tree.

  - Likewise for git-revert and git-cherry-pick fix, not to
    require a clean tree.

  - Use git-merge from git-pull, again.

  - A couple of test fixes for further Solaris portability.

  - update-index takes -z --stdin to read NUL terminated list of
    paths from the standard input instead of from the command
    line.  This is to help platforms with xargs that cannot grok
    -0.  git-commit is updated to use this.

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.9.0-rc2
@ 2016-06-07  5:57  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-06-07  5:57 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

A release candidate Git v2.9.0-rc2 is now available for testing
at the usual places.  It is comprised of 477 non-merge commits
since v2.8.0, contributed by 67 people, 27 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.9.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!

  Alexander Rinass, Armin Kunaschik, Benjamin Dopplinger,
  Ben Woosley, Erwan Mathoniere, Gabriel Souza Franco, Jacob
  Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki Yamaguchi,
  Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas, Mehul Jain,
  Michael Procter, Nikola Forró, Pablo Santiago Blum de Aguiar,
  Pranit Bauva, Ray Zhang, René Nyffenegger, Santiago Torres,
  Saurav Sachidanand, Shin Kojima, Sidhant Sharma [:tk], Stanislav
  Kolotinskiy, and Xiaolong Ye.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
  brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
  David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
  Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
  Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
  John Keeping, Junio C Hamano, Karsten Blees, Lars Schneider,
  Linus Torvalds, Luke Diamand, Matthieu Moy, Michael Haggerty,
  Michael J Gruber, Michael Rappazzo, Nguyễn Thái Ngọc
  Duy, Ori Avtalion, Ralf Thielow, Ramsay Jones, René Scharfe,
  Stefan Beller, Stephen P. Smith, Sven Strickroth, SZEDER Gábor,
  Torsten Bögershausen, and Vasco Almeida.

----------------------------------------------------------------

Git 2.9 Release Notes (draft)
=============================

Backward compatibility notes
----------------------------

The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.

The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default.  You can use
the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.


Updates since v2.8
------------------

UI, Workflows & Features

 * Comes with git-multimail 1.3.1 (in contrib/).

 * The end-user facing commands like "git diff" and "git log"
   now enable the rename detection by default.

 * The credential.helper configuration variable is cumulative and
   there is no good way to override it from the command line.  As
   a special case, giving an empty string as its value now serves
   as the signal to clear the values specified in various files.

 * A new "interactive.diffFilter" configuration can be used to
   customize the diff shown in "git add -i" sessions.

 * "git p4" now allows P4 author names to be mapped to Git author
   names.

 * "git rebase -x" can be used without passing "-i" option.

 * "git -c credential.<var>=<value> submodule" can now be used to
   propagate configuration variables related to credential helper
   down to the submodules.

 * "git tag" can create an annotated tag without explicitly given an
   "-a" (or "-s") option (i.e. when a tag message is given).  A new
   configuration variable, tag.forceSignAnnotated, can be used to tell
   the command to create signed tag in such a situation.

 * "git merge" used to allow merging two branches that have no common
   base by default, which led to a brand new history of an existing
   project created and then get pulled by an unsuspecting maintainer,
   which allowed an unnecessary parallel history merged into the
   existing project.  The command has been taught not to allow this by
   default, with an escape hatch "--allow-unrelated-histories" option
   to be used in a rare event that merges histories of two projects
   that started their lives independently.

 * "git pull" has been taught to pass the "--allow-unrelated-histories"
   option to underlying "git merge".

 * "git apply -v" learned to report paths in the patch that were
   skipped via --include/--exclude mechanism or being outside the
   current working directory.

 * Shell completion (in contrib/) updates.

 * The commit object name reported when "rebase -i" stops has been
   shortened.

 * "git worktree add" can be given "--no-checkout" option to only
   create an empty worktree without checking out the files.

 * "git mergetools" learned to drive ExamDiff.

 * "git pull --rebase" learned "--[no-]autostash" option, so that
   the rebase.autostash configuration variable set to true can be
   overridden from the command line.

 * When "git log" shows the log message indented by 4-spaces, the
   remainder of a line after a HT does not align in the way the author
   originally intended.  The command now expands tabs by default to help
   such a case, and allows the users to override it with a new option,
   "--no-expand-tabs".

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.

 * "git p4" learned to record P4 jobs in Git commit that imports from
   the history in Perforce.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to name a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."

 * "git clone" learned the "--shallow-submodules" option.

 * HTTP transport clients learned to throw extra HTTP headers at the
   server, specified via http.extraHeader configuration variable.

 * Patch output from "git diff" and friends has been tweaked to be
   more readable by using a blank line as a strong hint that the
   contents before and after it belong to logically separate units.

 * A new configuration variable core.hooksPath allows customizing
   where the hook directory is.

 * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
   submodule honor -c credential.* from command line, 2016-02-29)
   turned out to be a convoluted no-op; implement what it wanted to do
   correctly, and stop filtering settings given via "git -c var=val".

 * "git commit --dry-run" reported "No, no, you cannot commit." in one
   case where "git commit" would have allowed you to commit, and this
   improves it a little bit ("git commit --dry-run --short" still does
   not give you the correct answer, for example).  This is a stop-gap
   measure in that "commit --short --dry-run" still gives an incorrect
   result.

 * The experimental "multiple worktree" feature gains more safety to
   forbid operations on a branch that is checked out or being actively
   worked on elsewhere, by noticing that e.g. it is being rebased.

 * "git format-patch" learned a new "--base" option to record what
   (public, well-known) commit the original series was built on in
   its output.

 * "git commit" learned to pay attention to the "commit.verbose"
   configuration variable and act as if the "--verbose" option
   was given from the command line.

 * Updated documentation gives hints to GMail users with two-factor
   auth enabled that they need app-specific-password when using
   "git send-email".

 * The manpage output of our documentation did not render well in
   terminal; typeset literals in bold by default to make them stand
   out more.

 * The mark-up in the top-level README.md file has been updated to
   typeset CLI command names differently from the body text.


Performance, Internal Implementation, Development Support etc.

 * The embedded args argv-array in the child process is used to build
   the command line to run pack-objects instead of using a separate
   array of strings.

 * A test for tags has been restructured so that more parts of it can
   easily be run on a platform without a working GnuPG.

 * The startup_info data, which records if we are working inside a
   repository (among other things), are now uniformly available to Git
   subcommand implementations, and Git avoids attempting to touch
   references when we are not in a repository.

 * The command line argument parser for "receive-pack" has been
   rewritten to use parse-options.

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.  Other updates to "git submodule" that move pieces of
   logic to C continues.

 * Rename bunch of tests on "git clone" for better organization.

 * The tests that involve running httpd leaked the system-wide
   configuration in /etc/gitconfig to the tested environment.

 * Build updates for MSVC.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * Code restructuring around the "refs" API to prepare for pluggable
   refs backends.

 * Sources to many test helper binaries and the generated helpers
   have been moved to t/helper/ subdirectory to reduce clutter at the
   top level of the tree.

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.

 * "merge-recursive" strategy incorrectly checked if a path that is
   involved in its internal merge exists in the working tree.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * As nobody maintains our in-tree git.spec.in and distros use their
   own spec file, we stopped pretending that we support "make rpm".

 * Move from "unsigned char[20]" to "struct object_id" continues.

 * The code for warning_errno/die_errno has been refactored and a new
   error_errno() reporting helper is introduced.
   (merge 1da045f nd/error-errno later to maint).

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.

 * t0040 had too many unnecessary repetitions in its test data.  Teach
   test-parse-options program so that a caller can tell what it
   expects in its output, so that these repetitions can be cleaned up.

 * Add perf test for "rebase -i".

 * Common mistakes when writing gitlink: in our documentation are
   found by "make check-docs".

 * t9xxx series has been updated primarily for readability, while
   fixing small bugs in it.  A few scripted Porcelain commands have
   also been updated to fix possible bugs around their use of
   "test -z" and "test -n".

 * CI test was taught to run git-svn tests.

 * "git cat-file --batch-all" has been sped up, by taking advantage
   of the fact that it does not have to read a list of objects, in two
   ways.

 * test updates to make it more readable and maintainable.
   (merge e6273f4 es/t1500-modernize later to maint).

 * "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
   config.mak didn't.
   (merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).

 * The way how "submodule--helper list" signals unmatch error to its
   callers has been updated.

 * A bash-ism "local" has been removed from "git submodule" scripted
   Porcelain.


Also contains various documentation updates and code clean-ups.


Fixes since v2.8
----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git config --get-urlmatch", unlike other variants of the "git
   config --get" family, did not signal error with its exit status
   when there was no matching configuration.

 * The "--local-env-vars" and "--resolve-git-dir" options of "git
   rev-parse" failed to work outside a repository when the command's
   option parsing was rewritten in 1.8.5 era.

 * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 * Fetching of history by naming a commit object name directly didn't
   work across remote-curl transport.

 * A small memory leak in an error codepath has been plugged in xdiff
   code.

 * strbuf_getwholeline() did not NUL-terminate the buffer on certain
   corner cases in its error codepath.

 * "git mergetool" did not work well with conflicts that both sides
   deleted.

 * "git send-email" had trouble parsing alias file in mailrc format
   when lines in it had trailing whitespaces on them.

 * When "git merge --squash" stopped due to conflict, the concluding
   "git commit" failed to read in the SQUASH_MSG that shows the log
   messages from all the squashed commits.

 * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
   nothing into an unborn history (which is arguably unusual usage,
   which perhaps was the reason why nobody noticed it).

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree,
   which was wrong.

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git diff -M" used to work better when two originally identical
   files A and B got renamed to X/A and X/B by pairing A to X/A and B
   to X/B, but this was broken in the 2.0 timeframe.

 * "git send-pack --all <there>" was broken when its command line
   option parsing was written in the 2.6 timeframe.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * When running "git blame $path" with unnormalized data in the index
   for the path, the data in the working tree was blamed, even though
   "git add" would not have changed what is already in the index, due
   to "safe crlf" that disables the line-end conversion.  It has been
   corrected.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
   elements we use in imap-send, which has been adjusted for the change.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently from socks5:// proxies.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853

 * "merge-octopus" strategy did not ensure that the index is clean
   when merge begins.

 * When "git merge" notices that the merge can be resolved purely at
   the tree level (without having to merge blobs) and the resulting
   tree happens to already exist in the object store, it forgot to
   update the index, which left an inconsistent state that would
   break later operations.

 * "git submodule" reports the paths of submodules the command
   recurses into, but these paths were incorrectly reported when
   the command was not run from the root level of the superproject.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git replace -e" did not honour "core.editor" configuration.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * mmap emulation on Windows has been optimized and work better without
   consuming paging store when not needed.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * UI consistency improvements for "git mergetool".

 * "git rebase -m" could be asked to rebase an entire branch starting
   from the root, but failed by assuming that there always is a parent
   commit to the first commit on the branch.

 * Fix a broken "p4 lfs" test.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * "git fetch" test t5510 was flaky while running a (forced) automagic
   garbage collection.

 * Documentation updates to help contributors setting up Travis CI
   test for their patches.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

 * "git commit-tree" plumbing command required the user to always sign
   its result when the user sets the commit.gpgsign configuration
   variable, which was an ancient mistake.  Rework "git rebase" that
   relied on this mistake so that it reads commit.gpgsign and pass (or
   not pass) the -S option to "git commit-tree" to keep the end-user
   expectation the same, while teaching "git commit-tree" to ignore
   the configuration variable.  This will stop requiring the users to
   sign commit objects used internally as an implementation detail of
   "git stash".

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.

 * "git rerere" can get confused by conflict markers deliberately left
   by the inner merge step, because they are indistinguishable from
   the real conflict markers left by the outermost merge which are
   what the end user and "rerere" need to look at.  This was fixed by
   making the conflict markers left by the inner merges a bit longer.
   (merge 0f9fd5c jc/ll-merge-internal later to maint).

 * CI test was taught to build documentation pages.

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.

 * A couple of bugs around core.autocrlf have been fixed.

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".

 * We forgot to add "git log --decorate=auto" to documentation when we
   added the feature back in v2.1.0 timeframe.
   (merge 462cbb4 rj/log-decorate-auto later to maint).

 * "git fast-import --export-marks" would overwrite the existing marks
   file even when it makes a dump from its custom die routine.
   Prevent it from doing so when we have an import-marks file but
   haven't finished reading it.
   (merge f4beed6 fc/fast-import-broken-marks-file later to maint).

 * "git rebase -i", after it fails to auto-resolve the conflict, had
   an unnecessary call to "git rerere" from its very early days, which
   was spotted recently; the call has been removed.
   (merge 7063693 js/rebase-i-dedup-call-to-rerere later to maint).

 * Other minor clean-ups and documentation updates
   (merge cd82b7a pa/cherry-pick-doc-typo later to maint).
   (merge 2bb73ae rs/patch-id-use-skip-prefix later to maint).
   (merge aa20cbc rs/apply-name-terminate later to maint).

----------------------------------------------------------------

Changes since v2.8.0 are as follows:

Adam Dinwoodie (2):
      config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
      commit: --amend -m '' silently fails to wipe message

Alexander Kuleshov (1):
      submodule-config: use hashmap_iter_first()

Alexander Rinass (1):
      diff: run arguments through precompose_argv

Armin Kunaschik (2):
      t4151: make sure argument to 'test -z' is given
      t0008: 4 tests fail with ksh88

Ben Woosley (1):
      git-rebase--merge: don't include absent parent as a base

Benjamin Dopplinger (1):
      README.md: format CLI commands with code syntax

Brian Norris (3):
      Documentation: config: improve word ordering for http.cookieFile
      http: expand http.cookieFile as a path
      config: consistently format $variables in monospaced font

Christian Couder (5):
      Documentation: talk about pager in api-trace.txt
      builtin/apply: get rid of useless 'name' variable
      builtin/apply: handle parse_binary() failure
      builtin/apply: free patch when parse_chunk() fails
      Git/SVN: die when there is no commit metadata

David Aguilar (4):
      mergetool: support delete/delete conflicts
      mergetool: honor tempfile configuration when resolving delete conflicts
      difftool: initialize variables for readability
      difftool: handle unmerged files in dir-diff mode

David Turner (5):
      refs: move head_ref{,_submodule} to the common code
      refs: move for_each_*ref* functions into common code
      files-backend: break out ref reading
      refs: move resolve_ref_unsafe into common code
      refs: on symref reflog expire, lock symref not referrent

Dennis Kaarsemaker (1):
      Makefile: remove dependency on git.spec

Elia Pinto (1):
      api-trace.txt: fix typo

Elijah Newren (6):
      merge-recursive: remove duplicate code
      merge-recursive: do not check working copy when creating a virtual merge base
      t7605: add a testcase demonstrating a bug with trivial merges
      builtin/merge.c: fix a bug with trivial merges
      merge-octopus: abort if index does not match HEAD
      t6044: new merge testcases for when index doesn't match HEAD

Eric Sunshine (10):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing
      git-format-patch.txt: don't show -s as shorthand for multiple options
      t1500: be considerate to future potential tests
      t1500: test_rev_parse: facilitate future test enhancements
      t1500: avoid changing working directory outside of tests
      t1500: avoid setting configuration options outside of tests
      t1500: avoid setting environment variables outside of tests

Eric Wong (4):
      send-email: more meaningful Message-ID
      send-email: do not load Data::Dumper
      pack-objects: warn on split packs disabling bitmaps
      .mailmap: update to my shorter email address

Erwan Mathoniere (1):
      Documentation: bold literals in man

Felipe Contreras (1):
      fast-import: do not truncate exported marks file

Gabriel Souza Franco (2):
      fetch-pack: fix object_id of exact sha1
      fetch-pack: update the documentation for "<refs>..." arguments

Jacob Keller (7):
      submodule: don't pass empty string arguments to submodule--helper clone
      submodule: check argc count for git submodule--helper clone
      submodule: fix submodule--helper clone usage
      submodule: fix segmentation fault in submodule--helper clone
      quote: implement sq_quotef()
      git: submodule honor -c credential.* from command line
      xdiff: add recs_match helper function

Jacob Nisnevich (2):
      mergetools: create mergetool_find_win32_cmd() helper function for winmerge
      mergetools: add support for ExamDiff

Jan Durovec (2):
      git-p4: clean-up code style in tests
      git-p4: add P4 jobs to git commit message

Jeff King (55):
      credential: let empty credential specs reset helper list
      t1515: add tests for rev-parse out-of-repo helpers
      add--interactive: allow custom diff highlighting programs
      rev-parse: let some options run outside repository
      strbuf_getwholeline: NUL-terminate getdelim buffer on error
      setup: make startup_info available everywhere
      setup: set startup_info->have_repository more reliably
      remote: don't resolve HEAD in non-repository
      mailmap: do not resolve blobs in a non-repository
      grep: turn off gitlink detection for --no-index
      use setup_git_directory() in test-* programs
      setup: document check_repository_format()
      wrap shared_repository global in get/set accessors
      lazily load core.sharedrepository
      check_repository_format_gently: stop using git_config_early
      config: drop git_config_early
      setup: refactor repo format reading and verification
      init: use setup.c's repo version verification
      setup: unify repository version callbacks
      setup: drop repository_format_version global
      verify_repository_format: mark messages for translation
      send-email: ignore trailing whitespace in mailrc alias file
      credential-cache--daemon: clarify "exit" action semantics
      t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
      git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
      branch: fix shortening of non-remote symrefs
      commit: do not ignore an empty message given by -m ''
      config: lower-case first word of error strings
      git_config_set_multivar_in_file: all non-zero returns are errors
      git_config_set_multivar_in_file: handle "unset" errors
      t5532: use write_script
      send-pack: close demux pipe before finishing async process
      run-command: teach async threads to ignore SIGPIPE
      send-pack: isolate sigpipe in demuxer thread
      fetch-pack: isolate sigpipe in demuxer thread
      t5504: drop sigpipe=ok from push tests
      remote.c: spell __attribute__ correctly
      t5550: fix typo in $HTTPD_URL
      t5550: break submodule config test into multiple sub-tests
      submodule: export sanitized GIT_CONFIG_PARAMETERS
      submodule--helper: move config-sanitizing to submodule.c
      submodule: use prepare_submodule_repo_env consistently
      submodule: stop sanitizing config options
      t6302: simplify non-gpg cases
      rebase--interactive: avoid empty list in shell for-loop
      test-lib: set BASH_XTRACEFD automatically
      t/lib-git-svn: drop $remote_git_svn and $git_svn_id
      t9100,t3419: enclose all test code in single-quotes
      t9107: use "return 1" instead of "exit 1"
      t9107: switch inverted single/double quotes in test
      t9103: modernize test style
      always quote shell arguments to test -z/-n
      cat-file: avoid noop calls to sha1_object_info_extended
      cat-file: default to --buffer when --batch-all-objects is used
      archive-tar: convert snprintf to xsnprintf

Johannes Schindelin (16):
      replace --edit: respect core.editor
      name-rev: include taggerdate in considering the best name
      win32mmap: set errno appropriately
      mmap(win32): avoid copy-on-write when it is unnecessary
      mmap(win32): avoid expensive fstat() call
      http: support sending custom HTTP headers
      tests: adjust the configuration for Apache 2.2
      t5551: make the test for extra HTTP headers more robust
      t3404: fix typo
      submodule: ensure that -c http.extraheader is heeded
      mingw: introduce the 'core.hideDotFiles' setting
      mingw: remove unnecessary definition
      Windows: only add a no-op pthread_sigmask() when needed
      perf: let's disable symlinks when they are not available
      perf: make the tests work in worktrees
      perf: run "rebase -i" under perf

Johannes Sixt (4):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing
      t6044: replace seq by test_seq
      rebase -i: remove an unnecessary 'rerere' invocation

John Keeping (3):
      config: fail if --get-urlmatch finds no value
      Documentation/git-config: use bulleted list for exit codes
      Documentation/git-config: fix --get-all description

Junio C Hamano (77):
      rerere: split conflict ID further
      rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
      index-pack: correct --keep[=<msg>]
      index-pack: add a helper function to derive .idx/.keep filename
      rerere: handle leftover rr-cache/$ID directory and postimage files
      rerere: delay the recording of preimage
      rerere: allow multiple variants to exist
      t4200: rerere a merge with two identical conflicts
      rerere: do use multiple variants
      apply: remove unused call to free() in gitdiff_{old,new}name()
      merge: fix NULL pointer dereference when merging nothing into void
      merge: refuse to create too cool a merge by default
      pretty: enable --expand-tabs by default for selected pretty formats
      pretty: allow tweaking tabwidth in --expand-tabs
      submodule--helper: do not borrow absolute_path() result for too long
      Git 2.8.1
      First batch for post 2.8 cycle
      pretty: test --expand-tabs
      Makefile: fix misdirected redirections
      Second batch for post 2.8 cycle
      Makefile: stop pretending to support rpmbuild
      rerere: gc and clear
      rerere: move code related to "forget" together
      rerere: split code to call ll_merge() further
      rerere: adjust 'forget' to multi-variant world order
      setup.c: do not feed NULL to "%.*s" even with precision 0
      Third batch for post 2.8 cycle
      http: differentiate socks5:// and socks5h://
      t1020: do not overuse printf and use write_script
      t3404: use write_script
      Fourth batch for post 2.8 cycle
      Start preparing for 2.8.2
      fsck_commit_buffer(): do not special case the last validation
      ll-merge: fix typo in comment
      Prepare for 2.8.2
      Makefile: clean *.o files we create
      Fifth batch for post 2.8 cycle
      t3033: avoid 'ambiguous refs' warning
      pull: pass --allow-unrelated-histories to "git merge"
      Sixth batch for post 2.8 cycle
      send-email: fix grammo in the prompt that asks e-mail recipients
      Seventh batch for post 2.8 cycle
      Git 2.8.2
      Eighth batch for 2.9
      diff: undocument the compaction heuristic knobs for experimentation
      Start preparing for 2.8.3
      commit-tree: do not pay attention to commit.gpgsign
      Ninth batch for 2.9
      config: describe 'pathname' value type
      Tenth batch for 2.9
      Almost ready for 2.8.3
      test-lib-functions.sh: remove misleading comment on test_seq
      test-lib-functions.sh: rewrite test_seq without Perl
      ll-merge: use a longer conflict marker for internal merge
      t6036: remove pointless test that expects failure
      Documentation: fix linkgit references
      fsck: detect and warn a commit with embedded NUL
      ci: validate "linkgit:" in documentation
      test-parse-options: fix output when callback option fails
      test-parse-options: --expect=<string> option to simplify tests
      t0040: remove unused test helpers
      t0040: convert a few tests to use test-parse-options --expect
      Eleventh batch for 2.9
      rerere: plug memory leaks upon "rerere forget" failure
      Twelfth batch for 2.9
      Thirteenth batch for 2.9
      Git 2.8.3
      rerere: remove an null statement
      Git 2.9-rc0
      t4204: do not let $name variable clobbered
      Start preparing for 2.8.4
      Final batch before 2.9-rc1
      More topics for 2.8.4
      Git 2.9-rc1
      Almost ready for 2.9-rc2
      Git 2.8.4
      Git 2.9-rc2

Karsten Blees (1):
      mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Kazuki Yamaguchi (10):
      branch -d: refuse deleting a branch which is currently checked out
      refs: add a new function set_worktree_head_symref
      branch -m: update all per-worktree HEADs
      set_worktree_head_symref(): fix error message
      imap-send: use HMAC() function provided by OpenSSL
      imap-send: check NULL return of SSL_CTX_new()
      imap-send: avoid deprecated TLSv1_method()
      configure: remove checking for HMAC_CTX_cleanup
      imap-send: check for NOLOGIN capability only when using LOGIN command
      imap-send: fix CRAM-MD5 response calculation

Keller Fuchs (1):
      Documentation: clarify signature verification

Lars Schneider (8):
      git-p4: map a P4 user to Git author name and email address
      travis-ci: update Git-LFS and P4 to the latest version
      travis-ci: express Linux/OS X dependency versions more clearly
      git-p4: fix Git LFS pointer parsing
      t9824: fix wrong reference value
      Documentation: add setup instructions for Travis CI
      travis-ci: build documentation
      travis-ci: enable Git SVN tests t91xx on Linux

Laurent Arnoud (1):
      tag: add the option to force signing of annotated tags

Li Peng (1):
      typofix: assorted typofixes in comments, documentation and messages

Linus Torvalds (1):
      pretty: expand tabs in indented logs to make things line up properly

Luke Diamand (3):
      git-p4 tests: cd to / before running python
      git-p4 tests: work with python3 as well as python2
      git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
      ident: check for useConfigOnly before auto-detection of name/email
      ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (13):
      Documentation/diff-config: fix description of diff.renames
      t4001-diff-rename: wrap file creations in a test
      t: add tests for diff.renames (true/false/unset)
      log: introduce init_log_defaults()
      diff: activate diff.renames by default
      lockfile: mark strings for translation
      lockfile: improve error message when lockfile exists
      git.spec.in: use README.md, not README
      README.md: don't take 'commandname' literally
      git-multimail: update to release 1.3.0
      git-multimail: update to release 1.3.1
      Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion
      Makefile: add $(DEVELOPER_CFLAGS) variable

Mehul Jain (9):
      git-pull.c: introduce git_pull_config()
      pull --rebase: add --[no-]autostash flag
      t5520: use consistent capitalization in test titles
      t5520: ensure consistent test conditions
      t5520: use better test to check stderr output
      t5520: factor out common "successful autostash" code
      t5520: factor out common "failing autostash" code
      t5520: reduce commom lines of code
      t5520: test --[no-]autostash with pull.rebase=true

Michael Haggerty (19):
      t1430: test the output and error of some commands more carefully
      t1430: clean up broken refs/tags/shadow
      t1430: don't rely on symbolic-ref for creating broken symrefs
      t1430: test for-each-ref in the presence of badly-named refs
      t1430: improve test coverage of deletion of badly-named refs
      resolve_missing_loose_ref(): simplify semantics
      resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
      resolve_ref_unsafe(): ensure flags is always set
      resolve_ref_1(): eliminate local variable
      resolve_ref_1(): reorder code
      resolve_ref_1(): eliminate local variable "bad_name"
      read_raw_ref(): manage own scratch space
      files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
      read_raw_ref(): change flags parameter to unsigned int
      fsck_head_link(): remove unneeded flag variable
      cmd_merge(): remove unneeded flag variable
      checkout_paths(): remove unneeded flag variable
      check_aliased_update(): check that dst_name is non-NULL
      show_head_ref(): check the result of resolve_ref_namespace()

Michael J Gruber (1):
      completion: complete --cherry-mark for git log

Michael Procter (1):
      upload-pack: use argv_array for pack_objects

Michael Rappazzo (1):
      Documentation: add instructions to help setup gmail 2FA

Nguyễn Thái Ngọc Duy (62):
      git-apply.txt: remove a space
      git-apply.txt: mention the behavior inside a subdir
      apply: report patch skipping in verbose mode
      test helpers: move test-* to t/helper/ subdirectory
      dir.c: remove dead function fnmatch_icase()
      wrapper.c: delete dead function git_mkstemps()
      dir.c: rename str(n)cmp_icase to fspath(n)cmp
      path.c: add git_common_path() and strbuf_git_common_path()
      worktree.c: store "id" instead of "git_dir"
      worktree.c: make find_shared_symref() return struct worktree *
      worktree.c: mark current worktree
      path.c: refactor and add worktree_git_path()
      wt-status.c: split rebase detection out of wt_status_get_state()
      wt-status.c: make wt_status_check_rebase() work on any worktree
      worktree.c: avoid referencing to worktrees[i] multiple times
      worktree.c: check whether branch is rebased in another worktree
      wt-status.c: split bisect detection out of wt_status_get_state()
      worktree.c: check whether branch is bisected in another worktree
      branch: do not rename a branch under bisect or rebase
      remote.c: specify correct plural form in "commit diverge" message
      usage.c: move format processing out of die_errno()
      usage.c: add warning_errno() and error_errno()
      bisect.c: use die_errno() and warning_errno()
      builtin/am.c: use error_errno()
      builtin/branch.c: use error_errno()
      builtin/fetch.c: use error_errno()
      builtin/help.c: use warning_errno()
      builtin/mailsplit.c: use error_errno()
      builtin/merge-file.c: use error_errno()
      builtin/pack-objects.c: use die_errno() and warning_errno()
      builtin/rm.c: use warning_errno()
      builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
      builtin/upload-archive.c: use error_errno()
      builtin/worktree.c: use error_errno()
      check-racy.c: use error_errno()
      combine-diff.c: use error_errno()
      compat/win32/syslog.c: use warning_errno()
      config.c: use error_errno()
      connected.c: use error_errno()
      copy.c: use error_errno()
      credential-cache--daemon.c: use warning_errno()
      diff-no-index.c: use error_errno()
      editor.c: use error_errno()
      entry.c: use error_errno()
      fast-import.c: use error_errno()
      gpg-interface.c: use error_errno()
      grep.c: use error_errno()
      http.c: use error_errno() and warning_errno()
      ident.c: use warning_errno()
      mailmap.c: use error_errno()
      reachable.c: use error_errno()
      rerere.c: use error_errno() and warning_errno()
      run-command.c: use error_errno()
      sequencer.c: use error_errno()
      server-info.c: use error_errno()
      sha1_file.c: use {error,die,warning}_errno()
      transport-helper.c: use error_errno()
      unpack-trees.c: use error_errno()
      upload-pack.c: use error_errno()
      vcs-svn: use error_errno()
      wrapper.c: use warning_errno()
      wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Nikola Forró (1):
      difftool/mergetool: make the form of yes/no questions consistent

Ori Avtalion (1):
      Documentation: git diff --check detects conflict markers

Pablo Santiago Blum de Aguiar (1):
      git-cherry-pick.txt: correct a small typo

Pranit Bauva (9):
      t/t7502 : drop duplicate test
      api-parse-options.txt: document OPT_CMDMODE()
      t0040-test-parse-options.sh: fix style issues
      test-parse-options: print quiet as integer
      t0040-parse-options: improve test coverage
      t/t7507: improve test coverage
      parse-options.c: make OPTION_COUNTUP respect "unspecified" values
      t7507-commit-verbose: improve test coverage by testing number of diffs
      commit: add a commit.verbose config variable

Ralf Thielow (4):
      completion: add option '--guides' to 'git help'
      completion: add 'revisions' and 'everyday' to 'git help'
      rebase-i: print an abbreviated hash when stop for editing
      string_list: use string-list API in unsorted_string_list_lookup()

Ramsay Jones (3):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak
      log: document the --decorate=auto option

Ray Zhang (1):
      worktree: add: introduce --checkout option

René Nyffenegger (1):
      Documentation: fix typo 'In such these cases'

René Scharfe (3):
      apply: remove unused parameters from name_terminate()
      patch-id: use starts_with() and skip_prefix()
      perf: make the tests work without a worktree

SZEDER Gábor (6):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground
      Documentation/git-send-email: fix typo in gmail 2FA section

Santiago Torres (6):
      builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
      t7030: test verifying multiple tags
      verify-tag: update variable name and type
      verify-tag: prepare verify_tag for libification
      verify-tag: move tag verification code to tag.c
      tag -v: verify directly rather than exec-ing verify-tag

Saurav Sachidanand (1):
      dir: store EXC_FLAG_* values in unsigned integers

Shin Kojima (1):
      gitweb: apply fallback encoding before highlight

Sidhant Sharma [:tk] (1):
      builtin/receive-pack.c: use parse_options API

Stanislav Kolotinskiy (1):
      git-send-pack: fix --all option when used with directory

Stefan Beller (46):
      submodule-config: keep update strategy around
      submodule-config: drop check against NULL
      fetching submodules: respect `submodule.fetchJobs` config option
      submodule update: direct error message to stderr
      run_processes_parallel: treat output of children as byte array
      run_processes_parallel: rename parameters for the callbacks
      git submodule update: have a dedicated helper for cloning
      submodule helper: remove double 'fatal: ' prefix
      submodule update: expose parallelism to the user
      clone: allow an explicit argument for parallel submodule clones
      clone tests: rename t57* => t56*
      rebase: decouple --exec from --interactive
      t3404: cleanup double empty lines between tests
      submodule foreach: correct path display in recursive submodules
      submodule update --init: correct path handling in recursive submodules
      submodule status: correct path handling in recursive submodules
      submodule update: align reporting path for custom command execution
      submodule update: test recursive path reporting from subdirectory
      t7407: make expectation as clear as possible
      recursive submodules: test for relative paths
      submodule--helper: fix potential NULL-dereference
      submodule--helper clone: create the submodule path just once
      notes: don't leak memory in git_config_get_notes_strategy
      abbrev_sha1_in_line: don't leak memory
      bundle: don't leak an fd in case of early return
      credential-cache, send_request: close fd when done
      submodule--helper, module_clone: always operate on absolute paths
      submodule--helper, module_clone: catch fprintf failure
      submodule: port resolve_relative_url from shell to C
      submodule: port init from shell to C
      xdiff: implement empty line chunk heuristic
      mv: allow moving nested submodules
      clone: add `--shallow-submodules` flag
      config doc: improve exit code listing
      config.c: drop local variable
      submodule-config: don't shadow `cache`
      submodule init: fail gracefully with a missing .gitmodules file
      submodule--helper update-clone: abort gracefully on missing .gitmodules
      submodule deinit test: fix broken && chain in subshell
      submodule init: redirect stdout to stderr
      t7300: mark test with SANITY
      submodule deinit: require '--all' instead of '.' for all submodules
      t3513: do not compress backup tar file
      t6041: do not compress backup tar file
      submodule--helper: offer a consistent API
      submodule: remove bashism from shell script

Stephen P. Smith (1):
      wt-status.c: set commitable bit if there is a meaningful merge.

Sven Strickroth (3):
      commit: do not lose SQUASH_MSG contents
      MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
      MSVC: use shipped headers instead of fallback definitions

Torsten Bögershausen (6):
      correct blame for files commited with CRLF
      t0027: make commit_chk_wrnNNO() reliable
      convert: allow core.autocrlf=input and core.eol=crlf
      t0027: test cases for combined attributes
      convert.c: ident + core.autocrlf didn't work
      t5601: Remove trailing space in sed expression

Vasco Almeida (16):
      l10n: fr: fix transcation of "dir"
      l10n: fr: fix wrongly translated option name
      l10n: fr: change "id de clé" to match "id-clé"
      l10n: fr: don't translate "merge" as a parameter
      i18n: index-pack: use plural string instead of normal one
      i18n: builtin/branch.c: mark option for translation
      i18n: unpack-trees: mark strings for translation
      i18n: builtin/rm.c: remove a comma ',' from string
      i18n: branch: unmark string for translation
      i18n: branch: move comment for translators
      i18n: git-parse-remote.sh: mark strings for translation
      i18n: builtin/pull.c: mark placeholders for translation
      i18n: builtin/pull.c: split strings marked for translation
      i18n: remote: add comment for translators
      Documentation/git-mailinfo: fix typo
      i18n: unpack-trees: avoid substituting only a verb in sentences

Xiaolong Ye (4):
      patch-ids: make commit_patch_id() a public helper function
      format-patch: add '--base' option to record base tree info
      format-patch: introduce --base=auto option
      format-patch: introduce format.useAutoBase configuration

brian m. carlson (6):
      sha1-name: introduce a get_oid() function
      test-match-trees: convert to use struct object_id
      match-trees: convert shift_tree() and shift_tree_by() to use object_id
      struct name_entry: use struct object_id instead of unsigned char sha1[20]
      tree-walk: convert tree_entry_extract() to use struct object_id
      match-trees: convert several leaf functions to use struct object_id

Ævar Arnfjörð Bjarmason (4):
      githooks.txt: improve the intro section
      githooks.txt: amend dangerous advice about 'update' hook ACL
      githooks.txt: minor improvements to the grammar & phrasing
      hooks: allow customizing where the hook directory is

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v1.9.2
@ 2014-04-09 21:59  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-04-09 21:59 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest maintenance release Git v1.9.2 is now available at
the usual places.

The release tarballs are found at:

    http://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the v1.9.2
tag and the maint branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

The http://code.google.com/p/git-core/downloads/ site no longer
accepts new tarballs for download; while the older release tarballs
are still there, this one (and future ones) will not be.


Git v1.9.2 Release Notes
========================

Fixes since v1.9.1
------------------

 * Documentation and in-code comments had many instances of mistaken
   use of "nor", which have been corrected.

 * "git fetch --prune", when the right-hand-side of multiple fetch
   refspecs overlap (e.g. storing "refs/heads/*" to
   "refs/remotes/origin/*", while storing "refs/frotz/*" to
   "refs/remotes/origin/fr/*"), aggressively thought that lack of
   "refs/heads/fr/otz" on the origin site meant we should remove
   "refs/remotes/origin/fr/otz" from us, without checking their
   "refs/frotz/otz" first.

   Note that such a configuration is inherently unsafe (think what
   should happen when "refs/heads/fr/otz" does appear on the origin
   site), but that is not a reason not to be extra careful.

 * "git update-ref --stdin" did not fail a request to create a ref
   when the ref already existed.

 * "git diff --no-index -Mq a b" fell into an infinite loop.

 * When it is not necessary to edit a commit log message (e.g. "git
   commit -m" is given a message without specifying "-e"), we used to
   disable the spawning of the editor by overriding GIT_EDITOR, but
   this means all the uses of the editor, other than to edit the
   commit log message, are also affected.

 * "git status --porcelain --branch" showed its output with labels
   "ahead/behind/gone" translated to the user's locale.

 * "git mv" that moves a submodule forgot to adjust the array that
   uses to keep track of which submodules were to be moved to update
   its configuration.

 * Length limit for the pathname used when removing a path in a deep
   subdirectory has been removed to avoid buffer overflows.

 * The test helper lib-terminal always run an actual test_expect_*
   when included, which screwed up with the use of skil-all that may
   have to be done later.

 * "git index-pack" used a wrong variable to name the keep-file in an
   error message when the file cannot be written or closed.

 * "rebase -i" produced a broken insn sheet when the title of a commit
   happened to contain '\n' (or ended with '\c') due to a careless use
   of 'echo'.

 * There were a few instances of 'git-foo' remaining in the
   documentation that should have been spelled 'git foo'.

 * Serving objects from a shallow repository needs to write a
   new file to hold the temporary shallow boundaries but it was not
   cleaned when we exit due to die() or a signal.

 * When "git stash pop" stops after failing to apply the stash
   (e.g. due to conflicting changes), the stash is not dropped. State
   that explicitly in the output to let the users know.

 * The labels in "git status" output that describe the nature of
   conflicts (e.g. "both deleted") were limited to 20 bytes, which was
   too short for some l10n (e.g. fr).

----------------------------------------------------------------

Changes since v1.9.1 are as follows:

Aman Gupta (1):
      update-ref: fail create operation over stdin if ref already exists

Benoit Pierre (7):
      merge hook tests: fix missing '&&' in test
      merge hook tests: use 'test_must_fail' instead of '!'
      test patch hunk editing with "commit -p -m"
      commit: fix patch hunk editing with "commit -p -m"
      merge: fix GIT_EDITOR override for commit hook
      merge hook tests: fix and update tests
      run-command: mark run_hook_with_custom_index as deprecated

Carlos Martín Nieto (2):
      fetch: add a failing test for prunning with overlapping refspecs
      fetch: handle overlaping refspecs on --prune

Jeff King (6):
      shallow: use stat_validity to check for up-to-date file
      shallow: automatically clean up shallow tempfiles
      t/lib-terminal: make TTY a lazy prerequisite
      shallow: verify shallow file after taking lock
      date: recognize bogus FreeBSD gmtime output
      t4212: loosen far-in-future test for AIX

John Keeping (1):
      builtin/mv: fix out of bounds write

Jonathan Nieder (2):
      wt-status: extract the code to compute width for labels
      wt-status: i18n of section labels

Junio C Hamano (8):
      stash pop: mention we did not drop the stash upon failing to apply
      wt-status: make full label string to be subject to l10n
      wt-status: lift the artificual "at least 20 columns" floor
      index-pack: report error using the correct variable
      diff-no-index: correctly diagnose error return from diff_opt_parse()
      Start preparing for 1.9.1
      Update draft release notes to 1.9.2
      Git 1.9.2

Justin Lebar (4):
      Documentation: fix misuses of "nor"
      contrib: fix misuses of "nor"
      comments: fix misuses of "nor"
      code and test: fix misuses of "nor"

Matthieu Moy (1):
      status: disable translation when --porcelain is used

Michael Haggerty (2):
      checkout_entry(): use the strbuf throughout the function
      entry.c: fix possible buffer overflow in remove_subtree()

Ramkumar Ramachandra (1):
      Documentation/merge-strategies: avoid hyphenated commands

Thomas Ackermann (1):
      doc/http-backend: missing accent grave in literal mark-up

Uwe Storbeck (2):
      rebase -i: do not "echo" random user-supplied strings
      test-lib.sh: do not "echo" caller-supplied strings

brian m. carlson (1):
      mv: prevent mismatched data when ignoring errors.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (topics)
  @ 2008-07-14  5:11  2%                                         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-07-14  5:11 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

I think most of the important stuff is already in 'next'.  Let's start
talking about closing the merge window for 1.6.0.

----------------------------------------------------------------
[New Topics]

* sb/dashless (Sun Jul 13 15:36:15 2008 +0200) 3 commits
 - Make usage strings dash-less
 - t/: Use "test_must_fail git" instead of "! git"
 - t/test-lib.sh: exit with small negagive int is ok with
   test_must_fail

* mv/dashless (Fri Jul 11 02:12:06 2008 +0200) 4 commits
 - make remove-dashes: apply to scripts and programs as well, not
   just to builtins
 - git-bisect: use dash-less form on git bisect log
 - t1007-hash-object.sh: use quotes for the test description
 - t0001-init.sh: change confusing directory name

* sp/maint-bash-completion-optim (Mon Jul 14 00:22:03 2008 +0000) 1 commit
 + bash completion: Append space after file names have been completed

Early parts are already merged to 'master' and need to be merged down to
maint as well, as this is about a "performance bug" that has been with us
almost forever.

* ag/rewrite_one (Sat Jul 12 22:00:57 2008 +0400) 1 commit
 + Fix quadratic performance in rewrite_one.

* sp/win (Fri Jul 11 18:52:42 2008 +0200) 3 commits
 + We need to check for msys as well as Windows in add--interactive.
 + Convert CR/LF to LF in tag signatures
 + Fixed text file auto-detection: treat EOF character 032 at the end
   of file as printable

* js/merge-rr (Sat Jul 12 15:56:19 2008 +0100) 2 commits
 + Move MERGE_RR from .git/rr-cache/ into .git/
 + builtin-rerere: more carefully find conflict markers

* sb/rerere-lib (Wed Jul 9 14:58:57 2008 +0200) 2 commits
 + rerere: Separate libgit and builtin functions
 + builtin-rerere: more carefully find conflict markers

* ls/mailinfo (Sun Jul 13 20:30:12 2008 +0200) 3 commits
 - git-mailinfo: use strbuf's instead of fixed buffers
 - Add some useful functions for strbuf manipulation.
 - Make some strbuf_*() struct strbuf arguments const.

* gi/cherry-cache (Sat Jul 12 20:14:51 2008 -0700) 1 commit
 - cherry: cache patch-ids to avoid repeating work

This does not seem to pass tests even on its own.

* js/maint-pretty-mailmap (Sat Jul 12 00:28:18 2008 +0100) 1 commit
 + Add pretty format %aN which gives the author name, respecting
   .mailmap

* js/more-win (Sun Jul 13 22:31:23 2008 +0200) 6 commits
 - Allow add_path() to add non-existent directories to the path
 - Allow the built-in exec path to be relative to the command
   invocation path
 - Fix relative built-in paths to be relative to the command
   invocation
 + help (Windows): Display HTML in default browser using Windows'
   shell API
 + help.c: Add support for htmldir relative to git_exec_path()
 + Move code interpreting path relative to exec-dir to new function
   system_path()

The earlier parts are obvious; Dscho seemed to have some comments on the
later ones that are in 'pu'.

* lw/gitweb (Fri Jul 11 03:11:48 2008 +0200) 3 commits
 - gitweb: use new Git::Repo API, and add optional caching
 - Add new Git::Repo API
 - gitweb: add test suite with Test::WWW::Mechanize::CGI

This does not pass t9710, at least for me X-<.

----------------------------------------------------------------
[Will merge to master soon]

* jc/rebase-orig-head (Tue Jul 8 00:12:22 2008 -0400) 2 commits
 + Documentation: mention ORIG_HEAD in am, merge, and rebase
 + Teach "am" and "rebase" to mark the original position with
   ORIG_HEAD

* jc/branch-merged (Tue Jul 8 17:55:47 2008 -0700) 3 commits
 + branch --merged/--no-merged: allow specifying arbitrary commit
 + branch --contains: default to HEAD
 + parse-options: add PARSE_OPT_LASTARG_DEFAULT flag

This builds on top of the parse-options enhancement series that
has been cooking in 'next' for some time.

* om/rerere-careful (Mon Jul 7 14:42:48 2008 +0200) 1 commit
 + builtin-rerere: more carefully find conflict markers

* ls/maint-mailinfo-patch-label (Thu Jul 10 23:41:33 2008 +0200) 1 commit
 + git-mailinfo: Fix getting the subject from the in-body [PATCH]
   line

----------------------------------------------------------------
[Actively Cooking]

* xx/merge-in-c-into-next (Wed Jul 9 13:51:46 2008 -0700) 4 commits
 + Teach git-merge -X<option> again.
 + Merge branch 'jc/merge-theirs' into xx/merge-in-c-into-next
 + builtin-merge.c: use parse_options_step() "incremental parsing"
   machinery
 + Merge branch 'ph/parseopt-step-blame' into xx/merge-in-c-into-next

I've described what this is in a separate message.

* rs/imap (Wed Jul 9 22:29:02 2008 +0100) 5 commits
 - Documentation: Improve documentation for git-imap-send(1)
 - imap-send.c: more style fixes
 - imap-send.c: style fixes
 - git-imap-send: Support SSL
 - git-imap-send: Allow the program to be run from subdirectories of
   a git tree

Some people seem to prefer having this feature available also with gnutls.
If such a patch materializes soon, that would be good, but otherwise I'll
merge this as-is to 'next'.  Such an enhancement can be done in-tree on
top of this series.

* jc/merge-theirs (Mon Jun 30 22:18:57 2008 -0700) 5 commits
 + Make "subtree" part more orthogonal to the rest of merge-
   recursive.
 + Teach git-pull to pass -X<option> to git-merge
 + Teach git-merge to pass -X<option> to the backend strategy module
 + git-merge-recursive-{ours,theirs}
 + git-merge-file --ours, --theirs

Punting a merge by discarding your own work in conflicting parts but still
salvaging the parts that are cleanly automerged.  It is likely that this
will result in nonsense mishmash, but somehow often people want this, so
here they are.  The interface to the backends is updated so that you can
say "git merge -Xours -Xsubtree=foo/bar/baz -s recursive other" now.

* mv/merge-in-c (Sun Jul 13 08:13:55 2008 +0000) 19 commits
 + reduce_heads(): thinkofix
 + Add a new test for git-merge-resolve
 + t6021: add a new test for git-merge-resolve
 + Teach merge.log to "git-merge" again
 + Build in merge
 + Fix t7601-merge-pull-config.sh on AIX
 + git-commit-tree: make it usable from other builtins
 + Add new test case to ensure git-merge prepends the custom merge
   message
 + Add new test case to ensure git-merge reduces octopus parents when
   possible
 + Introduce reduce_heads()
 + Introduce get_merge_bases_many()
 + Add new test to ensure git-merge handles more than 25 refs.
 + Introduce get_octopus_merge_bases() in commit.c
 + git-fmt-merge-msg: make it usable from other builtins
 + Move read_cache_unmerged() to read-cache.c
 + Add new test to ensure git-merge handles pull.twohead and
   pull.octopus
 + Move parse-options's skip_prefix() to git-compat-util.h
 + Move commit_list_count() to commit.c
 + Move split_cmdline() to alias.c

Sverre seems to have a yet another fixup on top of this that came late and
I haven't looked at.

----------------------------------------------------------------
[Graduated to "master"]

* js/pick-root (Fri Jul 4 16:19:52 2008 +0100) 1 commit
 + Allow cherry-picking root commits

* ab/bundle (Sat Jul 5 17:26:40 2008 -0400) 1 commit
 + Teach git-bundle to read revision arguments from stdin like git-
   rev-list.

* sg/stash-k-i (Tue Jul 8 00:40:56 2008 -0700) 2 commits
 + Documentation: tweak use case in "git stash save --keep-index"
 + stash: introduce 'stash save --keep-index' option

One weakness of our "partial commit" workflow support used to be that the
user can incrementally build what is to be committed in the index but that
state cannot be tested as a whole in the working tree.  This allows you to
temporarily stash the remaining changes in the working tree so that the
index state before running "stash save --keep-index" can be seen in the
working tree to be tested and then committed.

* am/stash-branch (Mon Jul 7 02:50:10 2008 +0530) 2 commits
 + Add a test for "git stash branch"
 + Implement "git stash branch <newbranch> <stash>"

Creates a new branch out of the stashed state, after returning from the
interrupt that forced you to create the stash in the first place.

* tr/add-i-e (Thu Jul 3 00:00:00 2008 +0200) 3 commits
 + git-add--interactive: manual hunk editing mode
 + git-add--interactive: remove hunk coalescing
 + git-add--interactive: replace hunk recounting with apply --recount

Adds 'e/dit' action to interactive add command.

* jc/report-tracking (Sun Jul 6 02:54:56 2008 -0700) 5 commits
 + branch -r -v: do not spit out garbage
 + stat_tracking_info(): clear object flags used during counting
 + git-branch -v: show the remote tracking statistics
 + git-status: show the remote tracking statistics
 + Refactor "tracking statistics" code used by "git checkout"

Makes the "your branch is ahead of the tracked one by N commits" logic and
messages available to other commands; status and branch are updated.

* ph/parseopt-step-blame (Wed Jul 9 23:38:34 2008 +0200) 18 commits
 + revisions: refactor handle_revision_opt into parse_revision_opt.
 + git-shortlog: migrate to parse-options partially.
 + git-blame: fix lapsus
 + git-blame: migrate to incremental parse-option [2/2]
 + git-blame: migrate to incremental parse-option [1/2]
 + revisions: split handle_revision_opt() from setup_revisions()
 + Merge branch 'jc/blame' (early part) into HEAD
 + parse-opt: add PARSE_OPT_KEEP_ARGV0 parser option.
 + parse-opt: fake short strings for callers to believe in.
 + parse-opt: do not print errors on unknown options, return -2
   intead.
 + parse-opt: create parse_options_step.
 + parse-opt: Export a non NORETURN usage dumper.
 + parse-opt: have parse_options_{start,end}.
 + git-blame --reverse
 + builtin-blame.c: allow more than 16 parents
 + builtin-blame.c: move prepare_final() into a separate function.
 + rev-list --children
 + revision traversal: --children option

Became active again ;-) This probably is ready for 'master' already,
except for the last two which I only looked at the patch and have not
used heavily in production yet.

----------------------------------------------------------------
[On Hold]

* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
 + merge: remove deprecated summary and diffstat options and config
   variables

This was previously in "will be in master soon" category, but it turns out
that the synonyms to the ones this one deletes are fairly new invention
that happend in 1.5.6 timeframe, and we cannot do this just yet.  Perhaps
in 1.7.0.

* jc/dashless (Thu Jun 26 16:43:34 2008 -0700) 2 commits
 + Revert "Make clients ask for "git program" over ssh and local
   transport"
 + Make clients ask for "git program" over ssh and local transport

This is the "botched" one.  Will be resurrected during 1.7.0 or 1.8.0
timeframe.

* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
 - diff: enable "too large a rename" warning when -M/-C is explicitly
   asked for

This would be the right thing to do for command line use, but gitk will be
hit due to tcl/tk's limitation, so I am holding this back for now.

----------------------------------------------------------------
[Stalled/Needs more work]

* sb/sequencer (Tue Jul 1 04:38:34 2008 +0200) 4 commits
 . Migrate git-am to use git-sequencer
 . Add git-sequencer test suite (t3350)
 . Add git-sequencer prototype documentation
 . Add git-sequencer shell prototype

* jc/grafts (Wed Jul 2 17:14:12 2008 -0700) 1 commit
 - [BROKEN wrt shallow clones] Ignore graft during object transfer

Cloning or fetching from a repository from grafts did not send objects
that are hidden by grafts, but the commits in the resulting repository do
need these to pass fsck.  This fixes object transfer to ignore grafts.

Another fix is needed to git-prune so that it ignores grafts but treats
commits that are mentioned in grafts as reachable.

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output

This is for peeling to see what's behind the blamed commit, which may or
may not help applications like gitweb.

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.9.0
@ 2016-06-13 19:45  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-06-13 19:45 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest feature release Git v2.9.0 is now available at the
usual places.  It is comprised of 497 non-merge commits since
v2.8.0, contributed by 75 people, 28 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.9.0'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!

  Alexander Rinass, Antonin, Armin Kunaschik, Benjamin Dopplinger,
  Ben Woosley, Erwan Mathoniere, Gabriel Souza Franco, Jacob
  Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki Yamaguchi,
  Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas, Mehul Jain,
  Michael Procter, Nikola Forró, Pablo Santiago Blum de Aguiar,
  Pranit Bauva, Ray Zhang, René Nyffenegger, Santiago Torres,
  Saurav Sachidanand, Shin Kojima, Sidhant Sharma [:tk], Stanislav
  Kolotinskiy, and Xiaolong Ye.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
  Alexander Shopov, brian m. carlson, Brian Norris, Changwoo
  Ryu, Christian Couder, David Aguilar, David Turner, Dennis
  Kaarsemaker, Dimitriy Ryazantcev, Elia Pinto, Elijah Newren,
  Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
  Jean-Noel Avila, Jeff King, Jiang Xin, Johannes Schindelin,
  Johannes Sixt, John Keeping, Junio C Hamano, Karsten Blees,
  Lars Schneider, Linus Torvalds, Luke Diamand, Matthieu Moy,
  Michael Haggerty, Michael J Gruber, Michael Rappazzo, Nguyễn
  Thái Ngọc Duy, Ori Avtalion, Peter Krefting, Ralf Thielow,
  Ramsay Jones, Ray Chen, René Scharfe, Stefan Beller, Stephen
  P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
  Trần Ngọc Quân, and Vasco Almeida.

----------------------------------------------------------------

Git 2.9 Release Notes
=====================

Backward compatibility notes
----------------------------

The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.

The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default.  You can use
the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.


Updates since v2.8
------------------

UI, Workflows & Features

 * Comes with git-multimail 1.3.1 (in contrib/).

 * The end-user facing commands like "git diff" and "git log"
   now enable the rename detection by default.

 * The credential.helper configuration variable is cumulative and
   there is no good way to override it from the command line.  As
   a special case, giving an empty string as its value now serves
   as the signal to clear the values specified in various files.

 * A new "interactive.diffFilter" configuration can be used to
   customize the diff shown in "git add -i" sessions.

 * "git p4" now allows P4 author names to be mapped to Git author
   names.

 * "git rebase -x" can be used without passing "-i" option.

 * "git -c credential.<var>=<value> submodule" can now be used to
   propagate configuration variables related to credential helper
   down to the submodules.

 * "git tag" can create an annotated tag without explicitly given an
   "-a" (or "-s") option (i.e. when a tag message is given).  A new
   configuration variable, tag.forceSignAnnotated, can be used to tell
   the command to create signed tag in such a situation.

 * "git merge" used to allow merging two branches that have no common
   base by default, which led to a brand new history of an existing
   project created and then get pulled by an unsuspecting maintainer,
   which allowed an unnecessary parallel history merged into the
   existing project.  The command has been taught not to allow this by
   default, with an escape hatch "--allow-unrelated-histories" option
   to be used in a rare event that merges histories of two projects
   that started their lives independently.

 * "git pull" has been taught to pass the "--allow-unrelated-histories"
   option to underlying "git merge".

 * "git apply -v" learned to report paths in the patch that were
   skipped via --include/--exclude mechanism or being outside the
   current working directory.

 * Shell completion (in contrib/) updates.

 * The commit object name reported when "rebase -i" stops has been
   shortened.

 * "git worktree add" can be given "--no-checkout" option to only
   create an empty worktree without checking out the files.

 * "git mergetools" learned to drive ExamDiff.

 * "git pull --rebase" learned "--[no-]autostash" option, so that
   the rebase.autostash configuration variable set to true can be
   overridden from the command line.

 * When "git log" shows the log message indented by 4-spaces, the
   remainder of a line after a HT does not align in the way the author
   originally intended.  The command now expands tabs by default to help
   such a case, and allows the users to override it with a new option,
   "--no-expand-tabs".

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.

 * "git p4" learned to record P4 jobs in Git commit that imports from
   the history in Perforce.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to name a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."

 * "git clone" learned the "--shallow-submodules" option.

 * HTTP transport clients learned to throw extra HTTP headers at the
   server, specified via http.extraHeader configuration variable.

 * The "--compaction-heuristic" option to "git diff" family of
   commands enables a heuristic to make the patch output more readable
   by using a blank line as a strong hint that the contents before and
   after it belong to logically separate units.  It is still
   experimental.

 * A new configuration variable core.hooksPath allows customizing
   where the hook directory is.

 * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
   submodule honor -c credential.* from command line, 2016-02-29)
   turned out to be a convoluted no-op; implement what it wanted to do
   correctly, and stop filtering settings given via "git -c var=val".

 * "git commit --dry-run" reported "No, no, you cannot commit." in one
   case where "git commit" would have allowed you to commit, and this
   improves it a little bit ("git commit --dry-run --short" still does
   not give you the correct answer, for example).  This is a stop-gap
   measure in that "commit --short --dry-run" still gives an incorrect
   result.

 * The experimental "multiple worktree" feature gains more safety to
   forbid operations on a branch that is checked out or being actively
   worked on elsewhere, by noticing that e.g. it is being rebased.

 * "git format-patch" learned a new "--base" option to record what
   (public, well-known) commit the original series was built on in
   its output.

 * "git commit" learned to pay attention to the "commit.verbose"
   configuration variable and act as if the "--verbose" option
   was given from the command line.

 * Updated documentation gives hints to GMail users with two-factor
   auth enabled that they need app-specific-password when using
   "git send-email".

 * The manpage output of our documentation did not render well in
   terminal; typeset literals in bold by default to make them stand
   out more.

 * The mark-up in the top-level README.md file has been updated to
   typeset CLI command names differently from the body text.


Performance, Internal Implementation, Development Support etc.

 * The embedded args argv-array in the child process is used to build
   the command line to run pack-objects instead of using a separate
   array of strings.

 * A test for tags has been restructured so that more parts of it can
   easily be run on a platform without a working GnuPG.

 * The startup_info data, which records if we are working inside a
   repository (among other things), are now uniformly available to Git
   subcommand implementations, and Git avoids attempting to touch
   references when we are not in a repository.

 * The command line argument parser for "receive-pack" has been
   rewritten to use parse-options.

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.  Other updates to "git submodule" that move pieces of
   logic to C continues.

 * Rename bunch of tests on "git clone" for better organization.

 * The tests that involve running httpd leaked the system-wide
   configuration in /etc/gitconfig to the tested environment.

 * Build updates for MSVC.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * Code restructuring around the "refs" API to prepare for pluggable
   refs backends.

 * Sources to many test helper binaries and the generated helpers
   have been moved to t/helper/ subdirectory to reduce clutter at the
   top level of the tree.

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.

 * "merge-recursive" strategy incorrectly checked if a path that is
   involved in its internal merge exists in the working tree.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * As nobody maintains our in-tree git.spec.in and distros use their
   own spec file, we stopped pretending that we support "make rpm".

 * Move from "unsigned char[20]" to "struct object_id" continues.

 * The code for warning_errno/die_errno has been refactored and a new
   error_errno() reporting helper is introduced.
   (merge 1da045f nd/error-errno later to maint).

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.

 * t0040 had too many unnecessary repetitions in its test data.  Teach
   test-parse-options program so that a caller can tell what it
   expects in its output, so that these repetitions can be cleaned up.

 * Add perf test for "rebase -i".

 * Common mistakes when writing gitlink: in our documentation are
   found by "make check-docs".

 * t9xxx series has been updated primarily for readability, while
   fixing small bugs in it.  A few scripted Porcelain commands have
   also been updated to fix possible bugs around their use of
   "test -z" and "test -n".

 * CI test was taught to run git-svn tests.

 * "git cat-file --batch-all" has been sped up, by taking advantage
   of the fact that it does not have to read a list of objects, in two
   ways.

 * test updates to make it more readable and maintainable.
   (merge e6273f4 es/t1500-modernize later to maint).

 * "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
   config.mak didn't.
   (merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).

 * The way how "submodule--helper list" signals unmatch error to its
   callers has been updated.

 * A bash-ism "local" has been removed from "git submodule" scripted
   Porcelain.


Also contains various documentation updates and code clean-ups.


Fixes since v2.8
----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git config --get-urlmatch", unlike other variants of the "git
   config --get" family, did not signal error with its exit status
   when there was no matching configuration.

 * The "--local-env-vars" and "--resolve-git-dir" options of "git
   rev-parse" failed to work outside a repository when the command's
   option parsing was rewritten in 1.8.5 era.

 * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 * Fetching of history by naming a commit object name directly didn't
   work across remote-curl transport.

 * A small memory leak in an error codepath has been plugged in xdiff
   code.

 * strbuf_getwholeline() did not NUL-terminate the buffer on certain
   corner cases in its error codepath.

 * "git mergetool" did not work well with conflicts that both sides
   deleted.

 * "git send-email" had trouble parsing alias file in mailrc format
   when lines in it had trailing whitespaces on them.

 * When "git merge --squash" stopped due to conflict, the concluding
   "git commit" failed to read in the SQUASH_MSG that shows the log
   messages from all the squashed commits.

 * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
   nothing into an unborn history (which is arguably unusual usage,
   which perhaps was the reason why nobody noticed it).

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree,
   which was wrong.

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git diff -M" used to work better when two originally identical
   files A and B got renamed to X/A and X/B by pairing A to X/A and B
   to X/B, but this was broken in the 2.0 timeframe.

 * "git send-pack --all <there>" was broken when its command line
   option parsing was written in the 2.6 timeframe.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * When running "git blame $path" with unnormalized data in the index
   for the path, the data in the working tree was blamed, even though
   "git add" would not have changed what is already in the index, due
   to "safe crlf" that disables the line-end conversion.  It has been
   corrected.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
   elements we use in imap-send, which has been adjusted for the change.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently from socks5:// proxies.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853

 * "merge-octopus" strategy did not ensure that the index is clean
   when merge begins.

 * When "git merge" notices that the merge can be resolved purely at
   the tree level (without having to merge blobs) and the resulting
   tree happens to already exist in the object store, it forgot to
   update the index, which left an inconsistent state that would
   break later operations.

 * "git submodule" reports the paths of submodules the command
   recurses into, but these paths were incorrectly reported when
   the command was not run from the root level of the superproject.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git replace -e" did not honour "core.editor" configuration.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * mmap emulation on Windows has been optimized and work better without
   consuming paging store when not needed.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * UI consistency improvements for "git mergetool".

 * "git rebase -m" could be asked to rebase an entire branch starting
   from the root, but failed by assuming that there always is a parent
   commit to the first commit on the branch.

 * Fix a broken "p4 lfs" test.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * "git fetch" test t5510 was flaky while running a (forced) automagic
   garbage collection.

 * Documentation updates to help contributors setting up Travis CI
   test for their patches.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

 * "git commit-tree" plumbing command required the user to always sign
   its result when the user sets the commit.gpgsign configuration
   variable, which was an ancient mistake.  Rework "git rebase" that
   relied on this mistake so that it reads commit.gpgsign and pass (or
   not pass) the -S option to "git commit-tree" to keep the end-user
   expectation the same, while teaching "git commit-tree" to ignore
   the configuration variable.  This will stop requiring the users to
   sign commit objects used internally as an implementation detail of
   "git stash".

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.

 * "git rerere" can get confused by conflict markers deliberately left
   by the inner merge step, because they are indistinguishable from
   the real conflict markers left by the outermost merge which are
   what the end user and "rerere" need to look at.  This was fixed by
   making the conflict markers left by the inner merges a bit longer.
   (merge 0f9fd5c jc/ll-merge-internal later to maint).

 * CI test was taught to build documentation pages.

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.

 * A couple of bugs around core.autocrlf have been fixed.

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".

 * We forgot to add "git log --decorate=auto" to documentation when we
   added the feature back in v2.1.0 timeframe.
   (merge 462cbb4 rj/log-decorate-auto later to maint).

 * "git fast-import --export-marks" would overwrite the existing marks
   file even when it makes a dump from its custom die routine.
   Prevent it from doing so when we have an import-marks file but
   haven't finished reading it.
   (merge f4beed6 fc/fast-import-broken-marks-file later to maint).

 * "git rebase -i", after it fails to auto-resolve the conflict, had
   an unnecessary call to "git rerere" from its very early days, which
   was spotted recently; the call has been removed.
   (merge 7063693 js/rebase-i-dedup-call-to-rerere later to maint).

 * Other minor clean-ups and documentation updates
   (merge cd82b7a pa/cherry-pick-doc-typo later to maint).
   (merge 2bb73ae rs/patch-id-use-skip-prefix later to maint).
   (merge aa20cbc rs/apply-name-terminate later to maint).
   (merge fe17fc0 jc/t2300-setup later to maint).
   (merge e256eec jk/shell-portability later to maint).

----------------------------------------------------------------

Changes since v2.8.0 are as follows:

Adam Dinwoodie (2):
      config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
      commit: --amend -m '' silently fails to wipe message

Alexander Kuleshov (1):
      submodule-config: use hashmap_iter_first()

Alexander Rinass (1):
      diff: run arguments through precompose_argv

Alexander Shopov (1):
      l10n: Updated Bulgarian translation of git (2597t,0f,0u)

Antonin (1):
      l10n: fr.po Fixed grammar mistake

Armin Kunaschik (2):
      t4151: make sure argument to 'test -z' is given
      t0008: 4 tests fail with ksh88

Ben Woosley (1):
      git-rebase--merge: don't include absent parent as a base

Benjamin Dopplinger (1):
      README.md: format CLI commands with code syntax

Brian Norris (3):
      Documentation: config: improve word ordering for http.cookieFile
      http: expand http.cookieFile as a path
      config: consistently format $variables in monospaced font

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christian Couder (5):
      Documentation: talk about pager in api-trace.txt
      builtin/apply: get rid of useless 'name' variable
      builtin/apply: handle parse_binary() failure
      builtin/apply: free patch when parse_chunk() fails
      Git/SVN: die when there is no commit metadata

David Aguilar (4):
      mergetool: support delete/delete conflicts
      mergetool: honor tempfile configuration when resolving delete conflicts
      difftool: initialize variables for readability
      difftool: handle unmerged files in dir-diff mode

David Turner (5):
      refs: move head_ref{,_submodule} to the common code
      refs: move for_each_*ref* functions into common code
      files-backend: break out ref reading
      refs: move resolve_ref_unsafe into common code
      refs: on symref reflog expire, lock symref not referrent

Dennis Kaarsemaker (1):
      Makefile: remove dependency on git.spec

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Elia Pinto (1):
      api-trace.txt: fix typo

Elijah Newren (6):
      merge-recursive: remove duplicate code
      merge-recursive: do not check working copy when creating a virtual merge base
      t7605: add a testcase demonstrating a bug with trivial merges
      builtin/merge.c: fix a bug with trivial merges
      merge-octopus: abort if index does not match HEAD
      t6044: new merge testcases for when index doesn't match HEAD

Eric Sunshine (10):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing
      git-format-patch.txt: don't show -s as shorthand for multiple options
      t1500: be considerate to future potential tests
      t1500: test_rev_parse: facilitate future test enhancements
      t1500: avoid changing working directory outside of tests
      t1500: avoid setting configuration options outside of tests
      t1500: avoid setting environment variables outside of tests

Eric Wong (4):
      send-email: more meaningful Message-ID
      send-email: do not load Data::Dumper
      pack-objects: warn on split packs disabling bitmaps
      .mailmap: update to my shorter email address

Erwan Mathoniere (1):
      Documentation: bold literals in man

Felipe Contreras (1):
      fast-import: do not truncate exported marks file

Gabriel Souza Franco (2):
      fetch-pack: fix object_id of exact sha1
      fetch-pack: update the documentation for "<refs>..." arguments

Jacob Keller (7):
      submodule: don't pass empty string arguments to submodule--helper clone
      submodule: check argc count for git submodule--helper clone
      submodule: fix submodule--helper clone usage
      submodule: fix segmentation fault in submodule--helper clone
      quote: implement sq_quotef()
      git: submodule honor -c credential.* from command line
      xdiff: add recs_match helper function

Jacob Nisnevich (2):
      mergetools: create mergetool_find_win32_cmd() helper function for winmerge
      mergetools: add support for ExamDiff

Jan Durovec (2):
      git-p4: clean-up code style in tests
      git-p4: add P4 jobs to git commit message

Jean-Noel Avila (1):
      l10n: fr.po v2.9.0rnd1

Jeff King (56):
      credential: let empty credential specs reset helper list
      t1515: add tests for rev-parse out-of-repo helpers
      add--interactive: allow custom diff highlighting programs
      rev-parse: let some options run outside repository
      strbuf_getwholeline: NUL-terminate getdelim buffer on error
      setup: make startup_info available everywhere
      setup: set startup_info->have_repository more reliably
      remote: don't resolve HEAD in non-repository
      mailmap: do not resolve blobs in a non-repository
      grep: turn off gitlink detection for --no-index
      use setup_git_directory() in test-* programs
      setup: document check_repository_format()
      wrap shared_repository global in get/set accessors
      lazily load core.sharedrepository
      check_repository_format_gently: stop using git_config_early
      config: drop git_config_early
      setup: refactor repo format reading and verification
      init: use setup.c's repo version verification
      setup: unify repository version callbacks
      setup: drop repository_format_version global
      verify_repository_format: mark messages for translation
      send-email: ignore trailing whitespace in mailrc alias file
      credential-cache--daemon: clarify "exit" action semantics
      t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
      git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
      branch: fix shortening of non-remote symrefs
      commit: do not ignore an empty message given by -m ''
      config: lower-case first word of error strings
      git_config_set_multivar_in_file: all non-zero returns are errors
      git_config_set_multivar_in_file: handle "unset" errors
      t5532: use write_script
      send-pack: close demux pipe before finishing async process
      run-command: teach async threads to ignore SIGPIPE
      send-pack: isolate sigpipe in demuxer thread
      fetch-pack: isolate sigpipe in demuxer thread
      t5504: drop sigpipe=ok from push tests
      remote.c: spell __attribute__ correctly
      t5550: fix typo in $HTTPD_URL
      t5550: break submodule config test into multiple sub-tests
      submodule: export sanitized GIT_CONFIG_PARAMETERS
      submodule--helper: move config-sanitizing to submodule.c
      submodule: use prepare_submodule_repo_env consistently
      submodule: stop sanitizing config options
      t6302: simplify non-gpg cases
      rebase--interactive: avoid empty list in shell for-loop
      test-lib: set BASH_XTRACEFD automatically
      t/lib-git-svn: drop $remote_git_svn and $git_svn_id
      t9100,t3419: enclose all test code in single-quotes
      t9107: use "return 1" instead of "exit 1"
      t9107: switch inverted single/double quotes in test
      t9103: modernize test style
      always quote shell arguments to test -z/-n
      cat-file: avoid noop calls to sha1_object_info_extended
      cat-file: default to --buffer when --batch-all-objects is used
      archive-tar: convert snprintf to xsnprintf
      test-lib: add in-shell "env" replacement

Jiang Xin (2):
      l10n: git.pot: v2.9.0 round 1 (104 new, 37 removed)
      l10n: zh_CN: for git v2.9.0 l10n round 1

Johannes Schindelin (16):
      replace --edit: respect core.editor
      name-rev: include taggerdate in considering the best name
      win32mmap: set errno appropriately
      mmap(win32): avoid copy-on-write when it is unnecessary
      mmap(win32): avoid expensive fstat() call
      http: support sending custom HTTP headers
      tests: adjust the configuration for Apache 2.2
      t5551: make the test for extra HTTP headers more robust
      t3404: fix typo
      submodule: ensure that -c http.extraheader is heeded
      mingw: introduce the 'core.hideDotFiles' setting
      mingw: remove unnecessary definition
      Windows: only add a no-op pthread_sigmask() when needed
      perf: let's disable symlinks when they are not available
      perf: make the tests work in worktrees
      perf: run "rebase -i" under perf

Johannes Sixt (4):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing
      t6044: replace seq by test_seq
      rebase -i: remove an unnecessary 'rerere' invocation

John Keeping (3):
      config: fail if --get-urlmatch finds no value
      Documentation/git-config: use bulleted list for exit codes
      Documentation/git-config: fix --get-all description

Junio C Hamano (82):
      rerere: split conflict ID further
      rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
      index-pack: correct --keep[=<msg>]
      index-pack: add a helper function to derive .idx/.keep filename
      rerere: handle leftover rr-cache/$ID directory and postimage files
      rerere: delay the recording of preimage
      rerere: allow multiple variants to exist
      t4200: rerere a merge with two identical conflicts
      rerere: do use multiple variants
      apply: remove unused call to free() in gitdiff_{old,new}name()
      merge: fix NULL pointer dereference when merging nothing into void
      merge: refuse to create too cool a merge by default
      pretty: enable --expand-tabs by default for selected pretty formats
      pretty: allow tweaking tabwidth in --expand-tabs
      submodule--helper: do not borrow absolute_path() result for too long
      Git 2.8.1
      First batch for post 2.8 cycle
      pretty: test --expand-tabs
      Makefile: fix misdirected redirections
      Second batch for post 2.8 cycle
      Makefile: stop pretending to support rpmbuild
      rerere: gc and clear
      rerere: move code related to "forget" together
      rerere: split code to call ll_merge() further
      rerere: adjust 'forget' to multi-variant world order
      setup.c: do not feed NULL to "%.*s" even with precision 0
      Third batch for post 2.8 cycle
      http: differentiate socks5:// and socks5h://
      t1020: do not overuse printf and use write_script
      t3404: use write_script
      Fourth batch for post 2.8 cycle
      Start preparing for 2.8.2
      fsck_commit_buffer(): do not special case the last validation
      ll-merge: fix typo in comment
      Prepare for 2.8.2
      Makefile: clean *.o files we create
      Fifth batch for post 2.8 cycle
      t3033: avoid 'ambiguous refs' warning
      pull: pass --allow-unrelated-histories to "git merge"
      Sixth batch for post 2.8 cycle
      send-email: fix grammo in the prompt that asks e-mail recipients
      Seventh batch for post 2.8 cycle
      Git 2.8.2
      Eighth batch for 2.9
      diff: undocument the compaction heuristic knobs for experimentation
      Start preparing for 2.8.3
      commit-tree: do not pay attention to commit.gpgsign
      Ninth batch for 2.9
      config: describe 'pathname' value type
      Tenth batch for 2.9
      Almost ready for 2.8.3
      test-lib-functions.sh: remove misleading comment on test_seq
      test-lib-functions.sh: rewrite test_seq without Perl
      ll-merge: use a longer conflict marker for internal merge
      t6036: remove pointless test that expects failure
      Documentation: fix linkgit references
      fsck: detect and warn a commit with embedded NUL
      ci: validate "linkgit:" in documentation
      test-parse-options: fix output when callback option fails
      test-parse-options: --expect=<string> option to simplify tests
      t0040: remove unused test helpers
      t0040: convert a few tests to use test-parse-options --expect
      Eleventh batch for 2.9
      rerere: plug memory leaks upon "rerere forget" failure
      Twelfth batch for 2.9
      Thirteenth batch for 2.9
      Git 2.8.3
      rerere: remove an null statement
      Git 2.9-rc0
      t4204: do not let $name variable clobbered
      Start preparing for 2.8.4
      Final batch before 2.9-rc1
      More topics for 2.8.4
      Git 2.9-rc1
      t5500 & t7403: lose bash-ism "local"
      t2300: run git-sh-setup in an environment that better mimics the real life
      Almost ready for 2.9-rc2
      Git 2.8.4
      Git 2.9-rc2
      diff: disable compaction heuristic for now
      Hopefully the final last-minute update before 2.9 final
      Git 2.9

Karsten Blees (1):
      mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Kazuki Yamaguchi (10):
      branch -d: refuse deleting a branch which is currently checked out
      refs: add a new function set_worktree_head_symref
      branch -m: update all per-worktree HEADs
      set_worktree_head_symref(): fix error message
      imap-send: use HMAC() function provided by OpenSSL
      imap-send: check NULL return of SSL_CTX_new()
      imap-send: avoid deprecated TLSv1_method()
      configure: remove checking for HMAC_CTX_cleanup
      imap-send: check for NOLOGIN capability only when using LOGIN command
      imap-send: fix CRAM-MD5 response calculation

Keller Fuchs (1):
      Documentation: clarify signature verification

Lars Schneider (8):
      git-p4: map a P4 user to Git author name and email address
      travis-ci: update Git-LFS and P4 to the latest version
      travis-ci: express Linux/OS X dependency versions more clearly
      git-p4: fix Git LFS pointer parsing
      t9824: fix wrong reference value
      Documentation: add setup instructions for Travis CI
      travis-ci: build documentation
      travis-ci: enable Git SVN tests t91xx on Linux

Laurent Arnoud (1):
      tag: add the option to force signing of annotated tags

Li Peng (1):
      typofix: assorted typofixes in comments, documentation and messages

Linus Torvalds (1):
      pretty: expand tabs in indented logs to make things line up properly

Luke Diamand (3):
      git-p4 tests: cd to / before running python
      git-p4 tests: work with python3 as well as python2
      git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
      ident: check for useConfigOnly before auto-detection of name/email
      ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (13):
      Documentation/diff-config: fix description of diff.renames
      t4001-diff-rename: wrap file creations in a test
      t: add tests for diff.renames (true/false/unset)
      log: introduce init_log_defaults()
      diff: activate diff.renames by default
      lockfile: mark strings for translation
      lockfile: improve error message when lockfile exists
      git.spec.in: use README.md, not README
      README.md: don't take 'commandname' literally
      git-multimail: update to release 1.3.0
      git-multimail: update to release 1.3.1
      Makefile: move 'ifdef DEVELOPER' after config.mak* inclusion
      Makefile: add $(DEVELOPER_CFLAGS) variable

Mehul Jain (9):
      git-pull.c: introduce git_pull_config()
      pull --rebase: add --[no-]autostash flag
      t5520: use consistent capitalization in test titles
      t5520: ensure consistent test conditions
      t5520: use better test to check stderr output
      t5520: factor out common "successful autostash" code
      t5520: factor out common "failing autostash" code
      t5520: reduce commom lines of code
      t5520: test --[no-]autostash with pull.rebase=true

Michael Haggerty (19):
      t1430: test the output and error of some commands more carefully
      t1430: clean up broken refs/tags/shadow
      t1430: don't rely on symbolic-ref for creating broken symrefs
      t1430: test for-each-ref in the presence of badly-named refs
      t1430: improve test coverage of deletion of badly-named refs
      resolve_missing_loose_ref(): simplify semantics
      resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
      resolve_ref_unsafe(): ensure flags is always set
      resolve_ref_1(): eliminate local variable
      resolve_ref_1(): reorder code
      resolve_ref_1(): eliminate local variable "bad_name"
      read_raw_ref(): manage own scratch space
      files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
      read_raw_ref(): change flags parameter to unsigned int
      fsck_head_link(): remove unneeded flag variable
      cmd_merge(): remove unneeded flag variable
      checkout_paths(): remove unneeded flag variable
      check_aliased_update(): check that dst_name is non-NULL
      show_head_ref(): check the result of resolve_ref_namespace()

Michael J Gruber (1):
      completion: complete --cherry-mark for git log

Michael Procter (1):
      upload-pack: use argv_array for pack_objects

Michael Rappazzo (1):
      Documentation: add instructions to help setup gmail 2FA

Nguyễn Thái Ngọc Duy (62):
      git-apply.txt: remove a space
      git-apply.txt: mention the behavior inside a subdir
      apply: report patch skipping in verbose mode
      test helpers: move test-* to t/helper/ subdirectory
      dir.c: remove dead function fnmatch_icase()
      wrapper.c: delete dead function git_mkstemps()
      dir.c: rename str(n)cmp_icase to fspath(n)cmp
      path.c: add git_common_path() and strbuf_git_common_path()
      worktree.c: store "id" instead of "git_dir"
      worktree.c: make find_shared_symref() return struct worktree *
      worktree.c: mark current worktree
      path.c: refactor and add worktree_git_path()
      wt-status.c: split rebase detection out of wt_status_get_state()
      wt-status.c: make wt_status_check_rebase() work on any worktree
      worktree.c: avoid referencing to worktrees[i] multiple times
      worktree.c: check whether branch is rebased in another worktree
      wt-status.c: split bisect detection out of wt_status_get_state()
      worktree.c: check whether branch is bisected in another worktree
      branch: do not rename a branch under bisect or rebase
      remote.c: specify correct plural form in "commit diverge" message
      usage.c: move format processing out of die_errno()
      usage.c: add warning_errno() and error_errno()
      bisect.c: use die_errno() and warning_errno()
      builtin/am.c: use error_errno()
      builtin/branch.c: use error_errno()
      builtin/fetch.c: use error_errno()
      builtin/help.c: use warning_errno()
      builtin/mailsplit.c: use error_errno()
      builtin/merge-file.c: use error_errno()
      builtin/pack-objects.c: use die_errno() and warning_errno()
      builtin/rm.c: use warning_errno()
      builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
      builtin/upload-archive.c: use error_errno()
      builtin/worktree.c: use error_errno()
      check-racy.c: use error_errno()
      combine-diff.c: use error_errno()
      compat/win32/syslog.c: use warning_errno()
      config.c: use error_errno()
      connected.c: use error_errno()
      copy.c: use error_errno()
      credential-cache--daemon.c: use warning_errno()
      diff-no-index.c: use error_errno()
      editor.c: use error_errno()
      entry.c: use error_errno()
      fast-import.c: use error_errno()
      gpg-interface.c: use error_errno()
      grep.c: use error_errno()
      http.c: use error_errno() and warning_errno()
      ident.c: use warning_errno()
      mailmap.c: use error_errno()
      reachable.c: use error_errno()
      rerere.c: use error_errno() and warning_errno()
      run-command.c: use error_errno()
      sequencer.c: use error_errno()
      server-info.c: use error_errno()
      sha1_file.c: use {error,die,warning}_errno()
      transport-helper.c: use error_errno()
      unpack-trees.c: use error_errno()
      upload-pack.c: use error_errno()
      vcs-svn: use error_errno()
      wrapper.c: use warning_errno()
      wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Nikola Forró (1):
      difftool/mergetool: make the form of yes/no questions consistent

Ori Avtalion (1):
      Documentation: git diff --check detects conflict markers

Pablo Santiago Blum de Aguiar (1):
      git-cherry-pick.txt: correct a small typo

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (2597t0f0u)

Pranit Bauva (9):
      t/t7502 : drop duplicate test
      api-parse-options.txt: document OPT_CMDMODE()
      t0040-test-parse-options.sh: fix style issues
      test-parse-options: print quiet as integer
      t0040-parse-options: improve test coverage
      t/t7507: improve test coverage
      parse-options.c: make OPTION_COUNTUP respect "unspecified" values
      t7507-commit-verbose: improve test coverage by testing number of diffs
      commit: add a commit.verbose config variable

Ralf Thielow (5):
      completion: add option '--guides' to 'git help'
      completion: add 'revisions' and 'everyday' to 'git help'
      rebase-i: print an abbreviated hash when stop for editing
      string_list: use string-list API in unsorted_string_list_lookup()
      l10n: de.po: translate 104 new messages

Ramsay Jones (3):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak
      log: document the --decorate=auto option

Ray Chen (1):
      l10n: zh_CN: review for git v2.9.0 l10n round 1

Ray Zhang (1):
      worktree: add: introduce --checkout option

René Nyffenegger (1):
      Documentation: fix typo 'In such these cases'

René Scharfe (3):
      apply: remove unused parameters from name_terminate()
      patch-id: use starts_with() and skip_prefix()
      perf: make the tests work without a worktree

SZEDER Gábor (6):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground
      Documentation/git-send-email: fix typo in gmail 2FA section

Santiago Torres (6):
      builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
      t7030: test verifying multiple tags
      verify-tag: update variable name and type
      verify-tag: prepare verify_tag for libification
      verify-tag: move tag verification code to tag.c
      tag -v: verify directly rather than exec-ing verify-tag

Saurav Sachidanand (1):
      dir: store EXC_FLAG_* values in unsigned integers

Shin Kojima (1):
      gitweb: apply fallback encoding before highlight

Sidhant Sharma [:tk] (1):
      builtin/receive-pack.c: use parse_options API

Stanislav Kolotinskiy (1):
      git-send-pack: fix --all option when used with directory

Stefan Beller (46):
      submodule-config: keep update strategy around
      submodule-config: drop check against NULL
      fetching submodules: respect `submodule.fetchJobs` config option
      submodule update: direct error message to stderr
      run_processes_parallel: treat output of children as byte array
      run_processes_parallel: rename parameters for the callbacks
      git submodule update: have a dedicated helper for cloning
      submodule helper: remove double 'fatal: ' prefix
      submodule update: expose parallelism to the user
      clone: allow an explicit argument for parallel submodule clones
      clone tests: rename t57* => t56*
      rebase: decouple --exec from --interactive
      t3404: cleanup double empty lines between tests
      submodule foreach: correct path display in recursive submodules
      submodule update --init: correct path handling in recursive submodules
      submodule status: correct path handling in recursive submodules
      submodule update: align reporting path for custom command execution
      submodule update: test recursive path reporting from subdirectory
      t7407: make expectation as clear as possible
      recursive submodules: test for relative paths
      submodule--helper: fix potential NULL-dereference
      submodule--helper clone: create the submodule path just once
      notes: don't leak memory in git_config_get_notes_strategy
      abbrev_sha1_in_line: don't leak memory
      bundle: don't leak an fd in case of early return
      credential-cache, send_request: close fd when done
      submodule--helper, module_clone: always operate on absolute paths
      submodule--helper, module_clone: catch fprintf failure
      submodule: port resolve_relative_url from shell to C
      submodule: port init from shell to C
      xdiff: implement empty line chunk heuristic
      mv: allow moving nested submodules
      clone: add `--shallow-submodules` flag
      config doc: improve exit code listing
      config.c: drop local variable
      submodule-config: don't shadow `cache`
      submodule init: fail gracefully with a missing .gitmodules file
      submodule--helper update-clone: abort gracefully on missing .gitmodules
      submodule deinit test: fix broken && chain in subshell
      submodule init: redirect stdout to stderr
      t7300: mark test with SANITY
      submodule deinit: require '--all' instead of '.' for all submodules
      t3513: do not compress backup tar file
      t6041: do not compress backup tar file
      submodule--helper: offer a consistent API
      submodule: remove bashism from shell script

Stephen P. Smith (1):
      wt-status.c: set commitable bit if there is a meaningful merge.

Sven Strickroth (3):
      commit: do not lose SQUASH_MSG contents
      MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
      MSVC: use shipped headers instead of fallback definitions

Torsten Bögershausen (6):
      correct blame for files commited with CRLF
      t0027: make commit_chk_wrnNNO() reliable
      convert: allow core.autocrlf=input and core.eol=crlf
      t0027: test cases for combined attributes
      convert.c: ident + core.autocrlf didn't work
      t5601: Remove trailing space in sed expression

Trần Ngọc Quân (1):
      l10n: Updated Vietnamese translation (2597t)

Vasco Almeida (19):
      l10n: fr: fix transcation of "dir"
      l10n: fr: fix wrongly translated option name
      l10n: fr: change "id de clé" to match "id-clé"
      l10n: fr: don't translate "merge" as a parameter
      i18n: index-pack: use plural string instead of normal one
      i18n: builtin/branch.c: mark option for translation
      i18n: unpack-trees: mark strings for translation
      i18n: builtin/rm.c: remove a comma ',' from string
      i18n: branch: unmark string for translation
      i18n: branch: move comment for translators
      i18n: git-parse-remote.sh: mark strings for translation
      i18n: builtin/pull.c: mark placeholders for translation
      i18n: builtin/pull.c: split strings marked for translation
      i18n: remote: add comment for translators
      Documentation/git-mailinfo: fix typo
      i18n: unpack-trees: avoid substituting only a verb in sentences
      l10n: pt_PT: merge git.pot file
      l10n: pt_PT: update according to git-gui glossary
      l10n: pt_PT: update Portuguese translation

Xiaolong Ye (4):
      patch-ids: make commit_patch_id() a public helper function
      format-patch: add '--base' option to record base tree info
      format-patch: introduce --base=auto option
      format-patch: introduce format.useAutoBase configuration

brian m. carlson (6):
      sha1-name: introduce a get_oid() function
      test-match-trees: convert to use struct object_id
      match-trees: convert shift_tree() and shift_tree_by() to use object_id
      struct name_entry: use struct object_id instead of unsigned char sha1[20]
      tree-walk: convert tree_entry_extract() to use struct object_id
      match-trees: convert several leaf functions to use struct object_id

Ævar Arnfjörð Bjarmason (4):
      githooks.txt: improve the intro section
      githooks.txt: amend dangerous advice about 'update' hook ACL
      githooks.txt: minor improvements to the grammar & phrasing
      hooks: allow customizing where the hook directory is

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #02; Thu, 07)
  @ 2010-01-08  7:42  2%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-08  7:42 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

The tip of 'next' has been rebuilt on top of the current 'master'.

--------------------------------------------------
[Graduated to "master"]

* mo/bin-wrappers (2009-12-02) 3 commits
  (merged to 'next' on 2010-01-03 at 8c5fa27)
 + INSTALL: document a simpler way to run uninstalled builds
 + run test suite without dashed git-commands in PATH
 + build dashless "bin-wrappers" directory similar to installed bindir

* mv/commit-date (2009-12-03) 2 commits
  (merged to 'next' on 2010-01-03 at 1c45fdf)
 + Document date formats accepted by parse_date()
 + builtin-commit: add --date option

* bg/maint-add-all-doc (2009-12-07) 4 commits
  (merged to 'next' on 2010-01-03 at b19a323)
 + squash! rm documentation--also mention add-u where we mention commit-a
 + git-rm doc: Describe how to sync index & work tree
 + git-add/rm doc: Consistently back-quote
 + Documentation: 'git add -A' can remove files

* so/cvsserver-update (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-03 at 99959b6)
 + cvsserver: make the output of 'update' more compatible with cvs.

* mg/tag-d-show (2009-12-10) 1 commit
  (merged to 'next' on 2010-01-03 at 87657d2)
 + tag -d: print sha1 of deleted tag

* sb/maint-octopus (2009-12-11) 3 commits
  (merged to 'next' on 2010-01-03 at ffe77d6)
 + octopus: remove dead code
 + octopus: reenable fast-forward merges
 + octopus: make merge process simpler to follow

* js/filter-branch-prime (2009-12-15) 1 commit
  (merged to 'next' on 2010-01-03 at 7c90319)
 + filter-branch: remove an unnecessary use of 'git read-tree'

--------------------------------------------------
[New Topics]

* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
 - checkout -m path: fix recreating conflicts

* jn/makefile (2010-01-06) 4 commits
 - Makefile: consolidate .FORCE-* targets
 - Makefile: learn to generate listings for targets requiring special flags
 - Makefile: use target-specific variable to pass flags to cc
 - Makefile: regenerate assembler listings when asked

--------------------------------------------------
[Will graduate after a bit more cooking]

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* nd/sparse (2010-01-04) 25 commits
 - t7002: test for not using external grep on skip-worktree paths
 - t7002: set test prerequisite "external-grep" if supported
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

--------------------------------------------------
[Cooking]

* da/difftool (2009-12-22) 2 commits
  (merged to 'next' on 2010-01-06 at e957395)
 + git-difftool: Add '--gui' for selecting a GUI tool
 + t7800-difftool: Set a bogus tool for use by tests

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

Will merge to 'next', unless I hear objections within a few days.

* tc/test-locate-httpd (2010-01-02) 1 commit
  (merged to 'next' on 2010-01-06 at 9d913e5)
 + t/lib-http.sh: Restructure finding of default httpd location

* jc/fix-tree-walk (2009-09-14) 7 commits
 - read-tree --debug-unpack
 - unpack-trees.c: look ahead in the index
 - unpack-trees.c: prepare for looking ahead in the index
 - Aggressive three-way merge: fix D/F case
 - traverse_trees(): handle D/F conflict case sanely
 - more D/F conflict tests
 - tests: move convenience regexp to match object names to test-lib.sh

Resurrected from "Ejected" category.  This is fix for a tricky codepath
and testing and improving before it hits 'next' by brave souls is greatly
appreciated.  I am not very happy about the solution myself.

* cc/reset-more (2010-01-08) 8 commits
 - t7111: check that reset options work as described in the tables
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* jc/branch-d (2009-12-29) 1 commit
 - branch -d: base the "already-merged" safety on the branch it merges with

http://thread.gmane.org/gmane.comp.version-control.git/135837/focus=135863
I am tempted to merge this to 'next', but please stop me if people see issues
in it.

* jc/rerere (2009-12-04) 1 commit
 - Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/run-command-use-shell (2010-01-01) 8 commits
 - t4030, t4031: work around bogus MSYS bash path conversion
 - diff: run external diff helper with shell
 - textconv: use shell to run helper
 - editor: use run_command's shell feature
 - run-command: optimize out useless shell calls
 - run-command: convert simple callsites to use_shell
 - t0021: use $SHELL_PATH for the filter script
 - run-command: add "use shell" option

Shuffled the commits in the topic, following J6t's suggestion in
http://thread.gmane.org/gmane.comp.version-control.git/136128

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* tc/clone-v-progress (2009-12-26) 4 commits
 - clone: use --progress to force progress reporting
 - clone: set transport->verbose when -v/--verbose is used
 - git-clone.txt: reword description of progress behaviour
 - check stderr with isatty() instead of stdout when deciding to show progress

Perhaps needs an entry in the Release Notes, but otherwise looked Ok.

* tc/smart-http-restrict (2010-01-02) 4 commits
  (merged to 'next' on 2010-01-06 at 82736cb)
 + Smart-http tests: Test http-backend without curl or a webserver
 + Smart-http tests: Break test t5560-http-backend into pieces
 + Smart-http tests: Improve coverage in test t5560
 + Smart-http: check if repository is OK to export before serving it

* jc/cache-unmerge (2009-12-25) 9 commits
 - rerere forget path: forget recorded resolution
 - rerere: refactor rerere logic to make it independent from I/O
 - rerere: remove silly 1024-byte line limit
 - resolve-undo: teach "update-index --unresolve" to use resolve-undo info
 - resolve-undo: "checkout -m path" uses resolve-undo information
 - resolve-undo: allow plumbing to clear the information
 - resolve-undo: basic tests
 - resolve-undo: record resolved conflicts in a new index extension section
 - builtin-merge.c: use standard active_cache macros

Will wait a bit more before moving it to 'next'.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

Needs tests.

* jc/checkout-merge-base (2010-01-07) 4 commits
  (merged to 'next' on 2010-01-07 at 5229608)
 + rebase -i: teach --onto A...B syntax
 + rebase: fix --onto A...B parsing and add tests
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2009-12-24) 6 commits
 - transport-helper.c::push_refs(): emit "no refs" error message
 - transport-helper.c::push_refs(): ignore helper-reported status if ref is not to be pushed
 - transport.c::transport_push(): make ref status affect return value
 - refactor ref status logic for pushing
 - t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
 - t5541-http-push.sh: add tests for non-fast-forward pushes

Peff: $gmane/136169, 136167, 136168
RC: $gmane/136172

* il/vcs-helper (2009-12-09) 8 commits
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode

* mm/diag-path-in-treeish (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-06 at 6b4201e)
 + Detailed diagnosis when parsing an object name fails.

* mh/rebase-fixup (2009-12-07) 2 commits
  (merged to 'next' on 2010-01-06 at c4779a7)
 + Add a command "fixup" to rebase --interactive
 + t3404: Use test_commit to set up test repository
 (this branch is used by ns/rebase-auto-squash.)

Initial round of "fixup" action that is similar to "squash" action in
"rebase -i" that excludes the commit log message from follow-up commits
when composing the log message for the updated one.  Expected is a further
improvement to skip opening the editor if a pick is followed only by
"fixup" and no "squash".

* ns/rebase-auto-squash (2009-12-08) 1 commit
  (merged to 'next' on 2010-01-06 at da4e2f5)
 + rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - Notes API: for_each_note(): Traverse the entire notes tree with a callback
 - Notes API: get_note(): Return the note annotating the given object
 - Notes API: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
  (merged to 'next' on 2010-01-02 at ae42130)
 + Add more testcases to test fast-import of notes
 + Rename t9301 to t9350, to make room for more fast-import tests
 + fast-import: Proper notes tree manipulation

http://thread.gmane.org/gmane.comp.version-control.git/134738

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

http://mid.gmane.org/201001051231.43048.johan@herland.net Hold!

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
  (merged to 'next' on 2010-01-06 at 03e00cd)
 + General --quiet improvements

* sr/gfi-options (2009-12-04) 7 commits
 - fast-import: add (non-)relative-marks feature
 - fast-import: allow for multiple --import-marks= arguments
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: add feature command
 - fast-import: put marks reading in its own function
 - fast-import: put option parsing code in separate functions

http://thread.gmane.org/gmane.comp.version-control.git/134540

I haven't seen comments on this round, and I am tempted to merge it to
'next' soonish.  Please file complaints before I do so if people have
objections.

* ap/merge-backend-opts (2008-07-18) 6 commits
 - Document that merge strategies can now take their own options
 - Extend merge-subtree tests to test -Xsubtree=dir.
 - Make "subtree" part more orthogonal to the rest of merge-recursive.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

^ permalink raw reply	[relevance 2%]

* Re: [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters
  @ 2013-03-29 16:44  2%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-03-29 16:44 UTC (permalink / raw)
  To: Duy Nguyen; +Cc: Jeff King, git, avila.jn

Duy Nguyen <pclouds@gmail.com> writes:

>> So we would want to do any adjustment to the fix when we merge up to
>> maint.
>
> OK. Then Junio, you may need to resolve the conflict with something
> like this. Originally match_basename uses fnmatch, not wildmatch. But
> using wildmatch there too should be fine, now that both
> match_{base,path}name share fnmatch_icase_mem().

Thanks.

The result still smells somewhat funny, though.

fnmatch_icase_mem() is meant to be a wrapper of fnmatch_icase() for
counted strings and its matching semantics should be the same as
fnmatch_icase().

With the merge-fix, fnmatch_icase_mem() calls into wildmatch(), but
fnmatch_icase() still calls into fnmatch().

The latter's flags are meant to be taken from FNM_* family, but the
former takes flags from WM_* family of bits, no?

I think you are running with USE_WILDMATCH which may make the
differences harder to notice, but the name fnmatch_icase_mem() that
is not in the same family as fnmatch but is from the wildmatch()
family smells like an accident waiting to happen.

I tend to think in the longer term it may be a good idea to build
with USE_WILDMATCH unconditionally (we can lose compat/fnmatch), so
in the end this may not matter that much, but before that happens,
soon after we merge the regression fix with this merge-fix, we may
want to update the codebase as if we applied a series that were
based on 'maint' as you suggested, i.e. using raw wildmatch()
consistently in the match_{base,path}name() codepath.

Opinions?

>
> -- 8< --
> diff --git a/dir.c b/dir.c
> index 73a08af..84744df 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -81,7 +81,9 @@ static int fnmatch_icase_mem(const char *pattern, int patternlen,
>  		use_str = str_buf.buf;
>  	}
>  
> -	match_status = fnmatch_icase(use_pat, use_str, flags);
> +	if (ignore_case)
> +		flags |= WM_CASEFOLD;
> +	match_status = wildmatch(use_pat, use_str, flags, NULL);
>  
>  	strbuf_release(&pat_buf);
>  	strbuf_release(&str_buf);
> @@ -564,7 +566,7 @@ int match_pathname(const char *pathname, int pathlen,
>  
>  	return fnmatch_icase_mem(pattern, patternlen,
>  				 name, namelen,
> -				 FNM_PATHNAME) == 0;
> +				 WM_PATHNAME) == 0;
>  }
>  
>  /*
> -- 8< --

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Apr 2016, #02; Mon, 4)
@ 2016-04-04 21:26  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-04 21:26 UTC (permalink / raw)
  To: git; +Cc: David A. Greene, Doug Kelly, Marios Titas, SZEDER Gábor

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The tip of 'next' has been rewound, the first maintenance release
v2.8.1 that most everybody can safely ignore has been tagged, and
the first batch of topics that have been cooking in 'next' during
the pre-2.8 freeze period are now in 'master'.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", "Waiting for reroll" etc. in the
following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* es/format-patch-doc-hide-no-patch (2016-04-04) 1 commit
 - git-format-patch.txt: don't show -s as shorthand for multiple options

 "git format-patch --help" showed `-s` and `--no-patch` as if these
 are valid options to the command.  We already hide `--patch` option
 from the documentation, because format-patch is about showing the
 diff, and the documentation now hides these options as well.

 Will merge to next.


* jk/branch-shortening-funny-symrefs (2016-04-04) 1 commit
 - branch: fix shortening of non-remote symrefs

 A change back in version 2.7 to "git branch" broke display of a
 symbolic refs in a non-standard place in the refs/ hierarchy (we
 expect symbolic refs to appear in refs/remotes/*/HEAD to point at
 the primary branch the remote has, and as .git/HEAD to point at the
 branch we locally checked out).

 Will merge to next.
 and later down to maint-2.7.

--------------------------------------------------
[Graduated to "master"]

* es/test-gpg-tags (2016-03-06) 4 commits
  (merged to 'next' on 2016-03-15 at 617119f)
 + t6302: skip only signed tags rather than all tests when GPG is missing
 + t6302: also test annotated in addition to signed tags
 + t6302: normalize names and descriptions of signed tags
 + lib-gpg: drop unnecessary "missing GPG" warning

 A test for tags has been restructured so that more parts of it can
 easily be run on a platform without a working GnuPG.


* gf/fetch-pack-direct-object-fetch (2016-03-05) 2 commits
  (merged to 'next' on 2016-03-06 at 5628860)
 + fetch-pack: update the documentation for "<refs>..." arguments
  (merged to 'next' on 2016-03-04 at 49199e0)
 + fetch-pack: fix object_id of exact sha1

 Fetching of history by naming a commit object name directly didn't
 work across remote-curl transport.


* jc/index-pack (2016-03-03) 2 commits
  (merged to 'next' on 2016-03-15 at 42efaa7)
 + index-pack: add a helper function to derive .idx/.keep filename
 + Merge branch 'jc/maint-index-pack-keep' into jc/index-pack
 (this branch is used by jc/bundle; uses jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 Code clean-up.


* jc/maint-index-pack-keep (2016-03-03) 1 commit
  (merged to 'next' on 2016-03-04 at bc1d37a)
 + index-pack: correct --keep[=<msg>]
 (this branch is used by jc/bundle, jc/index-pack and jc/index-pack-clone-bundle.)

 "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.


* jk/add-i-highlight (2016-02-28) 1 commit
  (merged to 'next' on 2016-03-04 at 4ac3aa1)
 + add--interactive: allow custom diff highlighting programs

 A new "interactive.diffFilter" configuration can be used to
 customize the diff shown in "git add -i" session.


* jk/config-get-urlmatch (2016-02-28) 3 commits
  (merged to 'next' on 2016-03-04 at feeb192)
 + Documentation/git-config: fix --get-all description
 + Documentation/git-config: use bulleted list for exit codes
 + config: fail if --get-urlmatch finds no value

 "git config --get-urlmatch", unlike other variants of the "git
 config --get" family, did not signal error with its exit status
 when there was no matching configuration.


* jk/credential-clear-config (2016-02-26) 1 commit
  (merged to 'next' on 2016-03-04 at f7b26b7)
 + credential: let empty credential specs reset helper list

 The credential.helper configuration variable is cumulative and
 there is no good way to override it from the command line.  As
 a special case, giving an empty string as its value now serves
 as the signal to clear the values specified in various files.


* jk/getwholeline-getdelim-empty (2016-03-05) 1 commit
  (merged to 'next' on 2016-03-15 at e70d4bd)
 + strbuf_getwholeline: NUL-terminate getdelim buffer on error

 strbuf_getwholeline() did not NUL-terminate the buffer on certain
 corner cases in its error codepath.


* jk/rev-parse-local-env-vars (2016-02-29) 2 commits
  (merged to 'next' on 2016-03-04 at a0300d5)
 + rev-parse: let some options run outside repository
 + t1515: add tests for rev-parse out-of-repo helpers

 The "--local-env-vars" and "--resolve-git-dir" options of "git
 rev-parse" failed to work outside a repository when the command's
 option parsing was rewritten in 1.8.5 era.


* jk/startup-info (2016-03-07) 6 commits
  (merged to 'next' on 2016-03-15 at eb95e5f)
 + use setup_git_directory() in test-* programs
 + grep: turn off gitlink detection for --no-index
 + mailmap: do not resolve blobs in a non-repository
 + remote: don't resolve HEAD in non-repository
 + setup: set startup_info->have_repository more reliably
 + setup: make startup_info available everywhere

 The startup_info data, which records if we are working inside a
 repository (among other things), are now uniformly available to Git
 subcommand implementations, and Git avoids attempting to touch
 references when we are not in a repository.


* mm/diff-renames-default (2016-02-25) 5 commits
  (merged to 'next' on 2016-02-25 at 947c399)
 + diff: activate diff.renames by default
 + log: introduce init_log_defaults()
 + t: add tests for diff.renames (true/false/unset)
 + t4001-diff-rename: wrap file creations in a test
 + Documentation/diff-config: fix description of diff.renames

 The end-user facing Porcelain level commands like "diff" and "log"
 now enables the rename detection by default.


* mm/lockfile-error-message (2016-03-01) 2 commits
  (merged to 'next' on 2016-03-04 at 04ed7e6)
 + lockfile: improve error message when lockfile exists
 + lockfile: mark strings for translation


* mm/readme-markdown (2016-04-01) 2 commits
 - git.spec: use README.md, not README
  (merged to 'next' on 2016-03-01 at 81f3858)
 + README.md: don't take 'commandname' literally

 The top-level README file has been updated to be more appropriate
 for the sign on the front door to welcome new acquaintances to Git
 by toning down inside jokes and making it into MarkDown.


* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
  (merged to 'next' on 2016-02-26 at f0a54e5)
 + upload-pack: use argv_array for pack_objects

 The embedded args argv-array in the child process is used to build
 the command line to run pack-objects instead of using a separate
 array of strings.


* rj/xdiff-prepare-plug-leak-on-error-codepath (2016-03-04) 2 commits
  (merged to 'next' on 2016-03-15 at f72755e)
 + xdiff/xprepare: fix a memory leak
 + xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits

 A small memory leak in an error codepath has been plugged in xdiff
 code.

--------------------------------------------------
[Stalled]

* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* jn/mergetools-examdiff (2016-04-04) 2 commits
 - mergetools: add support for ExamDiff
 - mergetools: create mergetool_find_win32_cmd() helper function for winmerge

 "git mergetools" learned to drive ExamDiff.

 Will merge to 'next'.


* kn/for-each-tag-branch (2016-03-30) 1 commit
 - for-each-ref: fix description of '--contains' in manpage

 Docfix.

 Will merge to 'next'.


* kn/ref-filter-branch-list (2016-03-30) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Will be rerolled.


* oa/doc-diff-check (2016-03-29) 1 commit
 - Documentation: git diff --check detects conflict markers

 Docfix.

 Will merge to 'next'.


* rz/worktree-no-checkout (2016-03-29) 1 commit
 - worktree: add: introduce --checkout option

 "git worktree add" can be given "--no-checkout" option to only
 create an empty worktree without checking out the files.

 Will merge to 'next'.


* sb/misc-cleanups (2016-04-01) 4 commits
 - credential-cache, send_request: close fd when done
 - bundle: don't leak an fd in case of early return
 - abbrev_sha1_in_line: don't leak memory
 - notes: don't leak memory in git_config_get_notes_strategy

 Assorted minor clean-ups.

 Will merge to 'next'.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
 - submodule--helper, module_clone: catch fprintf failure
 - submodule--helper: do not borrow absolute_path() result for too long
 - submodule--helper, module_clone: always operate on absolute paths
 - submodule--helper clone: create the submodule path just once
 - submodule--helper: fix potential NULL-dereference
 - recursive submodules: test for relative paths

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Any further comments?  Otherwise will merge to 'next'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
 - t7407: make expectation as clear as possible
 - submodule update: test recursive path reporting from subdirectory
 - submodule update: align reporting path for custom command execution
 - submodule status: correct path handling in recursive submodules
 - submodule update --init: correct path handling in recursive submodules
 - submodule foreach: correct path display in recursive submodules

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Any further comments?  Otherwise will merge to 'next'.


* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
 - diffcore: fix iteration order of identical files during rename detection

 "git diff -M" used to work better when two originally identical
 files A and B got renamed to X/A and X/B by pairing A to X/A and B
 to X/B, but this was broken in 2.0 timeframe.

 Will merge to 'next'.


* sk/send-pack-all-fix (2016-03-31) 1 commit
 - git-send-pack: fix --all option when used with directory

 "git send-pack --all <there>" was broken when its command line
 option parsing was written in 2.6 timeframe.

 Will merge to 'next'.


* ss/msvc (2016-03-30) 2 commits
 - MSVC: use shipped headers instead of fallback definitions
 - MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more

 Will merge to 'next'.


* xy/format-patch-base (2016-03-31) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will be rerolled.
 ($gmane/290365)


* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* tb/safe-crlf-output-fix (2016-04-01) 7 commits
 . convert.c: more safer crlf handling with text attribute
 . correct blame for files commited with CRLF
 . convert: unify the "auto" handling of CRLF
 . t0027: test cases for combined attributes
 . convert: allow core.autocrlf=input and core.eol=crlf
 . convert.c: stream and early out
 . read-cache: factor out get_sha1_from_index() helper

 The "safe CRLF" facility disables line-end conversion from CRLF to
 LF when checking in if the blob registered to the index already
 contains CR, but some codepaths like "git blame" did not know this,
 and instead assumed that only the configuration and attribute
 settings determined how the data from the working tree is converted.

 Will be rerolled.
 ($gmane/290637)


* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
 - submodule-config: use hashmap_iter_first()

 Minor code cleanup.

 Will merge to 'next'.


* ky/branch-d-worktree (2016-03-29) 1 commit
 - branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree

 Will merge to 'next'.


* ky/branch-m-worktree (2016-04-04) 2 commits
 - branch -m: update all per-worktree HEADs
 - refs: add a new function set_worktree_head_symref

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.

 Will merge to 'next'.


* nd/apply-doc (2016-03-24) 2 commits
 - git-apply.txt: mention the behavior inside a subdir
 - git-apply.txt: remove a space

 Will merge to 'next'.


* nd/apply-report-skip (2016-03-24) 1 commit
 - apply: report patch skipping in verbose mode

 "git apply -v" learned to report paths in the patch that were
 skipped via --include/--exclude mechanism or being outside the
 current working directory.

 Will merge to 'next'.


* pb/opt-cmdmode-doc (2016-03-25) 1 commit
 - api-parse-options.txt: document OPT_CMDMODE()

 Minor API documentation update.

 Will merge to 'next'.


* rt/completion-help (2016-03-24) 2 commits
 - completion: add 'revisions' and 'everyday' to 'git help'
 - completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.

 Will merge to 'next'.


* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
 - rebase-i: print an abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.

 Will merge to 'next'.


* jk/check-repository-format (2016-03-11) 10 commits
 - verify_repository_format: mark messages for translation
 - setup: drop repository_format_version global
 - setup: unify repository version callbacks
 - init: use setup.c's repo version verification
 - setup: refactor repo format reading and verification
 - config: drop git_config_early
 - check_repository_format_gently: stop using git_config_early
 - lazily load core.sharedrepository
 - wrap shared_repository global in get/set accessors
 - setup: document check_repository_format()

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.

 Will merge to 'next'.


* mj/pull-rebase-autostash (2016-04-04) 9 commits
 - t5520: test --[no-]autostash with pull.rebase=true
 - t5520: reduce commom lines of code
 - t5520: factor out common "failing autostash" code
 - t5520: factor out common "successful autostash" code
 - t5520: use better test to check stderr output
 - t5520: ensure consistent test conditions
 - t5520: use consistent capitalization in test titles
 - pull --rebase: add --[no-]autostash flag
 - git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'next'.


* pb/commit-verbose-config (2016-03-14) 1 commit
 - commit: add a commit.verbose config variable
 (this branch uses pb/t7502-drop-dup.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'next'.


* pb/t7502-drop-dup (2016-03-11) 1 commit
  (merged to 'next' on 2016-04-04 at 4799cad)
 + t/t7502 : drop duplicate test
 (this branch is used by pb/commit-verbose-config.)

 Originally merged to 'next' on 2016-03-15

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* ss/commit-squash-msg (2016-03-21) 1 commit
  (merged to 'next' on 2016-04-04 at d389f19)
 + commit: do not lose SQUASH_MSG contents

 Originally merged to 'next' on 2016-03-23

 When "git merge --squash" stopped due to conflict, the concluding
 "git commit" failed to read in the SQUASH_MSG that shows the log
 messages from all the squashed commits.

 Will merge to 'master' after 2.8 final.


* ls/p4-map-user (2016-03-15) 1 commit
  (merged to 'next' on 2016-04-04 at a56b011)
 + git-p4: map a P4 user to Git author name and email address

 Originally merged to 'next' on 2016-03-23

 "git p4" now allows P4 author names to be mapped to Git author
 names.

 Will merge to 'master' after 2.8 final.


* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-04 at cd70fd6)
 + merge: refuse to create too cool a merge by default

 Originally merged to 'next' on 2016-03-23

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.

 Will merge to 'master' after 2.8 final.


* jk/credential-cache-comment-exit (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 50427fe)
 + credential-cache--daemon: clarify "exit" action semantics

 Originally merged to 'next' on 2016-03-23

 A code clarification.

 Will merge to 'master' after 2.8 final.


* jk/send-email-rtrim-mailrc-alias (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 4d54956)
 + send-email: ignore trailing whitespace in mailrc alias file

 Originally merged to 'next' on 2016-03-23

 "git send-email" had trouble parsing alias file in mailrc format
 when lines in it had trailing whitespaces on them.

 Will merge to 'master' after 2.8 final.


* jk/test-httpd-config-nosystem (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 5fa6274)
 + t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

 Originally merged to 'next' on 2016-03-23

 The tests that involve running httpd leaked the system-wide
 configuration in /etc/gitconfig to the tested environment.

 Will merge to 'master' after 2.8 final.


* lt/pretty-expand-tabs (2016-03-30) 3 commits
 - pretty: allow tweaking tabwidth in --expand-tabs
 - pretty: enable --expand-tabs by default for selected pretty formats
 - pretty: expand tabs in indented logs to make things line up properly

 Needs tests.


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag
 (this branch uses sb/submodule-parallel-update; is tangled with sb/submodule-init.)

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sb/clone-t57-t56 (2016-03-16) 1 commit
  (merged to 'next' on 2016-04-04 at 5c20247)
 + clone tests: rename t57* => t56*

 Originally merged to 'next' on 2016-03-23

 Rename bunch of tests on "git clone" for better organization.

 Will merge to 'master' after 2.8 final.


* sb/rebase-x (2016-03-18) 2 commits
  (merged to 'next' on 2016-04-04 at feda620)
 + t3404: cleanup double empty lines between tests
 + rebase: decouple --exec from --interactive

 Originally merged to 'next' on 2016-03-23

 "git rebase -x" can be used without passing "-i" option.

 Will merge to 'master' after 2.8 final.


* cc/apply (2016-04-01) 4 commits
 - builtin/apply: free patch when parse_chunk() fails
 - builtin/apply: handle parse_binary() failure
 - apply: remove unused call to free() in gitdiff_{old,new}name()
 - builtin/apply: get rid of useless 'name' variable

 Minor code clean-up.

 Will merge to 'next'.


* dt/index-helper (2016-03-23) 18 commits
 - SQUASH - minimum compilation fix
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - Add watchman support to reduce index refresh cost
 - read-cache: invalidate untracked cache data when reading WAMA
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()


* jv/merge-nothing-into-void (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-04 at aa37405)
 + merge: fix NULL pointer dereference when merging nothing into void

 Originally merged to 'next' on 2016-03-23

 "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 nothing into an unborn history (which is arguably unusual usage,
 which perhaps was the reason why nobody noticed it).

 Will merge to 'master' after 2.8 final.


* la/tag-force-signing-annotated-tags (2016-03-22) 1 commit
  (merged to 'next' on 2016-04-04 at a49ec4a)
 + tag: add the option to force signing of annotated tags

 Originally merged to 'next' on 2016-03-24

 "git tag" can create an annotated tag without explicitly given an
 "-a" (or "-s") option (i.e. when a tag message is given).  A new
 configuration variable, tag.forceSignAnnotated, can be used to tell
 the command to create signed tag in such a situation.

 Will merge to 'master' after 2.8 final.


* cc/doc-recommend-performance-trace-to-file (2016-03-07) 1 commit
  (merged to 'next' on 2016-04-04 at 26f94c0)
 + Documentation: talk about pager in api-trace.txt

 Originally merged to 'next' on 2016-03-23

 A minor documentation update.

 Will merge to 'master' after 2.8 final.


* da/mergetool-delete-delete-conflict (2016-03-10) 2 commits
  (merged to 'next' on 2016-04-04 at 34e645f)
 + mergetool: honor tempfile configuration when resolving delete conflicts
 + mergetool: support delete/delete conflicts

 Originally merged to 'next' on 2016-03-15

 "git mergetool" did not work well with conflicts that both sides
 deleted.

 Will merge to 'master' after 2.8 final.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* ss/exc-flag-is-a-collection-of-bits (2016-03-01) 1 commit
  (merged to 'next' on 2016-04-04 at 9f0207e)
 + dir: store EXC_FLAG_* values in unsigned integers

 Originally merged to 'next' on 2016-03-04

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ss/receive-pack-parse-options (2016-03-01) 1 commit
  (merged to 'next' on 2016-04-04 at fd6ab4c)
 + builtin/receive-pack.c: use parse_options API

 Originally merged to 'next' on 2016-03-04

 The command line argument parser for "receive-pack" has been
 rewritten to use parse-options.

 Will merge to 'master' after 2.8 final.


* jk/submodule-c-credential (2016-03-23) 7 commits
  (merged to 'next' on 2016-04-04 at 8de8e8c)
 + git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
 + git: submodule honor -c credential.* from command line
 + quote: implement sq_quotef()
 + submodule: fix segmentation fault in submodule--helper clone
 + submodule: fix submodule--helper clone usage
 + submodule: check argc count for git submodule--helper clone
 + submodule: don't pass empty string arguments to submodule--helper clone

 Originally merged to 'next' on 2016-03-23

 "git -c credential.<var>=<value> submodule" can now be used to
 propagate configuration variables related to credential helper
 down to the submodules.

 Will merge to 'master' after 2.8 final.


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sb/submodule-init (2016-03-15) 2 commits
 . submodule: port init from shell to C
 . submodule: port resolve_relative_url from shell to C
 (this branch uses sb/submodule-parallel-update; is tangled with sb/clone-shallow-passthru.)

 Update of "git submodule" to move pieces of logic to C continues.

 Needs review.
 ($gmane/288824)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* sb/submodule-parallel-update (2016-03-01) 10 commits
  (merged to 'next' on 2016-04-04 at a0aea8d)
 + clone: allow an explicit argument for parallel submodule clones
 + submodule update: expose parallelism to the user
 + submodule helper: remove double 'fatal: ' prefix
 + git submodule update: have a dedicated helper for cloning
 + run_processes_parallel: rename parameters for the callbacks
 + run_processes_parallel: treat output of children as byte array
 + submodule update: direct error message to stderr
 + fetching submodules: respect `submodule.fetchJobs` config option
 + submodule-config: drop check against NULL
 + submodule-config: keep update strategy around
 (this branch is used by sb/clone-shallow-passthru and sb/submodule-init.)

 Originally merged to 'next' on 2016-03-15

 A major part of "git submodule update" has been ported to C to take
 advantage of the recently added framework to run download tasks in
 parallel.

 Will merge to 'master' after 2.8 final.


* dt/refs-backend-lmdb (2016-02-25) 45 commits
 . SQUASH??? Minimum compilation band-aid
 . tests: add ref-storage argument
 . refs: tests for lmdb backend
 . refs: add LMDB refs storage backend
 . refs: break out resolve_ref_unsafe_submodule
 . config: read ref storage config on startup
 . refs: register ref storage backends
 . svn: learn ref-storage argument
 . clone: allow ref storage backend to be set for clone
 . refs: check submodules' ref storage config
 . init: allow alternate ref strorage to be set for new repos
 . refs: always handle non-normal refs in files backend
 . refs: resolve symbolic refs first
 . refs: on symref reflog expire, lock symref not referrent
 . refs: don't dereference on rename
 . refs: allow log-only updates
 . refs: move duplicate check to common code
 . refs: make lock generic
 . refs: handle non-normal ref renames
 . refs: add method to rename refs
 . refs: add methods to init refs db
 . refs: add method for delete_refs
 . refs: add method for initial ref transaction commit
 . refs: add methods for reflog
 . refs: add do_for_each_per_worktree_ref
 . refs: reduce the visibility of do_for_each_ref()
 . refs: add method for do_for_each_ref
 . refs: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move resolve_ref_unsafe into common code
 . files-backend: break out ref reading
 . refs: move for_each_*ref* functions into common code
 . refs: move head_ref{,_submodule} to the common code
 . Merge branch 'sb/submodule-parallel-update' into dt/refs-backend-lmdb
 . clone: allow an explicit argument for parallel submodule clones
 . submodule update: expose parallelism to the user
 . git submodule update: have a dedicated helper for cloning
 . run_processes_parallel: correctly terminate callbacks with an LF
 . run_processes_parallel: rename parameters for the callbacks
 . run-command: expose default_{start_failure, task_finished}
 . run_processes_parallel: treat output of children as byte array
 . submodule update: direct error message to stderr
 . fetching submodules: respect `submodule.fetchJobs` config option
 . submodule-config: drop check against NULL
 . submodule-config: keep update strategy around

 A reroll exists, but it seems that will further be rerolled.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-03-28) 11 commits
 - rerere: adjust 'forget' to multi-variant world order
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Need to send out the final round of review as this should be now complete.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007.  It has been reported that
 git-gui still uses the deprecated syntax, which needs to be fixed
 before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2010, #03; Sun, 10)
@ 2010-01-10 19:55  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-10 19:55 UTC (permalink / raw)
  To: git

What's cooking in git.git (Jan 2010, #03; Sun, 10)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

--------------------------------------------------
[Graduated to "master"]

* tr/http-updates (2009-12-28) 4 commits
  (merged to 'next' on 2010-01-02 at cf25698)
 + Remove http.authAny
 + Allow curl to rewind the RPC read buffer
 + Add an option for using any HTTP authentication scheme, not only basic
 + http: maintain curl sessions

* jk/maint-1.6.5-reset-hard (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-02 at 190d63b)
 + reset: unbreak hard resets with GIT_WORK_TREE

* jk/push-to-delete (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9ee293b)
 + builtin-push: add --delete as syntactic sugar for :foo

* mm/config-path (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 9c0e81a)
 + builtin-config: add --path option doing ~ and ~user expansion.

* pm/cvs-environ (2009-12-30) 1 commit
  (merged to 'next' on 2010-01-03 at 4c22932)
 + CVS Server: Support reading base and roots from environment

* tr/maint-1.6.5-bash-prompt-show-submodule-changes (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at b785974)
 + bash completion: factor submodules into dirty state

* bg/maint-remote-update-default (2009-12-31) 1 commit
  (merged to 'next' on 2010-01-03 at 113009e)
 + Fix "git remote update" with remotes.defalt set

* mm/diag-path-in-treeish (2009-12-07) 1 commit
  (merged to 'next' on 2010-01-06 at 6b4201e)
 + Detailed diagnosis when parsing an object name fails.

* fc/opt-quiet-gc-reset (2009-12-02) 1 commit
  (merged to 'next' on 2010-01-06 at 03e00cd)
 + General --quiet improvements

--------------------------------------------------
[New Topics]

* bk/fix-relative-gitdir-file (2010-01-08) 2 commits
 - Handle relative paths in submodule .git files
 - Test update-index for a gitlink to a .git file

* jc/ident (2010-01-08) 3 commits
 - ident.c: treat $EMAIL as giving user.email identity explicitly
  (merged to 'next' on 2010-01-10 at f1f9ded)
 + ident.c: check explicit identity for name and email separately
 + ident.c: remove unused variables

* jc/ls-files-ignored-pathspec (2010-01-08) 4 commits
 - ls-files: fix overeager pathspec optimization
 - read_directory(): further split treat_path()
 - read_directory_recursive(): refactor handling of a single path into a separate function
 - t3001: test ls-files -o ignored/dir

* js/exec-error-report (2010-01-10) 4 commits
 - Improve error message when a transport helper was not found
 - start_command: detect execvp failures early
 - run-command: move wait_or_whine earlier
 - start_command: report child process setup errors to the parent's stderr
 (this branch uses il/vcs-helper.)

--------------------------------------------------
[Stalled]

* ap/merge-backend-opts (2008-07-18) 6 commits
 - Document that merge strategies can now take their own options
 - Extend merge-subtree tests to test -Xsubtree=dir.
 - Make "subtree" part more orthogonal to the rest of merge-recursive.
 - Teach git-pull to pass -X<option> to git-merge
 - git merge -X<option>
 - git-merge-file --ours, --theirs

"git pull" patch needs sq-then-eval fix to protect it from $IFS
but otherwise seemed good.

* jh/commit-status (2009-12-07) 1 commit
 - [test?] Add commit.status, --status, and --no-status

Needs tests.

* mh/rebase-fixup (2009-12-07) 2 commits
  (merged to 'next' on 2010-01-06 at c4779a7)
 + Add a command "fixup" to rebase --interactive
 + t3404: Use test_commit to set up test repository
 (this branch is used by ns/rebase-auto-squash.)

Expecting further improvements to skip opening the editor if a pick is
followed only by "fixup" and no "squash".

* ns/rebase-auto-squash (2009-12-08) 1 commit
  (merged to 'next' on 2010-01-06 at da4e2f5)
 + rebase -i --autosquash: auto-squash commits
 (this branch uses mh/rebase-fixup.)

Blocked by the above.

* jh/notes (2009-12-07) 11 commits
 - Refactor notes concatenation into a flexible interface for combining notes
 - Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 - Notes API: for_each_note(): Traverse the entire notes tree with a callback
 - Notes API: get_note(): Return the note annotating the given object
 - Notes API: add_note(): Add note objects to the internal notes tree structure
 - Notes API: init_notes(): Initialize the notes tree from the given notes ref
 - Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 - Minor style fixes to notes.c
  (merged to 'next' on 2010-01-02 at ae42130)
 + Add more testcases to test fast-import of notes
 + Rename t9301 to t9350, to make room for more fast-import tests
 + fast-import: Proper notes tree manipulation

http://thread.gmane.org/gmane.comp.version-control.git/134738

What's the status of the fourth and later patches on this topic?  Overall
it looked reasonable, if I recall correctly what I thought when I reviewed
it last time, and I am tempted to merge it to 'next' soonish.  Please
file complaints before I do so if people have objections.

Hold: JH on 2010-01-05, http://article.gmane.org/gmane.comp.version-control.git/136183

--------------------------------------------------
[Will graduate after a bit more cooking]

* nd/sparse (2010-01-04) 25 commits
  (merged to 'next' on 2010-01-10 at fa73d6e)
 + t7002: test for not using external grep on skip-worktree paths
 + t7002: set test prerequisite "external-grep" if supported
  (merged to 'next' on 2010-01-02 at 5499bbe)
 + grep: do not do external grep on skip-worktree entries
 + commit: correctly respect skip-worktree bit
 + ie_match_stat(): do not ignore skip-worktree bit with CE_MATCH_IGNORE_VALID
 + tests: rename duplicate t1009
 + sparse checkout: inhibit empty worktree
 + Add tests for sparse checkout
 + read-tree: add --no-sparse-checkout to disable sparse checkout support
 + unpack-trees(): ignore worktree check outside checkout area
 + unpack_trees(): apply $GIT_DIR/info/sparse-checkout to the final index
 + unpack-trees(): "enable" sparse checkout and load $GIT_DIR/info/sparse-checkout
 + unpack-trees.c: generalize verify_* functions
 + unpack-trees(): add CE_WT_REMOVE to remove on worktree alone
 + Introduce "sparse checkout"
 + dir.c: export excluded_1() and add_excludes_from_file_1()
 + excluded_1(): support exclude files in index
 + unpack-trees(): carry skip-worktree bit over in merged_entry()
 + Read .gitignore from index if it is skip-worktree
 + Avoid writing to buffer in add_excludes_from_file_1()
 + Teach Git to respect skip-worktree bit (writing part)
 + Teach Git to respect skip-worktree bit (reading part)
 + Introduce "skip-worktree" bit in index, teach Git to get/set this bit
 + Add test-index-version
 + update-index: refactor mark_valid() in preparation for new options

I've queued the (close to) original tests for external grep, but as a belt
and suspender measure Nguyễn may also want to add the whitebox test
in the review thread.

* cc/reset-more (2010-01-08) 8 commits
  (merged to 'next' on 2010-01-10 at 84730de)
 + t7111: check that reset options work as described in the tables
  (merged to 'next' on 2010-01-06 at 96639cb)
 + Documentation: reset: add some missing tables
  (merged to 'next' on 2010-01-04 at 8802c2c)
 + Fix bit assignment for CE_CONFLICTED
  (merged to 'next' on 2010-01-03 at f83d4c6)
 + "reset --merge": fix unmerged case
 + reset: use "unpack_trees()" directly instead of "git read-tree"
 + reset: add a few tests for "git reset --merge"
 + Documentation: reset: add some tables to describe the different options
 + reset: improve mixed reset error message when in a bare repo

* rs/maint-archive-match-pathspec (2009-12-12) 1 commit
  (merged to 'next' on 2010-01-03 at 92d7d15)
 + archive: complain about path specs that don't match anything

* il/vcs-helper (2010-01-09) 9 commits
  (merged to 'next' on 2010-01-10 at 11e448e)
 + Reset possible helper before reusing remote structure
  (merged to 'next' on 2010-01-06 at 7c79f42)
 + Remove special casing of http, https and ftp
 + Support remote archive from all smart transports
 + Support remote helpers implementing smart transports
 + Support taking over transports
 + Refactor git transport options parsing
 + Pass unknown protocols to external protocol handlers
 + Support mandatory capabilities
 + Add remote helper debug mode
 (this branch is used by js/exec-error-report.)

--------------------------------------------------
[Cooking]

* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit
  (merged to 'next' on 2010-01-10 at df14116)
 + checkout -m path: fix recreating conflicts

* jn/makefile (2010-01-06) 4 commits
  (merged to 'next' on 2010-01-10 at f5a5d42)
 + Makefile: consolidate .FORCE-* targets
 + Makefile: learn to generate listings for targets requiring special flags
 + Makefile: use target-specific variable to pass flags to cc
 + Makefile: regenerate assembler listings when asked

* da/difftool (2010-01-09) 6 commits
  (merged to 'next' on 2010-01-10 at 749c870)
 + git-diff.txt: Link to git-difftool
 + difftool: Allow specifying unconfigured commands with --extcmd
 + difftool--helper: Remove use of the GIT_MERGE_TOOL variable
 + difftool--helper: Update copyright and remove distracting comments
  (merged to 'next' on 2010-01-06 at e957395)
 + git-difftool: Add '--gui' for selecting a GUI tool
 + t7800-difftool: Set a bogus tool for use by tests

* jh/gitweb-cached (2010-01-03) 4 commits
 - gitweb: Makefile improvements
 - gitweb: Optionally add "git" links in project list page
 - gitweb: Add option to force version match
 - gitweb: Load checking

Hold: Warthog on 2010-01-06, http://article.gmane.org/gmane.comp.version-control.git/136306

* tc/test-locate-httpd (2010-01-02) 1 commit
  (merged to 'next' on 2010-01-06 at 9d913e5)
 + t/lib-http.sh: Restructure finding of default httpd location

* jc/fix-tree-walk (2009-09-14) 7 commits
 - read-tree --debug-unpack
 - unpack-trees.c: look ahead in the index
 - unpack-trees.c: prepare for looking ahead in the index
 - Aggressive three-way merge: fix D/F case
 - traverse_trees(): handle D/F conflict case sanely
 - more D/F conflict tests
 - tests: move convenience regexp to match object names to test-lib.sh

Resurrected from "Ejected" category.  This is fix for a tricky codepath
and testing and improving before it hits 'next' by brave souls is greatly
appreciated (I am using this in my private build).

* jc/branch-d (2009-12-29) 1 commit
  (merged to 'next' on 2010-01-10 at 61a14b7)
 + branch -d: base the "already-merged" safety on the branch it merges with

* jc/rerere (2009-12-04) 1 commit
  (merged to 'next' on 2010-01-10 at e295b7f)
 + Teach --[no-]rerere-autoupdate option to merge, revert and friends

* jk/run-command-use-shell (2010-01-01) 8 commits
  (merged to 'next' on 2010-01-10 at 7479e2a)
 + t4030, t4031: work around bogus MSYS bash path conversion
 + diff: run external diff helper with shell
 + textconv: use shell to run helper
 + editor: use run_command's shell feature
 + run-command: optimize out useless shell calls
 + run-command: convert simple callsites to use_shell
 + t0021: use $SHELL_PATH for the filter script
 + run-command: add "use shell" option

Shuffled the commits in the topic, following J6t's suggestion in
http://thread.gmane.org/gmane.comp.version-control.git/136128

* tc/clone-v-progress (2009-12-26) 4 commits
  (merged to 'next' on 2010-01-10 at ec2bfd7)
 + clone: use --progress to force progress reporting
 + clone: set transport->verbose when -v/--verbose is used
 + git-clone.txt: reword description of progress behaviour
 + check stderr with isatty() instead of stdout when deciding to show progress

Perhaps needs an entry in the Release Notes, but otherwise looked Ok.

* tc/smart-http-restrict (2010-01-02) 4 commits
  (merged to 'next' on 2010-01-06 at 82736cb)
 + Smart-http tests: Test http-backend without curl or a webserver
 + Smart-http tests: Break test t5560-http-backend into pieces
 + Smart-http tests: Improve coverage in test t5560
 + Smart-http: check if repository is OK to export before serving it

* jc/cache-unmerge (2009-12-25) 9 commits
 - rerere forget path: forget recorded resolution
 - rerere: refactor rerere logic to make it independent from I/O
 - rerere: remove silly 1024-byte line limit
 - resolve-undo: teach "update-index --unresolve" to use resolve-undo info
 - resolve-undo: "checkout -m path" uses resolve-undo information
 - resolve-undo: allow plumbing to clear the information
 - resolve-undo: basic tests
 - resolve-undo: record resolved conflicts in a new index extension section
 - builtin-merge.c: use standard active_cache macros

Will wait a bit more before moving it to 'next'.  J6t spotted an issue
with "rerere forget" and has a test script.

* jc/checkout-merge-base (2010-01-07) 4 commits
  (merged to 'next' on 2010-01-07 at 5229608)
 + rebase -i: teach --onto A...B syntax
 + rebase: fix --onto A...B parsing and add tests
  (merged to 'next' on 2010-01-02 at 6a8f6fc)
 + "rebase --onto A...B" replays history on the merge base between A and B
 + "checkout A...B" switches to the merge base between A and B

* tr/http-push-ref-status (2010-01-08) 6 commits
 - transport-helper.c::push_refs(): emit "no refs" error message
 - transport-helper.c::push_refs(): ignore helper-reported status if ref is not to be pushed
 - transport.c::transport_push(): make ref status affect return value
 - refactor ref status logic for pushing
 - t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs
 - t5541-http-push.sh: add tests for non-fast-forward pushes

Rerolled.

* sr/gfi-options (2009-12-04) 7 commits
  (merged to 'next' on 2010-01-10 at 8b305fb)
 + fast-import: add (non-)relative-marks feature
 + fast-import: allow for multiple --import-marks= arguments
 + fast-import: test the new option command
 + fast-import: add option command
 + fast-import: add feature command
 + fast-import: put marks reading in its own function
 + fast-import: put option parsing code in separate functions

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2015, #03; Wed, 14)
@ 2015-10-14 22:23  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-14 22:23 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

With somewhat reduced review bandwidth, I'd expect that the upcoming
cycle would be slower than usual.  At tinyurl.com/gitCal, I
tentatively drew a 14-week schedule for this cycle (I plan to be
offline during weeks #7-#9 myself---hopefully we'll have capable
interim maintainers to take care of the list traffic in the meantime
as in past years).

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* jk/asciidoctor-section-heading-markup-fix (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-07 at 8bbff49)
 + Documentation: fix section header mark-up


* jk/notes-dwim-doc (2015-09-22) 1 commit
  (merged to 'next' on 2015-10-07 at c4341d1)
 + notes: correct documentation of DWIMery for notes references
 (this branch is used by mh/notes-allow-reading-treeish.)

 The way how --ref/--notes to specify the notes tree reference are
 DWIMmed was not clearly documented.


* nd/ls-remote-does-not-have-u-option (2015-09-28) 1 commit
  (merged to 'next' on 2015-10-07 at 0790a76)
 + ls-remote.txt: delete unsupported option


* pt/pull-builtin (2015-10-02) 1 commit
  (merged to 'next' on 2015-10-07 at 19af20e)
 + merge: grammofix in please-commit-before-merge message


* tk/typofix-connect-unknown-proto-error (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-07 at cc3430e)
 + connect: fix typo in result string of prot_name()

--------------------------------------------------
[New Topics]

* jc/mailinfo (2015-10-08) 1 commit
 . mailinfo: ignore in-body header that we do not care about

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Excluded from 'pu' for now.


* jk/filter-branch-use-of-sed-on-incomplete-line (2015-10-12) 1 commit
 - filter-branch: remove multi-line headers in msg filter

 A recent "filter-branch --msg-filter" broke skipping of the commit
 object header, which is fixed.

 Will merge to 'next'.


* rd/test-path-utils (2015-10-08) 1 commit
 - test-path-utils.c: remove incorrect assumption

 The normalize_ceiling_entry() function does not muck with the end
 of the path it accepts, and the real world callers do rely on that,
 but a test insisted that the function drops a trailing slash.

 Will merge to 'next'.


* jc/doc-gc-prune-now (2015-10-14) 1 commit
 - Documentation/gc: warn against --prune=<now>

 "git gc" is safe to run anytime only because it has the built-in
 grace period to protect young objects.  In order to run with no
 grace period, the user must make sure that the repository is
 quiescent.

 Will merge to 'next'.


* jc/am-mailinfo-direct (2015-10-14) 1 commit
 - am: make direct call to mailinfo
 (this branch uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Needs benchmark on platforms with slow run_command().


* jc/mailinfo-lib (2015-10-14) 30 commits
 - mailinfo: remove calls to exit() and die() deep in the callchain
 - mailinfo: handle charset conversion errors in the caller
 - mailinfo: libify
 - mailinfo: move definition of MAX_HDR_PARSED to closer to its use
 - mailinfo: move cleanup_space() before its users
 - mailinfo: move check_header() after the helpers it uses
 - mailinfo: move read_one_header_line() closer to its callers
 - mailinfo: move content/content_top to struct mailinfo
 - mailinfo: keep the parsed log message in a strbuf
 - mailinfo: move [ps]_hdr_data to struct mailinfo
 - mailinfo: move cmitmsg and patchfile to struct mailinfo
 - mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 - mailinfo: move charset to struct mailinfo
 - mailinfo: move transfer_encoding to struct mailinfo
 - mailinfo: move metainfo_charset to struct mailinfo
 - mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 - mailinfo: move add_message_id and message_id to struct mailinfo
 - mailinfo: move patch_lines to struct mailinfo
 - mailinfo: move filter/header stage to struct mailinfo
 - mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 - mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 - mailinfo: introduce "struct mailinfo" to hold globals
 - mailinfo: move global "line" into mailinfo() function
 - mailinfo: always pass "line" as an argument
 - mailinfo: get rid of function-local static states
 - mailinfo: move handle_boundary() lower
 - mailinfo: fold decode_header_bq() into decode_header()
 - mailinfo: explicitly close file handle to the patch output
 - mailinfo: fix for off-by-one error in boundary stack
 - mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
 - am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag
 (this branch uses jc/am-3-fallback-regression-fix.)

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.


* km/cache-entry-refcnt (2015-10-12) 1 commit
 - merge: fix cache_entry use-after-free

 Sometimes we discarded a cache-entry that is still referenced from
 name-hash (used only to hold the pathname there), leading to use
 after free errors.  Reference-count cache entries to work it
 around.


* ls/p4-test-updates (2015-10-12) 2 commits
 - git-p4: skip t9819 test case on case insensitive file systems
 - git-p4: avoid "stat" command in t9815 git-p4-submit-fail

 A few test scripts around "git p4" have been improved for
 portability.

 Will merge to 'next'.


* sb/submodule-config-parse (2015-10-12) 1 commit
 - submodule-config: "goto" removal in parse_config()

 Will merge to 'next'.


* tb/t0027-crlf (2015-10-12) 1 commit
 - t0027: improve test for not-normalized files

 The test for various line-ending conversions has been enhanced.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without correspoinding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mr/worktree-list (2015-10-08) 5 commits
 - worktree: add 'list' command
 - worktree: add details to the worktree struct
 - worktree: add a function to get worktree details
 - worktree: refactor find_linked_symref function
 - worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
 - notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

--------------------------------------------------
[Cooking]

* cc/quote-comments (2015-10-07) 2 commits
  (merged to 'next' on 2015-10-09 at fc8a359)
 + quote: move comment before sq_quote_buf()
 + quote: fix broken sq_quote_buf() related comment

 A no-op code-health maintenance.

 Will merge to 'master'.


* dt/log-follow-config (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 64a30d2)
 + log: Update log.follow doc and add to config.txt

 Description of the "log.follow" configuration variable in "git log"
 documentation is now also copied to "git config" documentation.

 Will merge to 'master'.


* es/worktree-add-cleanup (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 6ffd721)
 + t2026: rename worktree prune test

 A no-op code-health maintenance.

 Will merge to 'master'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.


* tk/doc-interpret-trailers-grammo (2015-10-07) 1 commit
  (merged to 'next' on 2015-10-09 at 37888a2)
 + Documentation/interpret-trailers: Grammar fix

 Will merge to 'master'.


* dt/refs-backend-lmdb (2015-10-12) 45 commits
 - refs: tests for db backend
 - refs: add LMDB refs backend
 - introduce "extensions" form of core.repositoryformatversion
 - refs: add register_refs_backend
 - refs: allow ref backend to be set for clone
 - refs: always handle non-normal refs in files backend
 - refs: move duplicate check to common code
 - refs: break out a ref conflict check
 - refs: make files_log_ref_write functions public
 - refs: make lock generic
 - refs-be-files.c: add method to rename refs
 - refs.c: add method for initializing refs db
 - initdb: move safe_create_dir into common code
 - refs.c: add method for initial ref transaction commit
 - refs.c: add methods for reflog
 - refs.c: add ref backend init function
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.h: document make refname_is_safe and add it to header
 - refs.c: move refname_is_safe to the common code
 - refs-be-files.c: add do_for_each_per_worktree_ref
 - refs-be-files.c: add method for for_each_reftype_...
 - refs-be-files.c: add methods for the ref iterators
 - refs-be-files.c: add methods for misc ref operations
 - refs: add a backend method structure with transaction functions
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_ref and delete_refs to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD
 (this branch uses jk/war-on-sprintf.)

 Pluggable ref backend.

 Expecting a reroll (as two parts series).


* gr/rebase-i-drop-warn (2015-10-05) 2 commits
  (merged to 'next' on 2015-10-09 at 0626b96)
 + rebase-i: loosen over-eager check_bad_cmd check
 + rebase-i: explicitly accept tab as separator in commands

 "git rebase -i" had a minor regression recently, which stopped
 considering a line that begins with an indented '#' in its insn
 sheet not a comment, which is now fixed.

 Will merge to 'master'.


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms
 (this branch uses kn/for-each-branch.)

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* jk/war-on-sprintf (2015-10-05) 70 commits
 - name-rev: use strip_suffix to avoid magic numbers
 - use strbuf_complete to conditionally append slash
 - fsck: use for_each_loose_file_in_objdir
 - Makefile: drop D_INO_IN_DIRENT build knob
 - fsck: drop inode-sorting code
 - convert strncpy to memcpy
 - notes: document length of fanout path with a constant
 - color: add color_set helper for copying raw colors
 - prefer memcpy to strcpy
 - help: clean up kfmclient munging
 - receive-pack: simplify keep_arg computation
 - avoid sprintf and strcpy with flex arrays
 - use alloc_ref rather than hand-allocating "struct ref"
 - color: add overflow checks for parsing colors
 - drop strcpy in favor of raw sha1_to_hex
 - use sha1_to_hex_r() instead of strcpy
 - daemon: use cld->env_array when re-spawning
 - stat_tracking_info: convert to argv_array
 - http-push: use an argv_array for setup_revisions
 - fetch-pack: use argv_array for index-pack / unpack-objects
 - diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
 - write_loose_object: convert to strbuf
 - remove_leading_path: use a strbuf for internal storage
 - enter_repo: convert fixed-size buffers to strbufs
 - merge-recursive: convert malloc / strcpy to strbuf
 - transport: use strbufs for status table "quickref" strings
 - apply: convert root string to strbuf
 - init: use strbufs to store paths
 - probe_utf8_pathname_composition: use internal strbuf
 - precompose_utf8: drop unused variable
 - sha1_get_pack_name: use a strbuf
 - http-walker: store url in a strbuf
 - http-push: use strbuf instead of fwrite_buffer
 - remote-ext: simplify git pkt-line generation
 - upload-archive: convert sprintf to strbuf
 - resolve_ref: use strbufs for internal buffers
 - read_remotes_file: simplify string handling
 - read_branches_file: simplify string handling
 - mailmap: replace strcpy with xstrdup
 - help: drop prepend function in favor of xstrfmt
 - ref-filter: drop sprintf and strcpy calls
 - use strip_suffix and xstrfmt to replace suffix
 - fetch: replace static buffer with xstrfmt
 - config: use xstrfmt in normalize_value
 - replace trivial malloc + sprintf / strcpy calls with xstrfmt
 - receive-pack: convert strncpy to xsnprintf
 - http-push: replace strcat with xsnprintf
 - add_packed_git: convert strcpy into xsnprintf
 - entry.c: convert strcpy to xsnprintf
 - grep: use xsnprintf to format failure message
 - compat/hstrerror: convert sprintf to snprintf
 - stop_progress_msg: convert sprintf to xsnprintf
 - find_short_object_filename: convert sprintf to xsnprintf
 - use xsnprintf for generating git object headers
 - archive-tar: use xsnprintf for trivial formatting
 - convert trivial sprintf / strcpy calls to xsnprintf
 - compat/inet_ntop: fix off-by-one in inet_ntop4
 - test-dump-cache-tree: avoid overflow of cache-tree name
 - progress: store throughput display in a strbuf
 - trace: use strbuf for quote_crnl output
 - mailsplit: make PATH_MAX buffers dynamic
 - fsck: use strbuf to generate alternate directories
 - add reentrant variants of sha1_to_hex and find_unique_abbrev
 - strbuf: make strbuf_complete_line more generic
 - add git_path_buf helper function
 - add xsnprintf helper function
 - fsck: don't fsck alternates for connectivity-only check
 - archive-tar: fix minor indentation violation
 - mailsplit: fix FILE* leak in split_maildir
 - show-branch: avoid segfault with --reflog of unborn branch
 (this branch is used by dt/refs-backend-lmdb.)

 Many allocations that is manually counted (correctly) that are
 followed by strcpy/sprintf have been replaced with a less error
 prone constructs such as xstrfmt.

 Macintosh-specific breakage was noticed and corrected in this
 reroll.

 Will wait for a week or so before merging to 'next'.


* rp/link-curl-before-ssl (2015-09-25) 3 commits
 - configure: make curl-config path configurable
 - configure.ac: detect ssl need with libcurl
 - Makefile: link libcurl before openssl and crypto

 Rerolls exist, but are still being discussed.


* sb/http-flaky-test-fix (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 9dc37f3)
 + t5561: get rid of racy appending to logfile

 Will merge to 'master'.


* sb/perf-without-installed-git (2015-09-25) 1 commit
  (merged to 'next' on 2015-10-09 at 7a1ed05)
 + t/perf: make runner work even if Git is not installed

 Performance-measurement tests did not work without an installed Git.

 Will merge to 'master'.


* js/clone-dissociate (2015-10-07) 4 commits
  (merged to 'next' on 2015-10-09 at ba30393)
 + clone --dissociate: avoid locking pack files
 + sha1_file.c: add a function to release all packs
 + sha1_file: consolidate code to close a pack's file descriptor
 + t5700: demonstrate a Windows file locking issue with `git clone --dissociate`

 "git clone --dissociate" runs a big "git repack" process at the
 end, and it helps to close file descriptors that are open on the
 packs and their idx files before doing so on filesystems that
 cannot remove a file that is still open.

 Will merge to 'master'.


* js/gc-with-stale-symref (2015-10-08) 2 commits
  (merged to 'next' on 2015-10-09 at 8b89576)
 + pack-objects: do not get distracted by broken symrefs
 + gc: demonstrate failure with stale remote HEAD

 "git gc" used to barf when a symbolic ref has gone dangling
 (e.g. the branch that used to be your upstream's default when you
 cloned from it is now gone, and you did "fetch --prune").

 Will merge to 'master'.


* js/icase-wt-detection (2015-09-28) 1 commit
  (merged to 'next' on 2015-10-09 at 78ff500)
 + setup: fix "inside work tree" detection on case-insensitive filesystems

 Will merge to 'master'.


* mm/detach-at-HEAD-reflog (2015-10-02) 2 commits
  (merged to 'next' on 2015-10-09 at 624bc87)
 + status: don't say 'HEAD detached at HEAD'
 + t3203: test 'detached at' after checkout --detach

 After "git checkout --detach", "git status" reported a fairly
 useless "HEAD detached at HEAD", instead of saying at which exact
 commit.

 Will merge to 'master'.


* pt/am-builtin (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at 396def8)
 + am: configure gpg at startup

 When "git am" was rewritten as a built-in, it stopped paying
 attention to user.signingkey.

 Will merge to 'master'.


* sa/send-email-smtp-batch-data-limit (2015-09-30) 1 commit
  (merged to 'next' on 2015-10-09 at c021fdf)
 + git-send-email.perl: Fixed sending of many/huge changes/patches

 When "git send-email" wanted to talk over Net::SMTP::SSL,
 Net::Cmd::datasend() did not like to be fed too many bytes at the
 same time and failed to send messages.  Send the payload one line
 at a time to work around the problem.

 Will merge to 'master'.


* ls/p4-translation-failure (2015-09-22) 2 commits
  (merged to 'next' on 2015-10-09 at b462387)
 + git-p4: handle "Translation of file content failed"
 + git-p4: add test case for "Translation of file content failed" error

 Work around "git p4" failing when the P4 depot records the contents
 in UTF-16 without UTF-16 BOM.

 Will merge to 'master'.


* kn/for-each-branch (2015-09-25) 8 commits
  (merged to 'next' on 2015-10-09 at 45723ce)
 + branch: add '--points-at' option
 + branch.c: use 'ref-filter' APIs
 + branch.c: use 'ref-filter' data structures
 + branch: drop non-commit error reporting
 + branch: move 'current' check down to the presentation layer
 + branch: roll show_detached HEAD into regular ref_list
 + branch: bump get_head_description() to the top
 + branch: refactor width computation
 (this branch is used by kn/for-each-branch-remainder.)

 Update "git branch" that list existing branches, using the
 ref-filter API that is shared with "git tag" and "git
 for-each-ref".

 Will merge to 'master'.


* jc/fsck-dropped-errors (2015-09-23) 1 commit
  (merged to 'next' on 2015-10-09 at 887fcac)
 + fsck: exit with non-zero when problems are found

 There were some classes of errors that "git fsck" diagnosed to its
 standard error that did not cause it to exit with non-zero status.

 Will merge to 'master'.


* nd/gc-auto-background-fix (2015-09-21) 1 commit
  (merged to 'next' on 2015-10-09 at 1f0fc60)
 + gc: save log from daemonized gc --auto and print it next time

 When "git gc --auto" is backgrounded, its diagnosis message is
 lost.  Save it to a file in $GIT_DIR and show it next time the "gc
 --auto" is run.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-12) 8 commits
 - submodules: allow parallel fetching, add tests and documentation
 - fetch_populated_submodules: use new parallel job processing
 - run-command: add an asynchronous parallel child processor
 - sigchain: add command to pop all common signals
 - strbuf: add strbuf_read_once to read without blocking
 - xread_nonblock: add functionality to read from fds without blocking
 - xread: poll on non blocking fds
 - submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will merge to 'next'.


* mk/submodule-gitdir-path (2015-09-14) 2 commits
  (merged to 'next' on 2015-10-09 at cf8768e)
 + path: implement common_dir handling in git_pathdup_submodule()
 + submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()

 The submodule code has been taught to work better with separate
 work trees created via "git worktree add".

 Will merge to 'master'.


* ls/p4-lfs (2015-10-03) 7 commits
  (merged to 'next' on 2015-10-14 at 4b8c365)
 + git-p4: add Git LFS backend for large file system
 + git-p4: add support for large file systems
 + git-p4: check free space during streaming
 + git-p4: add file streaming progress in verbose mode
 + git-p4: return an empty list if a list config has no values
 + git-p4: add gitConfigInt reader
 + git-p4: add optional type specifier to gitConfig reader

 Teach "git p4" to send large blobs outside the repository by
 talking to Git LFS.

 Will merge to 'master'.


* nd/clone-linked-checkout (2015-09-28) 6 commits
  (merged to 'next' on 2015-10-09 at a93973f)
 + clone: better error when --reference is a linked checkout
 + clone: allow --local from a linked checkout
 + enter_repo: allow .git files in strict mode
 + enter_repo: avoid duplicating logic, use is_git_directory() instead
 + t0002: add test for enter_repo(), non-strict mode
 + path.c: delete an extra space

 It was not possible to use a repository-lookalike created by "git
 worktree add" as a local source of "git clone".

 Will merge to 'master'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* sb/remove-get-pathspec (2015-08-03) 1 commit
 . builtin/mv: remove get_pathspec()

 ($gmane/276104)


* nd/list-files (2015-02-09) 21 commits
 . t3080: tests for git-list-files
 . list-files: -M aka diff-cached
 . list-files -F: show submodules with the new indicator '&'
 . list-files: add -F/--classify
 . list-files: show directories as well as files
 . list-files: do not show duplicate cached entries
 . list-files: sort output and remove duplicates
 . list-files: add -t back
 . list-files: add -1 short for --no-column
 . list-files: add -R/--recursive short for --max-depth=-1
 . list-files: -u does not imply showing stages
 . list-files: make alias 'ls' default to 'list-files'
 . list-files: a user friendly version of ls-files and more
 . ls-files: support --max-depth
 . ls-files: add --column
 . ls-files: add --color to highlight file names
 . ls-files: buffer full item in strbuf before printing
 . ls_colors.c: highlight submodules like directories
 . ls_colors.c: add a function to color a file name
 . ls_colors.c: parse color.ls.* from config file
 . ls_colors.c: add $LS_COLORS parsing code

 A new "git list-files" Porcelain command, "ls-files" with bells and
 whistles.

 Reroll to base on wt-status work ($gmane/265142) has seen some
 positive discussions.

 ($gmane/265534).


* mh/numparse (2015-03-19) 14 commits
 . diff_opt_parse(): use convert_i() when handling --abbrev=<num>
 . diff_opt_parse(): use convert_i() when handling "-l<num>"
 . opt_arg(): simplify pointer handling
 . opt_arg(): report errors parsing option values
 . opt_arg(): use convert_i() in implementation
 . opt_arg(): val is always non-NULL
 . builtin_diff(): detect errors when parsing --unified argument
 . handle_revision_opt(): use convert_ui() when handling "--abbrev="
 . strtoul_ui(), strtol_i(): remove functions
 . handle_revision_opt(): use convert_i() when handling "-<digit>"
 . handle_revision_opt(): use skip_prefix() in many places
 . write_subdirectory(): use convert_ui() for parsing mode
 . cacheinfo_callback(): use convert_ui() when handling "--cacheinfo"
 . numparse: new module for parsing integral numbers

 Many codepaths use unchecked use of strtol() and friends (or even
 worse, atoi()).  Introduce a set of wrappers that try to be more
 careful.

 ($gmane/268058).


* kk/log-merges-config (2015-04-21) 5 commits
 . bash-completion: add support for git-log --merges= and log.merges
 . t4202-log: add tests for --merges=
 . Documentation: add git-log --merges= option and log.merges config. var
 . log: honor log.merges= option
 . revision: add --merges={show|only|hide} option

 "git log" (but not other commands in the "log" family) learned to
 pay attention to the log.merges configuration variable that can be
 set to "show" (the normal behaviour), "only" (hide non-merge
 commits), or "hide" (hide merge commits).  --merges=(show|only|hide)
 can be used to override the setting from the command line.

 The documentation may need to be updated once more ($gmane/267250).


* bw/portability-solaris (2015-07-20) 3 commits
 . tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 . tests: fix sed usage in tests to work around broken xpg4/sed on Solaris
 . tests: modify tr expressions so that xpg4/tr handles it on Solaris

 ($gmane/274296)


* jc/clone-bundle (2015-04-30) 1 commit
 . repack: optionally create a clone.bundle

 Still an early WIP.


* mg/index-read-error-messages (2015-06-01) 2 commits
 . messages: uniform error messages for index write
 . show-index: uniform error messages for index read

 The tip was RFC.
 Waiting for a reroll.


* mk/utf8-no-iconv-warn (2015-06-08) 1 commit
 . utf8.c: print warning about disabled iconv

 Warn when a reencoding is requested in a build without iconv
 support, as the end user is likely to get an unexpected result.  I
 think the same level of safety should be added to a build with
 iconv support when the specified encoding is not available, but the
 patch does not go there.

 ($gmane/277424).


* pw/remote-set-url-fetch (2014-11-26) 1 commit
 . remote: add --fetch and --both options to set-url

 Ejected.


* tr/remerge-diff (2014-11-10) 9 commits
 . t4213: avoid "|" in sed regexp
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . merge_diff_mode: fold all merge diff variants into an enum
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 . merge-recursive: -Xindex-only to leave worktree unchanged
 . merge-recursive: internal flag to avoid touching the worktree
 . merge-recursive: remove dead conditional in update_stages()

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Waiting for a reroll.
 ($gmane/256591).


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 . perf-lib: add test_perf_cleanup target
 . perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.


* jc/show-branch (2014-03-24) 5 commits
 . show-branch: use commit slab to represent bitflags of arbitrary width
 . show-branch.c: remove "all_mask"
 . show-branch.c: abstract out "flags" operation
 . show-branch.c: lift all_mask/all_revs to a global static
 . show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit.

^ permalink raw reply	[relevance 2%]

* Re: Premerging topics
  2013-04-23 14:53  3%   ` Premerging topics Junio C Hamano
@ 2013-04-23 15:17  2%     ` Antoine Pelisse
  0 siblings, 0 replies; 200+ results
From: Antoine Pelisse @ 2013-04-23 15:17 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

On Tue, Apr 23, 2013 at 4:53 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>> Can you solve this problem with a tree object, instead of inventing a
>> specially-formatted blob?
>
> Hmm.  What problem are you guys trying to solve?
>
> [snipped..]
> And that was why I wanted to have a data structure that is quick to
> query to answer "I am about to merge B.  Does the history already
> have an A for which I have recorded a merge-fix for <A,B> pair?"

That's exactly the problem I'm trying to solve.
I'm willing to have an efficient way to merge topicC that has semantic
conflicts with topicA and topicB.
As topics will be merged together first in pu, then in next and
finally in master, chances are that they won't be merged in the same
order (or then, why would we even care about a topic workflow?). And I
have the feeling that "merge-fix/B" or "merge-fix/A" doesn't hold
enough information to do that accurately.

The idea is then to store the <A, B> pair as a note, and to associate
a "merge" to that (solving the semantic conflict). It would then be
used as an implicit third parent for the merge of "branch containing
A" and "branch containing B". This is pretty much what Michael said in
the $gmane you talked about.

Cheers,
Antoine

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (May 2016, #06; Tue, 17)
@ 2016-05-17 22:47  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-17 22:47 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has 390 non-merge commits in this cycle.  On
the 'maint' front, 2.8.2 is out and fixes that have been in 'master'
accumulates on it for 2.8.3, which probably should be tagged sometime
late this week.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/hooks (2016-05-04) 4 commits
  (merged to 'next' on 2016-05-09 at 23cf808)
 + hooks: allow customizing where the hook directory is
 + githooks.txt: minor improvements to the grammar & phrasing
 + githooks.txt: amend dangerous advice about 'update' hook ACL
 + githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.


* ak/t4151-ls-files-could-be-empty (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 36ae38c)
 + t4151: make sure argument to 'test -z' is given

 Test fix.


* bn/config-doc-tt-varnames (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-10 at aa7b834)
 + config: consistently format $variables in monospaced font
 (this branch uses jc/config-pathname-type.)

 Doc formatting fixes.


* bn/http-cookiefile-config (2016-05-04) 2 commits
  (merged to 'next' on 2016-05-09 at d519b13)
 + http: expand http.cookieFile as a path
 + Documentation: config: improve word ordering for http.cookieFile

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.


* es/test-gpg-tags (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 9fcb98b)
 + t6302: simplify non-gpg cases

 Test fix.


* jc/config-pathname-type (2016-05-04) 1 commit
  (merged to 'next' on 2016-05-09 at 0876e55)
 + config: describe 'pathname' value type
 (this branch is used by bn/config-doc-tt-varnames.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.


* jc/fsck-nul-in-commit (2016-05-10) 2 commits
  (merged to 'next' on 2016-05-10 at 3bc3ca3)
 + fsck: detect and warn a commit with embedded NUL
 + fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.


* jc/linkgit-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 0e5ba60)
 + Documentation: fix linkgit references

 Many 'linkgit:<git documentation page>' references were broken,
 which are all fixed with this.


* jc/ll-merge-internal (2016-05-09) 3 commits
  (merged to 'next' on 2016-05-10 at a6bf1d0)
 + t6036: remove pointless test that expects failure
 + ll-merge: use a longer conflict marker for internal merge
 + ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.


* jc/test-seq (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-10 at 1512890)
 + test-lib-functions.sh: rewrite test_seq without Perl
 + test-lib-functions.sh: remove misleading comment on test_seq

 Test fix.


* jk/rebase-interative-eval-fix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-11 at 4fdf387)
 + rebase--interactive: avoid empty list in shell for-loop

 Portability enhancement for "rebase -i" to help platforms whose
 shell does not like "for i in <empty>" (which is not POSIX-kosher).


* jk/submodule-c-credential (2016-05-06) 6 commits
  (merged to 'next' on 2016-05-10 at 4abe871)
 + submodule: stop sanitizing config options
 + submodule: use prepare_submodule_repo_env consistently
 + submodule--helper: move config-sanitizing to submodule.c
 + submodule: export sanitized GIT_CONFIG_PARAMETERS
 + t5550: break submodule config test into multiple sub-tests
 + t5550: fix typo in $HTTPD_URL
 (this branch is used by js/http-custom-headers.)

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly, and stop filtering settings given via "git -c var=val".


* jk/test-send-sh-x-trace-elsewhere (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 273a137)
 + test-lib: set BASH_XTRACEFD automatically

 Running tests with '-x' option to trace the individual command
 executions is a useful way to debug test scripts, but some tests
 that capture the standard error stream and check what the command
 said can be broken with the trace output mixed in.  When running
 our tests under "bash", however, we can redirect the trace output
 to another file descriptor to keep the standard error of programs
 being tested intact.


* js/http-custom-headers (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 7cf5cca)
 + submodule: ensure that -c http.extraheader is heeded
 + Merge branch 'jk/submodule-c-credential' into js/http-custom-headers
 + t5551: make the test for extra HTTP headers more robust
 + tests: adjust the configuration for Apache 2.2
 (this branch uses jk/submodule-c-credential.)

 Update tests for "http.extraHeaders=<header>" to be portable back
 to Apache 2.2 (the original depended on <RequireAll/> which is a
 more recent feature).


* js/t3404-typofix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at cbeabc0)
 + t3404: fix typo

 Test fix.


* js/windows-dotgit (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at d10caa2)
 + mingw: remove unnecessary definition
 + mingw: introduce the 'core.hideDotFiles' setting

 On Windows, .git and optionally any files whose name starts with a
 dot are now marked as hidden, with a core.hideDotFiles knob to
 customize this behaviour.


* kf/gpg-sig-verification-doc (2016-05-13) 1 commit
  (merged to 'next' on 2016-05-13 at 2cec353)
 + Documentation: clarify signature verification

 Documentation for "git merge --verify-signatures" has been updated
 to clarify that the signature of only the commit at the tip is
 verified.  Also the phrasing used for signature and key validity is
 adjusted to align with that used by OpenPGP.


* lp/typofixes (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-09 at 59683be)
 + typofix: assorted typofixes in comments, documentation and messages

 Typofixes.


* ls/travis-build-doc (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at 7f63497)
 + travis-ci: build documentation

 CI test was taught to build documentation pages.


* nd/error-errno (2016-05-09) 41 commits
  (merged to 'next' on 2016-05-10 at 1cdeda8)
 + wrapper.c: use warning_errno()
 + vcs-svn: use error_errno()
 + upload-pack.c: use error_errno()
 + unpack-trees.c: use error_errno()
 + transport-helper.c: use error_errno()
 + sha1_file.c: use {error,die,warning}_errno()
 + server-info.c: use error_errno()
 + sequencer.c: use error_errno()
 + run-command.c: use error_errno()
 + rerere.c: use error_errno() and warning_errno()
 + reachable.c: use error_errno()
 + mailmap.c: use error_errno()
 + ident.c: use warning_errno()
 + http.c: use error_errno() and warning_errno()
 + grep.c: use error_errno()
 + gpg-interface.c: use error_errno()
 + fast-import.c: use error_errno()
 + entry.c: use error_errno()
 + editor.c: use error_errno()
 + diff-no-index.c: use error_errno()
 + credential-cache--daemon.c: use warning_errno()
 + copy.c: use error_errno()
 + connected.c: use error_errno()
 + config.c: use error_errno()
 + compat/win32/syslog.c: use warning_errno()
 + combine-diff.c: use error_errno()
 + check-racy.c: use error_errno()
 + builtin/worktree.c: use error_errno()
 + builtin/upload-archive.c: use error_errno()
 + builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
 + builtin/rm.c: use warning_errno()
 + builtin/pack-objects.c: use die_errno() and warning_errno()
 + builtin/merge-file.c: use error_errno()
 + builtin/mailsplit.c: use error_errno()
 + builtin/help.c: use warning_errno()
 + builtin/fetch.c: use error_errno()
 + builtin/branch.c: use error_errno()
 + builtin/am.c: use error_errno()
 + bisect.c: use die_errno() and warning_errno()
 + usage.c: add warning_errno() and error_errno()
 + usage.c: move format processing out of die_errno()

 The code for warning_errno/die_errno has been refactored and a new
 error_errno() reporting helper is introduced.


* nd/remote-plural-ours-plus-theirs (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-10 at aea08dc)
 + remote.c: specify correct plural form in "commit diverge" message

 Message fix.


* nd/test-helpers (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at e8ad58d)
 + wrap-for-bin.sh: regenerate bin-wrappers when switching branches

 Switching between 'master' and 'next', between which the paths to
 test helper binaries have changed, did not update bin-wrappers/*
 scripts used in tests, causing false test failures.


* sb/submodule-deinit-all (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-09 at 0fd4518)
 + submodule deinit: require '--all' instead of '.' for all submodules

 Correct faulty recommendation to use "git submodule deinit ." when
 de-initialising all submodules, which would result in a strange
 error message in a pathological corner case.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.


* sb/z-is-gnutar-ism (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-09 at 51d527d)
 + t6041: do not compress backup tar file
 + t3513: do not compress backup tar file

 Test fix.


* tb/t5601-sed-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at d3e54e8)
 + t5601: Remove trailing space in sed expression

 Test fix.


* va/i18n-misc-updates (2016-05-12) 10 commits
  (merged to 'next' on 2016-05-13 at 0361b16)
 + i18n: unpack-trees: avoid substituting only a verb in sentences
  (merged to 'next' on 2016-05-10 at b5dbd0d)
 + i18n: builtin/pull.c: split strings marked for translation
 + i18n: builtin/pull.c: mark placeholders for translation
 + i18n: git-parse-remote.sh: mark strings for translation
 + i18n: branch: move comment for translators
 + i18n: branch: unmark string for translation
 + i18n: builtin/rm.c: remove a comma ',' from string
 + i18n: unpack-trees: mark strings for translation
 + i18n: builtin/branch.c: mark option for translation
 + i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.


* va/i18n-remote-comment-to-align (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at edbacbb)
 + i18n: remote: add comment for translators

 Message fix.


* va/mailinfo-doc-typofix (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 7180176)
 + Documentation/git-mailinfo: fix typo

 Typofix.

--------------------------------------------------
[New Topics]

* da/difftool (2016-05-16) 2 commits
  (merged to 'next' on 2016-05-17 at ef5a435)
 + difftool: handle unmerged files in dir-diff mode
 + difftool: initialize variables for readability

 "git difftool" learned to handle unmerged paths correctly in
 dir-diff mode.

 Will merge to 'master'.


* jc/attr (2016-05-17) 14 commits
 - SQUASH???
 - attr: retire git_check_attrs() API
 - attr: convert git_check_attrs() callers to use the new API
 - attr: convert git_all_attrs() to use "struct git_attr_check"
 - attr: (re)introduce git_check_attr() and struct git_attr_check
 - attr: rename function and struct related to checking attributes
 - attr.c: tighten constness around "git_attr" structure
 - attr.c: simplify macroexpand_one()
 - attr.c: mark where #if DEBUG ends more clearly
 - attr.c: complete a sentence in a comment
 - attr.c: explain the lack of attr-name syntax check in parse_attr()
 - attr.c: update a stale comment on "struct match_attr"
 - attr.c: use strchrnul() to scan for one line
 - commit.c: use strchrnul() to scan for one line

 The attributes API has been updated so that it can later be
 optimized using the knowledge of which attributes are queried.


* fc/fast-import-broken-marks-file (2016-05-17) 1 commit
 - fast-import: do not truncate exported marks file

 "git fast-import --export-marks" would overwrite the existing marks
 file even when it makes a dump from its custom die routine.
 Prevent it from doing so when we have an import-marks file but
 haven't finished reading it. 

--------------------------------------------------
[Stalled]

* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Expecting a reroll.
 ($gmane/292074, 293236)


* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 . completion: cache the path to the repository
 . completion: extract repository discovery from __gitdir()
 . completion: don't guard git executions with __gitdir()
 . completion: consolidate silencing errors from git commands
 . completion: don't use __gitdir() for git commands
 . completion: respect 'git -C <path>'
 . completion: fix completion after 'git -C <path>'
 . completion: don't offer commands when 'git --opt' needs an argument
 . rev-parse: add '--absolute-git-dir' option
 . completion: list short refs from a remote given as a URL
 . completion: don't list 'HEAD' when trying refs completion outside of a repo
 . completion: list refs from remote when remote's name matches a directory
 . completion: respect 'git --git-dir=<path>' when listing remote refs
 . completion: fix most spots not respecting 'git --git-dir=<path>'
 . completion: ensure that the repository path given on the command line exists
 . completion tests: add tests for the __git_refs() helper function
 . completion tests: check __gitdir()'s output in the error cases
 . completion tests: consolidate getting path of current working directory
 . completion tests: make the $cur variable local to the test helper functions
 . completion tests: don't add test cruft to the test repository
 . completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.

 Will discard.

--------------------------------------------------
[Cooking]

* es/t1500-modernize (2016-05-17) 5 commits
 - t1500: avoid setting environment variables outside of tests
 - t1500: avoid setting configuration options outside of tests
 - t1500: avoid changing working directory outside of tests
 - t1500: test_rev_parse: facilitate future test enhancements
 - t1500: be considerate to future potential tests

 test updates to make it more readable and maintainable.


* jc/rerere-multi (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-13 at f4d1d82)
 + rerere: plug memory leaks upon "rerere forget" failure

 Will merge to 'master'.


* cc/apply-introduce-state (2016-05-12) 48 commits
 - builtin/apply: rename 'prefix_' parameter to 'prefix'
 - builtin/apply: move applying patches into apply_all_patches()
 - builtin/apply: move 'state' check into check_apply_state()
 - builtin/apply: move 'symlink_changes' global into 'struct apply_state'
 - builtin/apply: move 'fn_table' global into 'struct apply_state'
 - builtin/apply: move 'state_linenr' global into 'struct apply_state'
 - builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
 - builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
 - builtin/apply: move 'ws_error_action' into 'struct apply_state'
 - builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
 - builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
 - builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
 - builtin/apply: move 'whitespace_option' into 'struct apply_state'
 - builtin/apply: move 'whitespace_error' global into 'struct apply_state'
 - builtin/apply: move 'root' global into 'struct apply_state'
 - builtin/apply: move 'p_value_known' global into 'struct apply_state'
 - builtin/apply: move 'p_value' global into 'struct apply_state'
 - builtin/apply: move 'has_include' global into 'struct apply_state'
 - builtin/apply: move 'limit_by_name' global into 'struct apply_state'
 - builtin/apply: move 'patch_input_file' global into 'struct apply_state'
 - builtin/apply: move 'apply' global into 'struct apply_state'
 - builtin/apply: move 'p_context' global into 'struct apply_state'
 - builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
 - builtin/apply: move 'line_termination' global into 'struct apply_state'
 - builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
 - builtin/apply: move 'no_add' global into 'struct apply_state'
 - builtin/apply: move 'threeway' global into 'struct apply_state'
 - builtin/apply: move 'summary' global into 'struct apply_state'
 - builtin/apply: move 'numstat' global into 'struct apply_state'
 - builtin/apply: move 'diffstat' global into 'struct apply_state'
 - builtin/apply: move 'cached' global into 'struct apply_state'
 - builtin/apply: move 'allow_overlap' global into 'struct apply_state'
 - builtin/apply: move 'update_index' global into 'struct apply_state'
 - builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
 - builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
 - builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
 - builtin/apply: move 'check_index' global into 'struct apply_state'
 - builtin/apply: move 'check' global into 'struct apply_state'
 - builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
 - builtin/apply: move 'state' init into init_apply_state()
 - builtin/apply: introduce 'struct apply_state' to start libifying
 - builtin/apply: move 'read_stdin' global into cmd_apply()
 - builtin/apply: move 'options' variable into cmd_apply()
 - builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
 - builtin/apply: avoid local variable shadowing 'len' parameter
 - builtin/apply: avoid parameter shadowing 'linenr' global
 - builtin/apply: avoid parameter shadowing 'p_value' global
 - builtin/apply: make gitdiff_verify_name() return void

 The "git apply" standalone program is being libified; this is the
 first step to move many state variables into a structure that can
 be explicitly (re)initialized to make the machinery callable more
 than once.

 The next step that moves some remaining state variables into the
 structure and turns die()s into an error return that propagates up
 to the caller is not queued yet but in flight.  It would be good to
 review the above first and give the remainder of the series a solid
 base to build on.

 Will be rerolled.


* jk/test-z-n-unquoted (2016-05-14) 6 commits
  (merged to 'next' on 2016-05-17 at 65372cf)
 + always quote shell arguments to test -z/-n
 + t9103: modernize test style
 + t9107: switch inverted single/double quotes in test
 + t9107: use "return 1" instead of "exit 1"
 + t9100,t3419: enclose all test code in single-quotes
 + t/lib-git-svn: drop $remote_git_svn and $git_svn_id

 t9xxx series has been updated primarily for readability, while
 fixing small bugs in it.  A few scripted Porcelains have also been
 updated to fix possible bugs around their use of "test -z" and
 "test -n".

 Will merge to 'master'.


* pb/bisect (2016-05-13) 4 commits
 - t6030: explicitly test for bisection cleanup
 - bisect--helper: `write_terms` shell function in C
 - bisect: rewrite `check_term_format` shell function in C
 - bisect--helper: use OPT_CMDMODE instead of OPT_BOOL

 Beginning of GSoC "git bisect" project.


* sb/pathspec-label (2016-05-14) 5 commits
 . pathspec: record labels
 . pathspec: move prefix check out of the inner loop
 . pathspec: move long magic parsing out of prefix_pathspec
 . Documentation: correct typo in example for querying attributes
 . Documentation: fix a typo

 The pathspec mechanism learned ":(label=X)$pattern" pathspec magic
 to limit paths that match $pattern further by labels defined by the
 attributes mechanism for the paths.

 (RFC/WIP)


* ar/diff-args-osx-precompose (2016-05-13) 1 commit
  (merged to 'next' on 2016-05-17 at 7b59b79)
 + diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will merge to 'master'.


* js/perf-rebase-i (2016-05-13) 3 commits
  (merged to 'next' on 2016-05-13 at eb51ddd)
 + perf: run "rebase -i" under perf
 + perf: make the tests work in worktrees
 + perf: let's disable symlinks when they are not available

 Add perf test for "rebase -i"

 Will merge to 'master'.


* nd/worktree-cleanup-post-head-protection (2016-05-10) 7 commits
 - worktree: simplify prefixing paths
 - worktree: avoid 0{40}, too many zeroes, hard to read
 - worktree.c: add clear_worktree()
 - worktree.c: use is_dot_or_dotdot()
 - git-worktree.txt: keep subcommand listing in alphabetical order
 - worktree.c: rewrite mark_current_worktree() to avoid strbuf
 - completion: support git-worktree
 (this branch uses nd/worktree-various-heads.)

 Further preparatory clean-up for "worktree" feature.

 Expecting a reroll.
 ($gmane/294136, etc.)


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
  (merged to 'next' on 2016-05-10 at 2ada404)
 + wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).  This is a stop-gap
 measure in that "commit --short --dry-run" still gives an incorrect
 result.

 Will merge to 'master'.


* tb/core-eol-fix (2016-04-25) 4 commits
  (merged to 'next' on 2016-05-10 at fa8a200)
 + convert.c: ident + core.autocrlf didn't work
 + t0027: test cases for combined attributes
 + convert: allow core.autocrlf=input and core.eol=crlf
 + t0027: make commit_chk_wrnNNO() reliable

 A couple of bugs around core.autocrlf have been fixed.

 Will merge to 'master'.


* jc/test-parse-options-expect (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 3ca5783)
 + t0040: convert a few tests to use test-parse-options --expect
 + t0040: remove unused test helpers
 + test-parse-options: --expect=<string> option to simplify tests
 + test-parse-options: fix output when callback option fails
 (this branch uses pb/commit-verbose-config.)

 t0040 had too many unnecessary repetitions in its test data.  Teach
 test-parse-options program so that a caller can tell what it
 expects in its output, so that these repetitions can be cleaned up.

 Will merge to 'master'.


* jc/doc-lint (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-17 at 9032aa5)
 + ci: validate "linkgit:" in documentation

 Find common mistakes when writing gitlink: in our documentation and
 drive the check from "make check-docs".

 I am not entirely happy with the way the script chooses what input
 file to validate, but it is not worse than not having anything, so
 let's move it forward and have the logic improved later when people
 care about it deeply.

 Will merge to 'master'.


* jk/push-client-deadlock-fix (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at 8f4abf9)
 + Windows: only add a no-op pthread_sigmask() when needed
  (merged to 'next' on 2016-05-06 at e91626c)
 + Windows: add pthread_sigmask() that does nothing

 Some Windows SDK lacks pthread_sigmask() implementation and fails
 to compile the recently updated "git push" codepath that uses it.

 Will merge to 'master'.


* mh/split-under-lock (2016-05-13) 33 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): move docstring to header file
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring
 - read_raw_ref(): don't get confused by an empty directory
 - commit_ref(): if there is an empty dir in the way, delete it
 - t1404: demonstrate a bug resolving references

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Updated (again).  Will wait for comments for the last time, and
 then merge to 'next'.


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* ew/fast-import-unpack-limit (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at ffd4efb)
 + fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Will merge to 'master'.


* nd/worktree-various-heads (2016-04-22) 13 commits
  (merged to 'next' on 2016-05-10 at 61d3415)
 + branch: do not rename a branch under bisect or rebase
 + worktree.c: check whether branch is bisected in another worktree
 + wt-status.c: split bisect detection out of wt_status_get_state()
 + worktree.c: check whether branch is rebased in another worktree
 + worktree.c: avoid referencing to worktrees[i] multiple times
 + wt-status.c: make wt_status_check_rebase() work on any worktree
 + wt-status.c: split rebase detection out of wt_status_get_state()
 + path.c: refactor and add worktree_git_path()
 + worktree.c: mark current worktree
 + worktree.c: make find_shared_symref() return struct worktree *
 + worktree.c: store "id" instead of "git_dir"
 + path.c: add git_common_path() and strbuf_git_common_path()
 + dir.c: rename str(n)cmp_icase to fspath(n)cmp
 (this branch is used by nd/worktree-cleanup-post-head-protection.)

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-05-10) 7 commits
 + commit: add a commit.verbose config variable
 + t7507-commit-verbose: improve test coverage by testing number of diffs
 + parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 + t/t7507: improve test coverage
 + t0040-parse-options: improve test coverage
 + test-parse-options: print quiet as integer
 + t0040-test-parse-options.sh: fix style issues
 (this branch is used by jc/test-parse-options-expect.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'master'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* kn/ref-filter-branch-list (2016-05-17) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Rerolled.
 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
  (merged to 'next' on 2016-05-10 at dd19e0a)
 + format-patch: introduce format.useAutoBase configuration
 + format-patch: introduce --base=auto option
 + format-patch: add '--base' option to record base tree info
 + patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will merge to 'master'.


* dt/index-helper (2016-05-13) 20 commits
 - untracked-cache: config option
 - trace: measure where the time is spent in the index-heavy operations
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - watchman: add a config option to enable the extension
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - watchman: support watchman to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: log warnings
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - pkt-line: add gentle version of packet_write
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 A new "index-helper" daemon has been introduced to give newly
 spawned Git process a quicker access to the data in the index, and
 optionally interface with the watchman daemon to further reduce the
 refresh cost.

 Under review.
 ($gmane/294470).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

--------------------------------------------------
[Discarded]

* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 1 commit
 . diff: enable "compaction heuristics" and lose experimentation knob

 Superseded by the tip commit on the jk/diff-compact-heuristic topic.

^ permalink raw reply	[relevance 2%]

* [PATCH v4 08/24] Ensure index matches head before invoking merge machinery, round N
  @ 2019-08-17 18:41  2%       ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2019-08-17 18:41 UTC (permalink / raw)
  To: git
  Cc: Junio C Hamano, Johannes Schindelin, Derrick Stolee,
	SZEDER Gábor, Elijah Newren

This is the bug that just won't die; there always seems to be another
form of it somewhere.  See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:

<quick summary>

builtin/merge.c contains this important requirement for merge
strategies:

    ...the index must be in sync with the head commit.  The strategies are
    responsible to ensure this.

This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:

  * we silently throw away changes the user had staged before the merge

  * we accidentally (and silently) include changes in the merge that
    were not part of either of the branches/trees being merged

Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found.  But, fear not: the bugs from this were fixed in commit
  ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge).  And it was fixed
again in commit
  160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
  3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
  65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
  eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)

...with multiple testcases added to the testsuite that could be
enumerated in even more commits.

Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...

</quick summary>

Unfortunately, "ever after" apparently denotes a limited time and it
expired today.  The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0.  Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases.  That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."

Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests.  It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary.  This unconditional dropping
and reloading of the cache masked a few bugs:

  * builtin/merge-recursive.c: didn't even bother loading the index.

  * builtin/stash.c: feels like a fake 'builtin' because it repeatedly
    invokes git subprocesses all over the place, mixed with other
    operations.  In particular, invoking "git reset" will reset the
    index on disk, but the parent process that invoked it won't
    automatically have its in-memory index updated.

  * t3030-merge-recursive.h: this test has always been broken in that it
    didn't make sure to make index match head before running.  But, it
    didn't care about the index or even the merge result, just the
    verbose output while running.  While commit eddd1a411d93
    ("merge-recursive: enforce rule that index matches head before
    merging", 2018-06-30) should have uncovered this broken test, it
    used a test_must_fail wrapper around the merge-recursive call
    because it was known that the merge resulted in a rename/rename
    conflict.  Thus, that fix only made this test fail for a different
    reason, and since the index == head check didn't happen until after
    coming all the way back out of the recursion, the testcase had
    enough information to pass the one check that it did perform.

So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).  This makes sure that
all callers actually make the index match head.  The next commit will
then enforce the condition that index matches head earlier so this
problem doesn't return in the future.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 builtin/merge-recursive.c  | 4 ++++
 builtin/stash.c            | 2 ++
 t/t3030-merge-recursive.sh | 9 ++++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
 #include "builtin.h"
 #include "commit.h"
 #include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
 		die(_("not handling anything other than two heads merge."));
 
+	if (repo_read_index_unmerged(the_repository))
+		die_resolve_conflict("merge");
+
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
 				return error(_("could not save index tree"));
 
 			reset_head();
+			discard_cache();
+			read_cache();
 		}
 	}
 
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
 test_expect_success 'merge-recursive remembers the names of all base trees' '
 	git reset --hard HEAD &&
 
+	# make the index match $c1 so that merge-recursive below does not
+	# fail early
+	git diff --binary HEAD $c1 -- | git apply --cached &&
+
 	# more trees than static slots used by oid_to_hex()
 	for commit in $c0 $c2 $c4 $c5 $c6 $c7
 	do
 		git rev-parse "$commit^{tree}"
 	done >trees &&
 
-	# ignore the return code -- it only fails because the input is weird
+	# ignore the return code; it only fails because the input is weird...
 	test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
 
+	# ...but make sure it fails in the expected way
+	test_i18ngrep CONFLICT.*rename/rename out &&
+
 	# merge-recursive prints in reverse order, but we do not care
 	sort <trees >expect &&
 	sed -n "s/^virtual //p" out | sort >actual &&
-- 
2.23.0.rc2.28.g5f89f15d7b.dirty


^ permalink raw reply related	[relevance 2%]

* [PATCH v3 08/24] Ensure index matches head before invoking merge machinery, round N
  @ 2019-08-15 21:40  2%     ` Elijah Newren
    1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2019-08-15 21:40 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Schindelin, Derrick Stolee,
	Elijah Newren

This is the bug that just won't die; there always seems to be another
form of it somewhere.  See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:

<quick summary>

builtin/merge.c contains this important requirement for merge
strategies:

    ...the index must be in sync with the head commit.  The strategies are
    responsible to ensure this.

This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:

  * we silently throw away changes the user had staged before the merge

  * we accidentally (and silently) include changes in the merge that
    were not part of either of the branches/trees being merged

Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found.  But, fear not: the bugs from this were fixed in commit
  ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge).  And it was fixed
again in commit
  160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
  3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
  65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
  eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)

...with multiple testcases added to the testsuite that could be
enumerated in even more commits.

Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...

</quick summary>

Unfortunately, "ever after" apparently denotes a limited time and it
expired today.  The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0.  Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases.  That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."

Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests.  It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary.  This unconditional dropping
and reloading of the cache masked a few bugs:

  * builtin/merge-recursive.c: didn't even bother loading the index.

  * builtin/stash.c: feels like a fake 'builtin' because it repeatedly
    invokes git subprocesses all over the place, mixed with other
    operations.  In particular, invoking "git reset" will reset the
    index on disk, but the parent process that invoked it won't
    automatically have its in-memory index updated.

  * t3030-merge-recursive.h: this test has always been broken in that it
    didn't make sure to make index match head before running.  But, it
    didn't care about the index or even the merge result, just the
    verbose output while running.  While commit eddd1a411d93
    ("merge-recursive: enforce rule that index matches head before
    merging", 2018-06-30) should have uncovered this broken test, it
    used a test_must_fail wrapper around the merge-recursive call
    because it was known that the merge resulted in a rename/rename
    conflict.  Thus, that fix only made this test fail for a different
    reason, and since the index == head check didn't happen until after
    coming all the way back out of the recursion, the testcase had
    enough information to pass the one check that it did perform.

So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).  This makes sure that
all callers actually make the index match head.  The next commit will
then enforce the condition that index matches head earlier so this
problem doesn't return in the future.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 builtin/merge-recursive.c  | 4 ++++
 builtin/stash.c            | 2 ++
 t/t3030-merge-recursive.sh | 9 ++++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
 #include "builtin.h"
 #include "commit.h"
 #include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
 		die(_("not handling anything other than two heads merge."));
 
+	if (repo_read_index_unmerged(the_repository))
+		die_resolve_conflict("merge");
+
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
 				return error(_("could not save index tree"));
 
 			reset_head();
+			discard_cache();
+			read_cache();
 		}
 	}
 
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
 test_expect_success 'merge-recursive remembers the names of all base trees' '
 	git reset --hard HEAD &&
 
+	# make the index match $c1 so that merge-recursive below does not
+	# fail early
+	git diff --binary HEAD $c1 -- | git apply --cached &&
+
 	# more trees than static slots used by oid_to_hex()
 	for commit in $c0 $c2 $c4 $c5 $c6 $c7
 	do
 		git rev-parse "$commit^{tree}"
 	done >trees &&
 
-	# ignore the return code -- it only fails because the input is weird
+	# ignore the return code; it only fails because the input is weird...
 	test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
 
+	# ...but make sure it fails in the expected way
+	test_i18ngrep CONFLICT.*rename/rename out &&
+
 	# merge-recursive prints in reverse order, but we do not care
 	sort <trees >expect &&
 	sed -n "s/^virtual //p" out | sort >actual &&
-- 
2.23.0.rc2.32.g2123e9e4e4


^ permalink raw reply related	[relevance 2%]

* Re: [PATCH v6 25/25] refs: break out ref conflict checks
  @ 2015-11-06 23:24  2%             ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-11-06 23:24 UTC (permalink / raw)
  To: Michael Haggerty; +Cc: David Turner, git, Jeff King

Junio C Hamano <gitster@pobox.com> writes:

> Michael Haggerty <mhagger@alum.mit.edu> writes:
>
>> Junio, if there are no more comments, would you mind
>>
>>     s/verify_no_descendants/find_descendant_ref/
>>
>> in the log message of this commit? And then, if you are also OK with the
>> new subdirectory introduced in this patch series, David and I seem to be
>> in agreement that it is ready to go. It would be great if this patch
>> series could be merged in a timely manner, as it will conflict with
>> nearly any other changes that people might want to undertake in the refs
>> code.
>
> Thanks for working well together.  Let me see what I can do today...

What I'll push out later today merges this to the tip of 'pu'.
The resolution is the same for 'jch' or 'next' (I checked).

I have to say that the merge of this topioc is not pretty.  A topic
that is already in flight has changed ref_is_hidden() in refs.c; you
move this block of code first to refs/refs-backend.c and then to
refs/refs.c, and the recursive merge ends up saying "The trunk side
changed this block of code in refs/refs-backend.c while the side
branch removed that block".

The resolution has to become an evil merge that brings in a new file
refs/refs.c from the tip of your topic to the trunk while replaying
that change in the lost block to that new file.  Because an
in-flight topic like this one needs to be merged over and over until
it gets merged to 'master' I'd prepare an evil merge-fix to be
squashed into the result of an auto-merge to help this process for
the interim maintainer, but this topic is placing more burden than
it otherwise would to the entire process.

Incidentally, that was why I originally asked you if you want to be
an interim maintainer for this cycle.  Whoever is doing a large code
movement with a large patch series must be the one who would know
the best how its interaction with other topics is best managed.

I wonder if refs.c -> refs/refs.c rename is a good idea.  I do agree
that refs/ subdirectory that collects the backend implementation
details is a very sensible thing to do, but if the public and
generic API were left in refs.c, this particular conflict might have
been less severe and easier to handle.  Whatever.

For those who are listening in from sideline, in case when they need
to deal with a similar situation "the code our side changed gets
moved to elsewhere by a side branch", here is what I did:

 * let "git merge --conflict=diff3" attempt and fail.

 * a conflicted file will have something like this:

    <<<< ours
    ... the code with changes made by our side (trunk) ...
    |||| base
    ... the code before our side (trunk) made the above changes ...
    ====
    >>>> theirs

 * create two new files, OURS and BASE.  Save the part in that
   conflicted file between <<<< and |||| to OURS, and between ||||
   and ==== to BASE.

 * look at "diff -u BASE OURS", find in the (failed) automerge
   result where the original went (a sample of it is at the end of
   this message), and apply that change manually.

The above is only to resolve this conflict *once*.

Automating future merges of this branch into a slightly updated
codebase needs help from rerere and also merge-fix/ machinery (this
is not in core-git proper, but the tool is in the 'todo' branch and
its use is described in howto/maintain-git.txt).

Essentially the procedure were:

 * "git checkout pu^0"

 * let "git merge --conflict=diff3" attempt and fail.

 * accept removal of the conflicted block in refs/files-backend.c in
   the editor, do "git rerere" to record it.  commit the result.

 * apply the above diff between BASE and OURS, commit the result.

 * git update-ref refs/merge-fix/dt/refs-backend-pre-vtable HEAD

With this, the Reintegrate script (on 'todo', checked out in "Meta/"
subdirectory) will be able to reproduce the evil merge, e.g.

 $ git checkout pu
 $ echo dt/refs-backend-pre-vtable | Meta/Reintegrate

would first let "git rerere" replay the removal of conflicted block
in refs/files-backend.c and then amend the result by squashing the
change in merge-fix/dt/refs-backend-pre-vtable.


--- V_BASE	2015-11-06 14:51:10.150197900 -0800
+++ V_OURS	2015-11-06 14:51:05.638059250 -0800
@@ -117,7 +117,7 @@
 	return 0;
 }
 
-int ref_is_hidden(const char *refname)
+int ref_is_hidden(const char *refname, const char *refname_full)
 {
 	int i;
 
@@ -125,6 +125,7 @@
 		return 0;
 	for (i = hide_refs->nr - 1; i >= 0; i--) {
 		const char *match = hide_refs->items[i].string;
+		const char *subject;
 		int neg = 0;
 		int len;
 
@@ -133,10 +134,18 @@
 			match++;
 		}
 
-		if (!starts_with(refname, match))
+		if (*match == '^') {
+			subject = refname_full;
+			match++;
+		} else {
+			subject = refname;
+		}
+
+		/* refname can be NULL when namespaces are used. */
+		if (!subject || !starts_with(subject, match))
 			continue;
 		len = strlen(match);
-		if (!refname[len] || refname[len] == '/')
+		if (!subject[len] || subject[len] == '/')
 			return !neg;
 	}
 	return 0;

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Apr 2016, #03; Thu, 7)
@ 2016-04-07 19:01  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-07 19:01 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the second batch of topics of this
cycle.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* cc/doc-recommend-performance-trace-to-file (2016-03-07) 1 commit
  (merged to 'next' on 2016-04-04 at 26f94c0)
 + Documentation: talk about pager in api-trace.txt

 Originally merged to 'next' on 2016-03-23

 A minor documentation update.


* da/mergetool-delete-delete-conflict (2016-03-10) 2 commits
  (merged to 'next' on 2016-04-04 at 34e645f)
 + mergetool: honor tempfile configuration when resolving delete conflicts
 + mergetool: support delete/delete conflicts

 Originally merged to 'next' on 2016-03-15

 "git mergetool" did not work well with conflicts that both sides
 deleted.


* jk/credential-cache-comment-exit (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 50427fe)
 + credential-cache--daemon: clarify "exit" action semantics

 Originally merged to 'next' on 2016-03-23

 A code clarification.


* jk/send-email-rtrim-mailrc-alias (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 4d54956)
 + send-email: ignore trailing whitespace in mailrc alias file

 Originally merged to 'next' on 2016-03-23

 "git send-email" had trouble parsing alias file in mailrc format
 when lines in it had trailing whitespaces on them.


* jk/submodule-c-credential (2016-03-23) 7 commits
  (merged to 'next' on 2016-04-04 at 8de8e8c)
 + git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
 + git: submodule honor -c credential.* from command line
 + quote: implement sq_quotef()
 + submodule: fix segmentation fault in submodule--helper clone
 + submodule: fix submodule--helper clone usage
 + submodule: check argc count for git submodule--helper clone
 + submodule: don't pass empty string arguments to submodule--helper clone

 Originally merged to 'next' on 2016-03-23

 "git -c credential.<var>=<value> submodule" can now be used to
 propagate configuration variables related to credential helper
 down to the submodules.


* jk/test-httpd-config-nosystem (2016-03-18) 1 commit
  (merged to 'next' on 2016-04-04 at 5fa6274)
 + t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

 Originally merged to 'next' on 2016-03-23

 The tests that involve running httpd leaked the system-wide
 configuration in /etc/gitconfig to the tested environment.


* jv/merge-nothing-into-void (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-04 at aa37405)
 + merge: fix NULL pointer dereference when merging nothing into void

 Originally merged to 'next' on 2016-03-23

 "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 nothing into an unborn history (which is arguably unusual usage,
 which perhaps was the reason why nobody noticed it).


* la/tag-force-signing-annotated-tags (2016-03-22) 1 commit
  (merged to 'next' on 2016-04-04 at a49ec4a)
 + tag: add the option to force signing of annotated tags

 Originally merged to 'next' on 2016-03-24

 "git tag" can create an annotated tag without explicitly given an
 "-a" (or "-s") option (i.e. when a tag message is given).  A new
 configuration variable, tag.forceSignAnnotated, can be used to tell
 the command to create signed tag in such a situation.


* ls/p4-map-user (2016-03-15) 1 commit
  (merged to 'next' on 2016-04-04 at a56b011)
 + git-p4: map a P4 user to Git author name and email address

 Originally merged to 'next' on 2016-03-23

 "git p4" now allows P4 author names to be mapped to Git author
 names.


* pb/t7502-drop-dup (2016-03-11) 1 commit
  (merged to 'next' on 2016-04-04 at 4799cad)
 + t/t7502 : drop duplicate test
 (this branch is used by pb/commit-verbose-config.)

 Originally merged to 'next' on 2016-03-15

 Code clean-up.


* sb/clone-t57-t56 (2016-03-16) 1 commit
  (merged to 'next' on 2016-04-04 at 5c20247)
 + clone tests: rename t57* => t56*

 Originally merged to 'next' on 2016-03-23

 Rename bunch of tests on "git clone" for better organization.


* sb/rebase-x (2016-03-18) 2 commits
  (merged to 'next' on 2016-04-04 at feda620)
 + t3404: cleanup double empty lines between tests
 + rebase: decouple --exec from --interactive

 Originally merged to 'next' on 2016-03-23

 "git rebase -x" can be used without passing "-i" option.


* sb/submodule-parallel-update (2016-03-01) 10 commits
  (merged to 'next' on 2016-04-04 at a0aea8d)
 + clone: allow an explicit argument for parallel submodule clones
 + submodule update: expose parallelism to the user
 + submodule helper: remove double 'fatal: ' prefix
 + git submodule update: have a dedicated helper for cloning
 + run_processes_parallel: rename parameters for the callbacks
 + run_processes_parallel: treat output of children as byte array
 + submodule update: direct error message to stderr
 + fetching submodules: respect `submodule.fetchJobs` config option
 + submodule-config: drop check against NULL
 + submodule-config: keep update strategy around
 (this branch is used by sb/clone-shallow-passthru and sb/submodule-init.)

 Originally merged to 'next' on 2016-03-15

 A major part of "git submodule update" has been ported to C to take
 advantage of the recently added framework to run download tasks in
 parallel.


* ss/commit-squash-msg (2016-03-21) 1 commit
  (merged to 'next' on 2016-04-04 at d389f19)
 + commit: do not lose SQUASH_MSG contents

 Originally merged to 'next' on 2016-03-23

 When "git merge --squash" stopped due to conflict, the concluding
 "git commit" failed to read in the SQUASH_MSG that shows the log
 messages from all the squashed commits.


* ss/exc-flag-is-a-collection-of-bits (2016-03-01) 1 commit
  (merged to 'next' on 2016-04-04 at 9f0207e)
 + dir: store EXC_FLAG_* values in unsigned integers

 Originally merged to 'next' on 2016-03-04

 Code clean-up.


* ss/receive-pack-parse-options (2016-03-01) 1 commit
  (merged to 'next' on 2016-04-04 at fd6ab4c)
 + builtin/receive-pack.c: use parse_options API

 Originally merged to 'next' on 2016-03-04

 The command line argument parser for "receive-pack" has been
 rewritten to use parse-options.

--------------------------------------------------
[New Topics]

* jc/drop-git-spec-in (2016-04-06) 1 commit
 - Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".


* jc/makefile-redirection-stderr (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at e3f2ded)
 + Makefile: fix misdirected redirections

 A minor fix in the Makefile.

 Will merge to 'master'.


* js/mingw-tests-2.8 (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at f85a013)
 + Windows: shorten code by re-using convert_slashes()

 Code clean-up.

 Will merge to 'master'.


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* ep/trace-doc-sample-fix (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 0df7357)
 + api-trace.txt: fix typo

 Fix a typo in an example in the trace API documentation.

 Will merge to 'master'.


* ew/send-email-readable-message-id (2016-04-06) 1 commit
 - send-email: more meaningful Message-ID

 "git send-email" now uses a more readable timestamps when
 formulating a message ID.

 Will merge to 'next'.


* mg/complete-cherry-mark-to-log (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 3002be6)
 + completion: complete --cherry-mark for git log

 The completion scripts (in contrib/) did not include the
 "--cherry-mark" option when completing "git log <HT>".

 Will merge to 'master'.


* tb/blame-force-read-cache-to-workaround-safe-crlf (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 263bba8)
 + correct blame for files commited with CRLF

 When running "git blame $path" with unnormalized data in the index
 for the path, the data in the working tree was blamed, even though
 "git add" would not have changed what is already in the index, due
 to "safe crlf" that disables the line-end conversion.  It has been
 corrected.

 Will merge to 'master'.


* st/verify-tag (2016-04-06) 3 commits
 - verify-tag: change variable name for readability
 - t7030: test verifying multiple tags
 - builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Only the first three patches in a six-patch series.


* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
 - send-email: do not load Data::Dumper

 Code clean-up.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sb/submodule-init (2016-03-15) 2 commits
 . submodule: port init from shell to C
 . submodule: port resolve_relative_url from shell to C

 Update of "git submodule" to move pieces of logic to C continues.

 Needs review.
 ($gmane/288824)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* dt/refs-backend-lmdb (2016-02-25) 45 commits
 . SQUASH??? Minimum compilation band-aid
 . tests: add ref-storage argument
 . refs: tests for lmdb backend
 . refs: add LMDB refs storage backend
 . refs: break out resolve_ref_unsafe_submodule
 . config: read ref storage config on startup
 . refs: register ref storage backends
 . svn: learn ref-storage argument
 . clone: allow ref storage backend to be set for clone
 . refs: check submodules' ref storage config
 . init: allow alternate ref strorage to be set for new repos
 . refs: always handle non-normal refs in files backend
 . refs: resolve symbolic refs first
 . refs: on symref reflog expire, lock symref not referrent
 . refs: don't dereference on rename
 . refs: allow log-only updates
 . refs: move duplicate check to common code
 . refs: make lock generic
 . refs: handle non-normal ref renames
 . refs: add method to rename refs
 . refs: add methods to init refs db
 . refs: add method for delete_refs
 . refs: add method for initial ref transaction commit
 . refs: add methods for reflog
 . refs: add do_for_each_per_worktree_ref
 . refs: reduce the visibility of do_for_each_ref()
 . refs: add method for do_for_each_ref
 . refs: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move resolve_ref_unsafe into common code
 . files-backend: break out ref reading
 . refs: move for_each_*ref* functions into common code
 . refs: move head_ref{,_submodule} to the common code
 . Merge branch 'sb/submodule-parallel-update' into dt/refs-backend-lmdb
 . clone: allow an explicit argument for parallel submodule clones
 . submodule update: expose parallelism to the user
 . git submodule update: have a dedicated helper for cloning
 . run_processes_parallel: correctly terminate callbacks with an LF
 . run_processes_parallel: rename parameters for the callbacks
 . run-command: expose default_{start_failure, task_finished}
 . run_processes_parallel: treat output of children as byte array
 . submodule update: direct error message to stderr
 . fetching submodules: respect `submodule.fetchJobs` config option
 . submodule-config: drop check against NULL
 . submodule-config: keep update strategy around

 A reroll exists, but it seems that will further be rerolled.


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* es/format-patch-doc-hide-no-patch (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 25d79bb)
 + git-format-patch.txt: don't show -s as shorthand for multiple options

 "git format-patch --help" showed `-s` and `--no-patch` as if these
 are valid options to the command.  We already hide `--patch` option
 from the documentation, because format-patch is about showing the
 diff, and the documentation now hides these options as well.

 Will merge to 'master'.


* jk/branch-shortening-funny-symrefs (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 1a3f8be)
 + branch: fix shortening of non-remote symrefs

 A change back in version 2.7 to "git branch" broke display of a
 symbolic ref in a non-standard place in the refs/ hierarchy (we
 expect symbolic refs to appear in refs/remotes/*/HEAD to point at
 the primary branch the remote has, and as .git/HEAD to point at the
 branch we locally checked out).

 Will merge to 'next' and later down to maint-2.7.


* jn/mergetools-examdiff (2016-04-04) 2 commits
  (merged to 'next' on 2016-04-06 at 819e858)
 + mergetools: add support for ExamDiff
 + mergetools: create mergetool_find_win32_cmd() helper function for winmerge

 "git mergetools" learned to drive ExamDiff.

 Will merge to 'master'.


* kn/for-each-tag-branch (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at 4595ad3)
 + for-each-ref: fix description of '--contains' in manpage

 A minor documentation update.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-03-30) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Will be rerolled.


* oa/doc-diff-check (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at e3d6e8d)
 + Documentation: git diff --check detects conflict markers

 A minor documentation update.

 Will merge to 'master'.


* rz/worktree-no-checkout (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at e725216)
 + worktree: add: introduce --checkout option

 "git worktree add" can be given "--no-checkout" option to only
 create an empty worktree without checking out the files.

 Will merge to 'master'.


* sb/misc-cleanups (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 4e63691)
 + credential-cache, send_request: close fd when done
 + bundle: don't leak an fd in case of early return
 + abbrev_sha1_in_line: don't leak memory
 + notes: don't leak memory in git_config_get_notes_strategy

 Assorted minor clean-ups.

 Will merge to 'master'.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
 - submodule--helper, module_clone: catch fprintf failure
 - submodule--helper: do not borrow absolute_path() result for too long
 - submodule--helper, module_clone: always operate on absolute paths
 - submodule--helper clone: create the submodule path just once
 - submodule--helper: fix potential NULL-dereference
 - recursive submodules: test for relative paths

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Any further comments?  Otherwise will merge to 'next'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
 - t7407: make expectation as clear as possible
 - submodule update: test recursive path reporting from subdirectory
 - submodule update: align reporting path for custom command execution
 - submodule status: correct path handling in recursive submodules
 - submodule update --init: correct path handling in recursive submodules
 - submodule foreach: correct path display in recursive submodules

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Any further comments?  Otherwise will merge to 'next'.


* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at ac19e48)
 + diffcore: fix iteration order of identical files during rename detection

 "git diff -M" used to work better when two originally identical
 files A and B got renamed to X/A and X/B by pairing A to X/A and B
 to X/B, but this was broken in the 2.0 timeframe.

 Will merge to 'master'.


* sk/send-pack-all-fix (2016-03-31) 1 commit
  (merged to 'next' on 2016-04-06 at 31e1e1b)
 + git-send-pack: fix --all option when used with directory

 "git send-pack --all <there>" was broken when its command line
 option parsing was written in the 2.6 timeframe.

 Will merge to 'master'.


* ss/msvc (2016-03-30) 2 commits
  (merged to 'next' on 2016-04-06 at 4b53bce)
 + MSVC: use shipped headers instead of fallback definitions
 + MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more

 Build updates for MSVC.

 Will merge to 'master'.


* xy/format-patch-base (2016-03-31) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will be rerolled.
 ($gmane/290365)


* tb/safe-crlf-output-fix (2016-04-01) 7 commits
 . convert.c: more safer crlf handling with text attribute
 . correct blame for files commited with CRLF
 . convert: unify the "auto" handling of CRLF
 . t0027: test cases for combined attributes
 . convert: allow core.autocrlf=input and core.eol=crlf
 . convert.c: stream and early out
 . read-cache: factor out get_sha1_from_index() helper

 The "safe CRLF" facility disables line-end conversion from CRLF to
 LF when checking in if the blob registered to the index already
 contains CR, but some codepaths like "git blame" did not know this,
 and instead assumed that only the configuration and attribute
 settings determined how the data from the working tree is converted.

 Will be rerolled.
 ($gmane/290637)


* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-06 at 2aab890)
 + submodule-config: use hashmap_iter_first()

 Minor code cleanup.

 Will merge to 'master'.


* ky/branch-d-worktree (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at 00f9bff)
 + branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree

 Will merge to 'master'.


* ky/branch-m-worktree (2016-04-04) 2 commits
  (merged to 'next' on 2016-04-06 at e7b285c)
 + branch -m: update all per-worktree HEADs
 + refs: add a new function set_worktree_head_symref

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.

 Will merge to 'master'.


* nd/apply-doc (2016-03-24) 2 commits
  (merged to 'next' on 2016-04-06 at f9bd355)
 + git-apply.txt: mention the behavior inside a subdir
 + git-apply.txt: remove a space

 A minor documentation update.

 Will merge to 'master'.


* nd/apply-report-skip (2016-03-24) 1 commit
  (merged to 'next' on 2016-04-06 at ae2c824)
 + apply: report patch skipping in verbose mode

 "git apply -v" learned to report paths in the patch that were
 skipped via --include/--exclude mechanism or being outside the
 current working directory.

 Will merge to 'master'.


* pb/opt-cmdmode-doc (2016-03-25) 1 commit
  (merged to 'next' on 2016-04-06 at a5f3835)
 + api-parse-options.txt: document OPT_CMDMODE()

 Minor API documentation update.

 Will merge to 'master'.


* rt/completion-help (2016-03-24) 2 commits
  (merged to 'next' on 2016-04-06 at 8c3ee08)
 + completion: add 'revisions' and 'everyday' to 'git help'
 + completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.

 Will merge to 'master'.


* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
  (merged to 'next' on 2016-04-06 at 7a766b7)
 + rebase-i: print an abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.

 Will merge to 'master'.


* jk/check-repository-format (2016-03-11) 10 commits
  (merged to 'next' on 2016-04-06 at a0dada0)
 + verify_repository_format: mark messages for translation
 + setup: drop repository_format_version global
 + setup: unify repository version callbacks
 + init: use setup.c's repo version verification
 + setup: refactor repo format reading and verification
 + config: drop git_config_early
 + check_repository_format_gently: stop using git_config_early
 + lazily load core.sharedrepository
 + wrap shared_repository global in get/set accessors
 + setup: document check_repository_format()

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.

 Will merge to 'master'.


* mj/pull-rebase-autostash (2016-04-04) 9 commits
  (merged to 'next' on 2016-04-06 at b4e4f31)
 + t5520: test --[no-]autostash with pull.rebase=true
 + t5520: reduce commom lines of code
 + t5520: factor out common "failing autostash" code
 + t5520: factor out common "successful autostash" code
 + t5520: use better test to check stderr output
 + t5520: ensure consistent test conditions
 + t5520: use consistent capitalization in test titles
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-03-14) 1 commit
  (merged to 'next' on 2016-04-06 at e5c744f)
 + commit: add a commit.verbose config variable

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'master'.


* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-04 at cd70fd6)
 + merge: refuse to create too cool a merge by default

 Originally merged to 'next' on 2016-03-23

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.

 Will merge to 'master'.


* lt/pretty-expand-tabs (2016-04-04) 4 commits
  (merged to 'next' on 2016-04-06 at 186ac2a)
 + pretty: test --expand-tabs
 + pretty: allow tweaking tabwidth in --expand-tabs
 + pretty: enable --expand-tabs by default for selected pretty formats
 + pretty: expand tabs in indented logs to make things line up properly

 When "git log" shows the log message indented by 4-spaces, the
 remainder of a line after a HT does not align in the way the author
 originally intended.  The command now expands tabs by default in
 such a case, and allows the users to override it with a new option,
 '--no-expand-tabs'.

 Will merge to 'master'.


* cc/apply (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 2e23c44)
 + builtin/apply: free patch when parse_chunk() fails
 + builtin/apply: handle parse_binary() failure
 + apply: remove unused call to free() in gitdiff_{old,new}name()
 + builtin/apply: get rid of useless 'name' variable

 Minor code clean-up.

 Will merge to 'master'.


* dt/index-helper (2016-03-23) 18 commits
 - SQUASH - minimum compilation fix
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - Add watchman support to reduce index refresh cost
 - read-cache: invalidate untracked cache data when reading WAMA
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-04-06) 11 commits
 - rerere: adjust 'forget' to multi-variant world order
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Will merge to 'next'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 2%]

* Re: What's cooking in git.git (Jan 2021, #02; Fri, 8)
  @ 2021-01-15 19:44  2%           ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-01-15 19:44 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: Emily Shaffer, git

Derrick Stolee <stolee@gmail.com> writes:

> Thanks for dealing with this fallout. Sorry for the mixup.
>
>> Helped-by: Emily Shaffer <emilyshaffer@google.com>
>
> Would it be appropriate to convert this to a Co-authored-by?

Or more like "Inspired-by-a-patch-by".  Also you three have about
the same amount of input and deserve credit.

Sorry, but it already is on 'next', which will be discarded in a few
months when the new cycle begins, so I am not sure if it is worth
reverting and reapplying with updated credit trailers.

FWIW, I ended up redoing the merge and did "checkout -m" to recreate
conflicts, and then looked for "config.*pwd" in the block of text
that came from the "part-4" topic and fixed them up manually.  I
then compared the result of this new merge with the earlier merge
that had the issue.  The resulting diff is what went into the patch
you are responding to.  It is good that we had Emily's input as a
comparison material to see that both of us independently touched the
same places to fix.

By the way, the merge into 'master' will directly reuse the conflict
resolution of e47c3632 (Merge branch 'ds/maintenance-part-4' into
jch, 2021-01-14) from the rerere database, without any separate
"merge fix" commit.

Thanks.

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Oct 2022, #05; Mon, 17)
@ 2022-10-17 23:05  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-17 23:05 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.  A topic without enough support may be
discarded after a long period of no activity.

Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.

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']

* ab/unused-annotation (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-11 at c3099ad3ab)
 + git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

 Compilation fix for ancient compilers.
 source: <20221005221928.703750-1-asedeno@google.com>


* dd/document-runtime-prefix-better (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-11 at 9f4a3bb7bd)
 + Makefile: clarify runtime relative gitexecdir

 Update comment in the Makefile about the RUNTIME_PREFIX config knob.
 source: <20221006013205.15015-1-congdanhqx@gmail.com>


* ed/fsmonitor-on-networked-macos (2022-10-10) 7 commits
  (merged to 'next' on 2022-10-11 at 32076d13b7)
 + fsmonitor: fix leak of warning message
 + fsmonitor: add documentation for allowRemote and socketDir options
 + fsmonitor: check for compatability before communicating with fsmonitor
 + fsmonitor: deal with synthetic firmlinks on macOS
 + fsmonitor: avoid socket location check if using hook
 + fsmonitor: relocate socket file if .git directory is remote
 + fsmonitor: refactor filesystem checks to common interface
 (this branch is used by ed/fsmonitor-inotify.)

 By default, use of fsmonitor on a repository on networked
 filesystem is disabled. Add knobs to make it workable on macOS.
 source: <pull.1326.v15.git.1664904751.gitgitgadget@gmail.com>


* jc/branch-description-unset (2022-09-30) 1 commit
  (merged to 'next' on 2022-10-11 at 3f81ee978b)
 + branch: do not fail a no-op --edit-desc

 "GIT_EDITOR=: git branch --edit-description" resulted in failure,
 which has been corrected.
 source: <xmqqmtagka8x.fsf@gitster.g>


* jc/tmp-objdir (2022-09-30) 1 commit
  (merged to 'next' on 2022-10-11 at 17d0843c43)
 + tmp-objdir: skip clean up when handling a signal

 The code to clean temporary object directories (used for
 quarantine) tried to remove them inside its signal handler, which
 was a no-no.
 source: <pull.1348.v4.git.git.1664570831583.gitgitgadget@gmail.com>


* jc/use-of-uc-in-log-messages (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at 0b8c91d7e2)
 + SubmittingPatches: use usual capitalization in the log message body

 Clarify that "the sentence after <area>: prefix does not begin with
 a capital letter" rule applies only to the commit title.
 source: <xmqqedvjfqx1.fsf@gitster.g>


* jk/cleanup-callback-parameters (2022-10-06) 4 commits
  (merged to 'next' on 2022-10-11 at a3350d66b6)
 + attr: drop DEBUG_ATTR code
 + commit: avoid writing to global in option callback
 + multi-pack-index: avoid writing to global in option callback
 + test-submodule: inline resolve_relative_url() function

 Code clean-up.
 source: <Yz7Tjy7Rh8cXVxYQ@coredump.intra.peff.net>
 source: <Yz7UhYXvNl6+1GbZ@coredump.intra.peff.net>


* jt/promisor-remote-fetch-tweak (2022-10-05) 2 commits
  (merged to 'next' on 2022-10-11 at e93567bc8f)
 + promisor-remote: die upon failing fetch
 + promisor-remote: remove a return value

 Remove error detection from a function that fetches from promisor
 remotes, and make it die when such a fetch fails to bring all the
 requested objects, to give an early failure to various operations.
 source: <cover.1664917853.git.jonathantanmy@google.com>


* pw/remove-rebase-p-test (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-11 at 000bd34796)
 + t3435: remove redundant test case

 Remove outdated test.
 source: <pull.1379.git.1665395106351.gitgitgadget@gmail.com>


* rj/branch-edit-desc-unborn (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at de3eccde7c)
 + branch: description for non-existent branch errors

 "git branch --edit-description" on an unborh branch misleadingly
 said that no such branch exists, which has been corrected.
 source: <8d627a2c-923f-181f-a03b-15f370c4dd0f@gmail.com>


* rs/bisect-start-leakfix (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at 07f87534c1)
 + bisect--helper: plug strvec leak

 Code clean-up that results in plugging a leak.
 source: <1965b54b-122a-c965-f886-1a7dd6afbfb4@web.de>


* rs/use-fspathncmp (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-11 at 11cbd1ce81)
 + dir: use fspathncmp() in pl_hashmap_cmp()

 Code clean-up.
 source: <cb6ffcdb-d719-7928-96b8-e46482dd141f@web.de>

--------------------------------------------------
[New Topics]

* gc/bare-repo-discovery (2022-10-13) 1 commit
  (merged to 'next' on 2022-10-17 at 3de2be7c14)
 + config: respect includes in protected config

 Allow configuration files in "protected" scopes to include other
 configuration files.

 Will merge to 'master'.
 source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>


* jh/trace2-timers-and-counters (2022-10-13) 7 commits
 - trace2: add global counter mechanism
 - trace2: add stopwatch timers
 - trace2: convert ctx.thread_name from strbuf to pointer
 - trace2: rename the thread_name argument to trace2_thread_start
 - api-trace2.txt: elminate section describing the public trace2 API
 - tr2tls: clarify TLS terminology
 - trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.
 source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>


* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
 - pack-bitmap-write.c: instrument number of reused bitmaps
 - midx.c: instrument MIDX and bitmap generation with trace2 regions
 - midx.c: consider annotated tags during bitmap selection
 - midx.c: fix whitespace typo

 A bugfix with tracing support in midx codepath

 Will merge to 'next'.
 source: <cover.1665612094.git.me@ttaylorr.com>


* tb/remove-unused-pack-bitmap (2022-10-13) 1 commit
 - builtin/repack.c: remove redundant pack-based bitmaps

 When creating a multi-pack bitmap, remove per-pack bitmap files
 unconditionally as they will never be consulted.

 Will merge to 'next'?
 source: <393fd4c6db78cd694e6d4dfcf24f17e2850ccd99.1665601403.git.me@ttaylorr.com>


* nw/t1002-cleanup (2022-10-14) 1 commit
 - t1002: modernize outdated conditional

 source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>


* zh/patch-id (2022-10-14) 7 commits
 - documentation: format-patch: clarify requirements for patch-ids to match
 - builtin: patch-id: remove unused diff-tree prefix
 - builtin: patch-id: add --include-whitespace as a command mode
 - patch-id: fix patch-id for mode changes
 - builtin: patch-id: fix patch-id with binary diffs
 - patch-id: use stable patch-id for rebases
 - patch-id: fix stable patch id for binary / header-only

 source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-16) 9 commits
 - archive: add tests for git archive --recurse-submodules
 - archive: add --recurse-submodules to git-archive command
 - archive: remove global repository from archive_args
 - archive: pass repo objects to write_archive handlers
 - tree: add repository parameter to read_tree_fn_t
 - tree: handle submodule case for read_tree_at properly
 - tree: increase test coverage for tree.c
 - tree: update cases to use repo_ tree methods
 - tree: do not use the_repository for tree traversal methods.

 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2022-08-10) 14 commits
 - sequencer: use the "octopus" strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* js/cmake-updates (2022-08-24) 5 commits
 - cmake: increase time-out for a long-running test
 - cmake: avoid editing t/test-lib.sh
 - add -p: avoid ambiguous signed/unsigned comparison
 - cmake: copy the merge tools for testing
 - cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.

 Expecting a reroll.
 cf. <3df77ffd-85a2-3a54-9005-34a24ec6e82d@github.com>
 cf. <531620e1-de4c-74aa-c840-c12ce81f8740@github.com> and others
 source: <pull.1320.v2.git.1661243463.gitgitgadget@gmail.com>


* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
 - clone, submodule update: check out branches
 - submodule--helper: refactor up-to-date criterion
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.

 Expecting a reroll.
 cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
 source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
 - diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.

 Expecting a reroll.
 source: <20220914151333.3309-1-tboegi@web.de>


* mj/credential-helper-auth-headers (2022-09-13) 8 commits
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers
 - osxkeychain: clarify that we ignore unknown lines
 - netrc: ignore unknown lines (do not die)
 - wincred: ignore unknown lines (do not die)

 Extending credential helper protocol.

 Expecting a reroll.
 A separate non-RFC submission of the first three is expected.
 cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
 source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>


* cw/submodule-status-in-parallel (2022-09-23) 4 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor functions
 . submodule: move status parsing into function
 . run-command: add pipe_output to run_processes_parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks its self check.
 cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
 source: <20220922232947.631309-1-calvinwan@google.com>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
 - rebase --keep-base: imply --no-fork-point
 - rebase --keep-base: imply --reapply-cherry-picks
 - rebase: factor out branch_base calculation
 - rebase: rename merge_base to branch_base
 - rebase: store orig_head as a commit
 - rebase: be stricter when reading state files containing oids
 - t3416: set $EDITOR in subshell
 - t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Will merge to 'next'??
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at 07993f09bc)
 + grep.c: remove "extended" in favor of "pattern_expression", fix segfault

 Giving "--invert-grep" and "--all-match" without "--grep" to the
 "git log" command resulted in an attempt to access grep pattern
 expression structure that has not been allocated, which has been
 corrected.

 Will merge to 'master'.
 source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>


* rs/archive-dedup-printf (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at af770cf00f)
 + archive: deduplicate verbose printing

 Code simplification.

 Will merge to 'master'.
 source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
 - rebase: cleanup action handling
 - rebase --abort: improve reflog message
 - rebase --apply: make reflog messages match rebase --merge
 - rebase --apply: respect GIT_REFLOG_ACTION
 - rebase --merge: fix reflog message after skipping
 - rebase --merge: fix reflog when continuing
 - t3406: rework rebase reflog tests
 - rebase --apply: remove duplicated code
 - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.

 Will merge to 'next'??
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
 - docs: git-send-email: difference between ssl and tls smtp-encryption

 Expecting a reroll??
 cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* ab/coding-guidelines-c99 (2022-10-11) 5 commits
  (merged to 'next' on 2022-10-13 at c6b2b74dfb)
 + CodingGuidelines: recommend against unportable C99 struct syntax
 + CodingGuidelines: mention C99 features we can't use
 + CodingGuidelines: allow declaring variables in for loops
 + CodingGuidelines: mention dynamic C99 initializer elements
 + CodingGuidelines: update for C99

 Update CodingGuidelines to clarify what features to use and avoid
 in C99.

 Will merge to 'master'.
 source: <20221010203800.2154698-1-gitster@pobox.com>


* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
  (merged to 'next' on 2022-10-13 at 532a3f6a5f)
 + symbolic-ref: teach "--[no-]recurse" option

 After checking out a "branch" that is a symbolic-ref that points at
 another branch, "git symbolic-ref HEAD" reports the underlying
 branch, not the symbolic-ref the user gave checkout as argument.
 The command learned the "--no-recurse" option to stop after
 dereferencing a symbolic-ref only once.

 Will merge to 'master'.
 source: <xmqqleprcn08.fsf@gitster.g>


* ds/cmd-main-reorder (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-14 at d7f07dbecf)
 + git.c: improve code readability in cmd_main()

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 - fsmonitor: update doc for Linux
 - fsmonitor: test updates
 - fsmonitor: enable fsmonitor for Linux
 - fsmonitor: implement filesystem change listener for Linux
 - fsmonitor: determine if filesystem is local or remote
 - fsmonitor: prepare to share code between Mac OS and Linux
 - Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.

 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
 - ci: add address and undefined sanitizer tasks

 Enable address and undefined sanitizer tasks at GitHub Actions CI.

 With this p4 tests seem to die with the server side going away.
 source: <xmqqpmezxl9p.fsf@gitster.g>


* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-13 at 393abc3019)
 + config.mak.dev: disable suggest braces error on old clang versions

 Work around older clang that warns against C99 zero initialization
 syntax for struct.

 Will merge to 'master'.
 source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ab/run-hook-api-cleanup (2022-10-12) 15 commits
 - run-command.c: remove "max_processes", add "const" to signal() handler
 - run-command.c: pass "opts" further down, and use "opts->processes"
 - run-command.c: use "opts->processes", not "pp->max_processes"
 - run-command.c: don't copy "data" to "struct parallel_processes"
 - run-command.c: don't copy "ungroup" to "struct parallel_processes"
 - run-command.c: don't copy *_fn to "struct parallel_processes"
 - run-command.c: make "struct parallel_processes" const if possible
 - run-command API: move *_tr2() users to "run_processes_parallel()"
 - run-command API: have run_process_parallel() take an "opts" struct
 - run-command.c: use designated init for pp_init(), add "const"
 - run-command API: don't fall back on online_cpus()
 - run-command API: make "n" parameter a "size_t"
 - run-command tests: use "return", not "exit"
 - run-command API: have "run_processes_parallel{,_tr2}()" return void
 - run-command test helper: use "else if" pattern

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.

 Will merge to 'next'.
 source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-14 at 90850a2211)
 + branch: support for shortcuts like @{-1}, completed

 "git branch --edit-description @{-1}" is now a way to edit branch
 description of the branch you were on before switching to the
 current branch.

 Will merge to 'master'.
 source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>


* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
  (merged to 'next' on 2022-10-17 at 24609eb777)
 + diff: support ^! for merges
 + revisions.txt: unspecify order of resolved parts of ^!
 + revision: use strtol_i() for exclude_parent

 "git diff rev^!" did not show combined diff to go to the rev from
 its parents.

 Will merge to 'master'.
 source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>


* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
 - tests: assert consistent whitespace in -h output
 - tests: start asserting that *.txt SYNOPSIS matches -h output
 - doc txt & -h consistency: make "worktree" consistent
 - worktree: define subcommand -h in terms of command -h
 - reflog doc: list real subcommands up-front
 - doc txt & -h consistency: make "commit" consistent
 - doc txt & -h consistency: make "diff-tree" consistent
 - doc txt & -h consistency: use "[<label>...]" for "zero or more"
 - doc txt & -h consistency: make "annotate" consistent
 - doc txt & -h consistency: make "stash" consistent
 - doc txt & -h consistency: add missing options
 - doc txt & -h consistency: use "git foo" form, not "git-foo"
 - doc txt & -h consistency: make "bundle" consistent
 - doc txt & -h consistency: make "read-tree" consistent
 - doc txt & -h consistency: make "rerere" consistent
 - doc txt & -h consistency: add missing options and labels
 - doc txt & -h consistency: make output order consistent
 - doc txt & -h consistency: add or fix optional "--" syntax
 - doc txt & -h consistency: fix mismatching labels
 - doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 - doc txt & -h consistency: use "<options>", not "<options>..."
 - stash doc SYNOPSIS & -h: correct padding around "[]()"
 - doc txt & -h consistency: correct padding around "[]()"
 - doc txt & -h consistency: balance unbalanced "[" and "]"
 - doc txt & -h consistency: add "-z" to cat-file "-h"
 - doc txt & -h consistency: fix incorrect alternates syntax
 - doc txt & -h consistency: word-wrap
 - built-ins: consistently add "\n" between "usage" and options
 - doc SYNOPSIS: consistently use ' for commands
 - doc SYNOPSIS: don't use ' for subcommands
 - bundle: define subcommand -h in terms of command -h
 - builtin/bundle.c: indent with tabs
 - CodingGuidelines: update and clarify command-line conventions
 - tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.

 Will merge to 'next'?
 source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>


* ab/coccicheck-incremental (2022-10-14) 11 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.
 source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
 - bundle-uri: suppress stderr from remote-https
 - bundle-uri: quiet failed unbundlings
 - bundle: add flags to verify_bundle()
 - bundle-uri: fetch a list of bundles
 - bundle: properly clear all revision flags
 - bundle-uri: limit recursion depth for bundle lists
 - bundle-uri: parse bundle list in config format
 - bundle-uri: unit test "key=value" parsing
 - bundle-uri: create "key=value" line parsing
 - bundle-uri: create base key-value pair parsing
 - bundle-uri: create bundle_list struct and helpers
 - bundle-uri: use plain string in find_temp_filename()
 - Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-08-30) 17 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: make `state` optional
 - bisect--helper: calling `bisect_state()` without an argument is a bug
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection
 - bisect--helper: migrate to OPT_SUBCOMMAND()
 - bisect--helper: make the order consistently `argc, argv`
 - bisect--helper: make `terms` an explicit singleton
 - bisect--helper: simplify exit code computation
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Apr 2016, #01; Fri, 1)
@ 2016-04-01 22:47  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-01 22:47 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

There are quite a few topics that have been cooking in 'next' during
the pre-2.8 freeze period that are ready to be merged to 'master';
the first batch will be merged early next week, and then the tip of
'next' will be rebuilt on top sometime mid next week.  Let's start
looking at new shiny toys after all that happens.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* jn/mergetools-examdiff (2016-03-28) 2 commits
 - mergetools: add support for ExamDiff
 - mergetools: create mergetool_find_win32_cmd() helper function for winmerge

 "git mergetools" learned to drive ExamDiff.

 Waiting for an Ack by the area expert.


* kn/for-each-tag-branch (2016-03-30) 1 commit
 - for-each-ref: fix description of '--contains' in manpage

 Docfix.

 Will merge to 'next'.


* kn/ref-filter-branch-list (2016-03-30) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Will be rerolled.


* oa/doc-diff-check (2016-03-29) 1 commit
 - Documentation: git diff --check detects conflict markers

 Docfix.

 Will merge to 'next'.


* rz/worktree-no-checkout (2016-03-29) 1 commit
 - worktree: add: introduce --checkout option

 "git worktree add" can be given "--no-checkout" option to only
 create an empty worktree without checking out the files.

 Will merge to 'next'.


* sb/misc-cleanups (2016-04-01) 4 commits
 - credential-cache, send_request: close fd when done
 - bundle: don't leak an fd in case of early return
 - abbrev_sha1_in_line: don't leak memory
 - notes: don't leak memory in git_config_get_notes_strategy

 Assorted minor clean-ups.

 Will merge to 'next'.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
 - submodule--helper, module_clone: catch fprintf failure
 - submodule--helper: do not borrow absolute_path() result for too long
 - submodule--helper, module_clone: always operate on absolute paths
 - submodule--helper clone: create the submodule path just once
 - submodule--helper: fix potential NULL-dereference
 - recursive submodules: test for relative paths

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Any further comments?  Otherwise will merge to 'next'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
 - t7407: make expectation as clear as possible
 - submodule update: test recursive path reporting from subdirectory
 - submodule update: align reporting path for custom command execution
 - submodule status: correct path handling in recursive submodules
 - submodule update --init: correct path handling in recursive submodules
 - submodule foreach: correct path display in recursive submodules

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Any further comments?  Otherwise will merge to 'next'.


* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
 - diffcore: fix iteration order of identical files during rename detection

 "git diff -M" used to work better when two originally identical
 files A and B got renamed to X/A and X/B by pairing A to X/A and B
 to X/B, but this was broken in 2.0 timeframe.

 Will merge to 'next'.


* sk/send-pack-all-fix (2016-03-31) 1 commit
 - git-send-pack: fix --all option when used with directory

 "git send-pack --all <there>" was broken when its command line
 option parsing was written in 2.6 timeframe.

 Will merge to 'next'.


* ss/msvc (2016-03-30) 2 commits
 - MSVC: use shipped headers instead of fallback definitions
 - MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more

 Will merge to 'next'.


* xy/format-patch-base (2016-03-31) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will be rerolled.
 ($gmane/290365)


* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* tb/safe-crlf-output-fix (2016-04-01) 7 commits
 - convert.c: more safer crlf handling with text attribute
 - correct blame for files commited with CRLF
 - convert: unify the "auto" handling of CRLF
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - convert.c: stream and early out
 - read-cache: factor out get_sha1_from_index() helper

 The "safe CRLF" facility disables line-end conversion from CRLF to
 LF when checking in if the blob registered to the index already
 contains CR, but some codepaths like "git blame" did not know this,
 and instead assumed that only the configuration and attribute
 settings determined how the data from the working tree is converted.

 Comments sent.
 ($gmane/290548)


--------------------------------------------------
[Stalled]

* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
 - submodule-config: use hashmap_iter_first()

 Minor code cleanup.

 Will merge to 'next'.


* ky/branch-d-worktree (2016-03-29) 1 commit
 - branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree

 Will merge to 'next'.


* ky/branch-m-worktree (2016-03-28) 2 commits
 - branch -m: update all per-worktree HEADs
 - refs: add a new function set_worktree_head_symref

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.

 Needs review by "refs" area experts.


* nd/apply-doc (2016-03-24) 2 commits
 - git-apply.txt: mention the behavior inside a subdir
 - git-apply.txt: remove a space

 Will merge to 'next'.


* nd/apply-report-skip (2016-03-24) 1 commit
 - apply: report patch skipping in verbose mode

 "git apply -v" learned to report paths in the patch that were
 skipped via --include/--exclude mechanism or being outside the
 current working directory.

 Will merge to 'next'.


* pb/opt-cmdmode-doc (2016-03-25) 1 commit
 - api-parse-options.txt: document OPT_CMDMODE()

 Minor API documentation update.


* rt/completion-help (2016-03-24) 2 commits
 - completion: add 'revisions' and 'everyday' to 'git help'
 - completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.

 Will merge to 'next'.


* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
 - rebase-i: print an abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.

 Will merge to 'next'.


* jk/check-repository-format (2016-03-11) 10 commits
 - verify_repository_format: mark messages for translation
 - setup: drop repository_format_version global
 - setup: unify repository version callbacks
 - init: use setup.c's repo version verification
 - setup: refactor repo format reading and verification
 - config: drop git_config_early
 - check_repository_format_gently: stop using git_config_early
 - lazily load core.sharedrepository
 - wrap shared_repository global in get/set accessors
 - setup: document check_repository_format()

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.

 Will merge to 'next'.


* mj/pull-rebase-autostash (2016-03-29) 7 commits
 - t5520: test --[no-]autostash with pull.rebase=true
 - t5520: modify tests to reduce common code
 - t5520: use test_i18ngrep instead of test_cmp
 - t5520: explicitly unset rebase.autostash
 - t5520: use consistent capitalization in test titles
  (merged to 'next' on 2016-03-23 at ebf1afa)
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'next'.


* pb/commit-verbose-config (2016-03-14) 1 commit
 - commit: add a commit.verbose config variable
 (this branch uses pb/t7502-drop-dup.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'next'.


* pb/t7502-drop-dup (2016-03-11) 1 commit
  (merged to 'next' on 2016-03-15 at 037c877)
 + t/t7502 : drop duplicate test
 (this branch is used by pb/commit-verbose-config.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* ss/commit-squash-msg (2016-03-21) 1 commit
  (merged to 'next' on 2016-03-23 at 0b72631)
 + commit: do not lose SQUASH_MSG contents

 When "git merge --squash" stopped due to conflict, the concluding
 "git commit" failed to read in the SQUASH_MSG that shows the log
 messages from all the squashed commits.

 Will merge to 'master' after 2.8 final.


* ls/p4-map-user (2016-03-15) 1 commit
  (merged to 'next' on 2016-03-23 at 9e0a4f5)
 + git-p4: map a P4 user to Git author name and email address

 Will merge to 'master' after 2.8 final.


* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at d7da4cf)
 + merge: refuse to create too cool a merge by default

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.

 Will merge to 'master' after 2.8 final.


* jk/credential-cache-comment-exit (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at d2b8cc7)
 + credential-cache--daemon: clarify "exit" action semantics

 Will merge to 'master' after 2.8 final.


* jk/send-email-rtrim-mailrc-alias (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 74f1f44)
 + send-email: ignore trailing whitespace in mailrc alias file

 Will merge to 'master' after 2.8 final.


* jk/test-httpd-config-nosystem (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 245263b)
 + t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

 Will merge to 'master' after 2.8 final.


* lt/pretty-expand-tabs (2016-03-30) 3 commits
 - pretty: allow tweaking tabwidth in --expand-tabs
 - pretty: enable --expand-tabs by default for selected pretty formats
 - pretty: expand tabs in indented logs to make things line up properly

 Needs tests.


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag
 (this branch uses sb/submodule-parallel-update; is tangled with sb/submodule-init.)

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sb/clone-t57-t56 (2016-03-16) 1 commit
  (merged to 'next' on 2016-03-23 at 5df850d)
 + clone tests: rename t57* => t56*

 Rename bunch of tests on "git clone" for better organization.

 Will merge to 'master' after 2.8 final.


* sb/rebase-x (2016-03-18) 2 commits
  (merged to 'next' on 2016-03-23 at ef8861b)
 + t3404: cleanup double empty lines between tests
 + rebase: decouple --exec from --interactive

 "git rebase -x" can be used without passing "-i" option.

 Will merge to 'master' after 2.8 final.


* cc/apply (2016-04-01) 4 commits
 - builtin/apply: free patch when parse_chunk() fails
 - builtin/apply: handle parse_binary() failure
  (merged to 'next' on 2016-03-24 at 70623f2)
 + apply: remove unused call to free() in gitdiff_{old,new}name()
 + builtin/apply: get rid of useless 'name' variable

 Code clean-up.

 Will merge to 'next'.


* dt/index-helper (2016-03-23) 18 commits
 - SQUASH - minimum compilation fix
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - Add watchman support to reduce index refresh cost
 - read-cache: invalidate untracked cache data when reading WAMA
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()


* jv/merge-nothing-into-void (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at 40b905d)
 + merge: fix NULL pointer dereference when merging nothing into void

 "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 nothing into an unborn history (which is arguably unusual usage,
 which perhaps was the reason why nobody noticed it).

 Will merge to 'master' after 2.8 final.


* la/tag-force-signing-annotated-tags (2016-03-22) 1 commit
  (merged to 'next' on 2016-03-24 at 424da3f)
 + tag: add the option to force signing of annotated tags

 "git tag" can create an annotated tag without explicitly given an
 "-a" (or "-s") option (i.e. when a tag message is given).  A new
 configuration variable, tag.forceSignAnnotated, can be used to tell
 the command to create signed tag in such a situation.

 Will merge to 'master' after 2.8 final.


* cc/doc-recommend-performance-trace-to-file (2016-03-07) 1 commit
  (merged to 'next' on 2016-03-23 at 086b9f2)
 + Documentation: talk about pager in api-trace.txt

 Will merge to 'master' after 2.8 final.


* da/mergetool-delete-delete-conflict (2016-03-10) 2 commits
  (merged to 'next' on 2016-03-15 at 281a81a)
 + mergetool: honor tempfile configuration when resolving delete conflicts
 + mergetool: support delete/delete conflicts

 "git mergetool" did not work well with conflicts that both sides
 deleted.

 Will merge to 'master' after 2.8 final.


* es/test-gpg-tags (2016-03-06) 4 commits
  (merged to 'next' on 2016-03-15 at 617119f)
 + t6302: skip only signed tags rather than all tests when GPG is missing
 + t6302: also test annotated in addition to signed tags
 + t6302: normalize names and descriptions of signed tags
 + lib-gpg: drop unnecessary "missing GPG" warning

 A test for tags has been restructured so that more parts of it can
 easily be run on a platform without a working GnuPG.

 Will merge to 'master' after 2.8 final.


* jk/getwholeline-getdelim-empty (2016-03-05) 1 commit
  (merged to 'next' on 2016-03-15 at e70d4bd)
 + strbuf_getwholeline: NUL-terminate getdelim buffer on error

 strbuf_getwholeline() did not NUL-terminate the buffer on certain
 corner cases in its error codepath.

 Will merge to 'master' after 2.8 final.


* jk/startup-info (2016-03-07) 6 commits
  (merged to 'next' on 2016-03-15 at eb95e5f)
 + use setup_git_directory() in test-* programs
 + grep: turn off gitlink detection for --no-index
 + mailmap: do not resolve blobs in a non-repository
 + remote: don't resolve HEAD in non-repository
 + setup: set startup_info->have_repository more reliably
 + setup: make startup_info available everywhere

 The startup_info data, which records if we are working inside a
 repository (among other things), are now uniformly available to Git
 subcommand implementations, and Git avoids attempting to touch
 references when we are not in a repository.

 Will merge to 'master' after 2.8 final.


* rj/xdiff-prepare-plug-leak-on-error-codepath (2016-03-04) 2 commits
  (merged to 'next' on 2016-03-15 at f72755e)
 + xdiff/xprepare: fix a memory leak
 + xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits

 A small memory leak in an error codepath has been plugged in xdiff
 code.

 Will merge to 'master' after 2.8 final.


* jc/index-pack (2016-03-03) 2 commits
  (merged to 'next' on 2016-03-15 at 42efaa7)
 + index-pack: add a helper function to derive .idx/.keep filename
 + Merge branch 'jc/maint-index-pack-keep' into jc/index-pack
 (this branch is used by jc/bundle; uses jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* jc/maint-index-pack-keep (2016-03-03) 1 commit
  (merged to 'next' on 2016-03-04 at bc1d37a)
 + index-pack: correct --keep[=<msg>]
 (this branch is used by jc/bundle, jc/index-pack and jc/index-pack-clone-bundle.)

 "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 Will merge to 'master' after 2.8 final.


* mm/readme-markdown (2016-04-01) 2 commits
 - git.spec: use README.md, not README
  (merged to 'next' on 2016-03-01 at 81f3858)
 + README.md: don't take 'commandname' literally

 The top-level README file has been updated to be more appropriate
 for the sign on the front door to welcome new acquaintances to Git
 by toning down inside jokes and making it into MarkDown.

 Will merge to 'next'.


* gf/fetch-pack-direct-object-fetch (2016-03-05) 2 commits
  (merged to 'next' on 2016-03-06 at 5628860)
 + fetch-pack: update the documentation for "<refs>..." arguments
  (merged to 'next' on 2016-03-04 at 49199e0)
 + fetch-pack: fix object_id of exact sha1

 Fetching of history by naming a commit object name directly didn't
 work across remote-curl transport.

 Will merge to 'master' after 2.8 final.


* jk/add-i-highlight (2016-02-28) 1 commit
  (merged to 'next' on 2016-03-04 at 4ac3aa1)
 + add--interactive: allow custom diff highlighting programs

 Will merge to 'master' after 2.8 final.


* jk/config-get-urlmatch (2016-02-28) 3 commits
  (merged to 'next' on 2016-03-04 at feeb192)
 + Documentation/git-config: fix --get-all description
 + Documentation/git-config: use bulleted list for exit codes
 + config: fail if --get-urlmatch finds no value

 "git config --get-urlmatch", unlike other variants of the "git
 config --get" family, did not signal error with its exit status
 when there was no matching configuration.

 Will merge to 'master' after 2.8 final.


* jk/rev-parse-local-env-vars (2016-02-29) 2 commits
  (merged to 'next' on 2016-03-04 at a0300d5)
 + rev-parse: let some options run outside repository
 + t1515: add tests for rev-parse out-of-repo helpers

 The "--local-env-vars" and "--resolve-git-dir" options of "git
 rev-parse" failed to work outside a repository when the command's
 option parsing was rewritten in 1.8.5 era.

 Will merge to 'master' after 2.8 final.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* mm/lockfile-error-message (2016-03-01) 2 commits
  (merged to 'next' on 2016-03-04 at 04ed7e6)
 + lockfile: improve error message when lockfile exists
 + lockfile: mark strings for translation

 Will merge to 'master' after 2.8 final.


* ss/exc-flag-is-a-collection-of-bits (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at 5ea48c7)
 + dir: store EXC_FLAG_* values in unsigned integers

 Will merge to 'master' after 2.8 final.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle
 (this branch uses jc/index-pack and jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ss/receive-pack-parse-options (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at c577ea7)
 + builtin/receive-pack.c: use parse_options API

 The command line argument parser for "receive-pack" has been
 rewritten to use parse-options.

 Will merge to 'master' after 2.8 final.


* jk/credential-clear-config (2016-02-26) 1 commit
  (merged to 'next' on 2016-03-04 at f7b26b7)
 + credential: let empty credential specs reset helper list

 The credential.helper configuration variable is cumulative and
 there is no good way to override it from the command line.  As
 a special case, giving an empty string as its value now serves
 as the signal to clear the values specified in various files.

 Will merge to 'master' after 2.8 final.


* jk/submodule-c-credential (2016-03-23) 7 commits
  (merged to 'next' on 2016-03-23 at 952367a)
 + git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
  (merged to 'next' on 2016-03-15 at 81df5b1)
 + git: submodule honor -c credential.* from command line
 + quote: implement sq_quotef()
 + submodule: fix segmentation fault in submodule--helper clone
 + submodule: fix submodule--helper clone usage
 + submodule: check argc count for git submodule--helper clone
 + submodule: don't pass empty string arguments to submodule--helper clone

 "git -c credential.<var>=<value> submodule" can now be used to
 propagate configuration variables related to credential helper
 down to the submodules.

 Will merge to 'master' after 2.8 final.


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* mm/diff-renames-default (2016-02-25) 5 commits
  (merged to 'next' on 2016-02-25 at 947c399)
 + diff: activate diff.renames by default
 + log: introduce init_log_defaults()
 + t: add tests for diff.renames (true/false/unset)
 + t4001-diff-rename: wrap file creations in a test
 + Documentation/diff-config: fix description of diff.renames

 The end-user facing Porcelain level commands like "diff" and "log"
 now enables the rename detection by default.

 Will merge to 'master' after 2.8 final.


* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
  (merged to 'next' on 2016-02-26 at f0a54e5)
 + upload-pack: use argv_array for pack_objects

 The embedded args argv-array in the child process is used to build
 the command line to run pack-objects instead of using a separate
 array of strings.

 Will merge to 'master' after 2.8 final.


* sb/submodule-init (2016-03-15) 2 commits
 . submodule: port init from shell to C
 . submodule: port resolve_relative_url from shell to C
 (this branch uses sb/submodule-parallel-update; is tangled with sb/clone-shallow-passthru.)

 Update of "git submodule" to move pieces of logic to C continues.

 Needs review.
 ($gmane/288824)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* sb/submodule-parallel-update (2016-03-01) 10 commits
  (merged to 'next' on 2016-03-15 at a8bf6c5)
 + clone: allow an explicit argument for parallel submodule clones
 + submodule update: expose parallelism to the user
 + submodule helper: remove double 'fatal: ' prefix
 + git submodule update: have a dedicated helper for cloning
 + run_processes_parallel: rename parameters for the callbacks
 + run_processes_parallel: treat output of children as byte array
 + submodule update: direct error message to stderr
 + fetching submodules: respect `submodule.fetchJobs` config option
 + submodule-config: drop check against NULL
 + submodule-config: keep update strategy around
 (this branch is used by sb/clone-shallow-passthru and sb/submodule-init.)

 A major part of "git submodule update" has been ported to C to take
 advantage of the recently added framework to run download tasks in
 parallel.

 Will merge to 'master' after 2.8 final.


* dt/refs-backend-lmdb (2016-02-25) 45 commits
 . SQUASH??? Minimum compilation band-aid
 . tests: add ref-storage argument
 . refs: tests for lmdb backend
 . refs: add LMDB refs storage backend
 . refs: break out resolve_ref_unsafe_submodule
 . config: read ref storage config on startup
 . refs: register ref storage backends
 . svn: learn ref-storage argument
 . clone: allow ref storage backend to be set for clone
 . refs: check submodules' ref storage config
 . init: allow alternate ref strorage to be set for new repos
 . refs: always handle non-normal refs in files backend
 . refs: resolve symbolic refs first
 . refs: on symref reflog expire, lock symref not referrent
 . refs: don't dereference on rename
 . refs: allow log-only updates
 . refs: move duplicate check to common code
 . refs: make lock generic
 . refs: handle non-normal ref renames
 . refs: add method to rename refs
 . refs: add methods to init refs db
 . refs: add method for delete_refs
 . refs: add method for initial ref transaction commit
 . refs: add methods for reflog
 . refs: add do_for_each_per_worktree_ref
 . refs: reduce the visibility of do_for_each_ref()
 . refs: add method for do_for_each_ref
 . refs: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move resolve_ref_unsafe into common code
 . files-backend: break out ref reading
 . refs: move for_each_*ref* functions into common code
 . refs: move head_ref{,_submodule} to the common code
 . Merge branch 'sb/submodule-parallel-update' into dt/refs-backend-lmdb
 . clone: allow an explicit argument for parallel submodule clones
 . submodule update: expose parallelism to the user
 . git submodule update: have a dedicated helper for cloning
 . run_processes_parallel: correctly terminate callbacks with an LF
 . run_processes_parallel: rename parameters for the callbacks
 . run-command: expose default_{start_failure, task_finished}
 . run_processes_parallel: treat output of children as byte array
 . submodule update: direct error message to stderr
 . fetching submodules: respect `submodule.fetchJobs` config option
 . submodule-config: drop check against NULL
 . submodule-config: keep update strategy around

 A reroll exists, but it seems that will further be rerolled.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-03-28) 11 commits
 - rerere: adjust 'forget' to multi-variant world order
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Need to send out the final round of review as this should be now complete.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007.  It has been reported that
 git-gui still uses the deprecated syntax, which needs to be fixed
 before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Jan 2022, #07; Mon, 24)
@ 2022-01-24 19:39  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-01-24 19:39 UTC (permalink / raw)
  To: git

Git 2.35 final has been tagged.  Let's wait for a few days to see if
there are regressions that needs brown-paper-bag fixes before we
start moving topics from 'next' to 'master' for the new cycle.

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',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful").  Do not read too much into a topic being in (or not in)
'seen'.  The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

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']

* ab/checkout-branch-info-leakfix (2022-01-21) 1 commit
  (merged to 'next' on 2022-01-23 at 8bbb082509)
 + checkout: avoid BUG() when hitting a broken repository

 We added an unrelated sanity checking that leads to a BUG() while
 plugging a leak, which triggered in a repository with symrefs in
 the local branch namespace that point at a ref outside.  Partially
 revert the change to avoid triggering the BUG().
 source: <xmqqbl04d1s9.fsf_-_@gitster.g>

--------------------------------------------------
[New Topics]

* jc/mem-pool-alignment (2022-01-24) 1 commit
 - mem-pool: don't assume uintmax_t is aligned enough for all types

 Update the logic to compute alignment requirement for our mem-pool.

 Will merge to 'next'?
 source: <20220123203347.74869-1-jrtc27@jrtc27.com>

--------------------------------------------------
[Stalled]

* je/http-better-error-output (2021-12-03) 1 commit
 . http-backend: give a hint that web browser access is not supported

 When the http-backend program, which is the server-side component
 for the smart HTTP transport, sends a "404 Not found" error, we
 deliberately did not say anything to the requesting client.  We now
 send a message back to the browser to tell the user that they do
 not want to visit the URL via their browser, instead of a totally
 blank page.

 Expecting a reroll.
 Breaks its self tests.
 cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
 source: <20211202102855.23907-1-jengelh@inai.de>


* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
 - fixup! editor: allow for saving/restoring terminal state
 - editor: allow for saving/restoring terminal state
 - terminal: teach save_term to fail when not foreground

 Some editors are reported to leave the terminal in funny state
 after they exit on Windows.  Work it around by saving and restoring
 the terminal state when needed.

 Expecting a reroll.
 cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
 source: <20211202035446.1154-1-carenas@gmail.com>


* ar/submodule-update (2021-10-13) 9 commits
 . submodule--helper: rename helper functions
 . submodule--helper: remove unused helpers
 . submodule: move core cmd_update() logic to C
 . submodule--helper: run update using child process struct
 . submodule--helper: allow setting superprefix for init_submodule()
 . submodule--helper: refactor get_submodule_displaypath()
 . submodule--helper: rename helpers for update-clone
 . submodule--helper: get remote names from any repository
 . submodule--helper: split up ensure_core_worktree()

 Rewrite of "git submodule update" in C.

 Expecting a reroll?
 cf. <YWiXL+plA7GHfuVv@google.com>
 source: <20211013051805.45662-10-raykar.ath@gmail.com>

--------------------------------------------------
[Cooking]

* ab/auto-detect-zlib-compress2 (2022-01-24) 1 commit
 - compat: auto-detect if zlib has uncompress2()

 Notice older zlib to enable our replacement uncompress2()
 automatically.

 Will merge to 'next'?
 source: <xmqqr18x3s5s.fsf@gitster.g>


* en/plug-leaks-in-merge (2022-01-21) 2 commits
 - merge: fix memory leaks in cmd_merge()
 - merge-ort: fix memory leak in merge_ort_internal()

 Leakfix.

 Will merge to 'next'.
 source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>


* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
 - clone, submodule: pass partial clone filters to submodules

 "git clone --filter=... --recurse-submodules" only makes the
 top-level a partial clone, while submodules are fully cloned.  This
 behaviour is changed to pass the same filter down to the submodules.
 source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>


* js/sparse-vs-split-index (2022-01-23) 3 commits
 - split-index: it really is incompatible with the sparse index
 - t1091: disable split index
 - sparse-index: sparse index is disallowed when split index is active

 Mark in various places in the code that the sparse index and the
 split index features are mutually incompatible.

 Will merge to 'next'.
 source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>


* js/test-unset-trace2-parents (2022-01-20) 1 commit
  (merged to 'next' on 2022-01-20 at ebb085e3e4)
 + test-lib: unset trace2 parent envvars

 Avoid tests that are run under GIT_TRACE2 set from failing
 unnecessarily.

 Will cook in 'next'.
 source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>


* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
 - sparse-checkout: create leading directory

 "git sparse-checkout init" failed to write into $GIT_DIR/info
 directory when the repository was created without one, which has
 been corrected to auto-create it.

 Will merge to 'next'.
 source: <20220121174441.3991963-1-jonathantanmy@google.com>


* rs/parse-options-lithelp-help (2022-01-20) 1 commit
 - parse-options: document bracketing of argh

 Comment update.
 source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>


* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 84da10b057)
 + merge-ort: avoid assuming all renames detected

 The merge-ort misbehaved when merge.renameLimit configuration is
 set too low and failed to find all renames.

 Will cook in 'next'.
 source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>


* jh/p4-various-fixups (2022-01-16) 23 commits
 . git-p4: seperate multiple statements onto seperate lines
 . git-p4: move inline comments to line above
 . git-p4: only seperate code blocks by a single empty line
 . git-p4: compare to singletons with "is" and "is not"
 . git-p4: normalize indentation of lines in conditionals
 . git-p4: ensure there is a single space around all operators
 . git-p4: ensure every comment has a single #
 . git-p4: remove spaces between dictionary keys and colons
 . git-p4: remove redundant backslash-continuations inside brackets
 . git-p4: remove extraneous spaces before function arguments
 . git-p4: place a single space after every comma
 . git-p4: removed brackets when assigning multiple return values
 . git-p4: remove spaces around default arguments
 . git-p4: remove padding from lists, tuples and function arguments
 . git-p4: sort and de-duplcate pylint disable list
 . git-p4: remove commented code
 . git-p4: convert descriptive class and function comments into docstrings
 . git-p4: improve consistency of docstring formatting
 . git-p4: indent with 4-spaces
 . git-p4: remove unneeded semicolons from statements
 . git-p4: add blank lines between functions and class definitions
 . Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
 . Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
 (this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)

 Various cleanups to "git p4".

 Breaks its own test suite.
 source: <20220116160550.514637-1-jholdsworth@nvidia.com>


* po/readme-mention-contributor-hints (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 7e14690eb9)
 + README.md: add CodingGuidelines and a link for Translators

 Doc update.

 Will cook in 'next'.
 source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>


* tl/doc-cli-options-first (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 9ec14cfe73)
 + git-cli.txt: clarify "options first and then args"

 We explain that revs come first before the pathspec among command
 line arguments, but did not spell out that dashed options come
 before other args, which has been corrected.

 Will cook in 'next'.
 source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>


* rs/bisect-executable-not-found (2022-01-19) 4 commits
 - bisect--helper: double-check run command on exit code 126 and 127
 - bisect: document run behavior with exit codes 126 and 127
 - bisect--helper: release strbuf and strvec on run error
 - bisect--helper: report actual bisect_state() argument on error

 source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>


* ds/sparse-checkout-requires-per-worktree-config (2022-01-14) 6 commits
 . worktree: copy sparse-checkout patterns and config on add
 . sparse-checkout: use repo_config_set_worktree_gently()
 . config: add repo_config_set_worktree_gently()
 . worktree: add 'init-worktree-config' subcommand
 . config: make some helpers repo-aware
 . setup: use a repository when upgrading format

 "git sparse-checkout" wants to work with per-worktree configration,
 but did not work well in a worktree attached to a bare repository.

 Expecting an update.
 cf. <1db0f601-4769-15c0-cd58-ecddfa1fc9d5@gmail.com>
 Introduces new leaks.
 cf. https://github.com/git/git/runs/4823667255?check_suite_focus=true
 source: <pull.1101.v3.git.1640727143.gitgitgadget@gmail.com>


* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
  (merged to 'next' on 2022-01-19 at ea57b2c9a6)
 + builtin add -p: fix hunk splitting
 + t3701: clean up hunk splitting tests

 "git add -p" rewritten in C regressed hunk splitting in some cases,
 which has been corrected.

 Will cook in 'next'.
 source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>


* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
  (merged to 'next' on 2022-01-20 at e7616428eb)
 + fetch: help translators by reusing the same message template
  (merged to 'next' on 2022-01-19 at 0f15147cfa)
 + fetch --negotiate-only: do not update submodules
 + fetch: skip tasks related to fetching objects
 + fetch: use goto cleanup in cmd_fetch()

 "git fetch --negotiate-only" is an internal command used by "git
 push" to figure out which part of our history is missing from the
 other side.  It should never recurse into submodules even when
 fetch.recursesubmodules configuration variable is set, nor it
 should trigger "gc".  The code has been tightened up to ensure it
 only does common ancestry discovery and nothing else.

 Will cook in 'next'.
 source: <20220119000056.58503-1-chooglen@google.com>


* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 49d529bfd7)
 + git-p4: fix instantiation of CalledProcessError
 (this branch is used by jh/p4-various-fixups.)

 Will cook in 'next'.
 source: <20220106214156.90967-1-jholdsworth@nvidia.com>


* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
  (merged to 'next' on 2022-01-10 at 54b36b4e66)
 + git-p4: don't print shell commands as python lists
 + git-p4: pass command arguments as lists instead of using shell
 + git-p4: don't select shell mode using the type of the command argument
 (this branch is used by jh/p4-various-fixups.)

 Will cook in 'next'.
 source: <20220106214035.90725-1-jholdsworth@nvidia.com>


* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
  (merged to 'next' on 2022-01-14 at 83a388a7e2)
 + pull --rebase: honor rebase.autostash when fast-forwarding

 "git pull --rebase" ignored the rebase.autostash configuration
 variable when the remote history is a descendant of our history,
 which has been corrected.

 Will cook in 'next'.
 source: <xmqqr19aayxp.fsf@gitster.g>


* rs/grep-expr-cleanup (2022-01-06) 4 commits
  (merged to 'next' on 2022-01-10 at b70a3bb0fa)
 + grep: use grep_and_expr() in compile_pattern_and()
 + grep: extract grep_binexp() from grep_or_expr()
 + grep: use grep_not_expr() in compile_pattern_not()
 + grep: use grep_or_expr() in compile_pattern_or()

 Code clean-up.

 Will cook in 'next'.
 source: <cover.1641498525.git.me@ttaylorr.com>


* fs/ssh-signing-crlf (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-19 at 76b86faafb)
 + gpg-interface: trim CR from ssh-keygen

 The code path that verifies signatures made with ssh were made to
 work better on a system with CRLF line endings.

 Will cook in 'next'.
 source: <20220107090735.580225-1-fs@gigacodes.de>


* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
  (merged to 'next' on 2022-01-10 at 329fd6e09a)
 + stable-qsort: avoid using potentially unaligned access
 + compat/qsort_s.c: avoid using potentially unaligned access

 Fix a hand-rolled alloca() imitation that may have violated
 alignment requirement of data being sorted in compatibility
 implementation of qsort_s() and stable qsort().

 Will cook in 'next'.
 source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
 source: <xmqqzgo76xpj.fsf@gitster.g>


* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
 - refs: skip hooks when deleting uncovered packed refs
 - refs: do not execute reference-transaction hook on packing refs
 - refs: demonstrate excessive execution of the reference-transaction hook
 - refs: allow skipping the reference-transaction hook
 - refs: allow passing flags when beginning transactions
 - refs: extract packed_refs_delete_refs() to allow control of transaction

 Because a deletion of ref would need to remove it from both the
 loose ref store and the packed ref store, a delete-ref operation
 that logically removes one ref may end up invoking ref-transaction
 hook twice, which has been corrected.

 Introduces new leaks when merged to 'seen'.
 source: <cover.1642406989.git.ps@pks.im>


* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-10 at 32497a67d5)
 + apply: use strsets to track symlinks

 "git apply" (ab)used the util pointer of the string-list to keep
 track of how each symbolic link needs to be handled, which has been
 simplified by using strset.

 Will cook in 'next'.
 source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>


* ld/sparse-index-bash-completion (2022-01-10) 3 commits
 - sparse-checkout: limit tab completion to a single level
 - sparse-checkout: custom tab completion
 - sparse-checkout: custom tab completion tests

 The command line completion (in contrib/) learns to complete
 arguments give to "git sparse-checkout" command.
 source: <pull.1108.v3.git.1641841193.gitgitgadget@gmail.com>


* bc/clarify-eol-attr (2022-01-12) 2 commits
 - docs: correct documentation about eol attribute
 - t0027: add tests for eol without text in .gitattributes

 Doc and test update around the eol attribute.
 source: <20220111021507.531736-1-sandals@crustytoothpaste.net>


* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
 - git-rev-list: add --exclude-first-parent-only flag

 "git log" and friends learned an option --exclude-first-parent-only
 to propagate UNINTERESTING bit down only along the first-parent
 chain, just like --first-parent option shows commits that lack the
 UNINTERESTING bit only along the first-parent chain.
 source: <20220111213941.30129-1-jerry@skydio.com>


* en/present-despite-skipped (2022-01-14) 6 commits
 - Accelerate clear_skip_worktree_from_present_files() by caching
 - Update documentation related to sparsity and the skip-worktree bit
 - repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
 - unpack-trees: fix accidental loss of user changes
 - t1011: add testcase demonstrating accidental loss of user modifications
 - Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
 (this branch uses vd/sparse-clean-etc.)

 In sparse-checkouts, files mis-marked as missing from the working tree
 could lead to later problems.  Such files were hard to discover, and
 harder to correct.  Automatically detecting and correcting the marking
 of such files has been added to avoid these problems.
 source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>


* bc/csprng-mktemps (2022-01-17) 2 commits
 - wrapper: use a CSPRNG to generate random file names
 - wrapper: add a helper to generate numbers from a CSPRNG

 Pick a better random number generator and use it when we prepare
 temporary filenames.

 Are we solving the right problem?
 cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
 source: <20220117215617.843190-1-sandals@crustytoothpaste.net>


* jc/reflog-parse-options (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-12 at 1659e49c4b)
 + builtin/reflog.c: use parse-options api for expire, delete subcommands
 + Merge branch 'ab/reflog-prep' into jc/reflog-parse-options

 Use the parse-options API in "git reflog" command.

 Will cook in 'next'.
 source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>


* vd/sparse-clean-etc (2022-01-13) 9 commits
 - update-index: reduce scope of index expansion in do_reupdate
 - update-index: integrate with sparse index
 - update-index: add tests for sparse-checkout compatibility
 - checkout-index: integrate with sparse index
 - checkout-index: add --ignore-skip-worktree-bits option
 - checkout-index: expand sparse checkout compatibility tests
 - clean: integrate with sparse index
 - reset: reorder wildcard pathspec conditions
 - reset: fix validation in sparse index test
 (this branch is used by en/present-despite-skipped.)

 "git update-index", "git checkout-index", and "git clean" are
 taught to work better with the sparse checkout feature.
 source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>


* ms/update-index-racy (2022-01-07) 4 commits
  (merged to 'next' on 2022-01-14 at 705a33f63b)
 + update-index: refresh should rewrite index in case of racy timestamps
 + t7508: add tests capturing racy timestamp handling
 + t7508: fix bogus mtime verification
 + test-lib: introduce API for verifying file mtime

 "git update-index --refresh" has been taught to deal better with
 racy timestamps (just like "git status" already does).

 Will cook in 'next'.
 source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>


* jc/find-header (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 8a13b4f0b3)
 + receive-pack.c: consolidate find header logic

 Code clean-up.

 Will cook in 'next'.
 source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>


* jc/name-rev-stdin (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-19 at a58e05fabe)
 + name-rev.c: use strbuf_getline instead of limited size buffer
 + name-rev: deprecate --stdin in favor of --annotate-stdin

 "git name-rev --stdin" does not behave like usual "--stdin" at
 all.  Start the process of renaming it to "--annotate-stdin".

 Will cook in 'next'.
 source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>


* en/remerge-diff (2022-01-21) 11 commits
 - diff-merges: avoid history simplifications when diffing merges
 - merge-ort: mark conflict/warning messages from inner merges as omittable
 - show, log: include conflict/warning messages in --remerge-diff headers
 - diff: add ability to insert additional headers for paths
 - merge-ort: format messages slightly different for use in headers
 - merge-ort: mark a few more conflict messages as omittable
 - merge-ort: capture and print ll-merge warnings in our preferred fashion
 - ll-merge: make callers responsible for showing warnings
 - log: clean unneeded objects during `log --remerge-diff`
 - show, log: provide a --remerge-diff capability
 - Merge branch 'ns/tmp-objdir' into en/remerge-diff

 "git log --remerge-diff" shows the difference from mechanical merge
 result and the merge result that is actually recorded.

 Will merge to 'next'?
 source: <pull.1103.v4.git.1642792341.gitgitgadget@gmail.com>


* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
 - fixup! fetch-pack: parameterize message containing 'ready' keyword
 - fetch-pack: parameterize message containing 'ready' keyword

 L10n support for a few error messages.

 Expecting an ack for fixup.
 source: <20211222075805.19027-1-bagasdotme@gmail.com>


* gc/branch-recurse-submodules (2022-01-10) 6 commits
 - branch: add --recurse-submodules option for branch creation
 - builtin/branch: clean up action-picking logic in cmd_branch()
 - branch: add a dry_run parameter to create_branch()
 - branch: make create_branch() always create a branch
 - branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
 - Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

 "git branch" learned the "--recurse-submodules" option.

 Expecting a reroll.
 cf. <kl6l7db6kvp2.fsf@chooglen-macbookpro.roam.corp.google.com>
 source: <20211220233459.45739-1-chooglen@google.com>


* hn/reftable-coverity-fixes (2022-01-20) 17 commits
 - reftable: add print functions to the record types
 - reftable: make reftable_record a tagged union
 - reftable: remove outdated file reftable.c
 - reftable: implement record equality generically
 - reftable: make reftable-record.h function signatures const correct
 - reftable: handle null refnames in reftable_ref_record_equal
 - reftable: drop stray printf in readwrite_test
 - reftable: order unittests by complexity
 - reftable: all xxx_free() functions accept NULL arguments
 - reftable: fix resource warning
 - reftable: ignore remove() return value in stack_test.c
 - reftable: check reftable_stack_auto_compact() return value
 - reftable: fix resource leak blocksource.c
 - reftable: fix resource leak in block.c error path
 - reftable: fix OOB stack write in print functions
 - Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
 - Merge branch 'hn/reftable' into hn/reftable-coverity-fixes

 Problems identified by Coverity in the reftable code have been
 corrected.

 Will merge to 'next'.
 source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>


* tb/midx-bitmap-corruption-fix (2022-01-04) 9 commits
 - pack-bitmap.c: gracefully fallback after opening pack/MIDX
 - midx: read `RIDX` chunk when present
 - t/lib-bitmap.sh: parameterize tests over reverse index source
 - t5326: move tests to t/lib-bitmap.sh
 - t5326: extract `test_rev_exists`
 - t5326: drop unnecessary setup
 - pack-revindex.c: instrument loading on-disk reverse index
 - midx.c: make changing the preferred pack safe
 - t5326: demonstrate bitmap corruption after permutation

 A bug that made multi-pack bitmap and the object order out-of-sync
 (hence the .midx data gets corrupted) has been fixed.

 Waiting for a hopefully final review.
 cf. <Ydceeo33Yt4N%2FbrN@nand.local>
 source: <cover.1641320129.git.me@ttaylorr.com>


* pw/fix-some-issues-in-reset-head (2021-12-08) 14 commits
 - rebase -m: don't fork git checkout
 - rebase --apply: set ORIG_HEAD correctly
 - rebase --apply: fix reflog
 - reset_head(): take struct rebase_head_opts
 - rebase: cleanup reset_head() calls
 - reset_head(): make default_reflog_action optional
 - reset_head(): factor out ref updates
 - create_autostash(): remove unneeded parameter
 - reset_head(): remove action parameter
 - rebase --apply: don't run post-checkout hook if there is an error
 - rebase: do not remove untracked files on checkout
 - rebase: pass correct arguments to post-checkout hook
 - t5403: refactor rebase post-checkout hook tests
 - rebase: factor out checkout for up to date branch

 Fix "some issues" in a helper function reset_head().

 Expecting a reroll.
 cf. <xmqqk0gdskkh.fsf@gitster.g>
 cf. <xmqqwnkdr3xb.fsf@gitster.g>
 cf. <xmqqpmq5r3j9.fsf@gitster.g>
 cf. <xmqqczm5r34h.fsf@gitster.g>
 cf. <CABPp-BEHW4VLG18twcM_8iOco1jZ2iuGT+KN8aS+-sAAnBhTnw@mail.gmail.com>
 source: <pull.1049.v2.git.1638975481.gitgitgadget@gmail.com>


* ab/cat-file (2022-01-12) 12 commits
  (merged to 'next' on 2022-01-12 at ee4d43041d)
 + cat-file: s/_/-/ in typo'd usage_msg_optf() message
 + cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
  (merged to 'next' on 2022-01-05 at e145efa605)
 + cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
 + object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
 + cat-file: correct and improve usage information
 + cat-file: fix remaining usage bugs
 + cat-file: make --batch-all-objects a CMDMODE
 + cat-file: move "usage" variable to cmd_cat_file()
 + cat-file docs: fix SYNOPSIS and "-h" output
 + parse-options API: add a usage_msg_optf()
 + cat-file tests: test messaging on bad objects/paths
 + cat-file tests: test bad usage

 Assorted updates to "git cat-file", especially "-h".

 Will cook in 'next'.
 source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
 source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>


* ab/grep-patterntype (2022-01-18) 10 commits
 - grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED
 - grep: simplify config parsing and option parsing
 - grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
 - grep.h: make "grep_opt.pattern_type_option" use its enum
 - grep API: call grep_config() after grep_init()
 - grep.c: don't pass along NULL callback value
 - built-ins: trust the "prefix" from run_builtin()
 - grep tests: add missing "grep.patternType" config tests
 - log tests: check if grep_config() is called by "log"-like cmds
 - grep.h: remove unused "regex_t regexp" from grep_opt

 Some code clean-up in the "git grep" machinery.

 Looking good, except for the last two steps.
 source: <cover-v8-00.10-00000000000-20220118T155211Z-avarab@gmail.com>


* js/use-builtin-add-i (2021-12-01) 2 commits
 - add -i: default to the built-in implementation
 - t2016: require the PERL prereq only when necessary

 "git add -i" was rewritten in C some time ago and has been in
 testing; the reimplementation is now exposed to general public by
 default.

 On hold.
 There are known breakages on macOS.
 cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
 source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>


* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
  (merged to 'next' on 2022-01-19 at 3c2df266eb)
 + config: include file if remote URL matches a glob
 + config: make git_config_include() static

 The conditional inclusion mechanism of configuration files using
 "[includeIf <condition>]" learns to base its decision on the
 URL of the remote repository the repository interacts with.

 Will cook in 'next'.
 source: <cover.1642527965.git.jonathantanmy@google.com>


* ab/ambiguous-object-name (2022-01-13) 6 commits
 - object-name: re-use "struct strbuf" in show_ambiguous_object()
 - object-name: iterate ambiguous objects before showing header
 - object-name: show date for ambiguous tag objects
 - object-name: make ambiguous object output translatable
 - object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
 - object-name tests: add tests for ambiguous object blind spots

 Error output given in response to an ambiguous object name has been
 improved.
 source: <cover-v7-0.6-00000000000-20220111T130811Z-avarab@gmail.com>


* tl/ls-tree-oid-only (2022-01-13) 9 commits
 - ls-tree.c: introduce "--format" option
 - cocci: allow padding with `strbuf_addf()`
 - ls-tree.c: introduce struct "show_tree_data"
 - ls-tree.c: support --object-only option for "git-ls-tree"
 - ls-tree: optimize naming and handling of "return" in show_tree()
 - ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
 - ls-tree: use "enum object_type", not {blob,tree,commit}_type
 - ls-tree: add missing braces to "else" arms
 - ls-tree: remove commented-out code

 "git ls-tree" learns "--oid-only" option, similar to "--name-only",
 and more generalized "--format" option.
 source: <cover.1641978175.git.dyroneteng@gmail.com>


* ab/config-based-hooks-2 (2022-01-07) 17 commits
  (merged to 'next' on 2022-01-19 at 594b6da22c)
 + run-command: remove old run_hook_{le,ve}() hook API
 + receive-pack: convert push-to-checkout hook to hook.h
 + read-cache: convert post-index-change to use hook.h
 + commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
 + git-p4: use 'git hook' to run hooks
 + send-email: use 'git hook run' for 'sendemail-validate'
 + git hook run: add an --ignore-missing flag
 + hooks: convert worktree 'post-checkout' hook to hook library
 + hooks: convert non-worktree 'post-checkout' hook to hook library
 + merge: convert post-merge to use hook.h
 + am: convert applypatch-msg to use hook.h
 + rebase: convert pre-rebase to use hook.h
 + hook API: add a run_hooks_l() wrapper
 + am: convert {pre,post}-applypatch to use hook.h
 + gc: use hook library for pre-auto-gc hook
 + hook API: add a run_hooks() wrapper
 + hook: add 'run' subcommand

 More "config-based hooks".

 Will cook in 'next'.
 source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>


* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
 - fixup! t7527: create test for fsmonitor--daemon
 - fixup! t/perf/p7519: speed up test on Windows
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - fsmonitor: force update index after large responses
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon: periodically truncate list of modified files
 - t/perf/p7519: add fsmonitor--daemon test cases
 - t/perf/p7519: speed up test on Windows
 - t/helper/test-chmtime: skip directories on Windows
 - t/perf: avoid copying builtin fsmonitor files into test repo
 - t7527: create test for fsmonitor--daemon
 - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
 - help: include fsmonitor--daemon feature flag in version info
 - fsmonitor--daemon: implement handle_client callback
 - compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 - compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
 - compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement 'start' command
 - fsmonitor--daemon: implement 'run' command
 - compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 - compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement 'stop' and 'status' commands
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: document builtin fsmonitor
 - fsmonitor: use IPC to query the builtin FSMonitor daemon
 - fsmonitor: config settings are repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - fsmonitor: enhance existing comments

 Built-in fsmonitor (part 2).

 Expecting a reroll.
 Seems that the discussion stalled.
 cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
 source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>


* es/superproject-aware-submodules (2021-11-18) 5 commits
 - submodule: use config to find superproject worktree
 - submodule: record superproject gitdir during 'update'
 - submodule: record superproject gitdir during absorbgitdirs
 - introduce submodule.superprojectGitDir record
 - t7400-submodule-basic: modernize inspect() helper

 A configuration variable in a submodule points at the location of
 the superproject it is bound to (RFC).

 Expecting a reroll.
 cf. <20211117234300.2598132-1-jonathantanmy@google.com>
 source: <20211117005701.371808-1-emilyshaffer@google.com>


* ab/only-single-progress-at-once (2022-01-07) 7 commits
 - *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
 - pack-bitmap-write.c: don't return without stop_progress()
 - progress.c: add temporary variable from progress struct
 - progress.c tests: test some invalid usage
 - progress.c tests: make start/stop commands on stdin
 - progress.c test helper: add missing braces
 - leak tests: fix a memory leak in "test-progress" helper

 Further tweaks on progress API.

 Getting there.
 source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>

^ permalink raw reply	[relevance 2%]

* [PATCH v2 03/20] Ensure index matches head before invoking merge machinery, round N
  @ 2019-07-26 15:52  2%   ` Elijah Newren
    1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2019-07-26 15:52 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Johannes Schindelin, Elijah Newren

This is the bug that just won't die; there always seems to be another
form of it somewhere.  See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:

<quick summary>

builtin/merge.c contains this important requirement for merge
strategies:

    ...the index must be in sync with the head commit.  The strategies are
    responsible to ensure this.

This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:

  * we silently throw away changes the user had staged before the merge

  * we accidentally (and silently) include changes in the merge that
    were not part of either of the branches/trees being merged

Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found.  But, fear not: the bugs from this were fixed in commit
  ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge).  And it was fixed
again in commit
  160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
  3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
  65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
  eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)

...with multiple testcases added to the testsuite that could be
enumerated in even more commits.

Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...

</quick summary>

Unfortunately, "ever after" apparently denotes a limited time and it
expired today.  The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0.  Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases.  That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."

Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests.  It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary.  This unconditional dropping
and reloading of the cache masked a few bugs:

  * builtin/merge-recursive.c: didn't even bother loading the index.

  * builtin/stash.c: feels like a fake 'builtin' because it repeatedly
    invokes git subprocesses all over the place, mixed with other
    operations.  In particular, invoking "git reset" will reset the
    index on disk, but the parent process that invoked it won't
    automatically have its in-memory index updated.

  * t3030-merge-recursive.h: this test has always been broken in that it
    didn't make sure to make index match head before running.  But, it
    didn't care about the index or even the merge result, just the
    verbose output while running.  While commit eddd1a411d93
    ("merge-recursive: enforce rule that index matches head before
    merging", 2018-06-30) should have uncovered this broken test, it
    used a test_must_fail wrapper around the merge-recursive call
    because it was known that the merge resulted in a rename/rename
    conflict.  Thus, that fix only made this test fail for a different
    reason, and since the index == head check didn't happen until after
    coming all the way back out of the recursion, the testcase had
    enough information to pass the one check that it did perform.

So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 builtin/merge-recursive.c  | 4 ++++
 builtin/stash.c            | 2 ++
 t/t3030-merge-recursive.sh | 9 ++++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
 #include "builtin.h"
 #include "commit.h"
 #include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
 		die(_("not handling anything other than two heads merge."));
 
+	if (repo_read_index_unmerged(the_repository))
+		die_resolve_conflict("merge");
+
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
 				return error(_("could not save index tree"));
 
 			reset_head();
+			discard_cache();
+			read_cache();
 		}
 	}
 
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
 test_expect_success 'merge-recursive remembers the names of all base trees' '
 	git reset --hard HEAD &&
 
+	# make the index match $c1 so that merge-recursive below does not
+	# fail early
+	git diff --binary HEAD $c1 -- | git apply --cached &&
+
 	# more trees than static slots used by oid_to_hex()
 	for commit in $c0 $c2 $c4 $c5 $c6 $c7
 	do
 		git rev-parse "$commit^{tree}"
 	done >trees &&
 
-	# ignore the return code -- it only fails because the input is weird
+	# ignore the return code; it only fails because the input is weird...
 	test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
 
+	# ...but make sure it fails in the expected way
+	test_i18ngrep CONFLICT.*rename/rename out &&
+
 	# merge-recursive prints in reverse order, but we do not care
 	sort <trees >expect &&
 	sed -n "s/^virtual //p" out | sort >actual &&
-- 
2.22.0.550.g71c37a0928.dirty


^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (Aug 2009, #03; Thu, 20)
@ 2009-08-21  2:48  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-08-21  2:48 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

After the 1.6.5 cycle, the next release will be 1.7.0, and we will push
out the planned "push safety" change.  1.7.0 would be a good time to
introduce "justifiable" changes that are not strictly backward compatible.

During 1.6.5 cycle, 'next' will hold topics meant for 1.6.5 and 1.7.0.

--------------------------------------------------
[New Topics]

* aj/fix-read-tree-from-scratch (2009-08-17) 1 commit
  (merged to 'next' on 2009-08-20 at 7a04133)
 + read-tree: Fix regression with creation of a new index file.

* as/maint-graph-interesting-fix (2009-08-18) 1 commit.
 - graph API: fix bug in graph_is_interesting()

* jc/1.7.0-status (2009-08-15) 7 commits
 - git-status: adjust tests
 - git status: not "commit --dry-run" anymore
 - git stat -s: short status output
 - git stat: pathspec limits, unlike traditional "git status"
 - git stat: show traditional status headers and trailers as well
 - git stat: honor relative paths setting
 - git stat: the beginning
 (this branch uses jc/shortstatus.)

* jc/maint-checkout-index-to-prefix (2009-08-16) 1 commit
  (merged to 'next' on 2009-08-20 at 2f6aea2)
 + check_path(): allow symlinked directories to checkout-index --prefix

* jc/maint-unpack-objects-strict (2009-08-13) 1 commit.
 - Fix "unpack-objects --strict"

* jh/submodule-foreach (2009-08-20) 9 commits
  (merged to 'next' on 2009-08-20 at 671bea4)
 + git clone: Add --recursive to automatically checkout (nested) submodules
 + t7407: Use 'rev-parse --short' rather than bash's substring expansion notation
  (merged to 'next' on 2009-08-18 at f4a881d)
 + git submodule status: Add --recursive to recurse into nested submodules
 + git submodule update: Introduce --recursive to update nested submodules
 + git submodule foreach: Add --recursive to recurse into nested submodules
 + git submodule foreach: test access to submodule name as '$name'
 + Add selftest for 'git submodule foreach'
 + git submodule: Cleanup usage string and add option parsing to cmd_foreach()
 + git submodule foreach: Provide access to submodule name, as '$name'

* jl/submodule-summary-diff-files (2009-08-15) 2 commits
  (merged to 'next' on 2009-08-15 at 165bd8e)
 + Documentaqtion/git-submodule.txt: Typofix
  (merged to 'next' on 2009-08-14 at a702e78)
 + git submodule summary: add --files option

* lh/short-decorate (2009-08-15) 1 commit
  (merged to 'next' on 2009-08-18 at b8c1d96)
 + git-log: allow --decorate[=short|full]

* oa/stash-na (2009-08-11) 1 commit
  (merged to 'next' on 2009-08-14 at 12c2e2b)
 + git stash: Give friendlier errors when there is nothing to apply

* sr/gfi-options (2009-08-13) 3 commits
 - fast-import: test the new option command
 - fast-import: add option command
 - fast-import: put option parsing code in seperate functions

--------------------------------------------------
[Graduated to "master"]

* bc/maint-am-email (Thu Aug 6 20:08:13 2009 -0500) 2 commits
 + git-am: print fair error message when format detection fails
 + am: allow individual e-mail files as input

It seems that the "not mbox but a single piece of e-mail" format was
something many people relied on.  Hopefully this can also be sent
to 'maint'.

* js/maint-cover-letter-non-ascii (Mon Aug 10 18:22:22 2009 +0200) 2 commits
 + Correctly mark cover letters' encodings if they are not pure ASCII
 + Expose the has_non_ascii() function

* jk/maint-merge-msg-fix (Sun Aug 9 06:02:51 2009 -0400) 3 commits
 + merge: indicate remote tracking branches in merge message
 + merge: fix incorrect merge message for ambiguous tag/branch
 + add tests for merge message headings

* jc/maint-clean-nested-dir-safety (Tue Jun 30 15:33:45 2009 -0700) 1 commit
 + clean: require double -f options to nuke nested git repository and
   work tree

--------------------------------------------------
[Stalled]

* cc/sequencer-rebase-i (2009-08-05) 8 commits.
 - rebase -i: use "git sequencer--helper --reset-hard"
 - sequencer: add "--reset-hard" option to "git sequencer--helper"
 - sequencer: add comments about reset_almost_hard()
 - sequencer: add "reset_almost_hard()" and related functions
 - rebase -i: use "git sequencer--helper --make-patch"
 - sequencer: free memory used in "make_patch" function
 - sequencer: add "make_patch" function to save a patch
 - sequencer: add "builtin-sequencer--helper.c"

More sequencer updates.  I didn't look at the latest round that had a
handful "oops, fix that earlier botch" patches, expecting a cleaner
reroll (which hasn't happened yet).

* pb/tracking (2009-07-16) 7 commits.
 . branch.c: if remote is not config'd for branch, don't try delete push config
 . branch, checkout: introduce autosetuppush
 . move deletion of merge configuration to branch.c
 . remote: add per-remote autosetupmerge and autosetuprebase configuration
 . introduce a struct tracking_config
 . branch: install_branch_config and struct tracking refactoring
 . config: allow false and true values for branch.autosetuprebase

Has been ejected from 'pu' for some time, expecting a reroll.

* db/vcs-helper (2009-08-09) 17 commits
 - Allow helpers to request marks for fast-import
 - Allow helpers to report in "list" command that the ref is unchanged
 - Add support for "import" helper command
 - transport-helper_init(): fix a memory leak in error path
 - Add a config option for remotes to specify a foreign vcs
 - Allow programs to not depend on remotes having urls
 - Allow fetch to modify refs
 - Use a function to determine whether a remote is valid
 - Use a clearer style to issue commands to remote helpers
  (merged to 'next' on 2009-08-07 at f3533ba)
 + Makefile: install hardlinks for git-remote-<scheme> supported by libcurl if possible
 + Makefile: do not link three copies of git-remote-* programs
 + Makefile: git-http-fetch does not need expat
  (merged to 'next' on 2009-08-06 at 15da79d)
 + http-fetch: Fix Makefile dependancies
 + Add transport native helper executables to .gitignore
  (merged to 'next' on 2009-08-05 at 33d491e)
 + git-http-fetch: not a builtin
 + Use an external program to implement fetching with curl
 + Add support for external programs for handling native fetches
 (this branch is used by jh/cvs-helper.)

There was a discussion that suggests that the use of colon ':' before vcs
helper name needs to be corrected.  Nothing happened since.

* je/send-email-no-subject (2009-08-05) 1 commit
 - send-email: confirm on empty mail subjects

This seems to break t9001.  Near the tip of 'pu' I have a iffy
workaround.

--------------------------------------------------
[Cooking]

* ld/p4 (2009-07-30) 1 commit
  (merged to 'next' on 2009-08-14 at 36d310d)
 + git-p4: stream from perforce to speed up clones

Should graduate to 'master' soon.

* mr/gitweb-xz (2009-08-06) 3 commits
  (merged to 'next' on 2009-08-14 at b63b8e6)
 + gitweb: add support for XZ compressed snapshots
 + gitweb: update INSTALL regarding specific snapshot settings
 + gitweb: support to globally disable a snapshot format

Should graduate to 'master' soon.

* jh/cvs-helper (2009-08-18) 7 commits
 - More fixes to the git-remote-cvs installation procedure
 - Fix the Makefile-generated path to the git_remote_cvs package
   in git-remote-cvs
 - Add simple selftests of git-remote-cvs functionality
 - git-remote-cvs: Remote helper program for CVS repositories
 - 2/2: Add Python support library for CVS remote helper
 - 1/2: Add Python support library for CVS remote helper
 - Basic build infrastructure for Python scripts
 (this branch uses db/vcs-helper.)

Builds on db/vcs-helper.  The testing of Python part seemed to be
still fragile even with the latest fix on one of my boches with an
earlier round already installed, but I didn't look very deeply before
removing the older installation.

* jc/verify-pack-stat (2009-08-07) 1 commit
  (merged to 'next' on 2009-08-10 at f80d0e9)
 + verify-pack --stat-only: show histogram without verifying

* lt/block-sha1 (2009-08-17) 4 commits
  (merged to 'next' on 2009-08-18 at 67a1ce8)
 + remove ARM and Mozilla SHA1 implementations
 + block-sha1: guard gcc extensions with __GNUC__
 + make sure byte swapping is optimal for git
 + block-sha1: make the size member first in the context struct

Finishing touches ;-)  There were a few Solaris portability patches
floated around that I didn't pick up, waiting for them to finalize.

* nd/sparse (2009-08-11) 8 commits
 . --sparse for porcelains
 . Support sparse checkout in unpack_trees() and read-tree
 . unpack-trees.c: generalize verify_* functions
 . dir.c: export excluded_1() and add_excludes_from_file_1()
 . excluded_1(): support exclude "directories" in index
 . Read .gitignore from index if it is assume-unchanged
 . Avoid writing to buffer in add_excludes_from_file_1()
  (merged to 'next' on 2009-08-20 at ea167d7)
 + Prevent diff machinery from examining assume-unchanged entries on worktree

The first one was an independent fix; the rest will be discarded and
replaced with the "return of no-checkout" series.

* bc/mailsplit-cr-at-eol (2009-08-04) 4 commits
  (merged to 'next' on 2009-08-06 at 6bc7c5c)
 + Allow mailsplit (and hence git-am) to handle mails with CRLF line-endings
 + builtin-mailsplit.c: remove read_line_with_nul() since it is no longer used
 + builtin-mailinfo,builtin-mailsplit: use strbufs
 + strbuf: add new function strbuf_getwholeline()

Will merge.

* gb/apply-ignore-whitespace (2009-08-04) 1 commit
  (merged to 'next' on 2009-08-06 at 59e2c86)
 + git apply: option to ignore whitespace differences

Will merge.

* cc/replace (2009-05-27) 14 commits.
  (merged to 'next' on 2009-08-02 at b9c4bc0)
 + t6050: check pushing something based on a replaced commit
 + Documentation: add documentation for "git replace"
 + Add git-replace to .gitignore
 + builtin-replace: use "usage_msg_opt" to give better error messages
 + parse-options: add new function "usage_msg_opt"
 + builtin-replace: teach "git replace" to actually replace
 + Add new "git replace" command
 + environment: add global variable to disable replacement
 + mktag: call "check_sha1_signature" with the replacement sha1
 + replace_object: add a test case
 + object: call "check_sha1_signature" with the replacement sha1
 + sha1_file: add a "read_sha1_file_repl" function
 + replace_object: add mechanism to replace objects found in "refs/replace/"
 + refs: add a "for_each_replace_ref" function

Will merge.

* jc/1.7.0-diff-whitespace-only-status (2009-05-23) 2 commits.
  (merged to 'next' on 2009-08-02 at 9c08420)
 + diff: Rename QUIET internal option to QUICK
 + diff: change semantics of "ignore whitespace" options

For 1.7.0.  This changes exit code from "git diff --ignore-whitespace" and
friends when there is no actual output.  It is a backward incompatible
change, but we could argue that it is a bugfix.

* jc/1.7.0-push-safety (2009-02-09) 2 commits
  (merged to 'next' on 2009-08-02 at 38b82fe)
 + Refuse deleting the current branch via push
 + Refuse updating the current branch in a non-bare repository via push

For 1.7.0.

* jn/gitweb-blame (2009-08-06) 3 commits
 - gitweb: Create links leading to 'blame_incremental' using JavaScript
 - gitweb: Incremental blame (WIP)
 - gitweb: Add optional "time to generate page" info in footer

* jc/shortstatus (2009-08-15) 11 commits
  (merged to 'next' on 2009-08-15 at 7e40766)
 + git commit --dry-run -v: show diff in color when asked
 + Documentation/git-commit.txt: describe --dry-run
  (merged to 'next' on 2009-08-12 at 53bda17)
 + wt-status: collect untracked files in a separate "collect" phase
 + Make git_status_config() file scope static to builtin-commit.c
 + wt-status: move wt_status_colors[] into wt_status structure
 + wt-status: move many global settings to wt_status structure
 + commit: --dry-run
  (merged to 'next' on 2009-08-06 at fe8cb94)
 + status: show worktree status of conflicted paths separately
 + wt-status.c: rework the way changes to the index and work tree are summarized
 + diff-index: keep the original index intact
 + diff-index: report unmerged new entries
 (this branch is used by jc/1.7.0-status.)

Will cook for a bit more and then merge.

* jh/notes (2009-07-29) 8 commits.
 - t3302-notes-index-expensive: Speed up create_repo()
 - fast-import: Add support for importing commit notes
 - First draft of notes tree parser with support for fanout subtrees
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

The cvs-helper series depends on this one.

* tr/reset-checkout-patch (2009-08-18) 8 commits.
  (merged to 'next' on 2009-08-18 at e465bb3)
 + tests: disable interactive hunk selection tests if perl is not available
  (merged to 'next' on 2009-08-16 at 67896c4)
 + DWIM 'git stash save -p' for 'git stash -p'
 + Implement 'git stash save --patch'
 + Implement 'git checkout --patch'
 + Implement 'git reset --patch'
 + builtin-add: refactor the meat of interactive_add()
 + Add a small patch-mode testing library
 + git-apply--interactive: Refactor patch mode code
 (this branch uses js/stash-dwim.)

There was a discussion on better DWIMmery to (1) forbid "git stash save
--anything-with-dash" and (2) redirect with any option "git stash --opt"
to "git stash save --opt", to keep it flexible and safe at the same time.
I think it is a sane thing to do.

* js/stash-dwim (2009-07-27) 1 commit.
  (merged to 'next' on 2009-08-16 at 67896c4)
 + Make 'git stash -k' a short form for 'git stash save --keep-index'
 (this branch is used by tr/reset-checkout-patch.)

* jc/log-tz (2009-03-03) 1 commit.
 - Allow --date=local --date=other-format to work as expected

* jc/mailinfo-remove-brackets (2009-07-15) 1 commit.
 - mailinfo: -b option keeps [bracketed] strings that is not a [PATCH] marker

--------------------------------------------------
[I have been too busy to purge these]

* ar/maint-1.6.2-merge-recursive-d-f (2009-05-11) 2 commits.
 . Fix for a merge where a branch has an F->D transition
 . Add a reminder test case for a merge with F/D transition

* jc/merge-convert (2009-01-26) 1 commit.
 . git-merge-file: allow converting the results for the work tree

* lt/read-directory (2009-05-15) 3 commits.
 . Add initial support for pathname conversion to UTF-8
 . read_directory(): infrastructure for pathname character set conversion
 . Add 'fill_directory()' helper function for directory traversal

* ne/rev-cache (2009-08-17) 6 commits
 . support for path name caching of blobs/trees in rev-cache
 . full integration of rev-cache into git's revision walker, completed test suite
 . administrative functions for rev-cache, and start of integration into git
 . non-commit object support for rev-cache
 . bare minimum revision cache system, no integration with git
 . revision caching documentation: man page and technical discussion

* ps/blame (2009-03-12) 1 commit.
 . blame.c: start libifying the blame infrastructure

^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] GIT 1.6.3.rc4
  @ 2009-05-03 21:59  2% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-05-03 21:59 UTC (permalink / raw)
  To: git

A release candidate GIT 1.6.3.rc4 is available at the usual places
for testing:

  http://www.kernel.org/pub/software/scm/git/

  git-1.6.3.rc4.tar.{gz,bz2}			(source tarball)
  git-htmldocs-1.6.3.rc4.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.6.3.rc4.tar.{gz,bz2}		(preformatted docs)

The RPM binary packages for a few architectures are found in:

  testing/git-*-1.6.3.rc4-1.fc9.$arch.rpm	(RPM)

This is hopefully the final rc before the real thing; it includes the
updates to git-gui and gitk.

----------------------------------------------------------------

Changes since v1.6.3-rc3 are as follows:

Alex Riesen (3):
      git-gui: Update Russian translation
      improve error message in config.c
      gitk: Add Russian translation

Alexander Gavrilov (3):
      git-gui: Fix post-commit status with subject in non-locale encoding
      git-gui: Avoid an infinite rescan loop in handle_empty_diff.
      git-gui: Support more git version notations.

Allan Caffee (2):
      builtin-merge: fix a typo in an error message
      Documentation: fix a grammatical error in api-builtin.txt

Benjamin Kramer (1):
      daemon.c: fix segfault on OS X

Christian Stimming (1):
      gitk: Mark forgotten string for translation

Daniel A. Steffen (2):
      gitk: Fixes for Mac OS X TkAqua
      git-gui: Fixes for Mac OS X TkAqua

Eric Blake (2):
      Makefile: installing git in cygwin 1.7.0
      doc: consistently use ASCIIDOC_EXTRA

Felipe Contreras (2):
      git config: error when editing a repo config and not being in one
      Fix a bunch of pointer declarations (codestyle)

Ferry Huberts (1):
      git-gui: Ensure consistent usage of mergetool.keepBackup

Giuseppe Bilotta (1):
      gitk: Provide a window icon if possible

Jeff King (1):
      Makefile: fix NO_PERL bug with gitweb

Jens Lehmann (4):
      git-gui: Fix merge conflict display error when filename contains spaces
      git-gui: When calling post-commit hook wrong variable was cleared.
      git-gui: run post-checkout hook on checkout
      git-gui: run post-checkout hook after clone

Joerg Bornemann (1):
      git-gui: fix use of undeclared variable diff_empty_count

Johannes Schindelin (2):
      t5701: do not get stuck in empty-push/
      Rename core.unreliableHardlinks to core.createObject

Johannes Sixt (1):
      prune-packed: advanced progress even for non-existing fan-out directories

Junio C Hamano (3):
      diff -c -p: do not die on submodules
      merge-recursive: do not die on a conflicting submodule
      GIT 1.6.3-rc4

Linus Torvalds (1):
      grep: fix segfault when "git grep '('" is given

Mark Drago (1):
      Add semicolon to curly brace group in main Makefile

Markus Heidelberg (5):
      git-gui: don't hide the Browse button when resizing the repo chooser
      git-gui: fix deleting from the context menu with empty selection
      git-gui: use `git --html-path` to get the location of installed HTML docs
      git-gui (Win): make "Explore Working Copy" more robust
      git-gui (Win): make starting via "Git GUI Here" on .git/ possible

Michele Ballabio (2):
      gitk: Mark some more strings for translation
      gitk: Map KP_Divide to focus the search box

Pat Thoyts (4):
      gitk: Handle blobs containing a DOS end-of-file marker
      gitk: Remember and restore the window state with the geometry
      gitk: Handle external diff tool with spaces in the path
      gitk: Avoid crash if closed while reading references

Patrick Welche (1):
      NetBSD compilation fix

Paul Mackerras (4):
      gitk: Add a way to mark a commit, plus a "find descendant" command
      gitk: Add a command to compare two strings of commits
      gitk: Make .gitk a hidden file under windows
      gitk: Fix compare-commits function when we have local changes

Phil Lawrence (1):
      Append ampersand to "Target" of lnk files created by do_cygwin_shortcut

René Scharfe (1):
      ctype.c: fix typo in comment

Sam Hocevar (2):
      git-gui: various French translation fixes
      git-gui: minor spelling fix and string factorisation.

Sam Vilain (1):
      SubmittingPatches: itemize and reflect upon well written changes

Stephen Boyd (1):
      gitk: Provide a 32x32 window icon based on the git logo

Uwe Kleine-König (1):
      parseopt: fix documentation for --keep-dashdash

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Apr 2016, #08; Fri, 29)
@ 2016-04-29 22:04  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-29 22:04 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the eighths batch of topics of this
cycle.  On the 'maint' front, 2.8.2 is out.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* da/user-useconfigonly (2016-04-01) 2 commits
  (merged to 'next' on 2016-04-22 at 26845a5)
 + ident: give "please tell me" message upon useConfigOnly error
 + ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.


* jc/merge-refuse-new-root (2016-04-21) 2 commits
  (merged to 'next' on 2016-04-22 at 74eb957)
 + pull: pass --allow-unrelated-histories to "git merge"
 + t3033: avoid 'ambiguous refs' warning

 "git pull" has been taught to pass --allow-unrelated-histories
 option to underlying "git merge".


* jk/push-client-deadlock-fix (2016-04-20) 5 commits
  (merged to 'next' on 2016-04-22 at d59a2af)
 + t5504: drop sigpipe=ok from push tests
 + fetch-pack: isolate sigpipe in demuxer thread
 + send-pack: isolate sigpipe in demuxer thread
 + run-command: teach async threads to ignore SIGPIPE
 + send-pack: close demux pipe before finishing async process

 "git push" from a corrupt repository that attempts to push a large
 number of refs deadlocked; the thread to relay rejection notices
 for these ref updates blocked on writing them to the main thread,
 after the main thread at the receiving end notices that the push
 failed and decides not to read these notices and return a failure.


* js/replace-edit-use-editor-configuration (2016-04-20) 1 commit
  (merged to 'next' on 2016-04-22 at 8df6d30)
 + replace --edit: respect core.editor

 "git replace -e" did not honour "core.editor" configuration.


* js/win32-mmap (2016-04-22) 3 commits
  (merged to 'next' on 2016-04-22 at cd39c60)
 + mmap(win32): avoid expensive fstat() call
 + mmap(win32): avoid copy-on-write when it is unnecessary
 + win32mmap: set errno appropriately

 mmap emulation on Windows has been optimized and work better without
 consuming paging store when not needed.


* nd/test-helpers (2016-04-15) 2 commits
  (merged to 'next' on 2016-04-22 at 55ea5cd)
 + test helpers: move test-* to t/helper/ subdirectory
 + Makefile: clean *.o files we create

 Sources to many test helper binaries (and the generated helpers)
 have been moved to t/helper/ subdirectory to reduce clutter at the
 top level of the tree.


* sb/mv-submodule-fix (2016-04-19) 1 commit
  (merged to 'next' on 2016-04-22 at 089e788)
 + mv: allow moving nested submodules

 "git mv old new" did not adjust the path for a submodule that lives
 as a subdirectory inside old/ directory correctly.


* st/verify-tag (2016-04-22) 6 commits
  (merged to 'next' on 2016-04-22 at 98ba239)
 + tag -v: verify directly rather than exec-ing verify-tag
 + verify-tag: move tag verification code to tag.c
 + verify-tag: prepare verify_tag for libification
 + verify-tag: update variable name and type
 + t7030: test verifying multiple tags
 + builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Unify internal logic between "git tag -v" and "git verify-tag"
 commands by making one directly call into the other.

--------------------------------------------------
[New Topics]

* ab/hooks (2016-04-26) 4 commits
 - hooks: allow customizing where the hook directory is
 - githooks.txt: minor improvements to the grammar & phrasing
 - githooks.txt: amend dangerous advice about 'update' hook ACL
 - githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Almost there.
 ($gmane/292635)


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.


* jk/fix-attribute-macro-in-2.5 (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 2e42613)
 + remote.c: spell __attribute__ correctly

 Code fixup.

 Will merge to 'master'.


* js/http-custom-headers (2016-04-27) 1 commit
  (merged to 'next' on 2016-04-27 at 0c97a50)
 + http: support sending custom HTTP headers

 HTTP transport clients learned to throw extra HTTP headers at the
 server, specified via http.extraHeader configuration variable.

 Will merge to 'master'.


* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* sb/config-exit-status-list (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 44fe343)
 + config doc: improve exit code listing

 Doc update.

 Will merge to 'master'.


* mh/split-under-lock (2016-04-27) 29 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Almost there.
 ($gmane/292772)


* bn/http-cookiefile-config (2016-04-29) 2 commits
 - http: expand http.cookieFile as a path
 - Documentation: config: improve word ordering for http.cookieFile
 (this branch uses jc/config-pathname-type.)

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Waiting for an Ack to what's queued with tweaks, or a reroll.
 ($gmane/292969)


* ew/doc-split-pack-disables-bitmap (2016-04-28) 1 commit
 - pack-objects: warn on split packs disabling bitmaps

 Doc update.

 Will merge to 'next'.


* jc/config-pathname-type (2016-04-29) 1 commit
 - config: describe 'pathname' value type
 (this branch is used by bn/http-cookiefile-config.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'next'.


* jk/submodule-config-sanitize-fix (2016-04-28) 5 commits
 - submodule: use prepare_submodule_repo_env consistently
 - submodule--helper: move config-sanitizing to submodule.c
 - submodule: export sanitized GIT_CONFIG_PARAMETERS
 - t5550: break submodule config test into multiple sub-tests
 - t5550: fix typo in $HTTPD_URL

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly.

 With a rethink of the merit of "sanitization" going on, we may end
 up doing the configuration propagation very differently, though.

 Will hold.


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)


* sb/misc-cleanups (2016-04-28) 2 commits
 - submodule-config: don't shadow `cache`
 - config.c: drop local variable

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* js/name-rev-use-oldest-ref (2016-04-22) 1 commit
  (merged to 'next' on 2016-04-27 at 8fdc0ac)
 + name-rev: include taggerdate in considering the best name

 "git describe --contains" often made a hard-to-justify choice of
 tag to give name to a given commit, because it tried to come up
 with a name with smallest number of hops from a tag, causing an old
 commit whose close descendant that is recently tagged were not
 described with respect to an old tag but with a newer tag.  It did
 not help that its computation of "hop" count was further tweaked to
 penalize being on a side branch of a merge.  The logic has been
 updated to favor using the tag with the oldest tagger date, which
 is a lot easier to explain to the end users: "We describe a commit
 in terms of the (chronologically) oldest tag that contains the
 commit."

 Will merge to 'master'.


* nd/remove-unused (2016-04-22) 2 commits
  (merged to 'next' on 2016-04-27 at 7917efa)
 + wrapper.c: delete dead function git_mkstemps()
 + dir.c: remove dead function fnmatch_icase()

 Code cleanup.

 Will merge to 'master'.


* rt/string-list-lookup-cleanup (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 53514e1)
 + string_list: use string-list API in unsorted_string_list_lookup()

 Code cleanup.

 Will merge to 'master'.


* sg/test-lib-simplify-expr-away (2016-04-22) 1 commit
  (merged to 'next' on 2016-04-27 at 8f40952)
 + test-lib: simplify '--option=value' parsing

 Code cleanup.

 Will merge to 'master'.


* ew/fast-import-unpack-limit (2016-04-24) 1 commit
 - fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Need to pick up the rerolled version.
 ($gmane/292562)


* jd/send-email-to-whom (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 47ae363)
 + send-email: fix grammo in the prompt that asks e-mail recipients

 A question by "git send-email" to ask the identity of the sender
 has been updated.

 Will merge to 'master'.


* ld/p4-test-py3 (2016-04-26) 3 commits
  (merged to 'next' on 2016-04-27 at d5d5fca)
 + git-p4 tests: time_in_seconds should use $PYTHON_PATH
 + git-p4 tests: work with python3 as well as python2
 + git-p4 tests: cd to / before running python

 The test scripts for "git p4" (but not "git p4" implementation
 itself) has been updated so that they would work even on a system
 where the installed version of Python is python 3.

 Will merge to 'master'.


* ls/p4-lfs-test-fix-2.7.0 (2016-04-29) 2 commits
  (merged to 'next' on 2016-04-29 at da56b67)
 + t9824: fix wrong reference value
  (merged to 'next' on 2016-04-27 at be87c63)
 + t9824: fix broken &&-chain in a subshell

 Fix a broken test.

 Will merge to 'master'.


* sb/clone-shallow-passthru (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 3112b24)
 + clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.

 Will merge to 'master'.


* jd/p4-jobs-in-commit (2016-04-19) 2 commits
  (merged to 'next' on 2016-04-27 at 654d946)
 + git-p4: add P4 jobs to git commit message
 + git-p4: clean-up code style in tests

 "git p4" learned to record P4 jobs in Git commit that imports from
 the history in Perforce.

 Will merge to 'master'.


* ls/p4-lfs (2016-04-28) 3 commits
 - git-p4: fix Git LFS pointer parsing
 - travis-ci: express Linux/OS X dependency versions more clearly
 - travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.

 Will merge to 'next'.


* tb/convert-eol-autocrlf (2016-04-29) 10 commits
 - ce_compare_data() did not respect conversion
 - t6038; use crlf on all platforms
 - convert.c: more safer crlf handling with text attribute
 - convert: unify the "auto" handling of CRLF
 - convert.c: stream and early out
 - read-cache: factor out get_sha1_from_index() helper
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: make commit_chk_wrnNNO() reliable

 The combination of text=auto & eol=crlf (or eol=lf for that matter)
 is taught to be much more useful; it used to be "auto detection"
 was defeated as if setting eol declares that the file _is_ text,
 but now text=auto is still in effect for such a path and the code
 refrains from applying eol conversion if it found the path is not
 text.  Also setting core.autocrlf to 'input' and core.eol to 'crlf'
 used to be rejected, but because the code gives precedence to
 core.autocrlf, there is no need to, hence we no longer reject the
 combination.

 The last step seems to be identical to what I earlier did and
 discarded because the approach is fundamentally wrong, but I may be
 misreading the patch.


* bc/object-id (2016-04-25) 6 commits
  (merged to 'next' on 2016-04-29 at 02f13a4)
 + match-trees: convert several leaf functions to use struct object_id
 + tree-walk: convert tree_entry_extract() to use struct object_id
 + struct name_entry: use struct object_id instead of unsigned char sha1[20]
 + match-trees: convert shift_tree() and shift_tree_by() to use object_id
 + test-match-trees: convert to use struct object_id
 + sha1-name: introduce a get_oid() function

 Move from unsigned char[20] to struct object_id continues.

 Will merge to 'master'.


* ep/http-curl-trace (2016-04-20) 3 commits
 - git.txt: document the new GIT_TRACE_CURL environment variable
 - imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
 - http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074)


* nd/worktree-various-heads (2016-04-22) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: check whether branch is bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: check whether branch is rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()
 - dir.c: rename str(n)cmp_icase to fspath(n)cmp

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Being reviewed.
 ($gmane/292189)


* bw/rebase-merge-entire-branch (2016-04-24) 1 commit
  (merged to 'next' on 2016-04-29 at 7a9487f)
 + git-rebase--merge: don't include absent parent as a base

 "git rebase -m" could be asked to rebase an entire branch starting
 from the root, but failed by assuming that there always is a parent
 commit to the first commit on the branch.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-04-19) 6 commits
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Need a reroll but it will be some time before that happens.
 ($gmane/292160).


* en/merge-fixes (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-27 at 14d7d10)
 + merge-recursive: do not check working copy when creating a virtual merge base
 + merge-recursive: remove duplicate code

 "merge-recursive" strategy incorrectly checked if a path that is
 involved in its internal merge exists in the working tree.

 Will merge to 'master'.


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.


* jc/ll-merge-internal (2016-04-27) 3 commits
 - t6036: remove pointless test that expects failure
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 RFC.


* jk/diff-compact-heuristic (2016-04-19) 2 commits
  (merged to 'next' on 2016-04-22 at 0c117ea)
 + xdiff: implement empty line chunk heuristic
 + xdiff: add recs_match helper function

 Patch output from "git diff" and friends has been tweaked to be
 more readable by using a blank line as a strong hint that the
 contents before and after it belong to a logically separate unit.

 Will merge to 'master' after removing the experimentation knob.


* sb/submodule-init (2016-04-29) 6 commits
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* nf/mergetool-prompt (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 1c992df)
 + difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.

 Will merge to 'master'.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Comments?  They looked all sensible to me.


* jc/drop-git-spec-in (2016-04-27) 2 commits
  (merged to 'next' on 2016-04-27 at 2b85030)
 + Makefile: remove dependency on git.spec
  (merged to 'next' on 2016-04-22 at 531583f)
 + Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
 - format-patch: introduce format.useAutoBase configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Looking close to be ready.
 ($gmane/292622).


* dt/index-helper (2016-04-28) 19 commits
 . untracked-cache: config option
 . Add tracing to measure where most of the time is spent
 . index-helper: optionally automatically run
 . index-helper: autorun mode
 . index-helper: don't run if already running
 . index-helper: kill mode
 . watchman: add a config option to enable the extension
 . unpack-trees: preserve index extensions
 . update-index: enable/disable watchman support
 . index-helper: use watchman to avoid refreshing index with lstat()
 . Add watchman support to reduce index refresh cost
 . read-cache: add watchman 'WAMA' extension
 . index-helper: add --detach
 . daemonize(): set a flag before exiting the main process
 . index-helper: log warnings
 . index-helper: add --strict
 . index-helper: new daemon for caching index and related stuff
 . read-cache: allow to keep mmap'd memory after reading
 . read-cache.c: fix constness of verify_hdr()

 Needs review.
 t7900#5 seems to fail for me.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 2%]

* What's cooking in git.git (Mar 2016, #05; Fri, 25)
@ 2016-03-25 22:03  2% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-03-25 22:03 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

We'll have 2.8 final early next week, hopefully.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
 - submodule-config: use hashmap_iter_first()

 Minor code cleanup.

 Will merge to 'next'.


* ky/branch-d-worktree (2016-03-25) 1 commit
 - branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree

 Will merge to 'next'.


* ky/branch-m-worktree (2016-03-25) 4 commits
 - branch -m: update all per-worktree HEADs
 - refs: add create_symref_common_dir as a variation of create_symref
 - refs: add REF_COMMON_DIR flag
 - refs: add new flag RESOLVE_REF_COMMON_DIR to resolve_ref_unsafe

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.

 Needs review.


* nd/apply-doc (2016-03-24) 2 commits
 - git-apply.txt: mention the behavior inside a subdir
 - git-apply.txt: remove a space

 Will merge to 'next'.


* nd/apply-report-skip (2016-03-24) 1 commit
 - apply: report patch skipping in verbose mode

 "git apply -v" learned to report paths in the patch that were
 skipped via --include/--exclude mechanism or being outside the
 current working directory.

 Will merge to 'next'.


* pb/opt-cmdmode-doc (2016-03-25) 1 commit
 - api-parse-options.txt: document OPT_CMDMODE()

 Minor API documentation update.


* rt/completion-help (2016-03-24) 2 commits
 - completion: add 'revisions' and 'everyday' to 'git help'
 - completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.


* rt/rebase-i-shorten-stop-report (2016-03-24) 1 commit
 - rebase-i: print abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.

 Needs a better explanation.


* sb/submodule-helper-prefix (2016-03-25) 5 commits
 - submodule--helper clone: lose the extra prefix option
 - submodule sync: test syncing one submodule
 - submodule update: add test for recursive from non root dir
 - submodule--helper list: lose the extra prefix option
 - submodule: prepare recursive path from non root directory

--------------------------------------------------
[Graduated to "master"]

* js/mingw-tests-2.8 (2016-03-23) 4 commits
  (merged to 'next' on 2016-03-23 at aeec80e)
 + mingw: skip some tests in t9115 due to file name issues
 + t1300: fix the new --show-origin tests on Windows
 + t1300-repo-config: make it resilient to being run via 'sh -x'
 + config --show-origin: report paths with forward slashes

 Last-minute tweaks to test to pass on Windows.


* ls/p4-doc-markup (2016-03-23) 2 commits
  (merged to 'next' on 2016-03-23 at 94a6275)
 + Documentation: fix git-p4 AsciiDoc formatting
 + Documentation: use ASCII quotation marks in git-p4

 Trivially OK doc cleanup.


* sb/submodule-module-list-pathspec-fix (2016-03-22) 1 commit
  (merged to 'next' on 2016-03-23 at 67fe17c)
 + submodule: fix regression for deinit without submodules

 A fix to a small regression in module_list helper that was
 rewritten in C in 2.7.x timeframe.


--------------------------------------------------
[Stalled]

* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* jk/check-repository-format (2016-03-11) 10 commits
 - verify_repository_format: mark messages for translation
 - setup: drop repository_format_version global
 - setup: unify repository version callbacks
 - init: use setup.c's repo version verification
 - setup: refactor repo format reading and verification
 - config: drop git_config_early
 - check_repository_format_gently: stop using git_config_early
 - lazily load core.sharedrepository
 - wrap shared_repository global in get/set accessors
 - setup: document check_repository_format()

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.


* mj/pull-rebase-autostash (2016-03-21) 2 commits
  (merged to 'next' on 2016-03-23 at ebf1afa)
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'master' after 2.8 final.


* pb/commit-verbose-config (2016-03-14) 1 commit
 - commit: add a commit.verbose config variable
 (this branch uses pb/t7502-drop-dup.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was given
 from the command line.


* pb/t7502-drop-dup (2016-03-11) 1 commit
  (merged to 'next' on 2016-03-15 at 037c877)
 + t/t7502 : drop duplicate test
 (this branch is used by pb/commit-verbose-config.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* ss/commit-squash-msg (2016-03-21) 1 commit
  (merged to 'next' on 2016-03-23 at 0b72631)
 + commit: do not lose SQUASH_MSG contents

 When "git merge --squash" stopped due to conflict, the concluding
 "git commit" failed to read in the SQUASH_MSG that shows the log
 messages from all the squashed commits.

 Will merge to 'master' after 2.8 final.


* ls/p4-map-user (2016-03-15) 1 commit
  (merged to 'next' on 2016-03-23 at 9e0a4f5)
 + git-p4: map a P4 user to Git author name and email address

 Will merge to 'master' after 2.8 final.


* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at d7da4cf)
 + merge: refuse to create too cool a merge by default

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.

 Will merge to 'master' after 2.8 final.


* jc/rerere-multi-wip (2016-03-21) 1 commit
 . WIP forget
 (this branch uses jc/rerere-multi.)


* jk/credential-cache-comment-exit (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at d2b8cc7)
 + credential-cache--daemon: clarify "exit" action semantics

 Will merge to 'master' after 2.8 final.


* jk/send-email-rtrim-mailrc-alias (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 74f1f44)
 + send-email: ignore trailing whitespace in mailrc alias file

 Will merge to 'master' after 2.8 final.


* jk/test-httpd-config-nosystem (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 245263b)
 + t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

 Will merge to 'master' after 2.8 final.


* lt/pretty-expand-tabs (2016-03-23) 5 commits
 - pretty-print: teach "--no-expand-tabs" option to "git log"
 - pretty-print: limit expand-tabs to selected --pretty formats
 - pretty-print: further abstract out pp_handle_indent()
 - pretty-print: simplify the interaction between pp_handle_indent() and its caller
 - pretty-print: de-tabify indented logs to make things line up properly

 May need a UI rework.
 Needs reordering.


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag
 (this branch uses sb/submodule-parallel-update; is tangled with sb/submodule-init.)

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sb/clone-t57-t56 (2016-03-16) 1 commit
  (merged to 'next' on 2016-03-23 at 5df850d)
 + clone tests: rename t57* => t56*

 Rename bunch of tests on "git clone" for better organization.

 Will merge to 'master' after 2.8 final.


* sb/rebase-x (2016-03-18) 2 commits
  (merged to 'next' on 2016-03-23 at ef8861b)
 + t3404: cleanup double empty lines between tests
 + rebase: decouple --exec from --interactive

 "git rebase -x" can be used without passing "-i" option.

 Will merge to 'master' after 2.8 final.


* cc/apply (2016-03-22) 2 commits
  (merged to 'next' on 2016-03-24 at 70623f2)
 + apply: remove unused call to free() in gitdiff_{old,new}name()
 + builtin/apply: get rid of useless 'name' variable

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* dt/index-helper (2016-03-23) 18 commits
 - SQUASH - minimum compilation fix
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - Add watchman support to reduce index refresh cost
 - read-cache: invalidate untracked cache data when reading WAMA
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()


* jv/merge-nothing-into-void (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at 40b905d)
 + merge: fix NULL pointer dereference when merging nothing into void

 "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 nothing into an unborn history (which is arguably unusual usage,
 which perhaps was the reason why nobody noticed it).

 Will merge to 'master' after 2.8 final.


* la/tag-force-signing-annotated-tags (2016-03-22) 1 commit
  (merged to 'next' on 2016-03-24 at 424da3f)
 + tag: add the option to force signing of annotated tags

 "git tag" can create an annotated tag without explicitly given an
 "-a" (or "-s") option (i.e. when a tag message is given).  A new
 configuration variable, tag.forceSignAnnotated, can be used to tell
 the command to create signed tag in such a situation.

 Will merge to 'master' after 2.8 final.


* cc/doc-recommend-performance-trace-to-file (2016-03-07) 1 commit
  (merged to 'next' on 2016-03-23 at 086b9f2)
 + Documentation: talk about pager in api-trace.txt

 Will merge to 'master' after 2.8 final.


* da/mergetool-delete-delete-conflict (2016-03-10) 2 commits
  (merged to 'next' on 2016-03-15 at 281a81a)
 + mergetool: honor tempfile configuration when resolving delete conflicts
 + mergetool: support delete/delete conflicts

 "git mergetool" did not work well with conflicts that both sides
 deleted.

 Will merge to 'master' after 2.8 final.


* es/test-gpg-tags (2016-03-06) 4 commits
  (merged to 'next' on 2016-03-15 at 617119f)
 + t6302: skip only signed tags rather than all tests when GPG is missing
 + t6302: also test annotated in addition to signed tags
 + t6302: normalize names and descriptions of signed tags
 + lib-gpg: drop unnecessary "missing GPG" warning

 A test for tags has been restructured so that more parts of it can
 easily be run on a platform without a working GnuPG.

 Will merge to 'master' after 2.8 final.


* jk/getwholeline-getdelim-empty (2016-03-05) 1 commit
  (merged to 'next' on 2016-03-15 at e70d4bd)
 + strbuf_getwholeline: NUL-terminate getdelim buffer on error

 strbuf_getwholeline() did not NUL-terminate the buffer on certain
 corner cases in its error codepath.

 Will merge to 'master' after 2.8 final.


* jk/startup-info (2016-03-07) 6 commits
  (merged to 'next' on 2016-03-15 at eb95e5f)
 + use setup_git_directory() in test-* programs
 + grep: turn off gitlink detection for --no-index
 + mailmap: do not resolve blobs in a non-repository
 + remote: don't resolve HEAD in non-repository
 + setup: set startup_info->have_repository more reliably
 + setup: make startup_info available everywhere

 The startup_info data, which records if we are working inside a
 repository (among other things), are now uniformly available to Git
 subcommand implementations, and Git avoids attempting to touch
 references when we are not in a repository.

 Will merge to 'master' after 2.8 final.


* rj/xdiff-prepare-plug-leak-on-error-codepath (2016-03-04) 2 commits
  (merged to 'next' on 2016-03-15 at f72755e)
 + xdiff/xprepare: fix a memory leak
 + xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits

 A small memory leak in an error codepath has been plugged in xdiff
 code.

 Will merge to 'master' after 2.8 final.


* jc/index-pack (2016-03-03) 2 commits
  (merged to 'next' on 2016-03-15 at 42efaa7)
 + index-pack: add a helper function to derive .idx/.keep filename
 + Merge branch 'jc/maint-index-pack-keep' into jc/index-pack
 (this branch is used by jc/bundle; uses jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* jc/maint-index-pack-keep (2016-03-03) 1 commit
  (merged to 'next' on 2016-03-04 at bc1d37a)
 + index-pack: correct --keep[=<msg>]
 (this branch is used by jc/bundle, jc/index-pack and jc/index-pack-clone-bundle.)

 "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 Will merge to 'master' after 2.8 final.


* mm/readme-markdown (2016-02-27) 1 commit
  (merged to 'next' on 2016-03-01 at 81f3858)
 + README.md: don't take 'commandname' literally

 The top-level README file has been updated to be more appropriate
 for the sign on the front door to welcome new acquaintances to Git
 by toning down inside jokes and making it into MarkDown.

 Will merge to 'master' after 2.8 final.


* gf/fetch-pack-direct-object-fetch (2016-03-05) 2 commits
  (merged to 'next' on 2016-03-06 at 5628860)
 + fetch-pack: update the documentation for "<refs>..." arguments
  (merged to 'next' on 2016-03-04 at 49199e0)
 + fetch-pack: fix object_id of exact sha1

 Fetching of history by naming a commit object name directly didn't
 work across remote-curl transport.

 Will merge to 'master' after 2.8 final.


* jk/add-i-highlight (2016-02-28) 1 commit
  (merged to 'next' on 2016-03-04 at 4ac3aa1)
 + add--interactive: allow custom diff highlighting programs

 Will merge to 'master' after 2.8 final.


* jk/config-get-urlmatch (2016-02-28) 3 commits
  (merged to 'next' on 2016-03-04 at feeb192)
 + Documentation/git-config: fix --get-all description
 + Documentation/git-config: use bulleted list for exit codes
 + config: fail if --get-urlmatch finds no value

 "git config --get-urlmatch", unlike other variants of the "git
 config --get" family, did not signal error with its exit status
 when there was no matching configuration.

 Will merge to 'master' after 2.8 final.


* jk/rev-parse-local-env-vars (2016-02-29) 2 commits
  (merged to 'next' on 2016-03-04 at a0300d5)
 + rev-parse: let some options run outside repository
 + t1515: add tests for rev-parse out-of-repo helpers

 The "--local-env-vars" and "--resolve-git-dir" options of "git
 rev-parse" failed to work outside a repository when the command's
 option parsing was rewritten in 1.8.5 era.

 Will merge to 'master' after 2.8 final.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* mm/lockfile-error-message (2016-03-01) 2 commits
  (merged to 'next' on 2016-03-04 at 04ed7e6)
 + lockfile: improve error message when lockfile exists
 + lockfile: mark strings for translation

 Will merge to 'master' after 2.8 final.


* ss/exc-flag-is-a-collection-of-bits (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at 5ea48c7)
 + dir: store EXC_FLAG_* values in unsigned integers

 Will merge to 'master' after 2.8 final.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle
 (this branch uses jc/index-pack and jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ss/receive-pack-parse-options (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at c577ea7)
 + builtin/receive-pack.c: use parse_options API

 The command line argument parser for "receive-pack" has been
 rewritten to use parse-options.

 Will merge to 'master' after 2.8 final.


* jk/credential-clear-config (2016-02-26) 1 commit
  (merged to 'next' on 2016-03-04 at f7b26b7)
 + credential: let empty credential specs reset helper list

 The credential.helper configuration variable is cumulative and
 there is no good way to override it from the command line.  As
 a special case, giving an empty string as its value now serves
 as the signal to clear the values specified in various files.

 Will merge to 'master' after 2.8 final.


* jk/submodule-c-credential (2016-03-23) 7 commits
  (merged to 'next' on 2016-03-23 at 952367a)
 + git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
  (merged to 'next' on 2016-03-15 at 81df5b1)
 + git: submodule honor -c credential.* from command line
 + quote: implement sq_quotef()
 + submodule: fix segmentation fault in submodule--helper clone
 + submodule: fix submodule--helper clone usage
 + submodule: check argc count for git submodule--helper clone
 + submodule: don't pass empty string arguments to submodule--helper clone

 "git -c credential.<var>=<value> submodule" can now be used to
 propagate configuration variables related to credential helper
 down to the submodules.

 Will merge to 'master' after 2.8 final.


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* mm/diff-renames-default (2016-02-25) 5 commits
  (merged to 'next' on 2016-02-25 at 947c399)
 + diff: activate diff.renames by default
 + log: introduce init_log_defaults()
 + t: add tests for diff.renames (true/false/unset)
 + t4001-diff-rename: wrap file creations in a test
 + Documentation/diff-config: fix description of diff.renames

 The end-user facing Porcelain level commands like "diff" and "log"
 now enables the rename detection by default.

 Will merge to 'master' after 2.8 final.


* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
  (merged to 'next' on 2016-02-26 at f0a54e5)
 + upload-pack: use argv_array for pack_objects

 The embedded args argv-array in the child process is used to build
 the command line to run pack-objects instead of using a separate
 array of strings.

 Will merge to 'master' after 2.8 final.


* sb/submodule-init (2016-03-15) 2 commits
 - submodule: port init from shell to C
 - submodule: port resolve_relative_url from shell to C
 (this branch uses sb/submodule-parallel-update; is tangled with sb/clone-shallow-passthru.)

 Update of "git submodule" to move pieces of logic to C continues.

 Needs review.
 ($gmane/288824)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* sb/submodule-parallel-update (2016-03-01) 10 commits
  (merged to 'next' on 2016-03-15 at a8bf6c5)
 + clone: allow an explicit argument for parallel submodule clones
 + submodule update: expose parallelism to the user
 + submodule helper: remove double 'fatal: ' prefix
 + git submodule update: have a dedicated helper for cloning
 + run_processes_parallel: rename parameters for the callbacks
 + run_processes_parallel: treat output of children as byte array
 + submodule update: direct error message to stderr
 + fetching submodules: respect `submodule.fetchJobs` config option
 + submodule-config: drop check against NULL
 + submodule-config: keep update strategy around
 (this branch is used by sb/clone-shallow-passthru and sb/submodule-init.)

 A major part of "git submodule update" has been ported to C to take
 advantage of the recently added framework to run download tasks in
 parallel.

 Will merge to 'master' after 2.8 final.


* dt/refs-backend-lmdb (2016-02-25) 45 commits
 . SQUASH??? Minimum compilation band-aid
 . tests: add ref-storage argument
 . refs: tests for lmdb backend
 . refs: add LMDB refs storage backend
 . refs: break out resolve_ref_unsafe_submodule
 . config: read ref storage config on startup
 . refs: register ref storage backends
 . svn: learn ref-storage argument
 . clone: allow ref storage backend to be set for clone
 . refs: check submodules' ref storage config
 . init: allow alternate ref strorage to be set for new repos
 . refs: always handle non-normal refs in files backend
 . refs: resolve symbolic refs first
 . refs: on symref reflog expire, lock symref not referrent
 . refs: don't dereference on rename
 . refs: allow log-only updates
 . refs: move duplicate check to common code
 . refs: make lock generic
 . refs: handle non-normal ref renames
 . refs: add method to rename refs
 . refs: add methods to init refs db
 . refs: add method for delete_refs
 . refs: add method for initial ref transaction commit
 . refs: add methods for reflog
 . refs: add do_for_each_per_worktree_ref
 . refs: reduce the visibility of do_for_each_ref()
 . refs: add method for do_for_each_ref
 . refs: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move resolve_ref_unsafe into common code
 . files-backend: break out ref reading
 . refs: move for_each_*ref* functions into common code
 . refs: move head_ref{,_submodule} to the common code
 . Merge branch 'sb/submodule-parallel-update' into dt/refs-backend-lmdb
 . clone: allow an explicit argument for parallel submodule clones
 . submodule update: expose parallelism to the user
 . git submodule update: have a dedicated helper for cloning
 . run_processes_parallel: correctly terminate callbacks with an LF
 . run_processes_parallel: rename parameters for the callbacks
 . run-command: expose default_{start_failure, task_finished}
 . run_processes_parallel: treat output of children as byte array
 . submodule update: direct error message to stderr
 . fetching submodules: respect `submodule.fetchJobs` config option
 . submodule-config: drop check against NULL
 . submodule-config: keep update strategy around

 A reroll exists, but it seems that will further be rerolled.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-03-15) 10 commits
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further
 (this branch is used by jc/rerere-multi-wip.)

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 May need further work on forget.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007.  It has been reported that
 git-gui still uses the deprecated syntax, which needs to be fixed
 before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 2%]

* [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N
  @ 2019-07-25 17:45  2% ` Elijah Newren
    1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2019-07-25 17:45 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Elijah Newren

This is the bug that just won't die; there always seems to be another
form of it somewhere.  See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:

<quick summary>

builtin/merge.c contains this important requirement for merge
strategies:

    ...the index must be in sync with the head commit.  The strategies are
    responsible to ensure this.

This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:

  * we silently throw away changes the user had staged before the merge

  * we accidentally (and silently) include changes in the merge that
    were not part of either of the branches/trees being merged

Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found.  But, fear not: the bugs from this were fixed in commit
  ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge).  And it was fixed
again in commit
  160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
  3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
  65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
  eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)

...with multiple testcases added to the testsuite that could be
enumerated in even more commits.

Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...

</quick summary>

Unfortunately, "ever after" apparently denotes a limited time and it
expired today.  The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0.  Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases.  That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."

Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests.  It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary.  This unconditional dropping
and reloading of the cache masked a few bugs:

  * builtin/merge-recursive.c: didn't even bother loading the index.

  * builtin/stash.c: feels like a fake 'builtin' because it repeatedly
    invokes git subprocesses all over the place, mixed with other
    operations.  In particular, invoking "git reset" will reset the
    index on disk, but the parent process that invoked it won't
    automatically have its in-memory index updated.

  * t3030-merge-recursive.h: this test has always been broken in that it
    didn't make sure to make index match head before running.  But, it
    didn't care about the index or even the merge result, just the
    verbose output while running.  While commit eddd1a411d93
    ("merge-recursive: enforce rule that index matches head before
    merging", 2018-06-30) should have uncovered this broken test, it
    used a test_must_fail wrapper around the merge-recursive call
    because it was known that the merge resulted in a rename/rename
    conflict.  Thus, that fix only made this test fail for a different
    reason, and since the index == head check didn't happen until after
    coming all the way back out of the recursion, the testcase had
    enough information to pass the one check that it did perform.

So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 builtin/merge-recursive.c  | 4 ++++
 builtin/stash.c            | 2 ++
 t/t3030-merge-recursive.sh | 9 ++++++++-
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
 #include "builtin.h"
 #include "commit.h"
 #include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
 	if (argc - i != 3) /* "--" "<head>" "<remote>" */
 		die(_("not handling anything other than two heads merge."));
 
+	if (repo_read_index_unmerged(the_repository))
+		die_resolve_conflict("merge");
+
 	o.branch1 = argv[++i];
 	o.branch2 = argv[++i];
 
diff --git a/builtin/stash.c b/builtin/stash.c
index fde6397caa..bec011c1bb 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
 				return error(_("could not save index tree"));
 
 			reset_head();
+			discard_cache();
+			read_cache();
 		}
 	}
 
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
 test_expect_success 'merge-recursive remembers the names of all base trees' '
 	git reset --hard HEAD &&
 
+	# make the index match $c1 so that merge-recursive below does not
+	# fail early
+	git diff --binary HEAD $c1 -- | git apply --cached &&
+
 	# more trees than static slots used by oid_to_hex()
 	for commit in $c0 $c2 $c4 $c5 $c6 $c7
 	do
 		git rev-parse "$commit^{tree}"
 	done >trees &&
 
-	# ignore the return code -- it only fails because the input is weird
+	# ignore the return code; it only fails because the input is weird...
 	test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
 
+	# ...but make sure it fails in the expected way
+	test_i18ngrep CONFLICT.*rename/rename out &&
+
 	# merge-recursive prints in reverse order, but we do not care
 	sort <trees >expect &&
 	sed -n "s/^virtual //p" out | sort >actual &&
-- 
2.22.0.559.g28a8880890.dirty


^ permalink raw reply related	[relevance 2%]

* What's cooking in git.git (May 2009, #03; Mon, 25)
@ 2009-05-25  8:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-05-25  8:33 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the branches, but I am still
holding onto them.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

----------------------------------------------------------------
[New Topics]

* sb/opt-filename (Sat May 23 11:53:13 2009 -0700) 5 commits
 - parse-opts: add OPT_FILENAME and transition builtins
 - parse-opts: prepare for OPT_FILENAME
 - Merge branch 'jc/mktree' into sb/opt-filename
 - Merge branch 'sb/format-patch-parseopt' into sb/opt-filename
 - Merge branch 'sb/show-branch-parse-options' into sb/opt-filename
 - Merge branch 'master' into sb/opt-filename
 + apply, fmt-merge-msg: use relative filenames
 + commit: -F overrides -t

There are quite a few new callers to parse_options() in 'next' and 'pu'
that are more likely to graduate before this series, so for now I merged a
few of them and adjusted the commit "prepare for OPT_FILENAME".  I tried
to be careful but extra sets of eyeballs would be helpful.

* da/araxis-mergetool (Sun May 24 00:24:41 2009 +0000) 1 commit
 + mergetool--lib: add support for araxis merge

I admit that I feel certain distaste in supporting a closed tool, but we
already make things bearable for people on Windows; Araxis is no worse,
right?

* rs/maint-grep-word-regexp-fix (Sat May 23 13:45:26 2009 +0200) 1 commit
 + grep: fix word-regexp at the beginning of lines

* mm/apply-double-slash (Thu May 21 14:25:11 2009 +0200) 1 commit
 + apply: handle filenames with double slashes better

* bc/old-iconv (Fri May 22 18:47:06 2009 -0500) 10 commits
 + t8005: convert CP1251 character set to ISO8859-5
 + t8005: use more portable character encoding names
 + t5100: use ancient encoding syntax for backwards compatibility
 + t9301: use ISO8859-1 rather than ISO-8859-1
 + t3901: Use ISO8859-1 instead of ISO-8859-1 for backward
   compatibility
 + t3901: avoid negation on right hand side of '|'
 + builtin-mailinfo.c: use "ISO8859-1" instead of "latin1" as
   fallback encoding
 + builtin-mailinfo.c: compare character encodings case insensitively
 + Use 'UTF-8' rather than 'utf-8' everywhere for backward
   compatibility
 + t3900: use ancient iconv names for backward compatibility

* sb/show-branch-parse-options (Thu May 21 00:33:18 2009 -0700) 3 commits
 + show-branch: migrate to parse-options API
 + Merge branch 'mh/show-branch-color' into sb/show-branch-parse-
   options
 + parse-options: add PARSE_OPT_LITERAL_ARGHELP for complicated
   argh's

* sb/maint-1.6.2-opt-filename-fix (Sat May 23 11:53:11 2009 -0700) 2 commits
 + apply, fmt-merge-msg: use relative filenames
 + commit: -F overrides -t

* jc/cache-tree (Fri May 22 23:14:25 2009 -0700) 5 commits
 - Avoid "diff-index --cached" optimization under --find-copies-
   harder
 - Optimize "diff-index --cached" using cache-tree
 - t4007: modernize the style
 - cache-tree.c::cache_tree_find(): simplify inernal API
 - write-tree --ignore-cache-tree

* jc/solaris-0811 (Fri May 22 22:55:31 2009 -0700) 2 commits
 - OpenSolaris 200811 (SunOS 5.11) does not want OLD_ICONV
 - Teach Solaris that _XOPEN_SOURCE=600 really menas XPG6

* cb/maint-1.6.0-xdl-merge-fix (Mon May 25 01:21:14 2009 +0100) 2 commits
 - Change xdl_merge to generate output even for null merges
 - t6023: merge-file fails to output anything for a degenerate merge

* jc/diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 - diff: Rename QUIET internal option to QUICK
 - diff: change semantics of "ignore whitespace" options

----------------------------------------------------------------
[Graduated to "master"]

* cc/bisect (Sat May 9 17:55:47 2009 +0200) 20 commits
 + bisect: make "git bisect" use new "--next-all" bisect-helper
   function
 + bisect: add "check_good_are_ancestors_of_bad" function
 + bisect: implement the "check_merge_bases" function
 + bisect: automatically sort sha1_array if needed when looking it up
 + bisect: make skipped array functions more generic
 + bisect: remove too much function nesting
 + bisect: use new "struct argv_array" to prepare argv for
   "setup_revisions"
 + bisect: store good revisions in a "sha1_array"
 + bisect: implement "rev_argv_push" to fill an argv with revs
 + bisect: use "sha1_array" to store skipped revisions
 + am: simplify "sq" function by using "git rev-parse --sq-quote"
 + bisect: use "git rev-parse --sq-quote" instead of a custom "sq"
   function
 + rev-parse: add --sq-quote to shell quote arguments
 + rev-list: remove stringed output flag from "show_bisect_vars"
 + bisect--helper: remove "--next-vars" option as it is now useless
 + bisect: use "git bisect--helper --next-exit" in "git-bisect.sh"
 + bisect--helper: add "--next-exit" to output bisect results
 + bisect: move common bisect functionality to "bisect_common"
 + rev-list: refactor printing bisect vars
 + rev-list: make "estimate_bisect_steps" non static

Rewriting major part of "git-bisect" shell script continues.  The patches
seem to be reasonably clean.

* fc/decorate-tag (Thu May 14 00:32:53 2009 +0300) 2 commits
 + Prettify log decorations even more
 + Change prettify_ref to prettify_refname

* mg/track (Mon May 11 16:42:54 2009 +0200) 2 commits
 + Fix behavior with non-commit upstream references
 + Test tracking of non-commit upstreams

* jn/gitweb-cleanup (Mon May 11 19:45:11 2009 +0200) 8 commits
 + gitweb: Remove unused $hash_base parameter from
   normalize_link_target
 + gitweb: Simplify snapshot format detection logic in
   evaluate_path_info
 + gitweb: Use capturing parentheses only when you intend to capture
 + gitweb: Replace wrongly added tabs with spaces
 + gitweb: Use block form of map/grep in a few cases more
 + gitweb: Always use three argument form of open
 + gitweb: Always use three argument form of open
 + gitweb: Do not use bareword filehandles

* js/maint-no-ln-across-libexec-and-bin (Mon May 11 13:02:18 2009 +0200) 1 commit
 + Add NO_CROSS_DIRECTORY_HARDLINKS support to the Makefile

* tp/send-email-from-config (Tue May 12 15:48:56 2009 -0700) 1 commit
 + send-email: Add config option for sender address

* ae/anon-fetch-info (Fri Apr 17 10:20:11 2009 +0200) 1 commit
 + fetch: Strip usernames from url's before storing them

* ac/graph-horizontal-line (Tue Apr 21 08:47:01 2009 -0400) 1 commit
 + graph API: Use horizontal lines for more compact graphs

* mh/show-branch-color (Sat Apr 25 13:46:14 2009 +0200) 2 commits
 + bash completion: show-branch color support
 + show-branch: color the commit status signs

* mh/diff-stat-color (Sat Apr 25 00:06:47 2009 +0200) 1 commit
 + diff: do not color --stat output like patch context

* js/add-edit (Mon Apr 27 19:51:42 2009 +0200) 2 commits
 + t3702: fix reliance on SHELL_PATH being '/bin/sh'
 + git-add: introduce --edit (to edit the diff vs. the index)

* jk/maint-add-empty (Tue Apr 28 23:21:01 2009 -0400) 1 commit
 + add: don't complain when adding empty project root

* ar/unlink-err (Wed Apr 29 23:24:52 2009 +0200) 3 commits
 + print unlink(2) errno in copy_or_link_directory
 + replace direct calls to unlink(2) with unlink_or_warn
 + Introduce an unlink(2) wrapper which gives warning if unlink
   failed

* ar/merge-one-file-diag (Wed Apr 29 23:40:50 2009 +0200) 1 commit
 + Clarify kind of conflict in merge-one-file helper

* np/push-delta (Fri May 1 16:56:47 2009 -0400) 1 commit
 + allow OFS_DELTA objects during a push

* mt/submodule-reference (Mon May 4 22:30:01 2009 +0300) 1 commit
 + Add --reference option to git submodule.

* fl/git-pm (Thu May 7 15:41:28 2009 +0200) 2 commits
 + Git.pm: Always set Repository to absolute path if autodetecting
 + Git.pm: Set GIT_WORK_TREE if we set GIT_DIR

* rs/grep-parseopt (Thu May 7 21:46:48 2009 +0200) 5 commits
 + grep: use parseopt
 + grep: remove global variable builtin_grep
 + parseopt: add PARSE_OPT_NODASH
 + parseopt: add OPT_NUMBER_CALLBACK
 + parseopt: add OPT_NEGBIT

* jk/no-no-no-empty-directory (Fri May 8 01:01:17 2009 -0400) 2 commits
 + parseopt: add OPT_NEGBIT
 + parseopt: add OPT_NEGBIT

* jk/maint-1.6.0-trace-argv (Fri May 8 05:06:15 2009 -0400) 1 commit
 + fix GIT_TRACE segfault with shell-quoted aliases

* hv/sample-update (Fri May 8 17:22:30 2009 +0200) 1 commit
 + Extend sample update hook, disable modifying of existing tags

* rr/forbid-bs-in-ref (Fri May 8 07:32:37 2009 +0200) 1 commit
 + Disallow '\' in ref names

* do/maint-merge-recursive-fix (Sat May 9 14:49:59 2009 -0700) 1 commit
 + merge-recursive: never leave index unmerged while recursing

* jm/format-patch-no-auto-n-when-k-is-given (Sat May 9 10:12:01 2009 +0200) 1 commit
 + format-patch let -k override a config-specified format.numbered

* lt/maint-diff-reduce-lstat (Sat May 9 15:11:17 2009 -0700) 2 commits
 + Teach 'git checkout' to preload the index contents
 + Avoid unnecessary 'lstat()' calls in 'get_stat_data()'

* da/mergetool-lib (Sat May 2 01:57:21 2009 -0700) 1 commit
 + mergetool--lib: specialize diff options for emerge and ecmerge

----------------------------------------------------------------
[Will merge to "master" soon]

* mw/send-email (Mon Apr 13 13:23:52 2009 -0500) 6 commits
 + send-email: Remove superfluous `my $editor = ...'
 + send-email: 'References:' should only reference what is sent
 + send-email: Handle "GIT:" rather than "GIT: " during --compose
 + Docs: send-email: --smtp-server-port can take symbolic ports
 + Docs: send-email: Refer to CONFIGURATION section for
   sendemail.multiedit
 + Docs: send-email: Put options back into alphabetical order

* ph/submodule-rebase (Fri Apr 24 09:06:38 2009 +1000) 1 commit
 + git-submodule: add support for --rebase.

* cc/bisect (Sun May 17 17:36:46 2009 +0200) 3 commits
 + bisect: check ancestors without forking a "git rev-list" process
 + commit: add function to unparse a commit and its parents
 + bisect: rework some rev related functions to make them more
   reusable

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* lt/read-directory (Fri May 15 12:01:29 2009 -0700) 3 commits
 - Add initial support for pathname conversion to UTF-8
 - read_directory(): infrastructure for pathname character set
   conversion
 - Add 'fill_directory()' helper function for directory traversal

Before adding the real "conversion", this needs a few real fixups, I
think.  For example there is one hardcoded array that is used without
bounds check.

* ar/maint-1.6.2-merge-recursive-d-f (Mon May 11 21:25:36 2009 +0200) 2 commits
 - Fix for a merge where a branch has an F->D transition
 - Add a reminder test case for a merge with F/D transition

Although the reported breakage is covered with the patch, Alex feels the
solution unsatisfactory. Cleaning up D/F conflict handling in merge-recursive
may be long overdue but seems to be a hard problem.

* ps/blame (Thu Mar 12 21:30:03 2009 +1100) 1 commit
 - blame.c: start libifying the blame infrastructure

A few minor point remains in this initial one.  I hate to do these minor
fix-ups myself, but I may end up doing so...

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

The one I posted had a few corner-case bugs that was caught with the test
suite; this one has them fixed.  People did not like the UI so it is kept
out of 'next'

* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit
 - git-merge-file: allow converting the results for the work tree

This is a feature waiting for a user.

We did not give scripted Porcelains a way to say "this temporary file I am
using for merging is for this path, so use the core.autocrlf and attributes
rules for that final path".  Instead, merge-file simply wrote out the
data in the canonical repository representation.

rerere has the same issue, but it is a lot worse.  It reads the three
files (preimage, postimage and thisimage) from the work tree in the work
tree representation, merges them without converting them to the canonical
representation first but inserts the conflict markers with the canonical
representation and writes the resulting mess out.  It needs to be fixed to
read with convert_to_git(), merge them while they are still in the
canonical representation and possibly add conflict markers, and then write
the results out after convert_to_working_tree().  It also needs to write
in binary mode as well.

* db/foreign-scm (Tue Mar 24 23:04:12 2009 -0400) 3 commits
 - Add option for using a foreign VCS
 - Document details of transport function APIs
 - Allow late reporting of fetched hashes

* hv/cvsps-tests (Sun Apr 5 01:40:50 2009 -0700) 8 commits
 - t/t9600: remove exit after test_done
 - cvsimport: extend testcase about patchset order to contain
   branches
 - cvsimport: add test illustrating a bug in cvsps
 - Add a test of "git cvsimport"'s handling of tags and branches
 - Add some tests of git-cvsimport's handling of vendor branches
 - Test contents of entire cvsimported "master" tree contents
 - Use CVS's -f option if available (ignore user's ~/.cvsrc file)
 - Start a library for cvsimport-related tests

----------------------------------------------------------------
[Actively cooking]

* jc/mktree (Thu May 14 15:49:10 2009 -0700) 9 commits
 + mktree: validate entry type in input
 + mktree --batch: build more than one tree object
 + mktree --missing: updated usage message and man page
 + mktree --missing: allow missing objects
 + t1010: add mktree test
 + mktree: do not barf on a submodule commit
 + builtin-mktree.c: use a helper function to handle one line of
   input
 + mktree: use parse-options
 + build-in git-mktree

* jc/maint-add-p-coalesce-fix (Sat May 16 10:48:23 2009 -0700) 2 commits
 + Revert "git-add--interactive: remove hunk coalescing"
 + Splitting a hunk that adds a line at the top fails in "add -p"

* sb/format-patch-parseopt (Sat May 16 02:24:46 2009 -0700) 1 commit
 + format-patch: migrate to parse-options API

* jh/notes (Sat May 16 13:44:17 2009 +0200) 5 commits
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

* rc/http-push (Mon May 18 16:14:24 2009 +0800) 15 commits
 - http*: add helper methods for fetching objects (loose)
 - http*: add helper methods for fetching objects/info/packs
 - http*: add helper methods for fetching packs
 - http*: add fetch_http_pack_index
 - http: create function end_url_with_slash
 - http*: move common variables and macros to http.[ch]
 - http-push: do not SEGV after fetching a bad pack idx file
 - http*: copy string returned by sha1_to_hex
 - http-walker: verify remote packs
 - http-push, http-walker: style fixes
 - t5550-http-fetch: test fetching of packed objects
 - http-push: fix missing "#ifdef USE_CURL_MULTI" around
   "is_running_queue"
 - http-push: send out fetch requests on queue
 - t5540-http-push: test fetching of packed objects
 - t5540-http-push: test fetching of loose objects

This is not the re-rolled 18-patch series we discussed yesterday.

* cc/replace (Tue Apr 14 00:36:59 2009 +0200) 13 commits
 - Documentation: add documentation for "git replace"
 - Add git-replace to .gitignore
 - builtin-replace: use "usage_msg_opt" to give better error messages
 - parse-options: add new function "usage_msg_opt"
 - builtin-replace: teach "git replace" to actually replace
 - Add new "git replace" command
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

I suspect an attempt to replace an object that is directly listed on the
command line would not work very well with this series.

----------------------------------------------------------------
[On Hold]

* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit
 - receive-pack: default receive.denyDeleteCurrent to refuse

* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit
 - Refuse updating the current branch in a non-bare repository via
   push

These are for 1.7.0, but the messages when they trigger together may need
to be rethought.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2015, #06; Mon, 26)
@ 2015-10-26 23:20  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-26 23:20 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

At tinyurl.com/gitCal, I drew a 14-week schedule for this cycle.  I
plan to be offline during weeks #7-#9 myself; hopefully we'll have
capable interim maintainers to take care of the list traffic in the
meantime as in past years.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dk/p4-import-ctypes (2015-10-20) 1 commit
  (merged to 'next' on 2015-10-22 at 5760144)
 + git-p4: import the ctypes module

 "git-p4" tried to use from ctypes module without first importing
 it.


* dt/t7063-fix-flaky-test (2015-10-19) 1 commit
  (merged to 'next' on 2015-10-20 at 156af72)
 + t7063: fix flaky untracked-cache test


* es/worktree-add (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at ccadb70)
 + worktree: usage: denote <branch> as optional with 'add'


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
  (merged to 'next' on 2015-10-15 at 7dde994)
 + am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).


* jc/usage-stdin (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 937d4aa)
 + usage: do not insist that standard input must come from a file

 The synopsis text and the usage string of subcommands that read
 list of things from the standard input are often shown as if they
 only take input from a file on a filesystem, which was misleading.


* jk/repository-extension (2015-06-24) 2 commits
  (merged to 'next' on 2015-10-22 at 116c8ce)
 + introduce "preciousObjects" repository extension
 + introduce "extensions" form of core.repositoryformatversion

 Prepare for Git on-disk repository representation to undergo
 backward incompatible changes by introducing a new repository
 format version "1", with an extension mechanism.


* kn/for-each-tag (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at 7afd374)
 + tag.c: use the correct algorithm for the '--contains' option

 Recent update to "git tag --contains" caused a performance
 regression.


* mr/worktree-list (2015-10-08) 5 commits
  (merged to 'next' on 2015-10-20 at 7cb272d)
 + worktree: add 'list' command
 + worktree: add details to the worktree struct
 + worktree: add a function to get worktree details
 + worktree: refactor find_linked_symref function
 + worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".


* rt/placeholder-in-usage (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 5189b23)
 + am, credential-cache: add angle brackets to usage string

 A couple of commands still showed "[options]" in their usage string
 to note where options should come on their command line, but we
 spell that "[<options>]" in most places these days.


* tk/stripspace (2015-10-16) 2 commits
  (merged to 'next' on 2015-10-20 at 327a997)
 + stripspace: use parse-options for command-line parsing
 + strbuf: make stripspace() part of strbuf

 The internal stripspace() function has been moved to where it
 logically belongs to, i.e. strbuf API, and the command line parser
 of "git stripspace" has been updated to use the parse_options API.

--------------------------------------------------
[New Topics]

* gr/rebase-i-drop-warn (2015-10-26) 1 commit
 - rebase-i: work around Windows CRLF line endings

 Recent update to "rebase -i" that tries to sanity check the edited
 insn sheet before it uses it has become too picky on Windows where
 CRLF left by the editor is turned into a trailing CR on the line
 read via the "read" built-in command.

 Waiting for comments.


* jc/add-u-A-default-to-top (2015-10-24) 1 commit
 - add: simplify -u/-A without pathspec

 "git --literal-pathspecs add -u/-A" without any command line
 argument misbehaved ever since Git 2.0.

 Waiting for comments.


* jk/delete-modechange-conflict (2015-10-26) 3 commits
 - merge: detect delete/modechange conflict
 - t6031: generalize for recursive and resolve strategies
 - t6031: move triple-rename test to t3030

 Merging a branch that removes a path and another that changes the
 mode bits on the same path should have conflicted at the path, but
 it didn't and silently favoured the removal.

 Will merge to 'next'.


* jk/war-on-sprintf (2015-10-23) 2 commits
  (merged to 'next' on 2015-10-23 at 3a94851)
 + compat/mingw.c: remove printf format warning
 + read_branches_file: plug a FILE* leak

 Will merge to 'master'.


* js/imap-send-curl-compilation-fix (2015-10-26) 1 commit
 - imap-send: only use CURLOPT_LOGIN_OPTIONS if it is actually available

 "git imap-send" did not compile well with older version of cURL library.

 Will merge to 'next'.


* js/misc-fixes (2015-10-26) 3 commits
 - Correct fscanf formatting string for I64u values
 - Silence GCC's "cast of pointer to integer of a different size" warning
 - Squelch warning about an integer overflow

 Various compilation fixes and squelching of warnings.

 Will merge to 'next'.


* mk/blame-error-message (2015-10-26) 1 commit
 - blame: fix option name in error message

 Will merge to 'next'.


* pt/http-socks-proxy (2015-10-26) 1 commit
 - remote-http(s): support SOCKS proxies

 Add support for talking http/https over socks proxy.

 Will merge to 'next'.


* rs/pop-commit (2015-10-26) 1 commit
 - use pop_commit() for consuming the first entry of a struct commit_list

 Code simplification.

 Will merge to 'next'.


* xf/user-manual-ff (2015-10-26) 1 commit
 - user-manual: fix the description of fast-forward

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without corresponding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

--------------------------------------------------
[Cooking]

* ar/clone-dissociate (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 6bf746f)
 + clone: allow "--dissociate" without reference

 "git clone --dissociate" used to require that "--reference" was
 used at the same time, but you can create a new repository that
 borrows objects from another without using "--reference", namely
 with "clone --local" from a repository that borrows objects from
 other repositories.

 Will merge to 'master'.


* da/difftool (2015-10-21) 1 commit
 - difftool: gracefully handle symlinks to directories

 The code to reuse checked out files for comparison was too
 aggressive and forgot that symbolic links cannot be reused
 for comparison.

 Smells wrong that this special-cases based on the target of
 symbolic link.


* dt/name-hash-dir-entry-fix (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at 15eb519)
 + name-hash: don't reuse cache_entry in dir_entry

 The name-hash subsystem that is used to cope with case insensitive
 filesystems keeps track of directories and their on-filesystem
 cases for all the paths in the index by holding a pointer to a
 randomly chosen cache entry that is inside the directory (for its
 ce->ce_name component).  This pointer was not updated even when the
 cache entry was removed from the index, leading to use after free.
 This was fixed by recording the path for each directory instead of
 borrowing cache entries and restructuring the API somewhat.

 Will merge to 'master'.


* jc/everyday-markup (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-22 at 0a2702d)
 + Documentation/everyday: match undefline with the text

 AsciiDoc markup fixes.

 Will merge to 'master'.


* tk/sigchain-unnecessary-post-tempfile (2015-10-22) 4 commits
  (merged to 'next' on 2015-10-22 at b049f0a)
 + shallow: remove unused #include "sigchain.h"
 + read-cache: remove unused #include "sigchain.h"
 + diff: remove unused #include "sigchain.h"
 + credential-cache--daemon: remove unused #include "sigchain.h"

 Remove no-longer used #include.

 Will merge to 'master'.


* xf/user-manual-markup (2015-10-22) 3 commits
  (merged to 'next' on 2015-10-22 at cd33c83)
 + Documentation: match undefline with the text in old release notes
 + Documentation: match underline with the text
 + Documentation: fix header markup

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jc/em-dash-in-doc (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-23 at 31a08ce)
 + Documentation: AsciiDoc spells em-dash as double-dashes, not triple

 AsciiDoc markup fixes.

 Will merge to 'master'.


* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
  (merged to 'next' on 2015-10-23 at 8a697f0)
 + notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Will cook in 'next'.


* dt/refs-backend-pre-vtable (2015-10-15) 26 commits
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Expecting a reroll after an review of the remainder.
 ($gmane/279897).


* jc/mailinfo (2015-10-21) 1 commit
 - mailinfo: ignore in-body header that we do not care about
 (this branch uses jc/am-mailinfo-direct and jc/mailinfo-lib.)

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* jc/am-mailinfo-direct (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at ca15014)
 + am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Will merge to 'master'.


* jc/mailinfo-lib (2015-10-21) 34 commits
  (merged to 'next' on 2015-10-22 at 405bd66)
 + mailinfo: remove calls to exit() and die() deep in the callchain
 + mailinfo: handle charset conversion errors in the caller
 + mailinfo: libify
 + mailinfo: keep the parsed log message in a strbuf
 + mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 + mailinfo: move content/content_top to struct mailinfo
 + mailinfo: move [ps]_hdr_data to struct mailinfo
 + mailinfo: move cmitmsg and patchfile to struct mailinfo
 + mailinfo: move charset to struct mailinfo
 + mailinfo: move transfer_encoding to struct mailinfo
 + mailinfo: move check for metainfo_charset to convert_to_utf8()
 + mailinfo: move metainfo_charset to struct mailinfo
 + mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 + mailinfo: move add_message_id and message_id to struct mailinfo
 + mailinfo: move patch_lines to struct mailinfo
 + mailinfo: move filter/header stage to struct mailinfo
 + mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 + mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 + mailinfo: introduce "struct mailinfo" to hold globals
 + mailinfo: move global "line" into mailinfo() function
 + mailinfo: do not let find_boundary() touch global "line" directly
 + mailinfo: do not let handle_boundary() touch global "line" directly
 + mailinfo: do not let handle_body() touch global "line" directly
 + mailinfo: get rid of function-local static states
 + mailinfo: move definition of MAX_HDR_PARSED closer to its use
 + mailinfo: move cleanup_space() before its users
 + mailinfo: move check_header() after the helpers it uses
 + mailinfo: move read_one_header_line() closer to its callers
 + mailinfo: move handle_boundary() lower
 + mailinfo: plug strbuf leak during continuation line handling
 + mailinfo: explicitly close file handle to the patch output
 + mailinfo: fix an off-by-one error in the boundary stack
 + mailinfo: fold decode_header_bq() into decode_header()
 + mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.

 Will merge to 'master'.


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-23 at dc631e5)
 + am: make a direct call to merge_recursive
 + merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Will cook in 'next'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* rp/link-curl-before-ssl (2015-10-21) 3 commits
  (merged to 'next' on 2015-10-22 at dad4fc6)
 + configure.ac: detect ssl need with libcurl
 + Makefile: make curl-config path configurable
 + Makefile: link libcurl before zlib

 The linkage order of libraries was wrong in places around libcurl.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-23) 18 commits
 - (NEEDSWORK) clone: allow an explicit argument for parallel submodule clones
 - submodule update: expose parallelism to the user
 - git submodule update: have a dedicated helper for cloning
 - submodule config: keep update strategy around
  (merged to 'next' on 2015-10-23 at 8f04bbd)
 + run-command: fix missing output from late callbacks
 + test-run-command: increase test coverage
 + test-run-command: test for gracefully aborting
 + run-command: initialize the shutdown flag
 + run-command: clear leftover state from child_process structure
 + run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* km/cache-entry-refcnt (2015-10-14) 1 commit
 . merge: fix cache_entry use-after-free

 Made unnecessary with dt/name-hash-dir-entry-fix topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2018, #01; Mon, 7)
@ 2018-05-07 14:58  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-07 14:58 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
 - test: correct detection of UTF8_NFD_TO_NFC for APFS

 A test to see if the filesystem normalizes UTF-8 filename has been
 updated to check what we need to know in a more direct way, i.e. a
 path created in NFC form can be accessed with NFD form (or vice
 versa) to cope with APFS as well as HFS.

 Will merge to 'next'.


* ab/get-short-oid (2018-05-02) 12 commits
 - get_short_oid: document & warn if we ignore the type selector
 - config doc: document core.disambiguate
 - get_short_oid / peel_onion: ^{commit} should be commit, not committish
 - get_short_oid / peel_onion: ^{tree} should be tree, not treeish
 - get_short_oid: learn to disambiguate by ^{blob}
 - get_short_oid: learn to disambiguate by ^{tag}
 - get_short_oid: sort ambiguous objects by type, then SHA-1
 - sha1-name.c: move around the collect_ambiguous() function
 - cache.h: add comment explaining the order in object_type
 - git-p4: change "commitish" typo to "committish"
 - sha1-array.h: align function arguments
 - sha1-name.c: remove stray newline


* ah/misc-doc-updates (2018-05-06) 7 commits
 - doc: normalize [--options] to [options] in git-diff
 - doc: add note about shell quoting to revision.txt
 - git-svn: remove ''--add-author-from' for 'commit-diff'
 - doc: add '-d' and '-o' for 'git push'
 - doc: clarify ignore rules for git ls-files
 - doc: align 'diff --no-index' in text and synopsis
 - doc: improve formatting in githooks.txt

 Misc doc fixes.

 Will merge to 'next'.


* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
 - format-patch: make cover letters always text/plain

 "git format-patch --cover --attach" created a broken MIME multipart
 message for the cover letter, which has been fixed by keeping the
 cover letter as plain text file.

 Will merge to 'next'.


* bp/test-drop-caches (2018-05-04) 1 commit
 - test-drop-caches: simplify delay loading of NtSetSystemInformation

 Code simplification.

 Will merge to 'next'.


* cc/perf-bisect (2018-05-06) 1 commit
 - perf/bisect_run_script: disable codespeed

 Performance test updates.

 Will merge to 'next'.


* cf/submodule-progress-dissociate (2018-05-04) 3 commits
 - submodule: add --dissociate option to add/update commands
 - submodule: add --progress option to add command
 - submodule: clean up subsititions in script

 "git submodule update" and "git submodule add" supported the
 "--reference" option to borrow objects from a neighbouring local
 repository like "git clone" does, but lacked the more recent
 invention "--dissociate".  Also "git submodule add" has been taught
 to take the "--progress" option.

 Is this ready for 'next'?  Should "git submodule -h" list the new
 options in its short help?


* dd/send-email-reedit (2018-05-06) 1 commit
 - git-send-email: allow re-editing of message

 "git send-email" can sometimes offer confirmation dialog "Send this
 email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
 'Edit' has been added to this dialog's choice.
 
 Waiting briefly for an ack or two.
 cf. <xmqq4ljlsahj.fsf@gitster-ct.c.googlers.com>


* em/status-rename-config (2018-05-06) 1 commit
 - wt-status: use settings from git_diff_ui_config

 "git status" learned to pay attention to UI related diff
 configuration variables such as diff.renames.

 Will merge to 'next'.


* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
 - block alloc: add validations around cache_entry lifecyle
 - block alloc: allocate cache entries from mem_pool
 - mem-pool: fill out functionality
 - block alloc: add lifecycle APIs for cache_entry structs
 - read-cache: teach refresh_cache_entry() to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 Needs review.  
 Is the "caller always knows which pool an entry came from and calls
 the right kind of free" a feasible approach?


* js/branch-diff (2018-05-06) 18 commits
 - completion: support branch-diff
 - branch-diff: add a man page
 - branch-diff --dual-color: work around bogus white-space warning
 - branch-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: provide inverted colors, too
 - branch-diff: use color for the commit pairs
 - branch-diff: add tests
 - branch-diff: do not show "function names" in hunk headers
 - branch-diff: adjust the output of the commit pairs
 - branch-diff: suppress the diff headers
 - branch-diff: indent the diffs just like tbdiff
 - branch-diff: right-trim commit messages
 - branch-diff: also show the diff between patches
 - branch-diff: improve the order of the shown commits
 - branch-diff: first rudimentary implementation
 - Add a new builtin: branch-diff
 - Add a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 Expecting a reroll.
 cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>


* js/sequencer-and-root-commits (2018-05-06) 6 commits
 - rebase --rebase-merges: root commits can be cousins, too
 - rebase --rebase-merges: a "merge" into a new root is a fast-forward
 - sequencer: allow introducing new root commits
 - rebase -i --root: let the sequencer handle even the initial part
 - sequencer: learn about the special "fake root commit" handling
 - sequencer: extract helper to update active_cache_tree
 (this branch uses js/rebase-recreate-merge.)

 The implementation of "git rebase -i --root" has been updaed to use
 the sequencer machinery more.

 Will merge to 'next'.


* js/use-bug-macro (2018-05-06) 4 commits
 - Convert remaining die*(BUG) messages
 - Replace all die("BUG: ...") calls by BUG() ones
 - run-command: use BUG() to report bugs, not die()
 - test-tool: help verifying BUG() code paths


* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
 - {fetch,upload}-pack: support filter in protocol v2
 - upload-pack: read config when serving protocol v2
 - upload-pack: fix error message typo
 - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2
 (this branch uses bw/protocol-v2; is tangled with bw/server-options.)

 Transfer protocol v2 learned to support the partial clone.

 Will merge to 'next'.


* ma/doc-expand-tabs (2018-05-02) 1 commit
 - revisions.txt: expand tabs to spaces in diagram

 Fix one instance of asciidoctor's misformatting by expanding a tab
 into spaces in a literal block.

 Will discard.  This approach is less maintainable than the approach
 taken by bc/asciidoctor-tab-width topic.


* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
 - completion: fix misspelled config key aliasesfiletype

 Typofix.

 Will merge to 'next'.


* nd/doc-header (2018-05-02) 1 commit
 - doc: keep first level section header in upper case

 Doc formatting fix.

 Will merge to 'next'.


* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
 - pack-objects: validation and documentation about unreachable options

 Doc update.

 Will merge to 'next'.


* sb/object-store-alloc (2018-05-02) 14 commits
 - alloc.c: include alloc.h
 - alloc: allow arbitrary repositories for alloc functions
 - object: allow create_object to handle arbitrary repositories
 - object: allow grow_object_hash to handle arbitrary repositories
 - alloc: add repository argument to alloc_commit_index
 - alloc: add repository argument to alloc_report
 - alloc: add repository argument to alloc_object_node
 - alloc: add repository argument to alloc_tag_node
 - alloc: add repository argument to alloc_commit_node
 - alloc: add repository argument to alloc_tree_node
 - alloc: add repository argument to alloc_blob_node
 - object: add repository argument to grow_object_hash
 - object: add repository argument to create_object
 - repository: introduce object parser field
 (this branch uses sb/object-store-replace and sb/oid-object-info.)

 The conversion to pass "the_repository" and then "a_repository"
 throughout the object access API continues.


* tb/grep-column (2018-05-06) 7 commits
 - contrib/git-jump/git-jump: jump to match column in addition to line
 - grep.c: add configuration variables to show matched option
 - builtin/grep.c: add '--column' option to 'git-grep(1)'
 - grep.c: display column number of first match
 - grep.[ch]: extend grep_opt to allow showing matched column
 - grep.c: expose matched column in match_line()
 - Documentation/config.txt: camel-case lineNumber for consistency

 "git grep" learned the "--column" option that gives not just the
 line number but the column number of the hit.


* bc/asciidoctor-tab-width (2018-05-07) 2 commits
 - Documentation: render revisions correctly under Asciidoctor
 - Documentation: use 8-space tabs with Asciidoctor

 Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
 render illustration in a literal block correctly when indented with
 HT by default. The problem is fixed by forcing 8-space tabs.

 Will merge to 'next'.


* bc/mailmap-self (2018-05-07) 1 commit
 - mailmap: update brian m. carlson's email address

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* pc/submodule-helper-foreach (2018-02-02) 5 commits
 - submodule: port submodule subcommand 'foreach' from shell to C
 - submodule foreach: document variable '$displaypath'
 - submodule foreach: clarify the '$toplevel' variable documentation
 - submodule foreach: document '$sm_path' instead of '$path'
 - submodule foreach: correct '$path' in nested submodules from a subdirectory

 Expecting a response to review comments
 e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>


* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* jh/json-writer (2018-03-28) 1 commit
 - json_writer: new routines to create data in JSON format

 Preparatory code to later add json output for unspecified telemetry
 data.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* is/parsing-line-range (2018-04-27) 2 commits
 . log: prevent error if line range ends past end of file
 . blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Seems to break a few tests.


* ld/p4-unshelve (2018-02-22) 1 commit
 - git-p4: add unshelve command

 "git p4" learned to "unshelve" shelved commit from P4.

 Will hold, perhaps drop and use format-change that uses a proper "diff".
 cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* mk/http-backend-content-length (2017-11-27) 4 commits
 - SQUASH???
 - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
 - SQUASH???
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.

 Expecting a reroll.
 Suggested fixes to be used when rerolling is queued, but I'd
 prefer _not_ squashing them myself.

 Also, it may be too complex solution for the problem.
 cf. <20171204171308.GA13332@sigill.intra.peff.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
 - perf/aggregate: use Getopt::Long for option parsing

 Perf-test helper updates.

 Will merge to 'next'.


* ab/perl-python-attrs (2018-04-27) 3 commits
 - .gitattributes: add a diff driver for Python
 - .gitattributes: use the "perl" differ for Perl
 - .gitattributes: add *.pl extension for Perl

 We learned that our source files with ".pl" and ".py" extensions
 are Perl and Python files respectively and changes to them are
 better viewed as such with appropriate diff drivers.

 Will merge to 'next'.


* js/test-unset-prereq (2018-04-30) 1 commit
 - tests: introduce test_unset_prereq, for debugging

 Test debugging aid.

 Will merge to 'next'.
 cf. <20180507115950.3887-1-szeder.dev@gmail.com>


* fg/completion-external (2018-04-30) 1 commit
 - completion: load completion file for external subcommand

 The command line completion mechanism (in contrib/) learned to load
 custom completion file for "git $command" where $command is a
 custom "git-$command" that the end user has on the $PATH when using
 newer version of bash.

 Will merge to 'next'.
 cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>


* ma/double-dashes-in-docs (2018-04-18) 4 commits
  (merged to 'next' on 2018-04-25 at aaac2dc63c)
 + git-submodule.txt: quote usage in monospace, drop backslash
 + git-[short]log.txt: unify quoted standalone --
 + doc: convert [\--] to [--]
 + doc: convert \--option to --option

 Doc formatting updates.

 Will merge to 'master'.


* sb/worktree-remove-opt-force (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 0367d52a4b)
 + worktree: accept -f as short for --force for removal

 "git worktree remove" learned that "-f" is a shorthand for
 "--force" option, just like for "git worktree add".

 Will merge to 'master'.


* sg/completion-clear-cached (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 9178da6c3d)
 + completion: reduce overhead of clearing cached --options

 The completion script (in contrib/) learned to clear cached list of
 command line options upon dot-sourcing it again in a more efficient
 way.

 Will merge to 'master'.


* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at bc3d1abf45)
 + docs/git-gc: fix minor rendering issue

 Doc formatting fix.

 Will merge to 'master'.


* js/ident-date-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at d50ec2f4c1)
 + sequencer: reset the committer date before commits

 During a "rebase -i" session, the code could give older timestamp
 to commits created by later "pick" than an earlier "reword", which
 has been corrected.

 Will merge to 'master'.


* nd/submodule-status-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 34d1f9ca83)
 + submodule--helper: don't print null in 'submodule status'

 "git submodule status" did not check the symbolic revision name it
 computed for the submodule HEAD is not the NULL, and threw it at
 printf routines, which has been corrected.

 Will merge to 'master'.


* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 2a1fd8217e)
 + send-email: avoid duplicate In-Reply-To/References

 When fed input that already has In-Reply-To: and/or References:
 headers and told to add the same information, "git send-email"
 added these headers separately, instead of appending to an existing
 one, which is a violation of the RFC.  This has been corrected.

 Will merge to 'master'.


* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
  (merged to 'next' on 2018-04-30 at 93d0af5375)
 + completion: make stash -p and alias for stash push -p
 + completion: stop showing 'save' for stash by default

 The command line completion (in contrib/) has been taught that "git
 stash save" has been deprecated ("git stash push" is the preferred
 spelling in the new world) and does not offer it as a possible
 completion candidate when "git stash push" can be.

 Will merge to 'master'.


* tz/doc-git-urls-reference (2018-04-20) 1 commit
  (merged to 'next' on 2018-04-30 at 39926c99fd)
 + doc/clone: update caption for GIT URLS cross-reference

 Doc fix.

 Will merge to 'master'.


* js/deprecate-grafts (2018-04-30) 12 commits
 - Remove obsolete script to convert grafts to replace refs
 - technical/shallow: describe why shallow cannot use replace refs
 - technical/shallow: stop referring to grafts
 - filter-branch: stop suggesting to use grafts
 - Deprecate support for .git/info/grafts
 - Add a test for `git replace --convert-graft-file`
 - replace: introduce --convert-graft-file
 - replace: prepare create_graft() for converting graft files wholesale
 - replace: "libify" create_graft() and callees
 - replace: avoid using die() to indicate a bug
 - commit: Let the callback of for_each_mergetag return on error
 - argv_array: offer to split a string by whitespace

 The functionality of "$GIT_DIR/info/grafts" has been superseded by
 the "refs/replace/" mechanism for some time now, but the internal
 code had support for it in many places, which has been cleaned up
 in order to drop support of the "grafts" mechanism.

 Will merge to 'next'.


* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
 - rebase --skip: clean up commit message after a failed fixup/squash
 - sequencer: always commit without editing when asked for
 - rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
 - rebase -i: demonstrate bugs with fixup!/squash! commit messages

 "git rebase -i" sometimes left intermediate "# This is a
 combination of N commits" message meant for the human consumption
 inside an editor in the final result in certain corner cases, which
 has been fixed.

 Will merge to 'next'.


* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
  (merged to 'next' on 2018-04-30 at f7fca02ab1)
 + fast-export: fix regression skipping some merge-commits

 "git fast-export" had a regression in v2.15.0 era where it skipped
 some merge commits in certain cases, which has been corrected.

 Will merge to 'master'.


* bw/server-options (2018-04-24) 4 commits
 - fetch: send server options when using protocol v2
 - ls-remote: send server options when using protocol v2
 - serve: introduce the server-option capability
 - Merge branch 'bw/protocol-v2' into HEAD
 (this branch uses bw/protocol-v2; is tangled with jt/partial-clone-proto-v2.)

 The transport protocol v2 is getting updated further.

 Will merge to 'next'.


* jc/parseopt-expiry-errors (2018-04-23) 2 commits
  (merged to 'next' on 2018-04-30 at 637085f3d8)
 + parseopt: handle malformed --expire arguments more nicely
 + gc: do not upcase error message shown with die()

 "git gc --prune=nonsense" spent long time repacking and then
 silently failed when underlying "git prune --expire=nonsense"
 failed to parse its command line.  This has been corrected.

 Will merge to 'master'.


* js/colored-push-errors (2018-04-24) 4 commits
  (merged to 'next' on 2018-04-30 at 31076c52a2)
 + config: document the settings to colorize push errors/hints
 + push: test to verify that push errors are colored
 + push: colorize errors
 + color: introduce support for colorizing stderr

 Error messages from "git push" can be painted for more visibility.

 Will merge to 'master'.


* js/runtime-prefix (2018-04-24) 8 commits
  (merged to 'next' on 2018-04-30 at c6cfccf40e)
 + Avoid multiple PREFIX definitions
 + git_setup_gettext: plug memory leak
 + gettext: avoid initialization if the locale dir is not present
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with dj/runtime-prefix.)

 Will merge to 'master'.


* ma/http-walker-no-partial (2018-04-24) 2 commits
  (merged to 'next' on 2018-04-30 at 4582c99ba8)
 + walker: drop fields of `struct walker` which are always 1
 + http-fetch: make `-a` standard behaviour

 "git http-fetch" (deprecated) had an optional and experimental
 "feature" to fetch only commits and/or trees, which nobody used.
 This has been removed.

 Will merge to 'master'.


* bc/object-id (2018-05-02) 42 commits
 - merge-one-file: compute empty blob object ID
 - add--interactive: compute the empty tree value
 - Update shell scripts to compute empty tree object ID
 - sha1_file: only expose empty object constants through git_hash_algo
 - dir: use the_hash_algo for empty blob object ID
 - sequencer: use the_hash_algo for empty tree object ID
 - cache-tree: use is_empty_tree_oid
 - sha1_file: convert cached object code to struct object_id
 - builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
 - builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
 - wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
 - submodule: convert several uses of EMPTY_TREE_SHA1_HEX
 - sequencer: convert one use of EMPTY_TREE_SHA1_HEX
 - merge: convert empty tree constant to the_hash_algo
 - builtin/merge: switch tree functions to use object_id
 - builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
 - sha1-file: add functions for hex empty tree and blob OIDs
 - builtin/receive-pack: avoid hard-coded constants for push certs
 - diff: specify abbreviation size in terms of the_hash_algo
 - upload-pack: replace use of several hard-coded constants
 - revision: replace use of hard-coded constants
 - http: eliminate hard-coded constants
 - dir: convert struct untracked_cache_dir to object_id
 - commit: convert uses of get_sha1_hex to get_oid_hex
 - index-pack: abstract away hash function constant
 - pack-redundant: convert linked lists to use struct object_id
 - Update struct index_state to use struct object_id
 - split-index: convert struct split_index to object_id
 - submodule-config: convert structures to object_id
 - fsck: convert static functions to struct object_id
 - tree-walk: convert get_tree_entry_follow_symlinks to object_id
 - tree-walk: avoid hard-coded 20 constant
 - pack-redundant: abstract away hash algorithm
 - pack-objects: abstract away hash algorithm
 - packfile: abstract away hash constant values
 - packfile: convert find_pack_entry to object_id
 - sha1-file: convert freshen functions to object_id
 - packfile: convert has_sha1_pack to object_id
 - packfile: remove unused member from struct pack_entry
 - Remove unused member in struct object_context
 - server-info: remove unused members from struct pack_info
 - cache: add a function to read an object ID from a buffer

 Conversion from uchar[20] to struct object_id continues.


* sb/oid-object-info (2018-04-26) 9 commits
 - cache.h: allow oid_object_info to handle arbitrary repositories
 - packfile: add repository argument to cache_or_unpack_entry
 - packfile: add repository argument to unpack_entry
 - packfile: add repository argument to read_object
 - packfile: add repository argument to packed_object_info
 - packfile: add repository argument to packed_to_object_type
 - packfile: add repository argument to retry_bad_packed_offset
 - cache.h: add repository argument to oid_object_info
 - cache.h: add repository argument to oid_object_info_extended
 (this branch is used by sb/object-store-alloc; uses sb/object-store-replace.)

 The codepath around object-info API has been taught to take the
 repository object (which in turn tells the API which object store
 the objects are to be located).

 Will merge to 'next'.


* en/unpack-trees-split-index-fix (2018-05-02) 1 commit
 - unpack_trees: fix breakage when o->src_index != o->dst_index

 The split-index feature had a long-standing and dormant bug in
 certain use of the in-core merge machinery, which has been fixed.

 Will merge to 'next'.
 cf. <CACsJy8CeDhrT9GXe9q5gqsAeq_sSQ8jyF2nMOFxzjwKtE31oPQ@mail.gmail.com>


* bp/merge-rename-config (2018-05-04) 3 commits
 - merge: pass aggressive when rename detection is turned off
 - merge: add merge.renames config setting
 - merge: update documentation for {merge,diff}.renameLimit
 (this branch uses en/rename-directory-detection-reboot.)


* en/git-debugger (2018-04-25) 1 commit
 - Make running git under other debugger-like programs easy

 Dev support.

 Will merge to 'next'.


* js/no-pager-shorthand (2018-05-04) 1 commit
 - git: add -P as a short option for --no-pager

 "git --no-pager cmd" did not have short-and-sweet single letter
 option. Now it does.

 Will merge to 'next'.


* sb/diff-color-move-more (2018-04-25) 7 commits
 - diff.c: add --color-moved-ignore-space-delta option
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.


* so/glossary-ancestor (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 0a849fee00)
 + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

 Docfix.

 Will merge to 'master'.


* bt/gpg-interface (2018-04-16) 7 commits
  (merged to 'next' on 2018-04-30 at 50c507b7d8)
 + gpg-interface: find the last gpg signature line
 + gpg-interface: extract gpg line matching helper
 + gpg-interface: fix const-correctness of "eol" pointer
 + gpg-interface: use size_t for signature buffer size
 + gpg-interface: modernize function declarations
 + gpg-interface: handle bool user.signingkey
 + t7004: fix mistaken tag name

 What is queued here is only the obviously correct and
 uncontroversial code clean-up part, which is an earlier 7 patches,
 of a larger series.

 The remainder that is not queued introduces a few configuration
 variables to deal with e-signature backends with different
 signature format.

 Will merge to 'master'.


* ds/generation-numbers (2018-05-02) 11 commits
 - commit-graph.txt: update design document
 - merge: check config before loading commits
 - commit: use generation number in remove_redundant()
 - commit: add short-circuit to paint_down_to_common()
 - commit: use generation numbers for in_merge_bases()
 - ref-filter: use generation number for --contains
 - commit-graph: always load commit-graph information
 - commit: use generations in paint_down_to_common()
 - commit-graph: compute generation numbers
 - commit: add generation number to struct commmit
 - ref-filter: fix outdated comment on in_commit_list
 (this branch uses ds/commit-graph and ds/lazy-load-trees.)

 A recently added "commit-graph" datafile has learned to store
 pre-computed generation numbers to speed up the decisions to stop
 history traversal.

 Is this ready for 'next'?


* en/rename-directory-detection-reboot (2018-04-25) 36 commits
 - merge-recursive: fix check for skipability of working tree updates
 - merge-recursive: make "Auto-merging" comment show for other merges
 - merge-recursive: fix remainder of was_dirty() to use original index
 - merge-recursive: fix was_tracked() to quit lying with some renamed paths
 - t6046: testcases checking whether updates can be skipped in a merge
 - merge-recursive: avoid triggering add_cacheinfo error with dirty mod
 - merge-recursive: move more is_dirty handling to merge_content
 - merge-recursive: improve add_cacheinfo error handling
 - merge-recursive: avoid spurious rename/rename conflict from dir renames
 - directory rename detection: new testcases showcasing a pair of bugs
 - merge-recursive: fix remaining directory rename + dirty overwrite cases
 - merge-recursive: fix overwriting dirty files involved in renames
 - merge-recursive: avoid clobbering untracked files with directory renames
 - merge-recursive: apply necessary modifications for directory renames
 - merge-recursive: when comparing files, don't include trees
 - merge-recursive: check for file level conflicts then get new name
 - merge-recursive: add computation of collisions due to dir rename & merging
 - merge-recursive: check for directory level conflicts
 - merge-recursive: add get_directory_renames()
 - merge-recursive: make a helper function for cleanup for handle_renames
 - merge-recursive: split out code for determining diff_filepairs
 - merge-recursive: make !o->detect_rename codepath more obvious
 - merge-recursive: fix leaks of allocated renames and diff_filepairs
 - merge-recursive: introduce new functions to handle rename logic
 - merge-recursive: move the get_renames() function
 - directory rename detection: tests for handling overwriting dirty files
 - directory rename detection: tests for handling overwriting untracked files
 - directory rename detection: miscellaneous testcases to complete coverage
 - directory rename detection: testcases exploring possibly suboptimal merges
 - directory rename detection: more involved edge/corner testcases
 - directory rename detection: testcases checking which side did the rename
 - directory rename detection: files/directories in the way of some renames
 - directory rename detection: partially renamed directory testcase/discussion
 - directory rename detection: testcases to avoid taking detection too far
 - directory rename detection: directory splitting testcases
 - directory rename detection: basic testcases
 (this branch is used by bp/merge-rename-config.)

 Rename detection logic in "diff" family that is used in "merge" has
 learned to guess when all of x/a, x/b and x/c have moved to z/a,
 z/b and z/c, it is likely that x/d added in the meantime would also
 want to move to z/d by taking the hint that the entire directory
 'x' moved to 'z'.  Incidentally, this avoids updating a file in the
 working tree after a (non-trivial) merge whose result matches what
 our side originally had.

 Will merge to 'next'.


* nd/command-list (2018-04-30) 10 commits
 - completion: let git provide the completable command list
 - help: use command-list.txt for the source of guides
 - help: add "-a --verbose" to list all commands with synopsis
 - git: support --list-cmds=list-<category>
 - completion: implement and use --list-cmds=main,others
 - git.c: convert --list-*builtins to --list-cmds=*
 - Remove common-cmds.h
 - help: use command-list.h for common command list
 - generate-cmds.sh: export all commands to command-list.h
 - generate-cmds.sh: factor out synopsis extract code

 The list of commands with their various attributes were spread
 across a few places in the build procedure, but it now is getting a
 bit more consolidated to allow more automation.

 Is this ready for 'next'.


* sb/object-store-replace (2018-04-12) 15 commits
  (merged to 'next' on 2018-04-25 at 9a213fb505)
 + replace-object: allow lookup_replace_object to handle arbitrary repositories
 + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
 + replace-object: allow prepare_replace_object to handle arbitrary repositories
 + refs: allow for_each_replace_ref to handle arbitrary repositories
 + refs: store the main ref store inside the repository struct
 + replace-object: add repository argument to lookup_replace_object
 + replace-object: add repository argument to do_lookup_replace_object
 + replace-object: add repository argument to prepare_replace_object
 + refs: add repository argument to for_each_replace_ref
 + refs: add repository argument to get_main_ref_store
 + replace-object: check_replace_refs is safe in multi repo environment
 + replace-object: eliminate replace objects prepared flag
 + object-store: move lookup_replace_object to replace-object.h
 + replace-object: move replace_map to object store
 + replace_object: use oidmap
 (this branch is used by sb/object-store-alloc and sb/oid-object-info.)

 The effort to pass the repository in-core structure throughout the
 API continues.  This round deals with the code that implements the
 refs/replace/ mechanism.

 Will merge to 'master'.


* sg/complete-paths (2018-04-17) 11 commits
 - completion: fill COMPREPLY directly when completing paths
 - completion: improve handling quoted paths in 'git ls-files's output
 - completion: remove repeated dirnames with 'awk' during path completion
 - t9902-completion: ignore COMPREPLY element order in some tests
 - completion: use 'awk' to strip trailing path components
 - completion: let 'ls-files' and 'diff-index' filter matching paths
 - completion: improve handling quoted paths on the command line
 - completion: support completing non-ASCII pathnames
 - completion: simplify prefix path component handling during path completion
 - completion: move __git_complete_index_file() next to its helpers
 - t9902-completion: add tests demonstrating issues with quoted pathnames

 Command line completion (in contrib/) learned to complete pathnames
 for various commands better.

 Will merge to 'next'.


* tq/t1510 (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 5710c81979)
 + t1510-repo-setup.sh: remove useless mkdir

 Test cleanup.

 Will merge to 'master'.


* sb/blame-color (2018-04-24) 3 commits
 - builtin/blame: add new coloring scheme config
 - builtin/blame: highlight recently changed lines
 - builtin/blame: dim uninteresting metadata lines

 "git blame" learns to unhighlight uninteresting metadata from the
 originating commit on lines that are the same as the previous one,
 and also paint lines in different colors depending on the age of
 the commit.

 Is this ready for 'next'?


* ab/simplify-perl-makefile (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at 906cf21682)
 + Makefile: mark perllibdir as a .PHONY target
  (merged to 'next' on 2018-04-17 at 4448756934)
 + perl: fix installing modules from contrib

 Recent simplification of build procedure forgot a bit of tweak to
 the build procedure of contrib/mw-to-git/

 Will merge to 'master'.


* ds/lazy-load-trees (2018-05-02) 6 commits
  (merged to 'next' on 2018-05-02 at d54016d9e3)
 + coccinelle: avoid wrong transformation suggestions from commit.cocci
  (merged to 'next' on 2018-04-25 at b90813f421)
 + commit-graph: lazy-load trees for commits
 + treewide: replace maybe_tree with accessor methods
 + commit: create get_commit_tree() method
 + treewide: rename tree to maybe_tree
 + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
 (this branch is used by ds/generation-numbers; uses ds/commit-graph.)

 The code has been taught to use the duplicated information stored
 in the commit-graph file to learn the tree object name for a commit
 to avoid opening and parsing the commit object when it makes sense
 to do so.

 Will merge to 'master'.


* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 23f875f6b9)
 + git-svn: avoid warning on undef readline()

 "git svn" had a minor thinko/typo which has been fixed.

 Will merge to 'master'.


* hn/sort-ls-remote (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 244ca5d30a)
 + ls-remote: create '--sort' option

 "git ls-remote" learned an option to allow sorting its output based
 on the refnames being shown.

 Will merge to 'master'.


* js/empty-config-section-fix (2018-04-09) 15 commits
  (merged to 'next' on 2018-04-25 at 1690df3e5f)
 + git_config_set: reuse empty sections
 + git config --unset: remove empty sections (in the common case)
 + git_config_set: make use of the config parser's event stream
 + git_config_set: do not use a state machine
 + config_set_store: rename some fields for consistency
 + config: avoid using the global variable `store`
 + config: introduce an optional event stream while parsing
 + t1300: `--unset-all` can leave an empty section behind (bug)
 + t1300: add a few more hairy examples of sections becoming empty
 + t1300: remove unreasonable expectation from TODO
 + t1300: avoid relying on a bug
 + config --replace-all: avoid extra line breaks
 + t1300: demonstrate that --replace-all can "invent" newlines
 + t1300: rename it to reflect that `repo-config` was deprecated
 + git_config_set: fix off-by-two

 "git config --unset a.b", when "a.b" is the last variable in an
 otherwise empty section "a", left an empty section "a" behind, and
 worse yet, a subsequent "git config a.c value" did not reuse that
 empty shell and instead created a new one.  These have been
 (partially) corrected.

 Will merge to 'master'.


* nd/warn-more-for-devs (2018-04-16) 4 commits
  (merged to 'next' on 2018-04-25 at 2978e61414)
 + Makefile: add a DEVOPTS to get all of -Wextra
 + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
 + Makefile: detect compiler and enable more warnings in DEVELOPER=1
 + connect.c: mark die_initial_contact() NORETURN

 The build procedure "make DEVELOPER=YesPlease" learned to enable a
 bit more warning options depending on the compiler used to help
 developers more.  There also is "make DEVOPTS=tokens" knob
 available now, for those who want to help fixing warnings we
 usually ignore, for example.

 Will merge to 'master'.


* sb/submodule-move-nested (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 86b177433a)
 + submodule: fixup nested submodules after moving the submodule
 + submodule-config: remove submodule_from_cache
 + submodule-config: add repository argument to submodule_from_{name, path}
 + submodule-config: allow submodule_free to handle arbitrary repositories
 + grep: remove "repo" arg from non-supporting funcs
 + submodule.h: drop declaration of connect_work_tree_and_git_dir

 Moving a submodule that itself has submodule in it with "git mv"
 forgot to make necessary adjustment to the nested sub-submodules;
 now the codepath learned to recurse into the submodules.

 Will merge to 'master'.


* tb/config-type (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at fe69e93c82)
 + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
 + builtin/config.c: treat type specifiers singularly
 (this branch is used by tb/config-default.)

 The "git config" command uses separate options e.g. "--int",
 "--bool", etc. to specify what type the caller wants the value to
 be interpreted as.  A new "--type=<typename>" option has been
 introduced, which would make it cleaner to define new types.

 Will merge to 'master'.


* tb/config-default (2018-04-23) 3 commits
  (merged to 'next' on 2018-04-25 at 59bb6beb2a)
 + builtin/config: introduce `color` type specifier
 + config.c: introduce 'git_config_color' to parse ANSI colors
 + builtin/config: introduce `--default`
 (this branch uses tb/config-type.)

 "git config --get" learned the "--default" option, to help the
 calling script.  Building on top of the tb/config-type topic, the
 "git config" learns "--type=color" type.  Taken together, you can
 do things like "git config --get foo.color --default blue" and get
 the ANSI color sequence for the color given to foo.color variable,
 or "blue" if the variable does not exist.

 Will merge to 'master'.


* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 056bcaa69c)
 + ref-filter: libify get_ref_atom_value()
 + ref-filter: add return value to parsers
 + ref-filter: change parsing function error handling
 + ref-filter: add return value && strbuf to handlers
 + ref-filter: start adding strbufs with errors
 + ref-filter: add shortcut to work with strbufs

 Code restructuring, in preparation for further work.

 Will merge to 'master'.


* jk/branch-l-0-deprecation (2018-03-26) 3 commits
  (merged to 'next' on 2018-04-11 at 9b2b0305dd)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step deprecates
 the short-hand and warns about the future removal of the it when it
 is used.

 Will cook in 'next'.


* jk/branch-l-1-removal (2018-03-26) 1 commit
 - branch: drop deprecated "-l" option
 (this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)

 Following the "git branch -l" deprecation, the short-hand is removed.

 Will keep in 'pu'.


* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
 - branch: make "-l" a synonym for "--list"
 (this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)

 Following the "git branch -l" removal, "-l" is resurrected as a
 short-hand for "--list".

 Will keep in 'pu'.


* dj/runtime-prefix (2018-04-24) 7 commits
  (merged to 'next' on 2018-04-25 at e7e635a70e)
 + Makefile: quote $INSTLIBDIR when passing it to sed
 + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with js/runtime-prefix.)

 A build-time option has been added to allow Git to be told to refer
 to its associated files relative to the main binary, in the same
 way that has been possible on Windows for quite some time, for
 Linux, BSDs and Darwin.

 Will merge to 'master'.


* ab/nuke-emacs-contrib (2018-04-16) 1 commit
  (merged to 'next' on 2018-04-25 at 9b133d8a65)
 + git{,-blame}.el: remove old bitrotting Emacs code

 The scripts in contrib/emacs/ have outlived their usefulness and
 have been replaced with a stub that errors out and tells the user
 there are replacements.

 Will merge to 'master'.


* nd/pack-objects-pack-struct (2018-04-16) 15 commits
 - ci: exercise the whole test suite with uncommon code in pack-objects
 - pack-objects: reorder members to shrink struct object_entry
 - pack-objects: shrink delta_size field in struct object_entry
 - pack-objects: shrink size field in struct object_entry
 - pack-objects: clarify the use of object_entry::size
 - pack-objects: don't check size when the object is bad
 - pack-objects: shrink z_delta_size field in struct object_entry
 - pack-objects: refer to delta objects by index instead of pointer
 - pack-objects: move in_pack out of struct object_entry
 - pack-objects: move in_pack_pos out of struct object_entry
 - pack-objects: use bitfield for object_entry::depth
 - pack-objects: use bitfield for object_entry::dfs_state
 - pack-objects: turn type and in_pack_type to bitfields
 - pack-objects: a bit of document about struct object_entry
 - read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean

 "git pack-objects" needs to allocate tons of "struct object_entry"
 while doing its work, and shrinking its size helps the performance
 quite a bit.

 Will merge to 'next'.
 cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>


* nd/repack-keep-pack (2018-04-16) 7 commits
 - pack-objects: show some progress when counting kept objects
 - gc --auto: exclude base pack if not enough mem to "repack -ad"
 - gc: handle a corner case in gc.bigPackThreshold
 - gc: add gc.bigPackThreshold config
 - gc: add --keep-largest-pack option
 - repack: add --keep-pack option
 - t7700: have closing quote of a test at the beginning of line

 "git gc" in a large repository takes a lot of time as it considers
 to repack all objects into one pack by default.  The command has
 been taught to pretend as if the largest existing packfile is
 marked with ".keep" so that it is left untouched while objects in
 other packs and loose ones are repacked.

 Will merge to 'next'.
 cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>


* ds/commit-graph (2018-04-11) 16 commits
  (merged to 'next' on 2018-04-25 at 18af3d28d9)
 + commit-graph: implement "--append" option
 + commit-graph: build graph from starting commits
 + commit-graph: read only from specific pack-indexes
 + commit: integrate commit graph with commit parsing
 + commit-graph: close under reachability
 + commit-graph: add core.commitGraph setting
 + commit-graph: implement git commit-graph read
 + commit-graph: implement git-commit-graph write
 + commit-graph: implement write_commit_graph()
 + commit-graph: create git-commit-graph builtin
 + graph: add commit graph design document
 + commit-graph: add format document
 + csum-file: refactor finalize_hashfile() method
 + csum-file: rename hashclose() to finalize_hashfile()
 + Merge branch 'jk/cached-commit-buffer' into HEAD
 + Merge branch 'jt/binsearch-with-fanout' into HEAD
 (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)

 Precompute and store information necessary for ancestry traversal
 in a separate file to optimize graph walking.

 Will merge to 'master'.


* tg/worktree-add-existing-branch (2018-04-30) 4 commits
 - worktree: teach "add" to check out existing branches
 - worktree: factor out dwim_branch function
 - worktree: improve message when creating a new worktree
 - worktree: remove extra members from struct add_opts

 "git worktree add" learned to check out an existing branch.

 Will merge to 'next'.


* js/rebase-recreate-merge (2018-04-26) 17 commits
 - rebase -i --rebase-merges: add a section to the man page
 - rebase -i: introduce --rebase-merges=[no-]rebase-cousins
 - pull: accept --rebase=merges to recreate the branch topology
 - rebase --rebase-merges: avoid "empty merges"
 - sequencer: handle post-rewrite for merge commands
 - sequencer: make refs generated by the `label` command worktree-local
 - rebase --rebase-merges: add test for --keep-empty
 - rebase: introduce the --rebase-merges option
 - rebase-helper --make-script: introduce a flag to rebase merges
 - sequencer: fast-forward `merge` commands, if possible
 - sequencer: introduce the `merge` command
 - sequencer: introduce new commands to reset the revision
 - git-rebase--interactive: clarify arguments
 - sequencer: offer helpful advice when a command was rescheduled
 - sequencer: refactor how original todo list lines are accessed
 - sequencer: make rearrange_squash() a bit more obvious
 - sequencer: avoid using errno clobbered by rollback_lock_file()
 (this branch is used by js/sequencer-and-root-commits.)

 "git rebase" learned "--rebase-merges" to transplant the whole
 topology of commit graph elsewhere.

 Will merge to 'next'.


* bw/protocol-v2 (2018-03-15) 35 commits
  (merged to 'next' on 2018-04-11 at 23ee234a2c)
 + remote-curl: don't request v2 when pushing
 + remote-curl: implement stateless-connect command
 + http: eliminate "# service" line when using protocol v2
 + http: don't always add Git-Protocol header
 + http: allow providing extra headers for http requests
 + remote-curl: store the protocol version the server responded with
 + remote-curl: create copy of the service name
 + pkt-line: add packet_buf_write_len function
 + transport-helper: introduce stateless-connect
 + transport-helper: refactor process_connect_service
 + transport-helper: remove name parameter
 + connect: don't request v2 when pushing
 + connect: refactor git_connect to only get the protocol version once
 + fetch-pack: support shallow requests
 + fetch-pack: perform a fetch using v2
 + upload-pack: introduce fetch server command
 + push: pass ref prefixes when pushing
 + fetch: pass ref prefixes when fetching
 + ls-remote: pass ref prefixes when requesting a remote's refs
 + transport: convert transport_get_remote_refs to take a list of ref prefixes
 + transport: convert get_refs_list to take a list of ref prefixes
 + connect: request remote refs using v2
 + ls-refs: introduce ls-refs server command
 + serve: introduce git-serve
 + test-pkt-line: introduce a packet-line test helper
 + protocol: introduce enum protocol_version value protocol_v2
 + transport: store protocol version
 + connect: discover protocol version outside of get_remote_heads
 + connect: convert get_remote_heads to use struct packet_reader
 + transport: use get_refs_via_connect to get refs
 + upload-pack: factor out processing lines
 + upload-pack: convert to a builtin
 + pkt-line: add delim packet support
 + pkt-line: allow peeking a packet line without consuming it
 + pkt-line: introduce packet_read_with_status
 (this branch is used by bw/server-options and jt/partial-clone-proto-v2.)

 The beginning of the next-gen transfer protocol.

 Will merge to 'master'.


* ls/checkout-encoding (2018-04-16) 10 commits
  (merged to 'next' on 2018-04-25 at e0f8554b2a)
 + convert: add round trip check based on 'core.checkRoundtripEncoding'
 + convert: add tracing for 'working-tree-encoding' attribute
 + convert: check for detectable errors in UTF encodings
 + convert: add 'working-tree-encoding' attribute
 + utf8: add function to detect a missing UTF-16/32 BOM
 + utf8: add function to detect prohibited UTF-16/32 BOM
 + utf8: teach same_encoding() alternative UTF encoding names
 + strbuf: add a case insensitive starts_with()
 + strbuf: add xstrdup_toupper()
 + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()

 The new "checkout-encoding" attribute can ask Git to convert the
 contents to the specified encoding when checking out to the working
 tree (and the other way around when checking in).

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* js/runtime-prefix-windows (2018-03-27) 5 commits
 . mingw/msvc: use the new-style RUNTIME_PREFIX helper
 . exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 . exec_cmd: RUNTIME_PREFIX on some POSIX systems
 . Makefile: add Perl runtime prefix support
 . Makefile: generate Perl header from template file

 The Windows port was the first that allowed Git to be installed
 anywhere by having its components refer to each other with relative
 pathnames.  The recent dj/runtime-prefix topic extends the idea to
 other platforms, and its approach has been adopted back in the
 Windows port.

 Ejected, as the parent topic dj/runtime-prefix covers Windows now.


* bp/fsexcludes (2018-04-16) 2 commits
 . fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
 . fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic

 Can we have a few lines summary here, just like we have for other
 topic ;-) I personally take the overlong title of these commits as
 a sign that they can further be simplified and cleaned up by
 splitting, focusing the scope, etc.

 Retracted.
 cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2015, #05; Thu, 22)
@ 2015-10-22 20:51  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2015-10-22 20:51 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

With somewhat reduced review bandwidth, I'd expect that the upcoming
cycle would be slower than usual.  At tinyurl.com/gitCal, I
tentatively drew a 14-week schedule for this cycle (I plan to be
offline during weeks #7-#9 myself---hopefully we'll have capable
interim maintainers to take care of the list traffic in the meantime
as in past years).

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* jk/war-on-sprintf (2015-10-05) 70 commits
  (merged to 'next' on 2015-10-15 at 27a1ae5)
 + name-rev: use strip_suffix to avoid magic numbers
 + use strbuf_complete to conditionally append slash
 + fsck: use for_each_loose_file_in_objdir
 + Makefile: drop D_INO_IN_DIRENT build knob
 + fsck: drop inode-sorting code
 + convert strncpy to memcpy
 + notes: document length of fanout path with a constant
 + color: add color_set helper for copying raw colors
 + prefer memcpy to strcpy
 + help: clean up kfmclient munging
 + receive-pack: simplify keep_arg computation
 + avoid sprintf and strcpy with flex arrays
 + use alloc_ref rather than hand-allocating "struct ref"
 + color: add overflow checks for parsing colors
 + drop strcpy in favor of raw sha1_to_hex
 + use sha1_to_hex_r() instead of strcpy
 + daemon: use cld->env_array when re-spawning
 + stat_tracking_info: convert to argv_array
 + http-push: use an argv_array for setup_revisions
 + fetch-pack: use argv_array for index-pack / unpack-objects
 + diagnose_invalid_index_path: use strbuf to avoid strcpy/strcat
 + write_loose_object: convert to strbuf
 + remove_leading_path: use a strbuf for internal storage
 + enter_repo: convert fixed-size buffers to strbufs
 + merge-recursive: convert malloc / strcpy to strbuf
 + transport: use strbufs for status table "quickref" strings
 + apply: convert root string to strbuf
 + init: use strbufs to store paths
 + probe_utf8_pathname_composition: use internal strbuf
 + precompose_utf8: drop unused variable
 + sha1_get_pack_name: use a strbuf
 + http-walker: store url in a strbuf
 + http-push: use strbuf instead of fwrite_buffer
 + remote-ext: simplify git pkt-line generation
 + upload-archive: convert sprintf to strbuf
 + resolve_ref: use strbufs for internal buffers
 + read_remotes_file: simplify string handling
 + read_branches_file: simplify string handling
 + mailmap: replace strcpy with xstrdup
 + help: drop prepend function in favor of xstrfmt
 + ref-filter: drop sprintf and strcpy calls
 + use strip_suffix and xstrfmt to replace suffix
 + fetch: replace static buffer with xstrfmt
 + config: use xstrfmt in normalize_value
 + replace trivial malloc + sprintf / strcpy calls with xstrfmt
 + receive-pack: convert strncpy to xsnprintf
 + http-push: replace strcat with xsnprintf
 + add_packed_git: convert strcpy into xsnprintf
 + entry.c: convert strcpy to xsnprintf
 + grep: use xsnprintf to format failure message
 + compat/hstrerror: convert sprintf to snprintf
 + stop_progress_msg: convert sprintf to xsnprintf
 + find_short_object_filename: convert sprintf to xsnprintf
 + use xsnprintf for generating git object headers
 + archive-tar: use xsnprintf for trivial formatting
 + convert trivial sprintf / strcpy calls to xsnprintf
 + compat/inet_ntop: fix off-by-one in inet_ntop4
 + test-dump-cache-tree: avoid overflow of cache-tree name
 + progress: store throughput display in a strbuf
 + trace: use strbuf for quote_crnl output
 + mailsplit: make PATH_MAX buffers dynamic
 + fsck: use strbuf to generate alternate directories
 + add reentrant variants of sha1_to_hex and find_unique_abbrev
 + strbuf: make strbuf_complete_line more generic
 + add git_path_buf helper function
 + add xsnprintf helper function
 + fsck: don't fsck alternates for connectivity-only check
 + archive-tar: fix minor indentation violation
 + mailsplit: fix FILE* leak in split_maildir
 + show-branch: avoid segfault with --reflog of unborn branch
 (this branch is used by dt/refs-backend-lmdb and dt/refs-backend-pre-vtable.)

 Many allocations that is manually counted (correctly) that are
 followed by strcpy/sprintf have been replaced with a less error
 prone constructs such as xstrfmt.


* ls/p4-test-updates (2015-10-12) 2 commits
  (merged to 'next' on 2015-10-15 at 3c94932)
 + git-p4: skip t9819 test case on case insensitive file systems
 + git-p4: avoid "stat" command in t9815 git-p4-submit-fail

 A few test scripts around "git p4" have been improved for
 portability.


* tb/t0027-crlf (2015-10-12) 1 commit
  (merged to 'next' on 2015-10-15 at 7ab4f31)
 + t0027: improve test for not-normalized files

 The test for various line-ending conversions has been enhanced.

--------------------------------------------------
[New Topics]

* ar/clone-dissociate (2015-10-22) 1 commit
 - clone: allow "--dissociate" without reference

 "git clone --dissociate" used to require that "--reference" was
 used at the same time, but you can create a new repository that
 borrows objects from another without using "--reference", namely
 with "clone --local" from a repository that borrows objects from
 other repositories.

 Will merge to 'next'.


* da/difftool (2015-10-21) 1 commit
 - difftool: gracefully handle symlinks to directories

 The code to reuse checked out files for comparison was too
 aggressive and forgot that symbolic links cannot be reused
 for comparison.

 Smells wrong that this special-cases based on the target of
 symbolic link.


* dt/name-hash-dir-entry-fix (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at 15eb519)
 + name-hash: don't reuse cache_entry in dir_entry

 The name-hash subsystem that is used to cope with case insensitive
 filesystems keeps track of directories and their on-filesystem
 cases for all the paths in the index by holding a pointer to a
 randomly chosen cache entry that is inside the directory (for its
 ce->ce_name component).  This pointer was not updated even when the
 cache entry was removed from the index, leading to use after free.
 This was fixed by recording the path for each directory instead of
 borrowing cache entries and restructuring the API somewhat.

 Will merge to 'master'.


* jc/everyday-markup (2015-10-22) 1 commit
  (merged to 'next' on 2015-10-22 at 0a2702d)
 + Documentation/everyday: match undefline with the text

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jk/repository-extension (2015-06-24) 2 commits
  (merged to 'next' on 2015-10-22 at 116c8ce)
 + introduce "preciousObjects" repository extension
 + introduce "extensions" form of core.repositoryformatversion

 Prepare for Git on-disk repository representation to undergo
 backward incompatible changes by introducing a new repository
 format version "1", with an extension mechanism.

 Will merge to 'master'.


* tk/sigchain-unnecessary-post-tempfile (2015-10-22) 4 commits
  (merged to 'next' on 2015-10-22 at b049f0a)
 + shallow: remove unused #include "sigchain.h"
 + read-cache: remove unused #include "sigchain.h"
 + diff: remove unused #include "sigchain.h"
 + credential-cache--daemon: remove unused #include "sigchain.h"

 Remove no-longer used #include.

 Will merge to 'master'.


* xf/user-manual-markup (2015-10-22) 3 commits
  (merged to 'next' on 2015-10-22 at cd33c83)
 + Documentation: match undefline with the text in old release notes
 + Documentation: match underline with the text
 + Documentation: fix header markup

 AsciiDoc markup fixes.

 Will merge to 'master'.


* jc/em-dash-in-doc (2015-10-22) 1 commit
 - Documentation: AsciiDoc spells em-dash as double-dashes, not triple

 AsciiDoc markup fixes.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* dk/gc-idx-wo-pack (2015-08-17) 3 commits
 - DONTMERGE: log message, grace-period and tests $gmane/276058
 - gc: remove stale .idx files without corresponding .pack file
 - prepare_packed_git(): refactor garbage reporting in pack directory

 Having a leftover .idx file without corresponding .pack file in
 the repository hurts performance; "git gc" learned to prune them.

 Waiting for a reroll.


* nd/ita-cleanup (2015-09-06) 6 commits
 - grep: make it clear i-t-a entries are ignored
 - checkout(-index): do not checkout i-t-a entries
 - apply: make sure check_preimage() does not leave empty file on error
 - apply: fix adding new files on i-t-a entries
 - add and use a convenience macro ce_intent_to_add()
 - blame: remove obsolete comment

 Paths that have been told the index about with "add -N" are not yet
 in the index, but various commands behaved as if they already are.

 Some commits need better explanation.

 Waiting for a reroll.


* ld/p4-detached-head (2015-09-09) 2 commits
 - git-p4: work with a detached head
 - git-p4: add failing test for submit from detached head

 Will be rerolled.
 ($gmane/277574)


* mg/httpd-tests-update-for-apache-2.4 (2015-04-08) 2 commits
 - t/lib-git-svn: check same httpd module dirs as lib-httpd
 - t/lib-httpd: load mod_unixd

 This is the first two commits in a three-patch series $gmane/266962

 Becoming tired of waiting for a reroll.
 with updated log message ($gmane/268061).


* wp/sha1-name-negative-match (2015-06-08) 2 commits
 - sha1_name.c: introduce '^{/!-<negative pattern>}' notation
 - test for '!' handling in rev-parse's named commits

 Introduce "branch^{/!-<pattern>}" notation to name a commit
 reachable from branch that does not match the given pattern.

 Becoming tired of waiting for a reroll.
 ($gmane/271213).


* ak/format-patch-odir-config (2015-06-19) 1 commit
 - format-patch: introduce format.outputDirectory configuration

 Reroll exists but didn't pick it up as it seemed to be still
 collecting review comments.

 Becoming tired of waiting for a reroll.
 ($gmane/272180).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.

--------------------------------------------------
[Cooking]

* mh/notes-allow-reading-treeish (2015-10-08) 3 commits
 - notes: allow treeish expressions as notes ref
 + Merge branch 'jk/notes-dwim-doc' into next
 + Merge branch 'jc/merge-drop-old-syntax' into next
 (this branch uses jc/merge-drop-old-syntax.)

 Some "git notes" operations, e.g. "git log --notes=<note>", should
 be able to read notes from any tree-ish that is shaped like a notes
 tree, but the notes infrastructure required that the argument must
 be a ref under refs/notes/.  Loosen it to require a valid ref only
 when the operation would update the notes (in which case we must
 have a place to store the updated notes tree, iow, a ref).

 Will cook in 'next'.


* dt/refs-backend-pre-vtable (2015-10-15) 26 commits
 - refs: break out ref conflict checks
 - refs: make files_log_ref_write functions public
 - initdb: move safe_create_dir into common code
 - refs.c: move should_autocreate_reflog to common code
 - refs.c: move peel_object to the common code
 - refs.c: move copy_msg to the common code
 - refs.c: move refname_is_safe to the common code
 - refs: move transaction functions into common code
 - refs.c: move head_ref_namespaced to the common code
 - refs.c: move ref iterators to the common code
 - refs.c: move prettify_refname to the common code
 - refs.c: move is_branch to the common code
 - refs.c: move check_refname_format to the common code
 - refs.c: move resolve_refdup to common
 - refs.c: move read_ref, read_ref_full and ref_exists to the common code
 - refs.c: move warn_if_dangling_symref* to the common code
 - refs.c: move dwim and friend functions to the common refs code
 - refs.c: move the hidden refs functions to the common code
 - refs.c: move read_ref_at to the common refs file
 - refs.c: move delete_pseudoref and delete_ref to the common code
 - refs.c: move update_ref to refs.c
 - refs.c: add a new refs.c file to hold all common refs code
 - refs-be-files.c: rename refs to refs-be-files
 - refs: make repack_without_refs and is_branch public
 - refs.c: create a public version of verify_refname_available
 - Merge branch 'jk/war-on-sprintf' into HEAD

 The early part of the pluggable ref backend series, which sifts the
 ref API functions into two bins: the filesystem backend specific
 ones and the generic API functions.  The next step will start
 introducing the framework to dispatch generic calls to specific
 backend implementation(s) and then finally plug a new backend that
 is different from the file backend.

 Expecting a reroll after an review of the remainder.
 ($gmane/279897).


* jc/usage-stdin (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 937d4aa)
 + usage: do not insist that standard input must come from a file

 The synopsis text and the usage string of subcommands that read
 list of things from the standard input are often shown as if they
 only take input from a file on a filesystem, which was misleading.

 Will merge to 'master'.


* rt/placeholder-in-usage (2015-10-16) 1 commit
  (merged to 'next' on 2015-10-20 at 5189b23)
 + am, credential-cache: add angle brackets to usage string

 A couple of commands still showed "[options]" in their usage string
 to note where options should come on their command line, but we
 spell that "[<options>]" in most places these days.

 Will merge to 'master'.


* tk/stripspace (2015-10-16) 2 commits
  (merged to 'next' on 2015-10-20 at 327a997)
 + stripspace: use parse-options for command-line parsing
 + strbuf: make stripspace() part of strbuf

 The internal stripspace() function has been moved to where it
 logically belongs to, i.e. strbuf API, and the command line parser
 of "git stripspace" has been updated to use the parse_options API.

 Will merge to 'master'.


* dk/p4-import-ctypes (2015-10-20) 1 commit
  (merged to 'next' on 2015-10-22 at 5760144)
 + git-p4: import the ctypes module

 "git-p4" tried to use from ctypes module without first importing
 it.

 Will merge to 'master'.


* dt/t7063-fix-flaky-test (2015-10-19) 1 commit
  (merged to 'next' on 2015-10-20 at 156af72)
 + t7063: fix flaky untracked-cache test

 Will merge to 'master'.


* es/worktree-add (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at ccadb70)
 + worktree: usage: denote <branch> as optional with 'add'

 Will merge to 'master'.


* kn/for-each-tag (2015-10-18) 1 commit
  (merged to 'next' on 2015-10-20 at 7afd374)
 + tag.c: use the correct algorithm for the '--contains' option

 Recent update to "git tag --contains" caused a performance
 regression.

 Will merge to 'master'.


* mr/worktree-list (2015-10-08) 5 commits
  (merged to 'next' on 2015-10-20 at 7cb272d)
 + worktree: add 'list' command
 + worktree: add details to the worktree struct
 + worktree: add a function to get worktree details
 + worktree: refactor find_linked_symref function
 + worktree: add top-level worktree.c

 Add the "list" subcommand to "git worktree".

 Will merge to 'master'.


* jc/mailinfo (2015-10-21) 1 commit
 - mailinfo: ignore in-body header that we do not care about
 (this branch uses jc/am-mailinfo-direct and jc/mailinfo-lib.)

 Some people write arbitrary garbage at the beginning of a piece of
 e-mail (or after -- >8 -- scissors -- >8 -- line) in the commit log
 message and expect them to be discarded, even though "From:" and
 "Subject:" are the only documented in-body headers that you are
 supposed to have there.  Allow some garbage (specifically, what may
 look like RFC2822 headers like "MIME-Version: ...") to be there and
 ignore them.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* jc/am-mailinfo-direct (2015-10-21) 1 commit
  (merged to 'next' on 2015-10-22 at ca15014)
 + am: make direct call to mailinfo
 (this branch is used by jc/mailinfo; uses jc/mailinfo-lib.)

 "git am" used to spawn "git mailinfo" via run_command() API once
 per each patch, but learned to make a direct call to mailinfo()
 instead.

 Will merge to 'master'.


* jc/mailinfo-lib (2015-10-21) 34 commits
  (merged to 'next' on 2015-10-22 at 405bd66)
 + mailinfo: remove calls to exit() and die() deep in the callchain
 + mailinfo: handle charset conversion errors in the caller
 + mailinfo: libify
 + mailinfo: keep the parsed log message in a strbuf
 + mailinfo: handle_commit_msg() shouldn't be called after finding patchbreak
 + mailinfo: move content/content_top to struct mailinfo
 + mailinfo: move [ps]_hdr_data to struct mailinfo
 + mailinfo: move cmitmsg and patchfile to struct mailinfo
 + mailinfo: move charset to struct mailinfo
 + mailinfo: move transfer_encoding to struct mailinfo
 + mailinfo: move check for metainfo_charset to convert_to_utf8()
 + mailinfo: move metainfo_charset to struct mailinfo
 + mailinfo: move use_scissors and use_inbody_headers to struct mailinfo
 + mailinfo: move add_message_id and message_id to struct mailinfo
 + mailinfo: move patch_lines to struct mailinfo
 + mailinfo: move filter/header stage to struct mailinfo
 + mailinfo: move global "FILE *fin, *fout" to struct mailinfo
 + mailinfo: move keep_subject & keep_non_patch_bracket to struct mailinfo
 + mailinfo: introduce "struct mailinfo" to hold globals
 + mailinfo: move global "line" into mailinfo() function
 + mailinfo: do not let find_boundary() touch global "line" directly
 + mailinfo: do not let handle_boundary() touch global "line" directly
 + mailinfo: do not let handle_body() touch global "line" directly
 + mailinfo: get rid of function-local static states
 + mailinfo: move definition of MAX_HDR_PARSED closer to its use
 + mailinfo: move cleanup_space() before its users
 + mailinfo: move check_header() after the helpers it uses
 + mailinfo: move read_one_header_line() closer to its callers
 + mailinfo: move handle_boundary() lower
 + mailinfo: plug strbuf leak during continuation line handling
 + mailinfo: explicitly close file handle to the patch output
 + mailinfo: fix an off-by-one error in the boundary stack
 + mailinfo: fold decode_header_bq() into decode_header()
 + mailinfo: remove a no-op call convert_to_utf8(it, "")
 (this branch is used by jc/am-mailinfo-direct and jc/mailinfo.)

 The implementation of "git mailinfo" was refactored so that a
 mailinfo() function can be directly called from inside a process.

 Will merge to 'master'.


* jc/am-3-fallback-regression-fix (2015-10-09) 1 commit
  (merged to 'next' on 2015-10-15 at 7dde994)
 + am -3: do not let failed merge from completing the error codepath
 (this branch is used by js/am-3-merge-recursive-direct.)

 "git am -3" had a small regression where it is aborted in its error
 handling codepath when underlying merge-recursive failed in certain
 ways, as it assumed that the internal call to merge-recursive will
 never die, which is not the case (yet).

 Will merge to 'master'.


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag
 (this branch uses jc/am-3-fallback-regression-fix.)

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Will cook in 'next'.


* sg/pretty-more-date-mode-format (2015-10-07) 1 commit
 - pretty: add format specifiers for short and raw date formats

 Introduce "%as" and "%aR" placeholders for "log --format" to show
 the author date in the short and raw formats.

 I have a feeling that that this is a step in a wrong direction.
 Comments?


* kn/for-each-branch-remainder (2015-10-02) 9 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: adopt get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: add support for %(path) atom
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: implement %(if), %(then), and %(else) atoms

 More unification among "branch -l", "tag -l" and "for-each-ref --format".

 Expecting a reroll.
 ($gmane/278926)


* rp/link-curl-before-ssl (2015-10-21) 3 commits
  (merged to 'next' on 2015-10-22 at dad4fc6)
 + configure.ac: detect ssl need with libcurl
 + Makefile: make curl-config path configurable
 + Makefile: link libcurl before zlib

 The linkage order of libraries was wrong in places around libcurl.

 Will merge to 'master'.


* jk/graph-format-padding (2015-09-14) 1 commit
 - pretty: pass graph width to pretty formatting for use in '%>|(N)'

 Redefine the way '%>|(N)' padding and the "--graph" option
 interacts.  It has been that the available columns to display the
 log message was measured from the edge of the area the graph ended,
 but with this it becomes the beginning of the entire output.

 I have a suspicion that 50% of the users would appreciate this
 change, and the remainder see this break their expectation.  If
 that is the case, we might need to introduce a similar but
 different alignment operator so that this new behaviour is
 available to those who want to use it, without negatively affecting
 existing uses.

 Undecided.
 ($gmane/278326)


* sb/submodule-parallel-fetch (2015-10-21) 16 commits
 - git submodule update: have a dedicated helper for cloning
 - submodule config: keep update strategy around
 - run-command: fix missing output from late callbacks
 - test-run-command: increase test coverage
 - test-run-command: test for gracefully aborting
 - run-command: initialize the shutdown flag
 - run-command: clear leftover state from child_process structure
 - run-command: fix early shutdown
  (merged to 'next' on 2015-10-15 at df63590)
 + submodules: allow parallel fetching, add tests and documentation
 + fetch_populated_submodules: use new parallel job processing
 + run-command: add an asynchronous parallel child processor
 + sigchain: add command to pop all common signals
 + strbuf: add strbuf_read_once to read without blocking
 + xread_nonblock: add functionality to read from fds without blocking
 + xread: poll on non blocking fds
 + submodule.c: write "Fetching submodule <foo>" to stderr

 Add a framework to spawn a group of processes in parallel, and use
 it to run "git fetch --recurse-submodules" in parallel.

 Will cook in 'next'.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2015-09-14) 7 commits
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
  (merged to 'next' on 2015-10-07 at 50fed71)
 + merge: drop 'git merge <message> HEAD <commit>' syntax
 (this branch is used by mh/notes-allow-reading-treeish.)

 Originally merged to 'next' on 2015-05-28

 Stop supporting "git merge <message> HEAD <commit>" syntax that
 has been deprecated since October 2007.

 Will keep in 'next' during the 2.7 cycle.

--------------------------------------------------
[Discarded]

* km/cache-entry-refcnt (2015-10-14) 1 commit
 . merge: fix cache_entry use-after-free

 Made unnecessary with dt/name-hash-dir-entry-fix topic.

^ permalink raw reply	[relevance 3%]

* What's in git.git and announcing v1.4.1-rc1
@ 2006-06-22 19:49  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-06-22 19:49 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

I've merged quite a bit of stuff and tagged the tip of "master"
as GIT 1.4.1-rc1.

As promised, 1.4.X series will be managed slightly differently,
and this is in preparation of the first installment of it.  The
releases will come from the "master" branch to contain both
fixes and enhancements from now on.  Hotfix releases when
necessary would have 1.4.X.Y revision numbers, but I am hoping
that we do not have to do that very often.

Since all the exciting and potentially risky developments are to
happen on the "next" branch and they are supposed to graduate to
"master" branch after they are reasonably well cooked, this
change will help the end-users to stay reasonably current
without hopefully not introducing unexpected problems.  The
older scheme left out all the enhancements if people followed
packaged versions, and gave big surprises when upgrading from
version X.Y.Z to X.(Y+1).0 which was not so nice.

Notable improvements since v1.4.0 are:

 - PPC SHA1 routine can grok more than half-gig of data (Paul
   Mackerras)

 - rev-list and object-layer in general is less (much less)
   space hungry (Linus).

 - the source is more friendly to stricter compilers such as
   Sun's (Florian Forster).

 - git rebase --merge (Eric Wong).  This uses the usual 3-way
   merge machinery while running rebase, and you can rebase
   across renames if you use the recursive strategy which is the
   default.

 - gitweb updates -- mostly cleanups (Jakub Narebski with help
   from Pasky and Timo Hirvonen).

 - diff --color (Johannes).

 - ~/.gitconfig and $ENV{GIT_CONFIG} (Pasky and Johannes).

 - core.sharedrepository can take umask, group or world (Linus
   and I)

 - "git checkout -f" removes files that becomes untracked from
   the working tree

 - "git clone/fetch" from a corrupt repository does not
   propagate brokenness to the downloaders.

 - "git clone/fetch" over the network gives better progress
   updates; this may also help TCP timeout problems for people
   behind NAT.

 - Many more commands are built-in (Lukas Sandström)

 - git can now be used on Kiritimati (Paul Eggert)

----------------------------------------------------------------

* The 'master' branch has these since the last announcement.

   Andre Noll:
      object-refs: avoid division by zero

   David Woodhouse:
      Log peer address when git-daemon called from inetd

   Dennis Stosberg:
      Make t8001-annotate and t8002-blame more portable
      Fix t8001-annotate and t8002-blame for ActiveState Perl

   Eric W. Biederman:
      Fix git-format-patch -s
      Check and document the options to prevent mistakes.

   Eric Wong:
      git-svn: fix --rmdir when using SVN:: libraries
      rebase: Allow merge strategies to be used when rebasing
      rebase: error out for NO_PYTHON if they use recursive merge
      git-svn: fix commit --edit flag when using SVN:: libraries

   Florian Forster:
      Remove ranges from switch statements.
      Initialize FAMs using `FLEX_ARRAY'.
      Don't instantiate structures with FAMs.
      Cast pointers to `void *' when used in a format.
      Don't use empty structure initializers.
      Change types used in bitfields to be `int's.
      Remove all void-pointer arithmetic.

   Jakub Narebski:
      Move gitweb style to gitweb.css
      gitweb: safely output binary files for 'blob_plain' action
      gitweb: text files for 'blob_plain' action without charset by default
      Fix gitweb stylesheet
      Make CSS file gitweb/gitweb.css more readable
      gitweb: add type="text/css" to stylesheet link
      Fix: Support for the standard mime.types map in gitweb
      gitweb: A couple of page title tweaking
      gitweb: style done with stylesheet
      gitweb: whitespace cleanup
      Add git version to gitweb output
      Move $gitbin earlier in gitweb.cgi
      gitweb: Make use of $PATH_INFO for project parameter
      gitweb: whitespace cleanup around '='

   Johannes Schindelin:
      diff options: add --color
      Initialize lock_file struct to all zero.
      Fix setting config variables with an alternative GIT_CONFIG
      Read configuration also from $HOME/.gitconfig
      repo-config: Fix late-night bug
      git_config: access() returns 0 on success, not > 0

   Junio C Hamano:
      read-tree: --prefix=<path>/ option.
      write-tree: --prefix=<path>
      read-tree: reorganize bind_merge code.
      fetch-pack: give up after getting too many "ack continue"
      shared repository: optionally allow reading to "others".
      fix rfc2047 formatter.
      xdiff: minor changes to match libxdiff-0.21
      Restore SIGCHLD to SIG_DFL where we care about waitpid().
      checkout -f: do not leave untracked working tree files.
      upload-pack: avoid sending an incomplete pack upon failure
      upload-pack: prepare for sideband message support.
      Retire git-clone-pack
      upload-pack/fetch-pack: support side-band communication
      Add renaming-rebase test.
      daemon: send stderr to /dev/null instead of closing.
      rebase --merge: fix for rebasing more than 7 commits.
      Makefile: do not force unneeded recompilation upon GIT_VERSION changes

   Linus Torvalds:
      Shrink "struct object" a bit
      Move "void *util" from "struct object" into "struct commit"
      Some more memory leak avoidance
      Remove "refs" field from "struct object"
      Add specialized object allocator
      Add "named object array" concept
      Fix grow_refs_hash()

   Lukas Sandström:
      Make git-write-tree a builtin
      Make git-mailsplit a builtin
      Make git-mailinfo a builtin
      Make git-stripspace a builtin
      Make git-update-index a builtin
      Make git-update-ref a builtin

   Paul Eggert:
      date.c: improve guess between timezone offset and year.

   Paul Mackerras:
      Fix PPC SHA1 routine for large input buffers

   Petr Baudis:
      Support for extracting configuration from different files
      Support for the standard mime.types map in gitweb

   Rene Scharfe:
      git-tar-tree: Simplify write_trailer()
      git-tar-tree: documentation update
      git-tar-tree: no more void pointer arithmetic
      Make release tarballs friendlier to older tar versions

   Timo Hirvonen:
      gitweb: Use $hash_base as $search_hash if possible

   Uwe Zeisberger:
      Fix possible out-of-bounds array access

   Yakov Lerner:
      auto-detect changed prefix and/or changed build flags
      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.


* The 'pu' branch, in addition, has these.

   Johannes Schindelin:
      Teach diff about -b and -w flags

   Lukas Sandström:
      Make it possible to call cmd_apply multiple times
      Make git-am a builtin

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #07; Fri, 28)
@ 2014-03-28 22:21  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-28 22:21 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

More topics merged to 'master', many of which are fallouts from GSoC
microprojects.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 "git rebase" learned to interpret a lone "-" as "@{-1}", the
 branch that we were previously on.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

--------------------------------------------------
[New Topics]

* jc/apply-ignore-whitespace (2014-03-26) 1 commit
 - apply --ignore-space-change: lines with and without leading whitespaces do not match

 An RFC.  "--ignore-space-change" option of "git apply" ignored the
 spaces at the beginning of line too aggressively, which is
 inconsistent with the option of the same name "diff" and "git diff"
 have.

 Will hold.


* jc/rev-parse-argh-dashed-multi-words (2014-03-24) 3 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
 (this branch uses ib/rev-parse-parseopt-argh.)

 Make sure that the help text given to describe the "<param>" part
 of the "git cmd --option=<param>" does not contain SP or _,
 e.g. "--gpg-sign=<key-id>" option for "git commit" is not spelled
 as "--gpg-sign=<key id>".

 Will merge to 'next'.


* jk/commit-dates-parsing-fix (2014-03-26) 1 commit
 - t4212: loosen far-in-future test for AIX

 I think we agreed that a simpler test would be a better way
 forward.


* mr/msvc-link-with-invalidcontinue (2014-03-28) 1 commit
 - MSVC: link in invalidcontinue.obj for better POSIX compatibility

 Will merge to 'next'.


* mr/msvc-link-with-lcurl (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at 3281dab)
 + MSVC: allow linking with the cURL library

 Will merge to 'master'.


* wt/doc-submodule-name-path-confusion-1 (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at 225f241)
 + doc: submodule.* config are keyed by submodule names

 Will merge to 'master'.


* wt/doc-submodule-name-path-confusion-2 (2014-03-27) 1 commit
  (merged to 'next' on 2014-03-28 at ec5bcf3)
 + doc: submodule.*.branch config is keyed by name

 Will merge to 'master'.


* ep/shell-command-substitution (2014-03-25) 2 commits
  (merged to 'next' on 2014-03-28 at 99a512a)
 + git-am.sh: use the $(...) construct for command substitution
 + check-builtins.sh: use the $(...) construct for command substitution

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks.  A failure report
 exists ($gmane/245170).


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* jk/tests-cleanup (2014-03-21) 12 commits
  (merged to 'next' on 2014-03-26 at 4a72b49)
 + t0001: drop subshells just for "cd"
 + t0001: drop useless subshells
 + t0001: use test_must_fail
 + t0001: use test_config_global
 + t0001: use test_path_is_*
 + t0001: make symlink reinit test more careful
 + t: prefer "git config --file" to GIT_CONFIG
 + t: prefer "git config --file" to GIT_CONFIG with test_must_fail
 + t: stop using GIT_CONFIG to cross repo boundaries
 + t: drop useless sane_unset GIT_* calls
 + t/test-lib: drop redundant unset of GIT_CONFIG
 + t/Makefile: stop setting GIT_CONFIG
 (this branch uses dt/tests-with-env-not-subshell.)

 Will merge to 'master'.


* ca/doc-config-third-party (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 731e011)
 + config.txt: third-party tools may and do use their own variables

 Will merge to 'master'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 2683eb6)
 + doc: status, remove leftover statement about '#' prefix

 Will merge to 'master'.


* js/userdiff-cc (2014-03-21) 10 commits
  (merged to 'next' on 2014-03-25 at 8c0e585)
 + userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 + t4018: test cases showing that the cpp pattern misses many anchor points
 + t4018: test cases for the built-in cpp pattern
 + t4018: reduce test files for pattern compilation tests
 + t4018: convert custom pattern test to the new infrastructure
 + t4018: convert java pattern test to the new infrastructure
 + t4018: convert perl pattern tests to the new infrastructure
 + t4018: an infrastructure to test hunk headers
 + userdiff: support unsigned and long long suffixes of integer constants
 + userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'master'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
  (merged to 'next' on 2014-03-25 at b32e3ad)
 + Makefile: describe CHARSET_LIB better

 Will merge to 'master'.


* ib/rev-parse-parseopt-argh (2014-03-23) 2 commits
  (merged to 'next' on 2014-03-25 at d9083ed)
 + t1502: protect runs of SPs used in the indentation
 + rev-parse --parseopt: option argument name hints
 (this branch is used by jc/rev-parse-argh-dashed-multi-words.)

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge to 'master'.


* rs/pickaxe-i (2014-03-24) 10 commits
  (merged to 'next' on 2014-03-25 at 3b6f21f)
 + pickaxe: simplify kwset loop in contains()
 + pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 + pickaxe: move pickaxe() after pickaxe_match()
 + pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 + pickaxe: honor -i when used with -S and --pickaxe-regex
 + t4209: use helper functions to test --author
 + t4209: use helper functions to test --grep
 + t4209: factor out helper function test_log_icase()
 + t4209: factor out helper function test_log()
 + t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'master'.


* an/branch-config-message (2014-03-24) 1 commit
  (merged to 'next' on 2014-03-26 at 26f9741)
 + branch.c: install_branch_config: simplify if chain

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-28 at 810a076)
 + grep: add grep.fullName config variable

 Add a configuration variable to force --full-name to be default for
 "git grep".

 This may cause regressions on scripted users that do not expect
 this new behaviour.

 Will hold.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-25 at 19fe25f)
 + tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'master'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-25 at 08efd68)
 + fsck: use bitwise-or assignment operator to set flag

 Will merge to 'master'.


* mm/status-porcelain-format-i18n-fix (2014-03-26) 1 commit
  (merged to 'next' on 2014-03-26 at 41680fc)
 + status: disable translation when --porcelain is used

 Will merge to 'master'.


* ap/remote-hg-skip-null-bookmarks (2014-03-25) 1 commit
  (merged to 'next' on 2014-03-25 at a8cd922)
 + remote-hg: do not fail on invalid bookmarks

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-26) 2 commits
  (merged to 'next' on 2014-03-28 at 954513a)
 + fetch: handle overlaping refspecs on --prune
 + fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak, whose fix has
 been squashed in to the tip commit.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-25) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* ks/tree-diff-nway (2014-03-27) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
  (merged to 'next' on 2014-03-25 at cfcbdac)
 + tree-diff: simplify tree_entry_pathcmp
 + tree-diff: show_path prototype is not needed anymore
 + tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 + tree-diff: move all action-taking code out of compare_tree_entry()
 + tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-25) 2 commits
  (merged to 'next' on 2014-03-28 at ea4a8db)
 + log: add --show-linear-break to help see non-linear history
 + object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will merge to 'master'.


* cc/interpret-trailers (2014-03-26) 12 commits
 - trailers: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - Move lower case functions into wrapper.c
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Apr 2018, #04; Mon, 30)
@ 2018-04-30  3:25  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-04-30  3:25 UTC (permalink / raw)
  To: git


What's cooking in git.git (Apr 2018, #04; Mon, 30)
--------------------------------------------------

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
 - perf/aggregate: use Getopt::Long for option parsing

 Perf-test helper updates.

 Will merge to 'next'.


* ab/perl-python-attrs (2018-04-27) 3 commits
 - .gitattributes: add a diff driver for Python
 - .gitattributes: use the "perl" differ for Perl
 - .gitattributes: add *.pl extension for Perl

 We learned that our source files with ".pl" and ".py" extensions
 are Perl and Python files respectively and changes to them are
 better viewed as such with appropriate diff drivers.

 Will merge to 'next'.


* is/parsing-line-range (2018-04-27) 2 commits
 . log: prevent error if line range ends past end of file
 . blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Seems to break a few tests.


* js/test-unset-prereq (2018-04-30) 1 commit
 - tests: introduce test_unset_prereq, for debugging

 Test debugging aid.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ld/p4-unshelve (2018-02-22) 1 commit
 - git-p4: add unshelve command

 "git p4" learned to "unshelve" shelved commit from P4.

 Will hold, perhaps drop and use format-change that uses a proper "diff".
 cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* mk/http-backend-content-length (2017-11-27) 4 commits
 - SQUASH???
 - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
 - SQUASH???
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.

 Expecting a reroll.
 Suggested fixes to be used when rerolling is queued, but I'd
 prefer _not_ squashing them myself.

 Also, it may be too complex solution for the problem.
 cf. <20171204171308.GA13332@sigill.intra.peff.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* fg/completion-external (2018-04-30) 1 commit
 - completion: load completion file for external subcommand

 The command line completion mechanism (in contrib/) learned to load
 custom completion file for "git $command" where $command is a
 custom "git-$command" that the end user has on the $PATH when using
 newer version of bash.


* ma/double-dashes-in-docs (2018-04-18) 4 commits
  (merged to 'next' on 2018-04-25 at aaac2dc63c)
 + git-submodule.txt: quote usage in monospace, drop backslash
 + git-[short]log.txt: unify quoted standalone --
 + doc: convert [\--] to [--]
 + doc: convert \--option to --option

 Doc formatting updates.

 Will merge to 'master'.


* sb/worktree-remove-opt-force (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 0367d52a4b)
 + worktree: accept -f as short for --force for removal

 "git worktree remove" learned that "-f" is a shorthand for
 "--force" option, just like for "git worktree add".

 Will merge to 'master'.


* sg/completion-clear-cached (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 9178da6c3d)
 + completion: reduce overhead of clearing cached --options

 The completion script (in contrib/) learned to clear cached list of
 command line options upon dot-sourcing it again in a more efficient
 way.

 Will merge to 'master'.


* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at bc3d1abf45)
 + docs/git-gc: fix minor rendering issue

 Doc formatting fix.

 Will merge to 'master'.


* js/ident-date-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at d50ec2f4c1)
 + sequencer: reset the committer date before commits

 During a "rebase -i" session, the code could give older timestamp
 to commits created by later "pick" than an earlier "reword", which
 has been corrected.

 Will merge to 'master'.


* nd/submodule-status-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 34d1f9ca83)
 + submodule--helper: don't print null in 'submodule status'

 "git submodule status" did not check the symbolic revision name it
 computed for the submodule HEAD is not the NULL, and threw it at
 printf routines, which has been corrected.

 Will merge to 'master'.


* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 2a1fd8217e)
 + send-email: avoid duplicate In-Reply-To/References

 When fed input that already has In-Reply-To: and/or References:
 headers and told to add the same information, "git send-email"
 added these headers separately, instead of appending to an existing
 one, which is a violation of the RFC.  This has been corrected.

 Will merge to 'master'.


* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
  (merged to 'next' on 2018-04-30 at 93d0af5375)
 + completion: make stash -p and alias for stash push -p
 + completion: stop showing 'save' for stash by default

 The command line completion (in contrib/) has been taught that "git
 stash save" has been deprecated ("git stash push" is the preferred
 spelling in the new world) and does not offer it as a possible
 completion candidate when "git stash push" can be.

 Will merge to 'master'.


* tz/doc-git-urls-reference (2018-04-20) 1 commit
  (merged to 'next' on 2018-04-30 at 39926c99fd)
 + doc/clone: update caption for GIT URLS cross-reference

 Doc fix.

 Will merge to 'master'.


* js/deprecate-grafts (2018-04-30) 12 commits
 - Remove obsolete script to convert grafts to replace refs
 - technical/shallow: describe why shallow cannot use replace refs
 - technical/shallow: stop referring to grafts
 - filter-branch: stop suggesting to use grafts
 - Deprecate support for .git/info/grafts
 - Add a test for `git replace --convert-graft-file`
 - replace: introduce --convert-graft-file
 - replace: prepare create_graft() for converting graft files wholesale
 - replace: "libify" create_graft() and callees
 - replace: avoid using die() to indicate a bug
 - commit: Let the callback of for_each_mergetag return on error
 - argv_array: offer to split a string by whitespace

 The functionality of "$GIT_DIR/info/grafts" has been superseded by
 the "refs/replace/" mechanism for some time now, but the internal
 code had support for it in many places, which has been cleaned up
 in order to drop support of the "grafts" mechanism.

 Will merge to 'next'.


* js/rebase-i-clean-msg-after-fixup-continue (2018-04-30) 4 commits
 - rebase --skip: clean up commit message after a failed fixup/squash
 - sequencer: always commit without editing when asked for
 - rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
 - rebase -i: demonstrate bugs with fixup!/squash! commit messages

 "git rebase -i" sometimes left intermediate "# This is a
 combination of N commits" message meant for the human consumption
 inside an editor in the final result in certain corner cases, which
 has been fixed.

 Will merge to 'next'.


* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
  (merged to 'next' on 2018-04-30 at f7fca02ab1)
 + fast-export: fix regression skipping some merge-commits

 "git fast-export" had a regression in v2.15.0 era where it skipped
 some merge commits in certain cases, which has been corrected.

 Will merge to 'master'.


* bw/server-options (2018-04-24) 4 commits
 - fetch: send server options when using protocol v2
 - ls-remote: send server options when using protocol v2
 - serve: introduce the server-option capability
 - Merge branch 'bw/protocol-v2' into HEAD
 (this branch uses bw/protocol-v2.)

 The transport protocol v2 is getting updated further.

 Will merge to 'next'.


* jc/parseopt-expiry-errors (2018-04-23) 2 commits
  (merged to 'next' on 2018-04-30 at 637085f3d8)
 + parseopt: handle malformed --expire arguments more nicely
 + gc: do not upcase error message shown with die()

 "git gc --prune=nonsense" spent long time repacking and then
 silently failed when underlying "git prune --expire=nonsense"
 failed to parse its command line.  This has been corrected.

 Will merge to 'master'.


* js/colored-push-errors (2018-04-24) 4 commits
  (merged to 'next' on 2018-04-30 at 31076c52a2)
 + config: document the settings to colorize push errors/hints
 + push: test to verify that push errors are colored
 + push: colorize errors
 + color: introduce support for colorizing stderr

 Error messages from "git push" can be painted for more visibility.

 Will merge to 'master'.


* js/runtime-prefix (2018-04-24) 8 commits
  (merged to 'next' on 2018-04-30 at c6cfccf40e)
 + Avoid multiple PREFIX definitions
 + git_setup_gettext: plug memory leak
 + gettext: avoid initialization if the locale dir is not present
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with dj/runtime-prefix.)

 Will merge to 'master'.


* ma/http-walker-no-partial (2018-04-24) 2 commits
  (merged to 'next' on 2018-04-30 at 4582c99ba8)
 + walker: drop fields of `struct walker` which are always 1
 + http-fetch: make `-a` standard behaviour

 "git http-fetch" (deprecated) had an optional and experimental
 "feature" to fetch only commits and/or trees, which nobody used.
 This has been removed.

 Will merge to 'master'.


* bc/object-id (2018-04-24) 41 commits
 - merge-one-file: compute empty blob object ID
 - add--interactive: compute the empty tree value
 - Update shell scripts to compute empty tree object ID
 - sha1_file: only expose empty object constants through git_hash_algo
 - dir: use the_hash_algo for empty blob object ID
 - sequencer: use the_hash_algo for empty tree object ID
 - cache-tree: use is_empty_tree_oid
 - sha1_file: convert cached object code to struct object_id
 - builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
 - builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
 - wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
 - submodule: convert several uses of EMPTY_TREE_SHA1_HEX
 - sequencer: convert one use of EMPTY_TREE_SHA1_HEX
 - merge: convert empty tree constant to the_hash_algo
 - builtin/merge: switch tree functions to use object_id
 - builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
 - builtin/receive-pack: avoid hard-coded constants for push certs
 - diff: specify abbreviation size in terms of the_hash_algo
 - upload-pack: replace use of several hard-coded constants
 - revision: replace use of hard-coded constants
 - http: eliminate hard-coded constants
 - dir: convert struct untracked_cache_dir to object_id
 - commit: convert uses of get_sha1_hex to get_oid_hex
 - index-pack: abstract away hash function constant
 - pack-redundant: convert linked lists to use struct object_id
 - Update struct index_state to use struct object_id
 - split-index: convert struct split_index to object_id
 - submodule-config: convert structures to object_id
 - fsck: convert static functions to struct object_id
 - tree-walk: convert get_tree_entry_follow_symlinks to object_id
 - tree-walk: avoid hard-coded 20 constant
 - pack-redundant: abstract away hash algorithm
 - pack-objects: abstract away hash algorithm
 - packfile: abstract away hash constant values
 - packfile: convert find_pack_entry to object_id
 - sha1_file: convert freshen functions to object_id
 - packfile: convert has_sha1_pack to object_id
 - packfile: remove unused member from struct pack_entry
 - Remove unused member in struct object_context
 - server-info: remove unused members from struct pack_info
 - cache: add a function to read an object ID from a buffer

 Conversion from uchar[20] to struct object_id continues.

 Expecting a reroll.
 cf. <20180426011337.GA722934@genre.crustytoothpaste.net>


* sb/oid-object-info (2018-04-26) 9 commits
 - cache.h: allow oid_object_info to handle arbitrary repositories
 - packfile: add repository argument to cache_or_unpack_entry
 - packfile: add repository argument to unpack_entry
 - packfile: add repository argument to read_object
 - packfile: add repository argument to packed_object_info
 - packfile: add repository argument to packed_to_object_type
 - packfile: add repository argument to retry_bad_packed_offset
 - cache.h: add repository argument to oid_object_info
 - cache.h: add repository argument to oid_object_info_extended
 (this branch uses sb/object-store-replace.)

 The codepath around object-info API has been taught to take the
 repository object (which in turn tells the API which object store
 the objects are to be located).

 Will merge to 'next'.


* en/unpack-trees-split-index-fix (2018-04-24) 1 commit
 - unpack_trees: fix breakage when o->src_index != o->dst_index

 The split-index feature had a long-standing and dormant bug in
 certain use of the in-core merge machinery, which has been fixed.

 Hold.
 cf. <CACsJy8DyP_mXXJKn52Jzqe63N3GLpXePCr8ha97Lv9hr6u-M0w@mail.gmail.com>


* bp/merge-rename-config (2018-04-25) 2 commits
 - merge: add merge.aggressive config setting
 - merge: add merge.renames config setting


* en/git-debugger (2018-04-25) 1 commit
 - Make running git under other debugger-like programs easy

 Dev support.

 Will merge to 'next'.


* js/no-pager-shorthand (2018-04-25) 1 commit
 - git: add -N as a short option for --no-pager

 "git --no-pager cmd" did not have short-and-sweet single letter
 option. Now it does.

 Will merge to 'next'.


* sb/diff-color-move-more (2018-04-25) 7 commits
 - diff.c: add --color-moved-ignore-space-delta option
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.


* so/glossary-ancestor (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 0a849fee00)
 + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

 Docfix.

 Will merge to 'master'.


* bt/gpg-interface (2018-04-16) 7 commits
  (merged to 'next' on 2018-04-30 at 50c507b7d8)
 + gpg-interface: find the last gpg signature line
 + gpg-interface: extract gpg line matching helper
 + gpg-interface: fix const-correctness of "eol" pointer
 + gpg-interface: use size_t for signature buffer size
 + gpg-interface: modernize function declarations
 + gpg-interface: handle bool user.signingkey
 + t7004: fix mistaken tag name

 What is queued here is only the obviously correct and
 uncontroversial code clean-up part, which is an earlier 7 patches,
 of a larger series.

 The remainder that is not queued introduces a few configuration
 variables to deal with e-signature backends with different
 signature format.

 Will merge to 'master'.


* ds/generation-numbers (2018-04-26) 10 commits
 - commit-graph.txt: update design document
 - merge: check config before loading commits
 - commit: add short-circuit to paint_down_to_common()
 - commit: use generation numbers for in_merge_bases()
 - ref-filter: use generation number for --contains
 - commit-graph: always load commit-graph information
 - commit: use generations in paint_down_to_common()
 - commit-graph: compute generation numbers
 - commit: add generation number to struct commmit
 - ref-filter: fix outdated comment on in_commit_list
 (this branch uses ds/commit-graph and ds/lazy-load-trees.)

 A recently added "commit-graph" datafile has learned to store
 pre-computed generation numbers to speed up the decisions to stop
 history traversal.


* en/rename-directory-detection-reboot (2018-04-25) 36 commits
 - merge-recursive: fix check for skipability of working tree updates
 - merge-recursive: make "Auto-merging" comment show for other merges
 - merge-recursive: fix remainder of was_dirty() to use original index
 - merge-recursive: fix was_tracked() to quit lying with some renamed paths
 - t6046: testcases checking whether updates can be skipped in a merge
 - merge-recursive: avoid triggering add_cacheinfo error with dirty mod
 - merge-recursive: move more is_dirty handling to merge_content
 - merge-recursive: improve add_cacheinfo error handling
 - merge-recursive: avoid spurious rename/rename conflict from dir renames
 - directory rename detection: new testcases showcasing a pair of bugs
 - merge-recursive: fix remaining directory rename + dirty overwrite cases
 - merge-recursive: fix overwriting dirty files involved in renames
 - merge-recursive: avoid clobbering untracked files with directory renames
 - merge-recursive: apply necessary modifications for directory renames
 - merge-recursive: when comparing files, don't include trees
 - merge-recursive: check for file level conflicts then get new name
 - merge-recursive: add computation of collisions due to dir rename & merging
 - merge-recursive: check for directory level conflicts
 - merge-recursive: add get_directory_renames()
 - merge-recursive: make a helper function for cleanup for handle_renames
 - merge-recursive: split out code for determining diff_filepairs
 - merge-recursive: make !o->detect_rename codepath more obvious
 - merge-recursive: fix leaks of allocated renames and diff_filepairs
 - merge-recursive: introduce new functions to handle rename logic
 - merge-recursive: move the get_renames() function
 - directory rename detection: tests for handling overwriting dirty files
 - directory rename detection: tests for handling overwriting untracked files
 - directory rename detection: miscellaneous testcases to complete coverage
 - directory rename detection: testcases exploring possibly suboptimal merges
 - directory rename detection: more involved edge/corner testcases
 - directory rename detection: testcases checking which side did the rename
 - directory rename detection: files/directories in the way of some renames
 - directory rename detection: partially renamed directory testcase/discussion
 - directory rename detection: testcases to avoid taking detection too far
 - directory rename detection: directory splitting testcases
 - directory rename detection: basic testcases

 Reboot of an attempt to detect wholesale directory renames and use
 it while merging.

 Will merge to 'next'.


* nd/command-list (2018-04-30) 10 commits
 - completion: let git provide the completable command list
 - help: use command-list.txt for the source of guides
 - help: add "-a --verbose" to list all commands with synopsis
 - git: support --list-cmds=list-<category>
 - completion: implement and use --list-cmds=main,others
 - git.c: convert --list-*builtins to --list-cmds=*
 - Remove common-cmds.h
 - help: use command-list.h for common command list
 - generate-cmds.sh: export all commands to command-list.h
 - generate-cmds.sh: factor out synopsis extract code

 The list of commands with their various attributes were spread
 across a few places in the build procedure, but it now is getting a
 bit more consolidated to allow more automation.


* sb/object-store-replace (2018-04-12) 15 commits
  (merged to 'next' on 2018-04-25 at 9a213fb505)
 + replace-object: allow lookup_replace_object to handle arbitrary repositories
 + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
 + replace-object: allow prepare_replace_object to handle arbitrary repositories
 + refs: allow for_each_replace_ref to handle arbitrary repositories
 + refs: store the main ref store inside the repository struct
 + replace-object: add repository argument to lookup_replace_object
 + replace-object: add repository argument to do_lookup_replace_object
 + replace-object: add repository argument to prepare_replace_object
 + refs: add repository argument to for_each_replace_ref
 + refs: add repository argument to get_main_ref_store
 + replace-object: check_replace_refs is safe in multi repo environment
 + replace-object: eliminate replace objects prepared flag
 + object-store: move lookup_replace_object to replace-object.h
 + replace-object: move replace_map to object store
 + replace_object: use oidmap
 (this branch is used by sb/oid-object-info.)

 The effort to pass the repository in-core structure throughout the
 API continues.  This round deals with the code that implements the
 refs/replace/ mechanism.

 Will merge to 'master'.


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* sg/complete-paths (2018-04-17) 11 commits
 - completion: fill COMPREPLY directly when completing paths
 - completion: improve handling quoted paths in 'git ls-files's output
 - completion: remove repeated dirnames with 'awk' during path completion
 - t9902-completion: ignore COMPREPLY element order in some tests
 - completion: use 'awk' to strip trailing path components
 - completion: let 'ls-files' and 'diff-index' filter matching paths
 - completion: improve handling quoted paths on the command line
 - completion: support completing non-ASCII pathnames
 - completion: simplify prefix path component handling during path completion
 - completion: move __git_complete_index_file() next to its helpers
 - t9902-completion: add tests demonstrating issues with quoted pathnames

 Command line completion (in contrib/) learned to complete pathnames
 for various commands better.

 Will merge to 'next'.


* tq/t1510 (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 5710c81979)
 + t1510-repo-setup.sh: remove useless mkdir

 Test cleanup.

 Will merge to 'master'.


* sb/blame-color (2018-04-24) 3 commits
 - builtin/blame: add new coloring scheme config
 - builtin/blame: highlight recently changed lines
 - builtin/blame: dim uninteresting metadata lines

 "git blame" learns to unhighlight uninteresting metadata from the
 originating commit on lines that are the same as the previous one,
 and also paint lines in different colors depending on the age of
 the commit.


* ab/simplify-perl-makefile (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at 906cf21682)
 + Makefile: mark perllibdir as a .PHONY target
  (merged to 'next' on 2018-04-17 at 4448756934)
 + perl: fix installing modules from contrib

 Recent simplification of build procedure forgot a bit of tweak to
 the build procedure of contrib/mw-to-git/

 Will merge to 'master'.


* ds/lazy-load-trees (2018-04-11) 5 commits
  (merged to 'next' on 2018-04-25 at b90813f421)
 + commit-graph: lazy-load trees for commits
 + treewide: replace maybe_tree with accessor methods
 + commit: create get_commit_tree() method
 + treewide: rename tree to maybe_tree
 + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
 (this branch is used by ds/generation-numbers; uses ds/commit-graph.)

 The code has been taught to use the duplicated information stored
 in the commit-graph file to learn the tree object name for a commit
 to avoid opening and parsing the commit object when it makes sense
 to do so.

 Will merge to 'master'.


* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 23f875f6b9)
 + git-svn: avoid warning on undef readline()

 "git svn" had a minor thinko/typo which has been fixed.

 Will merge to 'master'.


* hn/sort-ls-remote (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 244ca5d30a)
 + ls-remote: create '--sort' option

 "git ls-remote" learned an option to allow sorting its output based
 on the refnames being shown.

 Will merge to 'master'.


* js/empty-config-section-fix (2018-04-09) 15 commits
  (merged to 'next' on 2018-04-25 at 1690df3e5f)
 + git_config_set: reuse empty sections
 + git config --unset: remove empty sections (in the common case)
 + git_config_set: make use of the config parser's event stream
 + git_config_set: do not use a state machine
 + config_set_store: rename some fields for consistency
 + config: avoid using the global variable `store`
 + config: introduce an optional event stream while parsing
 + t1300: `--unset-all` can leave an empty section behind (bug)
 + t1300: add a few more hairy examples of sections becoming empty
 + t1300: remove unreasonable expectation from TODO
 + t1300: avoid relying on a bug
 + config --replace-all: avoid extra line breaks
 + t1300: demonstrate that --replace-all can "invent" newlines
 + t1300: rename it to reflect that `repo-config` was deprecated
 + git_config_set: fix off-by-two

 "git config --unset a.b", when "a.b" is the last variable in an
 otherwise empty section "a", left an empty section "a" behind, and
 worse yet, a subsequent "git config a.c value" did not reuse that
 empty shell and instead created a new one.  These have been
 (partially) corrected.

 Will merge to 'master'.


* nd/warn-more-for-devs (2018-04-16) 4 commits
  (merged to 'next' on 2018-04-25 at 2978e61414)
 + Makefile: add a DEVOPTS to get all of -Wextra
 + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
 + Makefile: detect compiler and enable more warnings in DEVELOPER=1
 + connect.c: mark die_initial_contact() NORETURN

 The build procedure "make DEVELOPER=YesPlease" learned to enable a
 bit more warning options depending on the compiler used to help
 developers more.  There also is "make DEVOPTS=tokens" knob
 available now, for those who want to help fixing warnings we
 usually ignore, for example.

 Will merge to 'master'.


* sb/submodule-move-nested (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 86b177433a)
 + submodule: fixup nested submodules after moving the submodule
 + submodule-config: remove submodule_from_cache
 + submodule-config: add repository argument to submodule_from_{name, path}
 + submodule-config: allow submodule_free to handle arbitrary repositories
 + grep: remove "repo" arg from non-supporting funcs
 + submodule.h: drop declaration of connect_work_tree_and_git_dir

 Moving a submodule that itself has submodule in it with "git mv"
 forgot to make necessary adjustment to the nested sub-submodules;
 now the codepath learned to recurse into the submodules.

 Will merge to 'master'.


* tb/config-type (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at fe69e93c82)
 + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
 + builtin/config.c: treat type specifiers singularly
 (this branch is used by tb/config-default.)

 The "git config" command uses separate options e.g. "--int",
 "--bool", etc. to specify what type the caller wants the value to
 be interpreted as.  A new "--type=<typename>" option has been
 introduced, which would make it cleaner to define new types.

 Will merge to 'master'.


* tb/config-default (2018-04-23) 3 commits
  (merged to 'next' on 2018-04-25 at 59bb6beb2a)
 + builtin/config: introduce `color` type specifier
 + config.c: introduce 'git_config_color' to parse ANSI colors
 + builtin/config: introduce `--default`
 (this branch uses tb/config-type.)

 "git config --get" learned the "--default" option, to help the
 calling script.  Building on top of the tb/config-type topic, the
 "git config" learns "--type=color" type.  Taken together, you can
 do things like "git config --get foo.color --default blue" and get
 the ANSI color sequence for the color given to foo.color variable,
 or "blue" if the variable does not exist.

 Will merge to 'master'.


* jh/json-writer (2018-03-28) 1 commit
 - json_writer: new routines to create data in JSON format

 Preparatory code to later add json output for unspecified telemetry
 data.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 056bcaa69c)
 + ref-filter: libify get_ref_atom_value()
 + ref-filter: add return value to parsers
 + ref-filter: change parsing function error handling
 + ref-filter: add return value && strbuf to handlers
 + ref-filter: start adding strbufs with errors
 + ref-filter: add shortcut to work with strbufs

 Code restructuring, in preparation for further work.

 Will merge to 'master'.


* jk/branch-l-0-deprecation (2018-03-26) 3 commits
  (merged to 'next' on 2018-04-11 at 9b2b0305dd)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step deprecates
 the short-hand and warns about the future removal of the it when it
 is used.

 Will cook in 'next'.


* jk/branch-l-1-removal (2018-03-26) 1 commit
 - branch: drop deprecated "-l" option
 (this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)

 Following the "git branch -l" deprecation, the short-hand is removed.

 Will keep in 'pu'.


* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
 - branch: make "-l" a synonym for "--list"
 (this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)

 Following the "git branch -l" removal, "-l" is resurrected as a
 short-hand for "--list".

 Will keep in 'pu'.


* dj/runtime-prefix (2018-04-24) 7 commits
  (merged to 'next' on 2018-04-25 at e7e635a70e)
 + Makefile: quote $INSTLIBDIR when passing it to sed
 + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with js/runtime-prefix.)

 A build-time option has been added to allow Git to be told to refer
 to its associated files relative to the main binary, in the same
 way that has been possible on Windows for quite some time, for
 Linux, BSDs and Darwin.

 Will merge to 'master'.


* ab/nuke-emacs-contrib (2018-04-16) 1 commit
  (merged to 'next' on 2018-04-25 at 9b133d8a65)
 + git{,-blame}.el: remove old bitrotting Emacs code

 The scripts in contrib/emacs/ have outlived their usefulness and
 have been replaced with a stub that errors out and tells the user
 there are replacements.

 Will merge to 'master'.


* nd/pack-objects-pack-struct (2018-04-16) 15 commits
 - ci: exercise the whole test suite with uncommon code in pack-objects
 - pack-objects: reorder members to shrink struct object_entry
 - pack-objects: shrink delta_size field in struct object_entry
 - pack-objects: shrink size field in struct object_entry
 - pack-objects: clarify the use of object_entry::size
 - pack-objects: don't check size when the object is bad
 - pack-objects: shrink z_delta_size field in struct object_entry
 - pack-objects: refer to delta objects by index instead of pointer
 - pack-objects: move in_pack out of struct object_entry
 - pack-objects: move in_pack_pos out of struct object_entry
 - pack-objects: use bitfield for object_entry::depth
 - pack-objects: use bitfield for object_entry::dfs_state
 - pack-objects: turn type and in_pack_type to bitfields
 - pack-objects: a bit of document about struct object_entry
 - read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean

 "git pack-objects" needs to allocate tons of "struct object_entry"
 while doing its work, and shrinking its size helps the performance
 quite a bit.

 What's the doneness of this thing?  The interdiff since previous
 rounds looked reasonable, but I didn't see this round otherwise
 scrutinized by reviewers.  The numbers given in the commit near the
 tip do look impressive, though ;-)


* nd/repack-keep-pack (2018-04-16) 7 commits
 - pack-objects: show some progress when counting kept objects
 - gc --auto: exclude base pack if not enough mem to "repack -ad"
 - gc: handle a corner case in gc.bigPackThreshold
 - gc: add gc.bigPackThreshold config
 - gc: add --keep-largest-pack option
 - repack: add --keep-pack option
 - t7700: have closing quote of a test at the beginning of line

 "git gc" in a large repository takes a lot of time as it considers
 to repack all objects into one pack by default.  The command has
 been taught to pretend as if the largest existing packfile is
 marked with ".keep" so that it is left untouched while objects in
 other packs and loose ones are repacked.

 What's the doneness of this thing?  The interdiff since the earlier
 one looked reasonable, but I didn't see this round otherwise
 scrutinized by reviewers.


* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* ds/commit-graph (2018-04-11) 16 commits
  (merged to 'next' on 2018-04-25 at 18af3d28d9)
 + commit-graph: implement "--append" option
 + commit-graph: build graph from starting commits
 + commit-graph: read only from specific pack-indexes
 + commit: integrate commit graph with commit parsing
 + commit-graph: close under reachability
 + commit-graph: add core.commitGraph setting
 + commit-graph: implement git commit-graph read
 + commit-graph: implement git-commit-graph write
 + commit-graph: implement write_commit_graph()
 + commit-graph: create git-commit-graph builtin
 + graph: add commit graph design document
 + commit-graph: add format document
 + csum-file: refactor finalize_hashfile() method
 + csum-file: rename hashclose() to finalize_hashfile()
 + Merge branch 'jk/cached-commit-buffer' into HEAD
 + Merge branch 'jt/binsearch-with-fanout' into HEAD
 (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)

 Precompute and store information necessary for ancestry traversal
 in a separate file to optimize graph walking.

 Will merge to 'master'.


* pc/submodule-helper-foreach (2018-02-02) 5 commits
 - submodule: port submodule subcommand 'foreach' from shell to C
 - submodule foreach: document variable '$displaypath'
 - submodule foreach: clarify the '$toplevel' variable documentation
 - submodule foreach: document '$sm_path' instead of '$path'
 - submodule foreach: correct '$path' in nested submodules from a subdirectory

 Expecting a response to review comments
 e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>


* tg/worktree-add-existing-branch (2018-04-30) 4 commits
 - worktree: teach "add" to check out existing branches
 - worktree: factor out dwim_branch function
 - worktree: improve message when creating a new worktree
 - worktree: remove extra members from struct add_opts

 "git worktree add" learned to check out an existing branch.

 Will merge to 'next'.


* js/rebase-recreate-merge (2018-04-26) 17 commits
 - rebase -i --rebase-merges: add a section to the man page
 - rebase -i: introduce --rebase-merges=[no-]rebase-cousins
 - pull: accept --rebase=merges to recreate the branch topology
 - rebase --rebase-merges: avoid "empty merges"
 - sequencer: handle post-rewrite for merge commands
 - sequencer: make refs generated by the `label` command worktree-local
 - rebase --rebase-merges: add test for --keep-empty
 - rebase: introduce the --rebase-merges option
 - rebase-helper --make-script: introduce a flag to rebase merges
 - sequencer: fast-forward `merge` commands, if possible
 - sequencer: introduce the `merge` command
 - sequencer: introduce new commands to reset the revision
 - git-rebase--interactive: clarify arguments
 - sequencer: offer helpful advice when a command was rescheduled
 - sequencer: refactor how original todo list lines are accessed
 - sequencer: make rearrange_squash() a bit more obvious
 - sequencer: avoid using errno clobbered by rollback_lock_file()

 "git rebase" learned "--rebase-merges" to transplant the whole
 topology of commit graph elsewhere.


* bw/protocol-v2 (2018-03-15) 35 commits
  (merged to 'next' on 2018-04-11 at 23ee234a2c)
 + remote-curl: don't request v2 when pushing
 + remote-curl: implement stateless-connect command
 + http: eliminate "# service" line when using protocol v2
 + http: don't always add Git-Protocol header
 + http: allow providing extra headers for http requests
 + remote-curl: store the protocol version the server responded with
 + remote-curl: create copy of the service name
 + pkt-line: add packet_buf_write_len function
 + transport-helper: introduce stateless-connect
 + transport-helper: refactor process_connect_service
 + transport-helper: remove name parameter
 + connect: don't request v2 when pushing
 + connect: refactor git_connect to only get the protocol version once
 + fetch-pack: support shallow requests
 + fetch-pack: perform a fetch using v2
 + upload-pack: introduce fetch server command
 + push: pass ref prefixes when pushing
 + fetch: pass ref prefixes when fetching
 + ls-remote: pass ref prefixes when requesting a remote's refs
 + transport: convert transport_get_remote_refs to take a list of ref prefixes
 + transport: convert get_refs_list to take a list of ref prefixes
 + connect: request remote refs using v2
 + ls-refs: introduce ls-refs server command
 + serve: introduce git-serve
 + test-pkt-line: introduce a packet-line test helper
 + protocol: introduce enum protocol_version value protocol_v2
 + transport: store protocol version
 + connect: discover protocol version outside of get_remote_heads
 + connect: convert get_remote_heads to use struct packet_reader
 + transport: use get_refs_via_connect to get refs
 + upload-pack: factor out processing lines
 + upload-pack: convert to a builtin
 + pkt-line: add delim packet support
 + pkt-line: allow peeking a packet line without consuming it
 + pkt-line: introduce packet_read_with_status
 (this branch is used by bw/server-options.)

 The beginning of the next-gen transfer protocol.

 Will merge to 'master'.


* ls/checkout-encoding (2018-04-16) 10 commits
  (merged to 'next' on 2018-04-25 at e0f8554b2a)
 + convert: add round trip check based on 'core.checkRoundtripEncoding'
 + convert: add tracing for 'working-tree-encoding' attribute
 + convert: check for detectable errors in UTF encodings
 + convert: add 'working-tree-encoding' attribute
 + utf8: add function to detect a missing UTF-16/32 BOM
 + utf8: add function to detect prohibited UTF-16/32 BOM
 + utf8: teach same_encoding() alternative UTF encoding names
 + strbuf: add a case insensitive starts_with()
 + strbuf: add xstrdup_toupper()
 + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()

 The new "checkout-encoding" attribute can ask Git to convert the
 contents to the specified encoding when checking out to the working
 tree (and the other way around when checking in).

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* js/runtime-prefix-windows (2018-03-27) 5 commits
 . mingw/msvc: use the new-style RUNTIME_PREFIX helper
 . exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 . exec_cmd: RUNTIME_PREFIX on some POSIX systems
 . Makefile: add Perl runtime prefix support
 . Makefile: generate Perl header from template file

 The Windows port was the first that allowed Git to be installed
 anywhere by having its components refer to each other with relative
 pathnames.  The recent dj/runtime-prefix topic extends the idea to
 other platforms, and its approach has been adopted back in the
 Windows port.

 Ejected, as the parent topic dj/runtime-prefix covers Windows now.


* bp/fsexcludes (2018-04-16) 2 commits
 . fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
 . fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic

 Can we have a few lines summary here, just like we have for other
 topic ;-) I personally take the overlong title of these commits as
 a sign that they can further be simplified and cleaned up by
 splitting, focusing the scope, etc.

 Retracted.
 cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2016, #02; Fri, 6)
@ 2016-05-06 22:46  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-06 22:46 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the tenth batch of topics of this cycle.
On the 'maint' front, 2.8.2 is out and fixes that have been in
'master' accumulates on it for 2.8.3.

Ones with questionable status has a '?' character in their comments.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/object-id (2016-04-25) 6 commits
  (merged to 'next' on 2016-04-29 at 02f13a4)
 + match-trees: convert several leaf functions to use struct object_id
 + tree-walk: convert tree_entry_extract() to use struct object_id
 + struct name_entry: use struct object_id instead of unsigned char sha1[20]
 + match-trees: convert shift_tree() and shift_tree_by() to use object_id
 + test-match-trees: convert to use struct object_id
 + sha1-name: introduce a get_oid() function

 Move from unsigned char[20] to struct object_id continues.


* bw/rebase-merge-entire-branch (2016-04-24) 1 commit
  (merged to 'next' on 2016-04-29 at 7a9487f)
 + git-rebase--merge: don't include absent parent as a base

 "git rebase -m" could be asked to rebase an entire branch starting
 from the root, but failed by assuming that there always is a parent
 commit to the first commit on the branch.


* jc/drop-git-spec-in (2016-04-27) 2 commits
  (merged to 'next' on 2016-04-27 at 2b85030)
 + Makefile: remove dependency on git.spec
  (merged to 'next' on 2016-04-22 at 531583f)
 + Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".


* jk/diff-compact-heuristic (2016-05-02) 3 commits
  (merged to 'next' on 2016-05-02 at 2a74763)
 + diff: undocument the compaction heuristic knobs for experimentation
  (merged to 'next' on 2016-04-22 at 0c117ea)
 + xdiff: implement empty line chunk heuristic
 + xdiff: add recs_match helper function
 (this branch is tangled with jc/diff-compact-always-use-blank-heuristics.)

 Patch output from "git diff" and friends has been tweaked to be
 more readable by using a blank line as a strong hint that the
 contents before and after it belong to a logically separate unit.


* js/http-custom-headers (2016-04-27) 1 commit
  (merged to 'next' on 2016-04-27 at 0c97a50)
 + http: support sending custom HTTP headers

 HTTP transport clients learned to throw extra HTTP headers at the
 server, specified via http.extraHeader configuration variable.


* ld/p4-test-py3 (2016-04-26) 3 commits
  (merged to 'next' on 2016-04-27 at d5d5fca)
 + git-p4 tests: time_in_seconds should use $PYTHON_PATH
 + git-p4 tests: work with python3 as well as python2
 + git-p4 tests: cd to / before running python

 The test scripts for "git p4" (but not "git p4" implementation
 itself) has been updated so that they would work even on a system
 where the installed version of Python is python 3.


* ls/p4-lfs-test-fix-2.7.0 (2016-04-29) 2 commits
  (merged to 'next' on 2016-04-29 at da56b67)
 + t9824: fix wrong reference value
  (merged to 'next' on 2016-04-27 at be87c63)
 + t9824: fix broken &&-chain in a subshell

 Fix a broken test.


* sb/clone-shallow-passthru (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 3112b24)
 + clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.


* sb/config-exit-status-list (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 44fe343)
 + config doc: improve exit code listing

 Doc update.

--------------------------------------------------
[New Topics]

* sb/submodule-deinit-all (2016-05-05) 1 commit
 - submodule deinit: require '--all' instead of '.' for all submodules

 Correct faulty recommendation to use "git submodule deinit ." when
 de-initialising all submodules, which would result in a strange
 error message in a pathological corner case.

 Will merge to 'next'.


* bn/config-doc-tt-varnames (2016-05-05) 1 commit
 - config: consistently format $variables in monospaced font
 (this branch uses jc/config-pathname-type.)

 Doc formatting fixes.


* lp/typofixes (2016-05-06) 1 commit
 - typofix: assorted typofixes in comments, documentation and messages

 Will merge to 'next'.


* sb/z-is-gnutar-ism (2016-05-06) 1 commit
 - t3513: do not compress backup tar file

 Will merge to 'next'.


* jc/test-parse-options-expect (2016-05-06) 4 commits
 - t0040: convert a few tests to use test-parse-options --expect
 - t0040: remove unused test helpers
 - test-parse-options: --expect=<string> option to simplify tests
 - test-parse-options: fix output when callback option fails
 (this branch uses pb/commit-verbose-config.)


* jc/doc-lint (2016-05-04) 2 commits
 - Documentation: fix linkgit references
 - ci: validate "gitlink:" in documentation


--------------------------------------------------
[Stalled]

* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will this be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* ew/normal-to-e (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 65a2c52)
 + .mailmap: update to my shorter email address

 Will merge to 'master'.


* js/close-packs-before-gc (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at bfd39bf)
 + t5510: run auto-gc in the foreground

 Will merge to 'master'.


* ls/travis-submitting-patches (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 467930e)
 + Documentation: add setup instructions for Travis CI

 Will merge to 'master'.


* rn/glossary-typofix (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 1e73e76)
 + Documentation: fix typo 'In such these cases'

 Will merge to 'master'.


* jc/commit-tree-ignore-commit-gpgsign (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 08eccb2)
 + commit-tree: do not pay attention to commit.gpgsign

 "git commit-tree" plumbing command required the user to always sign
 its result when the user sets the commit.gpgsign configuration
 variable, which was an ancient mistake.  Rework "git rebase" that
 relied on this mistake so that it reads commit.gpgsign and pass (or
 not pass) the -S option to "git commit-tree" to keep the end-user
 expectation the same, while teaching "git commit-tree" to ignore
 the configuration variable.  This will stop requiring the users to
 sign commit objects used internally as an implementation detail of
 "git stash".

 Will merge to 'master'.


* jk/push-client-deadlock-fix (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at e91626c)
 + Windows: add pthread_sigmask() that does nothing

 Will merge to 'master'.


* sb/clean-test-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at d80c9c6)
 + t7300: mark test with SANITY

 Will merge to 'master'.


* sb/submodule-module-list-pathspec-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at ab6dac3)
 + submodule deinit test: fix broken && chain in subshell

 Will merge to 'master'.


* sk/gitweb-highlight-encoding (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 441302c)
 + gitweb: apply fallback encoding before highlight

 Some multi-byte encoding can have a backslash byte as a later part
 of one letter, which would confuse "highlight" filter used in
 gitweb.

 Will merge to 'master'.


* ab/hooks (2016-05-04) 4 commits
 - hooks: allow customizing where the hook directory is
 - githooks.txt: minor improvements to the grammar & phrasing
 - githooks.txt: amend dangerous advice about 'update' hook ACL
 - githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Will merge to 'next'.


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.


* mh/split-under-lock (2016-05-06) 33 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): move docstring to header file
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring
 - read_raw_ref(): don't get confused by an empty directory
 - commit_ref(): if there is an empty dir in the way, delete it
 - t1404: demonstrate a bug resolving references

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Updated.  Will wait for comments for the last time, and then
 merge to 'next'.


* bn/http-cookiefile-config (2016-05-04) 2 commits
 - http: expand http.cookieFile as a path
 - Documentation: config: improve word ordering for http.cookieFile

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Will merge to 'next'.


* ew/doc-split-pack-disables-bitmap (2016-04-28) 1 commit
  (merged to 'next' on 2016-05-06 at 6343d1e)
 + pack-objects: warn on split packs disabling bitmaps

 Doc update.

 Will merge to 'master'.


* jc/config-pathname-type (2016-05-04) 1 commit
 - config: describe 'pathname' value type
 (this branch is used by bn/config-doc-tt-varnames.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'next'.


* jk/submodule-c-credential (2016-05-06) 6 commits
 - submodule: stop sanitizing config options
 - submodule: use prepare_submodule_repo_env consistently
 - submodule--helper: move config-sanitizing to submodule.c
 - submodule: export sanitized GIT_CONFIG_PARAMETERS
 - t5550: break submodule config test into multiple sub-tests
 - t5550: fix typo in $HTTPD_URL

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly.

 Everybody happy?


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* sb/misc-cleanups (2016-04-28) 2 commits
  (merged to 'next' on 2016-05-06 at 87bc8a5)
 + submodule-config: don't shadow `cache`
 + config.c: drop local variable

 Will merge to 'master'.


* ew/fast-import-unpack-limit (2016-04-24) 1 commit
 - fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Need to pick up the rerolled version.
 ($gmane/292562)


* ls/p4-lfs (2016-04-28) 3 commits
  (merged to 'next' on 2016-05-06 at 3e1354d)
 + git-p4: fix Git LFS pointer parsing
 + travis-ci: express Linux/OS X dependency versions more clearly
 + travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.

 Will merge to 'master'.


* tb/convert-eol-autocrlf (2016-04-29) 10 commits
 - ce_compare_data() did not respect conversion
 - t6038; use crlf on all platforms
 - convert.c: more safer crlf handling with text attribute
 - convert: unify the "auto" handling of CRLF
 - convert.c: stream and early out
 - read-cache: factor out get_sha1_from_index() helper
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: make commit_chk_wrnNNO() reliable

 The combination of text=auto & eol=crlf (or eol=lf for that matter)
 is taught to be much more useful; it used to be "auto detection"
 was defeated as if setting eol declares that the file _is_ text,
 but now text=auto is still in effect for such a path and the code
 refrains from applying eol conversion if it found the path is not
 text.  Also setting core.autocrlf to 'input' and core.eol to 'crlf'
 used to be rejected, but because the code gives precedence to
 core.autocrlf, there is no need to, hence we no longer reject the
 combination.

 Earlier steps looked alright, but it veers into a wrong direction
 in the middle.


* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074, 293236)


* nd/worktree-various-heads (2016-04-22) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: check whether branch is bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: check whether branch is rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()
 - dir.c: rename str(n)cmp_icase to fspath(n)cmp

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Being reviewed.
 ($gmane/292189)


* pb/commit-verbose-config (2016-05-05) 8 commits
 - SQUASH???
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t/t7507: improve test coverage
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues
 (this branch is used by jc/test-parse-options-expect.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Almost there.
 ($gmane/293663).


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.

 What was the status of this one?  Ready to proceed?


* jc/ll-merge-internal (2016-04-27) 3 commits
 - t6036: remove pointless test that expects failure
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.

 Will rebase to remove the comment after three-dash line and then merge.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Comments?  They looked all sensible to me.
 Does the lack of response mean lack of interest and support?


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
 - format-patch: introduce format.useAutoBase configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Looking close to be ready.
 ($gmane/292622).


* dt/index-helper (2016-05-05) 19 commits
 - untracked-cache: config option
 - trace: measure where most of the time is spent
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - watchman: add a config option to enable the extension
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - watchman: add support to watchman to reduce refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: log warnings
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.  Reported to break its own tests.
 ($gmane/293687).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

--------------------------------------------------
[Discarded]

* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 1 commit
 . diff: enable "compaction heuristics" and lose experimentation knob

 Superseded by the tip commit on the jk/diff-compact-heuristic topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2016, #04; Wed, 23)
@ 2016-03-23 21:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-03-23 21:12 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Three more minor fix-up topics are to be merged by 2.8 final, but we
are almost there.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* jk/check-repository-format (2016-03-11) 10 commits
 - verify_repository_format: mark messages for translation
 - setup: drop repository_format_version global
 - setup: unify repository version callbacks
 - init: use setup.c's repo version verification
 - setup: refactor repo format reading and verification
 - config: drop git_config_early
 - check_repository_format_gently: stop using git_config_early
 - lazily load core.sharedrepository
 - wrap shared_repository global in get/set accessors
 - setup: document check_repository_format()

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.


* mj/pull-rebase-autostash (2016-03-21) 2 commits
  (merged to 'next' on 2016-03-23 at ebf1afa)
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.

 Will merge to 'master' after 2.8 final.


* pb/commit-verbose-config (2016-03-14) 1 commit
 - commit: add a commit.verbose config variable
 (this branch uses pb/t7502-drop-dup.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was given
 from the command line.


* pb/t7502-drop-dup (2016-03-11) 1 commit
  (merged to 'next' on 2016-03-15 at 037c877)
 + t/t7502 : drop duplicate test
 (this branch is used by pb/commit-verbose-config.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* ss/commit-squash-msg (2016-03-21) 1 commit
  (merged to 'next' on 2016-03-23 at 0b72631)
 + commit: do not lose SQUASH_MSG contents

 When "git merge --squash" stopped due to conflict, the concluding
 "git commit" failed to read in the SQUASH_MSG that shows the log
 messages from all the squashed commits.

 Will merge to 'master' after 2.8 final.


* ls/p4-map-user (2016-03-15) 1 commit
  (merged to 'next' on 2016-03-23 at 9e0a4f5)
 + git-p4: map a P4 user to Git author name and email address

 Will merge to 'master' after 2.8 final.


* jc/merge-refuse-new-root (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at d7da4cf)
 + merge: refuse to create too cool a merge by default

 "git merge" used to allow merging two branches that have no common
 base by default, which led to a brand new history of an existing
 project created and then get pulled by an unsuspecting maintainer,
 which allowed an unnecessary parallel history merged into the
 existing project.  The command has been taught not to allow this by
 default, with an escape hatch "--allow-unrelated-histories" option
 to be used in a rare event that merges histories of two projects
 that started their lives independently.

 Will merge to 'master' after 2.8 final.


* jc/rerere-multi-wip (2016-03-21) 1 commit
 . WIP forget
 (this branch uses jc/rerere-multi.)


* jk/credential-cache-comment-exit (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at d2b8cc7)
 + credential-cache--daemon: clarify "exit" action semantics

 Will merge to 'master' after 2.8 final.


* jk/send-email-rtrim-mailrc-alias (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 74f1f44)
 + send-email: ignore trailing whitespace in mailrc alias file

 Will merge to 'master' after 2.8 final.


* jk/test-httpd-config-nosystem (2016-03-18) 1 commit
  (merged to 'next' on 2016-03-23 at 245263b)
 + t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env

 Will merge to 'master' after 2.8 final.


* lt/pretty-expand-tabs (2016-03-17) 4 commits
 - pretty-print: add --pretty=noexpand
 - pretty-print: further abstract out pp_handle_indent()
 - pretty-print: simplify the interaction between pp_handle_indent() and its caller
 - pretty-print: de-tabify indented logs to make things line up properly

 Needs a UI rework.


* sb/clone-shallow-passthru (2016-03-23) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - submodule clone: pass along `local` option
 - clone: add `--shallow-submodules` flag
 (this branch uses sb/submodule-parallel-update; is tangled with sb/submodule-init.)

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* sb/clone-t57-t56 (2016-03-16) 1 commit
  (merged to 'next' on 2016-03-23 at 5df850d)
 + clone tests: rename t57* => t56*

 Rename bunch of tests on "git clone" for better organization.

 Will merge to 'master' after 2.8 final.


* sb/rebase-x (2016-03-18) 2 commits
  (merged to 'next' on 2016-03-23 at ef8861b)
 + t3404: cleanup double empty lines between tests
 + rebase: decouple --exec from --interactive

 "git rebase -x" can be used without passing "-i" option.

 Will merge to 'master' after 2.8 final.


* cc/apply (2016-03-22) 2 commits
 - apply: remove unused call to free() in gitdiff_{old,new}name()
 - builtin/apply: get rid of useless 'name' variable

 Code clean-up.

 Will merge to 'next'.


* dt/index-helper (2016-03-23) 18 commits
 - SQUASH - minimum compilation fix
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - Add watchman support to reduce index refresh cost
 - read-cache: invalidate untracked cache data when reading WAMA
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()


* js/mingw-tests-2.8 (2016-03-23) 4 commits
  (merged to 'next' on 2016-03-23 at aeec80e)
 + mingw: skip some tests in t9115 due to file name issues
 + t1300: fix the new --show-origin tests on Windows
 + t1300-repo-config: make it resilient to being run via 'sh -x'
 + config --show-origin: report paths with forward slashes

 Will merge to 'master' by 2.8-final.


* jv/merge-nothing-into-void (2016-03-23) 1 commit
  (merged to 'next' on 2016-03-23 at 40b905d)
 + merge: fix NULL pointer dereference when merging nothing into void

 "git merge FETCH_HEAD" dereferenced NULL pointer when merging
 nothing into an unborn history (which is arguably unusual usage,
 which perhaps was the reason why nobody noticed it).

 Will merge to 'master' after 2.8 final.


* la/tag-force-signing-annotated-tags (2016-03-22) 1 commit
 - tag: add the option to force signing of annotated tags

 "git tag" can create an annotated tag without explicitly given an
 "-a" (or "-s") option (i.e. when a tag message is given).  A new
 configuration variable, tag.forceSignAnnotated, can be used to tell
 the command to create signed tag in such a situation.

 Will merge to 'next'.


* ls/p4-doc-markup (2016-03-23) 2 commits
  (merged to 'next' on 2016-03-23 at 94a6275)
 + Documentation: fix git-p4 AsciiDoc formatting
 + Documentation: use ASCII quotation marks in git-p4

 Will merge to 'master' by 2.8-final.


* sb/submodule-module-list-pathspec-fix (2016-03-22) 1 commit
  (merged to 'next' on 2016-03-23 at 67fe17c)
 + submodule: fix regression for deinit without submodules

 Will merge to 'master' by 2.8-final.

--------------------------------------------------
[Graduated to "master"]

* cn/deprecate-ssh-git-url (2016-03-09) 1 commit
  (merged to 'next' on 2016-03-15 at c52f11c)
 + Disown ssh+git and git+ssh

 The two alternative ways to spell "ssh://" transport have been
 deprecated for a long time.  The last mention of them has finally
 removed from the documentation.


* jc/exclusion-doc (2016-03-08) 1 commit
  (merged to 'next' on 2016-03-10 at 19173ff)
 + gitignore: document that unignoring a directory unignores everything in it


* jc/sane-grep (2016-03-10) 2 commits
  (merged to 'next' on 2016-03-15 at 98d08a4)
 + rebase-i: clarify "is this commit relevant?" test
 + sane_grep: pass "-a" if grep accepts it

 Recent versions of GNU grep is pickier than before to decide if a
 file is "binary" and refuse to give line-oriented hits when we
 expect it to, unless explicitly told with "-a" option.  As our
 scripted Porcelains use sane_grep wrapper for line-oriented data,
 even when the line may contain non-ASCII payload we took from
 end-user data, use "grep -a" to implement sane_grep wrapper when
 using an implementation of "grep" that takes the "-a" option.


* js/close-packs-before-gc (2016-03-04) 1 commit
  (merged to 'next' on 2016-03-04 at fe6f6ed)
 + t5510: do not leave changed cwd

 A small future-proofing of a test added recently.


* jx/http-no-proxy (2016-02-29) 1 commit
  (merged to 'next' on 2016-03-10 at 989305b)
 + http: honor no_http env variable to bypass proxy

 A small regression fix to keep no_proxy environment variable
 working.


* sb/rebase-summary (2016-03-02) 1 commit
  (merged to 'next' on 2016-03-04 at d40714d)
 + Documentation: reword rebase summary

--------------------------------------------------
[Stalled]

* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* cc/doc-recommend-performance-trace-to-file (2016-03-07) 1 commit
  (merged to 'next' on 2016-03-23 at 086b9f2)
 + Documentation: talk about pager in api-trace.txt

 Will merge to 'master' after 2.8 final.


* da/mergetool-delete-delete-conflict (2016-03-10) 2 commits
  (merged to 'next' on 2016-03-15 at 281a81a)
 + mergetool: honor tempfile configuration when resolving delete conflicts
 + mergetool: support delete/delete conflicts

 "git mergetool" did not work well with conflicts that both sides
 deleted.

 Will merge to 'master' after 2.8 final.


* es/test-gpg-tags (2016-03-06) 4 commits
  (merged to 'next' on 2016-03-15 at 617119f)
 + t6302: skip only signed tags rather than all tests when GPG is missing
 + t6302: also test annotated in addition to signed tags
 + t6302: normalize names and descriptions of signed tags
 + lib-gpg: drop unnecessary "missing GPG" warning

 A test for tags has been restructured so that more parts of it can
 easily be run on a platform without a working GnuPG.

 Will merge to 'master' after 2.8 final.


* jk/getwholeline-getdelim-empty (2016-03-05) 1 commit
  (merged to 'next' on 2016-03-15 at e70d4bd)
 + strbuf_getwholeline: NUL-terminate getdelim buffer on error

 strbuf_getwholeline() did not NUL-terminate the buffer on certain
 corner cases in its error codepath.

 Will merge to 'master' after 2.8 final.


* jk/startup-info (2016-03-07) 6 commits
  (merged to 'next' on 2016-03-15 at eb95e5f)
 + use setup_git_directory() in test-* programs
 + grep: turn off gitlink detection for --no-index
 + mailmap: do not resolve blobs in a non-repository
 + remote: don't resolve HEAD in non-repository
 + setup: set startup_info->have_repository more reliably
 + setup: make startup_info available everywhere

 The startup_info data, which records if we are working inside a
 repository (among other things), are now uniformly available to Git
 subcommand implementations, and Git avoids attempting to touch
 references when we are not in a repository.

 Will merge to 'master' after 2.8 final.


* rj/xdiff-prepare-plug-leak-on-error-codepath (2016-03-04) 2 commits
  (merged to 'next' on 2016-03-15 at f72755e)
 + xdiff/xprepare: fix a memory leak
 + xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits

 A small memory leak in an error codepath has been plugged in xdiff
 code.

 Will merge to 'master' after 2.8 final.


* jc/index-pack (2016-03-03) 2 commits
  (merged to 'next' on 2016-03-15 at 42efaa7)
 + index-pack: add a helper function to derive .idx/.keep filename
 + Merge branch 'jc/maint-index-pack-keep' into jc/index-pack
 (this branch is used by jc/bundle; uses jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 Code clean-up.

 Will merge to 'master' after 2.8 final.


* jc/maint-index-pack-keep (2016-03-03) 1 commit
  (merged to 'next' on 2016-03-04 at bc1d37a)
 + index-pack: correct --keep[=<msg>]
 (this branch is used by jc/bundle, jc/index-pack and jc/index-pack-clone-bundle.)

 "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 Will merge to 'master' after 2.8 final.


* mm/readme-markdown (2016-02-27) 1 commit
  (merged to 'next' on 2016-03-01 at 81f3858)
 + README.md: don't take 'commandname' literally

 The top-level README file has been updated to be more appropriate
 for the sign on the front door to welcome new acquaintances to Git
 by toning down inside jokes and making it into MarkDown.

 Will merge to 'master' after 2.8 final.


* gf/fetch-pack-direct-object-fetch (2016-03-05) 2 commits
  (merged to 'next' on 2016-03-06 at 5628860)
 + fetch-pack: update the documentation for "<refs>..." arguments
  (merged to 'next' on 2016-03-04 at 49199e0)
 + fetch-pack: fix object_id of exact sha1

 Fetching of history by naming a commit object name directly didn't
 work across remote-curl transport.

 Will merge to 'master' after 2.8 final.


* jk/add-i-highlight (2016-02-28) 1 commit
  (merged to 'next' on 2016-03-04 at 4ac3aa1)
 + add--interactive: allow custom diff highlighting programs

 Will merge to 'master' after 2.8 final.


* jk/config-get-urlmatch (2016-02-28) 3 commits
  (merged to 'next' on 2016-03-04 at feeb192)
 + Documentation/git-config: fix --get-all description
 + Documentation/git-config: use bulleted list for exit codes
 + config: fail if --get-urlmatch finds no value

 "git config --get-urlmatch", unlike other variants of the "git
 config --get" family, did not signal error with its exit status
 when there was no matching configuration.

 Will merge to 'master' after 2.8 final.


* jk/rev-parse-local-env-vars (2016-02-29) 2 commits
  (merged to 'next' on 2016-03-04 at a0300d5)
 + rev-parse: let some options run outside repository
 + t1515: add tests for rev-parse out-of-repo helpers

 The "--local-env-vars" and "--resolve-git-dir" options of "git
 rev-parse" failed to work outside a repository when the command's
 option parsing was rewritten in 1.8.5 era.

 Will merge to 'master' after 2.8 final.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* mm/lockfile-error-message (2016-03-01) 2 commits
  (merged to 'next' on 2016-03-04 at 04ed7e6)
 + lockfile: improve error message when lockfile exists
 + lockfile: mark strings for translation

 Will merge to 'master' after 2.8 final.


* ss/exc-flag-is-a-collection-of-bits (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at 5ea48c7)
 + dir: store EXC_FLAG_* values in unsigned integers

 Will merge to 'master' after 2.8 final.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle
 (this branch uses jc/index-pack and jc/maint-index-pack-keep; is tangled with jc/index-pack-clone-bundle.)

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ss/receive-pack-parse-options (2016-03-01) 1 commit
  (merged to 'next' on 2016-03-04 at c577ea7)
 + builtin/receive-pack.c: use parse_options API

 The command line argument parser for "receive-pack" has been
 rewritten to use parse-options.

 Will merge to 'master' after 2.8 final.


* jk/credential-clear-config (2016-02-26) 1 commit
  (merged to 'next' on 2016-03-04 at f7b26b7)
 + credential: let empty credential specs reset helper list

 The credential.helper configuration variable is cumulative and
 there is no good way to override it from the command line.  As
 a special case, giving an empty string as its value now serves
 as the signal to clear the values specified in various files.

 Will merge to 'master' after 2.8 final.


* jk/submodule-c-credential (2016-03-23) 7 commits
  (merged to 'next' on 2016-03-23 at 952367a)
 + git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
  (merged to 'next' on 2016-03-15 at 81df5b1)
 + git: submodule honor -c credential.* from command line
 + quote: implement sq_quotef()
 + submodule: fix segmentation fault in submodule--helper clone
 + submodule: fix submodule--helper clone usage
 + submodule: check argc count for git submodule--helper clone
 + submodule: don't pass empty string arguments to submodule--helper clone

 "git -c credential.<var>=<value> submodule" can now be used to
 propagate configuration variables related to credential helper
 down to the submodules.

 Will merge to 'master' after 2.8 final.


* nd/shallow-deepen (2016-02-23) 25 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* mm/diff-renames-default (2016-02-25) 5 commits
  (merged to 'next' on 2016-02-25 at 947c399)
 + diff: activate diff.renames by default
 + log: introduce init_log_defaults()
 + t: add tests for diff.renames (true/false/unset)
 + t4001-diff-rename: wrap file creations in a test
 + Documentation/diff-config: fix description of diff.renames

 The end-user facing Porcelain level commands like "diff" and "log"
 now enables the rename detection by default.

 Will merge to 'master' after 2.8 final.


* mp/upload-pack-use-embedded-args (2016-02-25) 1 commit
  (merged to 'next' on 2016-02-26 at f0a54e5)
 + upload-pack: use argv_array for pack_objects

 The embedded args argv-array in the child process is used to build
 the command line to run pack-objects instead of using a separate
 array of strings.

 Will merge to 'master' after 2.8 final.


* sb/submodule-init (2016-03-15) 2 commits
 - submodule: port init from shell to C
 - submodule: port resolve_relative_url from shell to C
 (this branch uses sb/submodule-parallel-update; is tangled with sb/clone-shallow-passthru.)

 Update of "git submodule" to move pieces of logic to C continues.

 Needs review.
 ($gmane/288824)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* sb/submodule-parallel-update (2016-03-01) 10 commits
  (merged to 'next' on 2016-03-15 at a8bf6c5)
 + clone: allow an explicit argument for parallel submodule clones
 + submodule update: expose parallelism to the user
 + submodule helper: remove double 'fatal: ' prefix
 + git submodule update: have a dedicated helper for cloning
 + run_processes_parallel: rename parameters for the callbacks
 + run_processes_parallel: treat output of children as byte array
 + submodule update: direct error message to stderr
 + fetching submodules: respect `submodule.fetchJobs` config option
 + submodule-config: drop check against NULL
 + submodule-config: keep update strategy around
 (this branch is used by sb/clone-shallow-passthru and sb/submodule-init.)

 A major part of "git submodule update" has been ported to C to take
 advantage of the recently added framework to run download tasks in
 parallel.

 Will merge to 'master' after 2.8 final.


* dt/refs-backend-lmdb (2016-02-25) 45 commits
 . SQUASH??? Minimum compilation band-aid
 . tests: add ref-storage argument
 . refs: tests for lmdb backend
 . refs: add LMDB refs storage backend
 . refs: break out resolve_ref_unsafe_submodule
 . config: read ref storage config on startup
 . refs: register ref storage backends
 . svn: learn ref-storage argument
 . clone: allow ref storage backend to be set for clone
 . refs: check submodules' ref storage config
 . init: allow alternate ref strorage to be set for new repos
 . refs: always handle non-normal refs in files backend
 . refs: resolve symbolic refs first
 . refs: on symref reflog expire, lock symref not referrent
 . refs: don't dereference on rename
 . refs: allow log-only updates
 . refs: move duplicate check to common code
 . refs: make lock generic
 . refs: handle non-normal ref renames
 . refs: add method to rename refs
 . refs: add methods to init refs db
 . refs: add method for delete_refs
 . refs: add method for initial ref transaction commit
 . refs: add methods for reflog
 . refs: add do_for_each_per_worktree_ref
 . refs: reduce the visibility of do_for_each_ref()
 . refs: add method for do_for_each_ref
 . refs: add methods for misc ref operations
 . refs: add a backend method structure with transaction functions
 . refs: move resolve_ref_unsafe into common code
 . files-backend: break out ref reading
 . refs: move for_each_*ref* functions into common code
 . refs: move head_ref{,_submodule} to the common code
 . Merge branch 'sb/submodule-parallel-update' into dt/refs-backend-lmdb
 . clone: allow an explicit argument for parallel submodule clones
 . submodule update: expose parallelism to the user
 . git submodule update: have a dedicated helper for cloning
 . run_processes_parallel: correctly terminate callbacks with an LF
 . run_processes_parallel: rename parameters for the callbacks
 . run-command: expose default_{start_failure, task_finished}
 . run_processes_parallel: treat output of children as byte array
 . submodule update: direct error message to stderr
 . fetching submodules: respect `submodule.fetchJobs` config option
 . submodule-config: drop check against NULL
 . submodule-config: keep update strategy around

 A reroll exists, but it seems that will further be rerolled.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-03-15) 10 commits
 - rerere: split code to call ll_merge() further
 - rerere: move code related to "forget" together
 - rerere: gc and clear
 - rerere: do use multiple variants
 - t4200: rerere a merge with two identical conflicts
 - rerere: allow multiple variants to exist
 - rerere: delay the recording of preimage
 - rerere: handle leftover rr-cache/$ID directory and postimage files
 - rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 - rerere: split conflict ID further
 (this branch is used by jc/rerere-multi-wip.)

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 May need further work on forget.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007.  It has been reported that
 git-gui still uses the deprecated syntax, which needs to be fixed
 before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Apr 2016, #07; Mon, 25)
@ 2016-04-25 22:43  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-25 22:43 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the seventh batch of topics of this
cycle.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ad/commit-have-m-option (2016-04-07) 2 commits
  (merged to 'next' on 2016-04-13 at 74088c2)
 + commit: do not ignore an empty message given by -m ''
 + commit: --amend -m '' silently fails to wipe message

 "git commit" misbehaved in a few minor ways when an empty message
 is given via -m '', all of which has been corrected.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
  (merged to 'next' on 2016-04-19 at 1352ede)
 + config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 On Cygwin, object creation uses the "create a temporary and then
 rename it to the final name" pattern, not "create a temporary,
 hardlink it to the final name and then unlink the temporary"
 pattern.

 This is necessary to use Git on Windows shared directories, and is
 already enabled for the MinGW and plain Windows builds.  It also
 has been used in Cygwin packaged versions of Git for quite a while.
 See http://thread.gmane.org/gmane.comp.version-control.git/291853
 ($gmane/275680, $gmane/291853).


* dt/pre-refs-backend (2016-04-10) 24 commits
  (merged to 'next' on 2016-04-13 at 0a8f9dd)
 + refs: on symref reflog expire, lock symref not referrent
 + refs: move resolve_ref_unsafe into common code
 + show_head_ref(): check the result of resolve_ref_namespace()
 + check_aliased_update(): check that dst_name is non-NULL
 + checkout_paths(): remove unneeded flag variable
 + cmd_merge(): remove unneeded flag variable
 + fsck_head_link(): remove unneeded flag variable
 + read_raw_ref(): change flags parameter to unsigned int
 + files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
 + read_raw_ref(): manage own scratch space
 + files-backend: break out ref reading
 + resolve_ref_1(): eliminate local variable "bad_name"
 + resolve_ref_1(): reorder code
 + resolve_ref_1(): eliminate local variable
 + resolve_ref_unsafe(): ensure flags is always set
 + resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
 + resolve_missing_loose_ref(): simplify semantics
 + t1430: improve test coverage of deletion of badly-named refs
 + t1430: test for-each-ref in the presence of badly-named refs
 + t1430: don't rely on symbolic-ref for creating broken symrefs
 + t1430: clean up broken refs/tags/shadow
 + t1430: test the output and error of some commands more carefully
 + refs: move for_each_*ref* functions into common code
 + refs: move head_ref{,_submodule} to the common code

 Code restructuring around the "refs" area to prepare for pluggable
 refs backends.


* en/merge-octopus-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at 600b479)
 + merge-octopus: abort if index does not match HEAD
 + t6044: new merge testcases for when index doesn't match HEAD

 "merge-octopus" strategy did not ensure that the index is clean
 when merge begins.


* en/merge-trivial-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at fb3ea86)
 + builtin/merge.c: fix a bug with trivial merges
 + t7605: add a testcase demonstrating a bug with trivial merges

 When "git merge" notices that the merge can be resolved purely at
 the tree level (without having to merge blobs) and the resulting
 tree happens to already exist in the object store, it forgot to
 update the index, which lead to an inconsistent state for later
 operations.


* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 180266c)
 + send-email: do not load Data::Dumper

 Code clean-up.


* ew/send-email-readable-message-id (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 422959a)
 + send-email: more meaningful Message-ID

 "git send-email" now uses a more readable timestamps when
 formulating a message ID.


* jc/http-socks5h (2016-04-10) 1 commit
  (merged to 'next' on 2016-04-13 at eb27afc)
 + http: differentiate socks5:// and socks5h://

 The socks5:// proxy support added back in 2.6.4 days was not aware
 that socks5h:// proxies behave differently.


* jc/rerere-multi (2016-04-06) 11 commits
  (merged to 'next' on 2016-04-13 at 3db2753)
 + rerere: adjust 'forget' to multi-variant world order
 + rerere: split code to call ll_merge() further
 + rerere: move code related to "forget" together
 + rerere: gc and clear
 + rerere: do use multiple variants
 + t4200: rerere a merge with two identical conflicts
 + rerere: allow multiple variants to exist
 + rerere: delay the recording of preimage
 + rerere: handle leftover rr-cache/$ID directory and postimage files
 + rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 + rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.


* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
  (merged to 'next' on 2016-04-13 at 2457462)
 + setup.c: do not feed NULL to "%.*s" even with precision 0

 Code cleanup.


* jk/do-not-printf-NULL (2016-04-10) 3 commits
  (merged to 'next' on 2016-04-13 at 60912e3)
 + git_config_set_multivar_in_file: handle "unset" errors
 + git_config_set_multivar_in_file: all non-zero returns are errors
 + config: lower-case first word of error strings

 "git config" had a codepath that tried to pass a NULL to
 printf("%s"), which nobody seems to have noticed.


* jk/use-write-script-more (2016-04-12) 3 commits
  (merged to 'next' on 2016-04-13 at d6718bf)
 + t3404: use write_script
 + t1020: do not overuse printf and use write_script
 + t5532: use write_script

 Code clean-up.


* ky/imap-send (2016-04-13) 2 commits
  (merged to 'next' on 2016-04-13 at 52cf493)
 + imap-send: fix CRAM-MD5 response calculation
 + imap-send: check for NOLOGIN capability only when using LOGIN command

 Support for CRAM-MD5 authentication method in "git imap-send" did
 not work well.


* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
  (merged to 'next' on 2016-04-13 at 49d2643)
 + configure: remove checking for HMAC_CTX_cleanup
 + imap-send: avoid deprecated TLSv1_method()
 + imap-send: check NULL return of SSL_CTX_new()
 + imap-send: use HMAC() function provided by OpenSSL

 Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
 we use in imap-send, which has been adjusted for the change.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
  (merged to 'next' on 2016-04-13 at c6584bb)
 + submodule--helper, module_clone: catch fprintf failure
 + submodule--helper: do not borrow absolute_path() result for too long
 + submodule--helper, module_clone: always operate on absolute paths
 + submodule--helper clone: create the submodule path just once
 + submodule--helper: fix potential NULL-dereference
 + recursive submodules: test for relative paths
 (this branch is used by sb/submodule-init.)

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
  (merged to 'next' on 2016-04-18 at 9daa5ce)
 + t7407: make expectation as clear as possible
 + submodule update: test recursive path reporting from subdirectory
 + submodule update: align reporting path for custom command execution
 + submodule status: correct path handling in recursive submodules
 + submodule update --init: correct path handling in recursive submodules
 + submodule foreach: correct path display in recursive submodules
 (this branch is used by sb/submodule-init.)

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

--------------------------------------------------
[New Topics]

* js/name-rev-use-oldest-ref (2016-04-22) 1 commit
 - name-rev: include taggerdate in considering the best name

 "git describe --contains" often made a hard-to-justify choice of
 tag to give name to a given commit, because it tried to come up
 with a name with smallest number of hops from a tag, causing an old
 commit whose close descendant that is recently tagged were not
 described with respect to an old tag but with a newer tag.  It did
 not help that its computation of "hop" count was further tweaked to
 penalize being on a side branch of a merge.  The logic has been
 updated to favor using the tag with the oldest tagger date, which
 is a lot easier to explain to the end users: "We describe a commit
 in terms of the (chronologically) oldest tag that contains the
 commit."

 Will merge to 'next'.


* js/win32-mmap (2016-04-22) 3 commits
  (merged to 'next' on 2016-04-22 at cd39c60)
 + mmap(win32): avoid expensive fstat() call
 + mmap(win32): avoid copy-on-write when it is unnecessary
 + win32mmap: set errno appropriately

 mmap emulation on Windows has been optimized.

 Will merge to 'master'.


* nd/remove-unused (2016-04-22) 2 commits
 - wrapper.c: delete dead function git_mkstemps()
 - dir.c: remove dead function fnmatch_icase()

 Code cleanup.

 Will merge to 'next'.


* rt/string-list-lookup-cleanup (2016-04-25) 1 commit
 - string_list: use string-list API in unsorted_string_list_lookup()

 Code cleanup.

 Will merge to 'next'.


* sg/test-lib-simplify-expr-away (2016-04-22) 1 commit
 - test-lib: simplify '--option=value' parsing

 Code cleanup.

 Will merge to 'next'.


* ew/fast-import-unpack-limit (2016-04-24) 1 commit
 - fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Need to pick up the rerolled version.
 ($gmane/292562)


* jd/send-email-to-whom (2016-04-25) 1 commit
 - send-email: fix grammo in the prompt that asks e-mail recipients

 A question by "git send-email" to ask the identity of the sender
 has been updated.

 Will merge to 'next'.


* ld/p4-test-py3 (2016-04-25) 2 commits
 - git-p4 tests: work with python3 as well as python2
 - git-p4 tests: cd to testdir before running python

 The test scripts for "git p4" (but not "git p4" implementation
 itself) has been updated so that they would work even on a system
 where the installed version of Python is python 3.


* ls/p4-lfs-test-fix-2.7.0 (2016-04-24) 1 commit
 - t9824: fix broken &&-chain in a subshell

 Fix a broken test.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* sb/clone-shallow-passthru (2016-04-25) 1 commit
 - clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.

 Modulo minor nits, looked ready.
 ($gmane/292539)


* da/user-useconfigonly (2016-04-01) 2 commits
  (merged to 'next' on 2016-04-22 at 26845a5)
 + ident: give "please tell me" message upon useConfigOnly error
 + ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Will merge to 'master'.


* jd/p4-jobs-in-commit (2016-04-19) 2 commits
 - git-p4: add P4 jobs to git commit message
 - git-p4: clean-up code style in tests

 "git p4" learned to record P4 jobs in Git commit that imports from
 the history in Perforce.

 Will merge to 'next'.


* js/replace-edit-use-editor-configuration (2016-04-20) 1 commit
  (merged to 'next' on 2016-04-22 at 8df6d30)
 + replace --edit: respect core.editor

 "git replace -e" did not honour "core.editor" configuration.

 Will merge to 'master'.


* ls/p4-lfs (2016-04-19) 2 commits
 - git-p4: fix Git LFS pointer parsing
 - travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.


* sb/mv-submodule-fix (2016-04-19) 1 commit
  (merged to 'next' on 2016-04-22 at 089e788)
 + mv: allow moving nested submodules

 "git mv old new" did not adjust the path for a submodule that lives
 as a subdirectory inside old/ directory correctly.

 Will merge to 'master'.


* tb/convert-eol-autocrlf (2016-04-25) 10 commits
 - ce_compare_data() did not respect conversion
 - t6038; use crlf on all platforms
 - convert.c: more safer crlf handling with text attribute
 - convert: unify the "auto" handling of CRLF
 - convert.c: stream and early out
 - read-cache: factor out get_sha1_from_index() helper
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: make commit_chk_wrnNNO() reliable

 The combination of text=auto & eol=crlf (or eol=lf for that matter)
 is taught to be much more useful; it used to be "auto detection"
 was defeated as if setting eol declares that the file _is_ text,
 but now text=auto is still in effect for such a path and the code
 refrains from applying eol conversion if it found the path is not
 text.  Also setting core.autocrlf to 'input' and core.eol to 'crlf'
 used to be rejected, but because the code gives precedence to
 core.autcrlf, there is no need to, hence we no longer reject the
 combination.

 Modulo minor nits, looked almost ready.
 ($gmane/292521, $gmane/292550)


* bc/object-id (2016-04-25) 6 commits
 - match-trees: convert several leaf functions to use struct object_id
 - tree-walk: convert tree_entry_extract() to use struct object_id
 - struct name_entry: use struct object_id instead of unsigned char sha1[20]
 - match-trees: convert shift_tree() and shift_tree_by() to use object_id
 - test-match-trees: convert to use struct object_id
 - sha1-name: introduce a get_oid() function

 Move from unsigned char[20] to struct object_id continues.

 Will merge to 'next'.


* ep/http-curl-trace (2016-04-20) 3 commits
 - git.txt: document the new GIT_TRACE_CURL environment variable
 - imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
 - http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074)


* nd/worktree-various-heads (2016-04-22) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: check whether branch is bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: check whether branch is rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()
 - dir.c: rename str(n)cmp_icase to fspath(n)cmp

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Being reviewed.
 ($gmane/292189)


* bw/rebase-merge-entire-branch (2016-04-24) 1 commit
 - git-rebase--merge: don't include absent parent as a base

 "git rebase -m" could be asked to rebase an entire branch starting
 from the root, but failed by assuming that there always is a parent
 commit to the first commit on the branch.

 Will merge to 'next'.


* jk/push-client-deadlock-fix (2016-04-20) 5 commits
  (merged to 'next' on 2016-04-22 at d59a2af)
 + t5504: drop sigpipe=ok from push tests
 + fetch-pack: isolate sigpipe in demuxer thread
 + send-pack: isolate sigpipe in demuxer thread
 + run-command: teach async threads to ignore SIGPIPE
 + send-pack: close demux pipe before finishing async process

 "git push" from a corrupt repository that attempts to push a large
 number of refs deadlocked; the thread to relay rejection notices
 for these ref updates blocked on writing them to the main thread,
 after the main thread at the receiving end notices that the push
 failed and decides not to read these notices and return a failure.

 Will merge to 'master'.


* jc/merge-refuse-new-root (2016-04-21) 2 commits
  (merged to 'next' on 2016-04-22 at 74eb957)
 + pull: pass --allow-unrelated-histories to "git merge"
 + t3033: avoid 'ambiguous refs' warning

 "git pull" has been taught to pass --allow-unrelated-histories
 option to underlying "git merge".

 Will merge to 'master'.


* pb/commit-verbose-config (2016-04-19) 6 commits
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Need a reroll but it will be some time before that happens.
 ($gmane/292160).


* en/merge-fixes (2016-04-12) 2 commits
 - merge-recursive: do not check working copy when creating a virtual merge base
 - merge-recursive: remove duplicate code

 "merge-recursive" strategy incorrectly checked if a path that is
 involved in its internal merge exists in the working tree.

 Will merge to 'next'.


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.


* jc/ll-merge-internal (2016-04-14) 2 commits
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 RFC.


* jk/diff-compact-heuristic (2016-04-19) 2 commits
  (merged to 'next' on 2016-04-22 at 0c117ea)
 + xdiff: implement empty line chunk heuristic
 + xdiff: add recs_match helper function

 Patch output from "git diff" and friends has been tweaked to be
 more readable by using a blank line as a strong hint that the
 contents before and after it belong to a logically separate unit.

 Will merge to 'master'.


* nd/test-helpers (2016-04-15) 2 commits
  (merged to 'next' on 2016-04-22 at 55ea5cd)
 + test helpers: move test-* to t/helper/ subdirectory
 + Makefile: clean *.o files we create

 Sources to many test helper binaries (and the generated helpers)
 have been moved to t/helper/ subdirectory to reduce clutter at the
 top level of the tree.

 Will merge to 'master'.


* sb/submodule-init (2016-04-16) 4 commits
 - submodule: port init from shell to C
 - submodule: port resolve_relative_url from shell to C
 - Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 - Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will merge to 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* nf/mergetool-prompt (2016-04-25) 1 commit
 - difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.

 Will merge to 'next'.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Comments?  They looked all sensible to me.


* jc/drop-git-spec-in (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-22 at 531583f)
 + Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Will merge to 'master'.


* st/verify-tag (2016-04-22) 6 commits
  (merged to 'next' on 2016-04-22 at 98ba239)
 + tag -v: verify directly rather than exec-ing verify-tag
 + verify-tag: move tag verification code to tag.c
 + verify-tag: prepare verify_tag for libification
 + verify-tag: update variable name and type
 + t7030: test verifying multiple tags
 + builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Unify internal logic between "git tag -v" and "git verify-tag"
 commands by making one directly call into the other.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-22) 4 commits
 . format-patch: introduce format.useAutoBase configuration
 . format-patch: introduce --base=auto option
 . format-patch: add '--base' option to record base tree info
 . patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Review comments sent.
 ($gmane/292168)


* dt/index-helper (2016-04-14) 16 commits
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - index-helper: add watchman support to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #04; Wed, 12)
@ 2022-10-12 21:23  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-12 21:23 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.  A topic without enough support may be
discarded after a long period of no activity.

The tip of 'next' has been rewound, after most of the topics that
have been cooking during the last weeks of the previous round
graduated to the 'master' branch.  The topics in these early batches
are mostly minor fixes, which might someday become part of the
2.38.x maintenance track, but they need to be on 'master' for a few
weeks before that happens.  Some topics outside 'next' have been
expecting updates for too long and we may want to discard them,
unless they see some activities.

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']

* ds/bundle-uri-docfix (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-07 at 9ebc1e497a)
 + bundle-uri: fix technical doc issues

 Doc formatting fix.
 source: <pull.1377.git.1665157810025.gitgitgadget@gmail.com>


* jk/sequencer-missing-author-name-check (2022-10-03) 1 commit
  (merged to 'next' on 2022-10-07 at 6a9f7e8b80)
 + sequencer: detect author name errors in read_author_script()

 Typofix in code.
 source: <YzsdRuD2CdJFdNVG@coredump.intra.peff.net>


* nb/doc-mergetool-typofix (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-07 at d309a9a130)
 + mergetool.txt: typofix 'overwriten' -> 'overwritten'

 Typofix.
 source: <pull.1350.git.git.1664844924663.gitgitgadget@gmail.com>


* pw/mailinfo-b-fix (2022-10-03) 1 commit
  (merged to 'next' on 2022-10-07 at 5c5d79daef)
 + mailinfo -b: fix an out of bounds access

 Fix a logic in "mailinfo -b" that miscomputed the length of a
 substring, which lead to an out-of-bounds access.
 source: <pull.1372.git.1664789011089.gitgitgadget@gmail.com>


* pw/ssh-sign-report-errors (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-07 at 4df1d2379a)
 + ssh signing: return an error when signature cannot be read

 The codepath to sign learned to report errors when it fails to read
 from "ssh-keygen".
 source: <pull.1371.v2.git.1664877694430.gitgitgadget@gmail.com>


* rs/gc-pack-refs-simplify (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-07 at ef7d12408d)
 + gc: simplify maintenance_task_pack_refs()

 Code clean-up.
 source: <ab33f72e-d552-7bd7-bf04-3c476d32b5b6@web.de>


* rs/test-httpd-in-C-locale (2022-10-06) 1 commit
  (merged to 'next' on 2022-10-07 at 832c1e856a)
 + t/lib-httpd: pass LANG and LC_ALL to Apache

 Force C locale while running tests around httpd to make sure we can
 find expected error messages in the log.
 source: <a1699375-c660-13ab-42fb-26a8afe4c376@web.de>

--------------------------------------------------
[New Topics]

* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
 - grep.c: remove "extended" in favor of "pattern_expression", fix segfault

 Giving "--invert-grep" and "--all-match" without "--grep" to the
 "git log" command resulted in an attempt to access grep pattern
 expression structure that has not been allocated, which has been
 corrected.

 Will merge to 'next'.
 source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>


* rs/archive-dedup-printf (2022-10-11) 1 commit
 - archive: deduplicate verbose printing

 Code simplification.

 Will merge to 'next'.
 source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>


* pw/rebase-reflog-fixes (2022-10-12) 9 commits
 - rebase: cleanup action handling
 - rebase --abort: improve reflog message
 - rebase --apply: make reflog messages match rebase --merge
 - rebase --apply: respect GIT_REFLOG_ACTION
 - rebase --merge: fix reflog message after skipping
 - rebase --merge: fix reflog when continuing
 - t3406: rework rebase reflog tests
 - rebase --apply: remove duplicated code
 - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
 - docs: git-send-email: difference between ssl and tls smtp-encryption

 Expecting a reroll??
 cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2022-08-10) 14 commits
 - sequencer: use the "octopus" strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-09-07) 7 commits
 - rebase --keep-base: imply --no-fork-point
 - rebase --keep-base: imply --reapply-cherry-picks
 - rebase: factor out branch_base calculation
 - rebase: rename merge_base to branch_base
 - rebase: store orig_head as a commit
 - t3416: set $EDITOR in subshell
 - t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Expecting a reroll.
 cf. <e25127f3-6135-b716-a12f-5dbe4f40dc42@gmail.com>
 source: <pull.1323.v2.git.1662561470.gitgitgadget@gmail.com>


* js/cmake-updates (2022-08-24) 5 commits
 - cmake: increase time-out for a long-running test
 - cmake: avoid editing t/test-lib.sh
 - add -p: avoid ambiguous signed/unsigned comparison
 - cmake: copy the merge tools for testing
 - cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.

 Expecting a reroll.
 cf. <3df77ffd-85a2-3a54-9005-34a24ec6e82d@github.com>
 cf. <531620e1-de4c-74aa-c840-c12ce81f8740@github.com> and others
 source: <pull.1320.v2.git.1661243463.gitgitgadget@gmail.com>


* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
 - clone, submodule update: check out branches
 - submodule--helper: refactor up-to-date criterion
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.

 Expecting a reroll.
 cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
 source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
 - diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.

 Expecting a reroll.
 source: <20220914151333.3309-1-tboegi@web.de>


* mj/credential-helper-auth-headers (2022-09-13) 8 commits
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers
 - osxkeychain: clarify that we ignore unknown lines
 - netrc: ignore unknown lines (do not die)
 - wincred: ignore unknown lines (do not die)

 Extending credential helper protocol.

 Expecting a reroll.
 A separate non-RFC submission of the first three is expected.
 cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
 source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>


* cw/submodule-status-in-parallel (2022-09-23) 4 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor functions
 . submodule: move status parsing into function
 . run-command: add pipe_output to run_processes_parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks its self check.
 cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
 source: <20220922232947.631309-1-calvinwan@google.com>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ab/coding-guidelines-c99 (2022-10-11) 5 commits
 - CodingGuidelines: recommend against unportable C99 struct syntax
 - CodingGuidelines: mention C99 features we can't use
 - CodingGuidelines: allow declaring variables in for loops
 - CodingGuidelines: mention dynamic C99 initializer elements
 - CodingGuidelines: update for C99

 Update CodingGuidelines to clarify what features to use and avoid
 in C99.

 Will merge to 'next'.
 source: <20221010203800.2154698-1-gitster@pobox.com>


* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
 - symbolic-ref: teach "--[no-]recurse" option

 After checking out a "branch" that is a symbolic-ref that points at
 another branch, "git symbolic-ref HEAD" reports the underlying
 branch, not the symbolic-ref the user gave checkout as argument.
 The command learned the "--no-recurse" option to stop after
 dereferencing a symbolic-ref only once.

 Will merge to 'next'?
 source: <xmqqleprcn08.fsf@gitster.g>


* jc/use-of-uc-in-log-messages (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at 0b8c91d7e2)
 + SubmittingPatches: use usual capitalization in the log message body

 Clarify that "the sentence after <area>: prefix does not begin with
 a capital letter" rule applies only to the commit title.

 Will merge to 'master'.
 source: <xmqqedvjfqx1.fsf@gitster.g>


* ds/cmd-main-reorder (2022-10-08) 1 commit
 - git.c: improve code readability in cmd_main()

 Code clean-up.

 Will merge to 'next'?
 source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-10) 6 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 (this branch uses ed/fsmonitor-on-networked-macos.)

 Bundled fsmonitor for Linux using inotify API.

 Needs review.
 source: <pull.1352.git.git.1665326258.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
 - ci: add address and undefined sanitizer tasks

 Enable address and undefined sanitizer tasks at GitHub Actions CI.

 Will merge to and cook in 'next'??
 source: <xmqqpmezxl9p.fsf@gitster.g>


* rs/use-fspathncmp (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-11 at 11cbd1ce81)
 + dir: use fspathncmp() in pl_hashmap_cmp()

 Code clean-up.

 Will merge to 'master'.
 source: <cb6ffcdb-d719-7928-96b8-e46482dd141f@web.de>


* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
 - config.mak.dev: disable suggest braces error on old clang versions

 Work around older clang that warns against C99 zero initialization
 syntax for struct.

 Will merge to 'next'.
 source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* pw/remove-rebase-p-test (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-11 at 000bd34796)
 + t3435: remove redundant test case

 Remove outdated test.

 Will merge to 'master'.
 source: <pull.1379.git.1665395106351.gitgitgadget@gmail.com>


* ab/run-hook-api-cleanup (2022-10-05) 15 commits
 - run-command.c: don't copy "ungroup" to "struct parallel_processes"
 - run-command.c: don't copy *_fn to "struct parallel_processes"
 - run-command API: move *_tr2() users to "run_processes_parallel()"
 - run-command API: have run_process_parallel() take an "opts" struct
 - run-command API: make run_process_parallel{,_tr2}() thin wrappers
 - run-command API: add nascent "struct run_process_parallel_opts"
 - run-command.c: add an initializer for "struct parallel_processes"
 - run-command API: don't fall back on online_cpus()
 - run-command API: make "jobs" parameter an "unsigned int"
 - run-command API: have "run_processes_parallel{,_tr2}()" return void
 - run-command tests: use "return", not "exit"
 - run-command test helper: use "else if" pattern
 - run-command tests: test stdout of run_command_parallel()
 - submodule tests: reset "trace.out" between "grep" invocations
 - hook tests: fix redirection logic error in 96e7225b310

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.

 Needs review.
 source: <cover-00.15-00000000000-20220930T111343Z-avarab@gmail.com>


* rs/bisect-start-leakfix (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at 07f87534c1)
 + bisect--helper: plug strvec leak

 Code clean-up that results in plugging a leak.

 Will merge to 'master'.
 source: <1965b54b-122a-c965-f886-1a7dd6afbfb4@web.de>


* ab/unused-annotation (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-11 at c3099ad3ab)
 + git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

 Compilation fix for ancient compilers.

 Will merge to 'master'.
 source: <20221005221928.703750-1-asedeno@google.com>


* dd/document-runtime-prefix-better (2022-10-05) 1 commit
  (merged to 'next' on 2022-10-11 at 9f4a3bb7bd)
 + Makefile: clarify runtime relative gitexecdir

 Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 Will merge to 'master'.
 source: <20221006013205.15015-1-congdanhqx@gmail.com>


* jk/cleanup-callback-parameters (2022-10-06) 4 commits
  (merged to 'next' on 2022-10-11 at a3350d66b6)
 + attr: drop DEBUG_ATTR code
 + commit: avoid writing to global in option callback
 + multi-pack-index: avoid writing to global in option callback
 + test-submodule: inline resolve_relative_url() function

 Code clean-up.

 Will merge to 'master'.
 source: <Yz7Tjy7Rh8cXVxYQ@coredump.intra.peff.net>
 source: <Yz7UhYXvNl6+1GbZ@coredump.intra.peff.net>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* jc/tmp-objdir (2022-09-30) 1 commit
  (merged to 'next' on 2022-10-11 at 17d0843c43)
 + tmp-objdir: skip clean up when handling a signal

 The code to clean temporary object directories (used for
 quarantine) tried to remove them inside its signal handler, which
 was a no-no.

 Will merge to 'master'.
 source: <pull.1348.v4.git.git.1664570831583.gitgitgadget@gmail.com>


* jc/branch-description-unset (2022-09-30) 1 commit
  (merged to 'next' on 2022-10-11 at 3f81ee978b)
 + branch: do not fail a no-op --edit-desc

 "GIT_EDITOR=: git branch --edit-description" resulted in failure,
 which has been corrected.

 Will merge to 'master'.
 source: <xmqqmtagka8x.fsf@gitster.g>


* rj/branch-edit-desc-unborn (2022-10-07) 1 commit
  (merged to 'next' on 2022-10-11 at de3eccde7c)
 + branch: description for non-existent branch errors

 "git branch --edit-description" on an unborh branch misleadingly
 said that no such branch exists, which has been corrected.

 Will merge to 'master'.
 source: <8d627a2c-923f-181f-a03b-15f370c4dd0f@gmail.com>


* jt/promisor-remote-fetch-tweak (2022-10-05) 2 commits
  (merged to 'next' on 2022-10-11 at e93567bc8f)
 + promisor-remote: die upon failing fetch
 + promisor-remote: remove a return value

 Remove error detection from a function that fetches from promisor
 remotes, and make it die when such a fetch fails to bring all the
 requested objects, to give an early failure to various operations.

 Will merge to 'master'.
 source: <cover.1664917853.git.jonathantanmy@google.com>


* ed/fsmonitor-on-networked-macos (2022-10-10) 7 commits
  (merged to 'next' on 2022-10-11 at 32076d13b7)
 + fsmonitor: fix leak of warning message
 + fsmonitor: add documentation for allowRemote and socketDir options
 + fsmonitor: check for compatability before communicating with fsmonitor
 + fsmonitor: deal with synthetic firmlinks on macOS
 + fsmonitor: avoid socket location check if using hook
 + fsmonitor: relocate socket file if .git directory is remote
 + fsmonitor: refactor filesystem checks to common interface
 (this branch is used by ed/fsmonitor-inotify.)

 By default, use of fsmonitor on a repository on networked
 filesystem is disabled. Add knobs to make it workable on macOS.

 Will merge to 'master'.
 source: <pull.1326.v15.git.1664904751.gitgitgadget@gmail.com>


* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
 - branch: support for shortcuts like @{-1}, completed

 "git branch --edit-description @{-1}" is now a way to edit branch
 description of the branch you were on before switching to the
 current branch.

 Will merge to 'next'.
 source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>


* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
 - diff: support ^! for merges
 - revisions.txt: unspecify order of resolved parts of ^!
 - revision: use strtol_i() for exclude_parent

 "git diff rev^!" did not show combined diff to go to the rev from
 its parents.

 Needs review.
 source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>


* ab/doc-synopsis-and-cmd-usage (2022-10-05) 34 commits
 - tests: assert consistent whitespace in -h output
 - tests: start asserting that *.txt SYNOPSIS matches -h output
 - doc txt & -h consistency: make "worktree" consistent
 - worktree: define subcommand -h in terms of command -h
 - reflog doc: list real subcommands up-front
 - doc txt & -h consistency: make "commit" consistent
 - doc txt & -h consistency: make "diff-tree" consistent
 - doc txt & -h consistency: use "[<label>...]" for "zero or more"
 - doc txt & -h consistency: make "annotate" consistent
 - doc txt & -h consistency: make "stash" consistent
 - doc txt & -h consistency: add missing options
 - doc txt & -h consistency: use "git foo" form, not "git-foo"
 - doc txt & -h consistency: make "bundle" consistent
 - doc txt & -h consistency: make "read-tree" consistent
 - doc txt & -h consistency: make "rerere" consistent
 - doc txt & -h consistency: add missing options and labels
 - doc txt & -h consistency: make output order consistent
 - doc txt & -h consistency: add or fix optional "--" syntax
 - doc txt & -h consistency: fix mismatching labels
 - doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 - doc txt & -h consistency: use "<options>", not "<options>..."
 - stash doc SYNOPSIS & -h: correct padding around "[]()"
 - doc txt & -h consistency: correct padding around "[]()"
 - doc txt & -h consistency: balance unbalanced "[" and "]"
 - doc txt & -h consistency: add "-z" to cat-file "-h"
 - doc txt & -h consistency: fix incorrect alternates syntax
 - doc txt & -h consistency: word-wrap
 - built-ins: consistently add "\n" between "usage" and options
 - doc SYNOPSIS: consistently use ' for commands
 - doc SYNOPSIS: don't use ' for subcommands
 - bundle: define subcommand -h in terms of command -h
 - builtin/bundle.c: indent with tabs
 - CodingGuidelines: update and clarify command-line conventions
 - tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.

 Needs review.
 source: <cover-v4-00.34-00000000000-20221004T132211Z-avarab@gmail.com>


* ab/coccicheck-incremental (2022-08-31) 9 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Needs review.
 source: <cover-v2-0.9-00000000000-20220831T205130Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
 - bundle-uri: suppress stderr from remote-https
 - bundle-uri: quiet failed unbundlings
 - bundle: add flags to verify_bundle()
 - bundle-uri: fetch a list of bundles
 - bundle: properly clear all revision flags
 - bundle-uri: limit recursion depth for bundle lists
 - bundle-uri: parse bundle list in config format
 - bundle-uri: unit test "key=value" parsing
 - bundle-uri: create "key=value" line parsing
 - bundle-uri: create base key-value pair parsing
 - bundle-uri: create bundle_list struct and helpers
 - bundle-uri: use plain string in find_temp_filename()
 - Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.

 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-08-30) 17 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: make `state` optional
 - bisect--helper: calling `bisect_state()` without an argument is a bug
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection
 - bisect--helper: migrate to OPT_SUBCOMMAND()
 - bisect--helper: make the order consistently `argc, argv`
 - bisect--helper: make `terms` an explicit singleton
 - bisect--helper: simplify exit code computation
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jan 2022, #06; Fri, 21)
@ 2022-01-22  5:16  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-01-22  5:16 UTC (permalink / raw)
  To: git

Possibly a few more last-minute fixes may want to be on 'master'
before the final:

 - ab/checkout-branch-info-leakfix is to stop "git checkout -f
   <ref>" from triggering BUG() when <ref> is a symbolic ref that
   points at a strange place.

 - en/merge-ort-restart-optim-fix is to avoid triggering assertion
   failure when merge.renameLimit is set to a value that is too low.

 - js/test-unset-trace2-parents is to help those developers who run
   "make test" inside a git that is being traced via GIT_TRACE2
   mechanism.

 - ab/auto-detect-zlib-compress2 is to automate use of replacement
   uncompress2() implementation on platforms with zlib that is too
   old.

 - pb/pull-rebase-autostash-fix is to fix the remaining case where
   "git pull --rebase" that reused the merge machinery when the
   update can be fast-forwarded did not behave well.

but we can probably do without many of them.

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',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful").  Do not read too much into a topic being in (or not in)
'seen'.  The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

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/

--------------------------------------------------
[New Topics]

* ab/auto-detect-zlib-compress2 (2022-01-21) 1 commit
 - cache.h: auto-detect if zlib has uncompress2()

 Notice older zlib to enable our replacement uncompress2()
 automatically.

 Will merge to 'next'.
 source: <patch-v3-1.1-e9cb8763fd4-20220120T011414Z-avarab@gmail.com>


* ab/checkout-branch-info-leakfix (2022-01-21) 1 commit
 - checkout: avoid BUG() when hitting a broken repository

 We added an unrelated sanity checking that leads to a BUG() while
 plugging a leak, which triggered in a repository with symrefs in
 the local branch namespace that point at a ref outside.  Partially
 revert the change to avoid triggering the BUG().

 Will merge to 'next' and then to 'master'?
 source: <xmqqbl04d1s9.fsf_-_@gitster.g>


* en/plug-leaks-in-merge (2022-01-21) 2 commits
 - merge: fix memory leaks in cmd_merge()
 - merge-ort: fix memory leak in merge_ort_internal()

 Leakfix.

 Will merge to 'next'.
 source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>


* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
 - clone, submodule: pass partial clone filters to submodules

 "git clone --filter=... --recurse-submodules" only makes the
 top-level a partial clone, while submodules are fully cloned.  This
 behaviour is changed to pass the same filter down to the submodules.

 source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>


* js/sparse-vs-split-index (2022-01-21) 3 commits
 - split-index: it really is incompatible with the sparse index
 - t1091: disable split index
 - sparse-index: sparse index is disallowed when split index is active

 Mark in various places in the code that the sparse index and the
 split index features are mutually incompatible.

 source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>


* js/test-unset-trace2-parents (2022-01-20) 1 commit
  (merged to 'next' on 2022-01-20 at ebb085e3e4)
 + test-lib: unset trace2 parent envvars

 Avoid tests that are run under GIT_TRACE2 set from failing
 unnecessarily.

 Will cook in 'next'.
 source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>


* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
 - sparse-checkout: create leading directory

 "git sparse-checkout init" failed to write into $GIT_DIR/info
 directory when the repository was created without one, which has
 been corrected to auto-create it.

 Will merge to 'next'.
 source: <20220121174441.3991963-1-jonathantanmy@google.com>


* rs/parse-options-lithelp-help (2022-01-20) 1 commit
 - parse-options: document bracketing of argh

 Comment update.

 source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>

--------------------------------------------------
[Stalled]

* je/http-better-error-output (2021-12-03) 1 commit
 . http-backend: give a hint that web browser access is not supported

 When the http-backend program, which is the server-side component
 for the smart HTTP transport, sends a "404 Not found" error, we
 deliberately did not say anything to the requesting client.  We now
 send a message back to the browser to tell the user that they do
 not want to visit the URL via their browser, instead of a totally
 blank page.

 Expecting a reroll.
 Breaks its self tests.
 cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
 source: <20211202102855.23907-1-jengelh@inai.de>


* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
 - fixup! editor: allow for saving/restoring terminal state
 - editor: allow for saving/restoring terminal state
 - terminal: teach save_term to fail when not foreground

 Some editors are reported to leave the terminal in funny state
 after they exit on Windows.  Work it around by saving and restoring
 the terminal state when needed.

 Expecting a reroll.
 cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
 source: <20211202035446.1154-1-carenas@gmail.com>


* ar/submodule-update (2021-10-13) 9 commits
 . submodule--helper: rename helper functions
 . submodule--helper: remove unused helpers
 . submodule: move core cmd_update() logic to C
 . submodule--helper: run update using child process struct
 . submodule--helper: allow setting superprefix for init_submodule()
 . submodule--helper: refactor get_submodule_displaypath()
 . submodule--helper: rename helpers for update-clone
 . submodule--helper: get remote names from any repository
 . submodule--helper: split up ensure_core_worktree()

 Rewrite of "git submodule update" in C.

 Expecting a reroll?
 cf. <YWiXL+plA7GHfuVv@google.com>
 source: <20211013051805.45662-10-raykar.ath@gmail.com>

--------------------------------------------------
[Cooking]

* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 84da10b057)
 + merge-ort: avoid assuming all renames detected

 The merge-ort misbehaved when merge.renameLimit configuration is
 set too low and failed to find all renames.

 Will cook in 'next'.
 source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>


* jh/p4-various-fixups (2022-01-16) 23 commits
 . git-p4: seperate multiple statements onto seperate lines
 . git-p4: move inline comments to line above
 . git-p4: only seperate code blocks by a single empty line
 . git-p4: compare to singletons with "is" and "is not"
 . git-p4: normalize indentation of lines in conditionals
 . git-p4: ensure there is a single space around all operators
 . git-p4: ensure every comment has a single #
 . git-p4: remove spaces between dictionary keys and colons
 . git-p4: remove redundant backslash-continuations inside brackets
 . git-p4: remove extraneous spaces before function arguments
 . git-p4: place a single space after every comma
 . git-p4: removed brackets when assigning multiple return values
 . git-p4: remove spaces around default arguments
 . git-p4: remove padding from lists, tuples and function arguments
 . git-p4: sort and de-duplcate pylint disable list
 . git-p4: remove commented code
 . git-p4: convert descriptive class and function comments into docstrings
 . git-p4: improve consistency of docstring formatting
 . git-p4: indent with 4-spaces
 . git-p4: remove unneeded semicolons from statements
 . git-p4: add blank lines between functions and class definitions
 . Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
 . Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
 (this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)

 Various cleanups to "git p4".

 Breaks its own test suite.
 source: <20220116160550.514637-1-jholdsworth@nvidia.com>


* po/readme-mention-contributor-hints (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 7e14690eb9)
 + README.md: add CodingGuidelines and a link for Translators

 Doc update.

 Will cook in 'next'.
 source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>


* tl/doc-cli-options-first (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 9ec14cfe73)
 + git-cli.txt: clarify "options first and then args"

 We explain that revs come first before the pathspec among command
 line arguments, but did not spell out that dashed options come
 before other args, which has been corrected.

 Will cook in 'next'.
 source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>


* rs/bisect-executable-not-found (2022-01-19) 4 commits
 - bisect--helper: double-check run command on exit code 126 and 127
 - bisect: document run behavior with exit codes 126 and 127
 - bisect--helper: release strbuf and strvec on run error
 - bisect--helper: report actual bisect_state() argument on error

 source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>


* ds/sparse-checkout-requires-per-worktree-config (2022-01-14) 6 commits
 . worktree: copy sparse-checkout patterns and config on add
 . sparse-checkout: use repo_config_set_worktree_gently()
 . config: add repo_config_set_worktree_gently()
 . worktree: add 'init-worktree-config' subcommand
 . config: make some helpers repo-aware
 . setup: use a repository when upgrading format

 "git sparse-checkout" wants to work with per-worktree configration,
 but did not work well in a worktree attached to a bare repository.

 Expecting an update.
 cf. <1db0f601-4769-15c0-cd58-ecddfa1fc9d5@gmail.com>
 Introduces new leaks.
 cf. https://github.com/git/git/runs/4823667255?check_suite_focus=true
 source: <pull.1101.v3.git.1640727143.gitgitgadget@gmail.com>


* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
  (merged to 'next' on 2022-01-19 at ea57b2c9a6)
 + builtin add -p: fix hunk splitting
 + t3701: clean up hunk splitting tests

 "git add -p" rewritten in C regressed hunk splitting in some cases,
 which has been corrected.

 Will cook in 'next'.
 source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>


* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
  (merged to 'next' on 2022-01-20 at e7616428eb)
 + fetch: help translators by reusing the same message template
  (merged to 'next' on 2022-01-19 at 0f15147cfa)
 + fetch --negotiate-only: do not update submodules
 + fetch: skip tasks related to fetching objects
 + fetch: use goto cleanup in cmd_fetch()

 "git fetch --negotiate-only" is an internal command used by "git
 push" to figure out which part of our history is missing from the
 other side.  It should never recurse into submodules even when
 fetch.recursesubmodules configuration variable is set, nor it
 should trigger "gc".  The code has been tightened up to ensure it
 only does common ancestry discovery and nothing else.

 Will cook in 'next'.
 source: <20220119000056.58503-1-chooglen@google.com>


* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 49d529bfd7)
 + git-p4: fix instantiation of CalledProcessError
 (this branch is used by jh/p4-various-fixups.)

 Will cook in 'next'.
 source: <20220106214156.90967-1-jholdsworth@nvidia.com>


* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
  (merged to 'next' on 2022-01-10 at 54b36b4e66)
 + git-p4: don't print shell commands as python lists
 + git-p4: pass command arguments as lists instead of using shell
 + git-p4: don't select shell mode using the type of the command argument
 (this branch is used by jh/p4-various-fixups.)

 Will cook in 'next'.
 source: <20220106214035.90725-1-jholdsworth@nvidia.com>


* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
  (merged to 'next' on 2022-01-14 at 83a388a7e2)
 + pull --rebase: honor rebase.autostash when fast-forwarding

 "git pull --rebase" ignored the rebase.autostash configuration
 variable when the remote history is a descendant of our history,
 which has been corrected.

 Will cook in 'next'.
 source: <xmqqr19aayxp.fsf@gitster.g>


* rs/grep-expr-cleanup (2022-01-06) 4 commits
  (merged to 'next' on 2022-01-10 at b70a3bb0fa)
 + grep: use grep_and_expr() in compile_pattern_and()
 + grep: extract grep_binexp() from grep_or_expr()
 + grep: use grep_not_expr() in compile_pattern_not()
 + grep: use grep_or_expr() in compile_pattern_or()

 Code clean-up.

 Will cook in 'next'.
 source: <cover.1641498525.git.me@ttaylorr.com>


* fs/ssh-signing-crlf (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-19 at 76b86faafb)
 + gpg-interface: trim CR from ssh-keygen

 The code path that verifies signatures made with ssh were made to
 work better on a system with CRLF line endings.

 Will cook in 'next'.
 source: <20220107090735.580225-1-fs@gigacodes.de>


* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
  (merged to 'next' on 2022-01-10 at 329fd6e09a)
 + stable-qsort: avoid using potentially unaligned access
 + compat/qsort_s.c: avoid using potentially unaligned access

 Fix a hand-rolled alloca() imitation that may have violated
 alignment requirement of data being sorted in compatibility
 implementation of qsort_s() and stable qsort().

 Will cook in 'next'.
 source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
 source: <xmqqzgo76xpj.fsf@gitster.g>


* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
 - refs: skip hooks when deleting uncovered packed refs
 - refs: do not execute reference-transaction hook on packing refs
 - refs: demonstrate excessive execution of the reference-transaction hook
 - refs: allow skipping the reference-transaction hook
 - refs: allow passing flags when beginning transactions
 - refs: extract packed_refs_delete_refs() to allow control of transaction

 Because a deletion of ref would need to remove it from both the
 loose ref store and the packed ref store, a delete-ref operation
 that logically removes one ref may end up invoking ref-transaction
 hook twice, which has been corrected.

 Introduces new leaks when merged to 'seen'.
 source: <cover.1642406989.git.ps@pks.im>


* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-10 at 32497a67d5)
 + apply: use strsets to track symlinks

 "git apply" (ab)used the util pointer of the string-list to keep
 track of how each symbolic link needs to be handled, which has been
 simplified by using strset.

 Will cook in 'next'.
 source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>


* ld/sparse-index-bash-completion (2022-01-10) 3 commits
 - sparse-checkout: limit tab completion to a single level
 - sparse-checkout: custom tab completion
 - sparse-checkout: custom tab completion tests

 The command line completion (in contrib/) learns to complete
 arguments give to "git sparse-checkout" command.
 source: <pull.1108.v3.git.1641841193.gitgitgadget@gmail.com>


* bc/clarify-eol-attr (2022-01-12) 2 commits
 - docs: correct documentation about eol attribute
 - t0027: add tests for eol without text in .gitattributes

 Doc and test update around the eol attribute.
 source: <20220111021507.531736-1-sandals@crustytoothpaste.net>


* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
 - git-rev-list: add --exclude-first-parent-only flag

 "git log" and friends learned an option --exclude-first-parent-only
 to propagate UNINTERESTING bit down only along the first-parent
 chain, just like --first-parent option shows commits that lack the
 UNINTERESTING bit only along the first-parent chain.
 source: <20220111213941.30129-1-jerry@skydio.com>


* en/present-despite-skipped (2022-01-14) 6 commits
 - Accelerate clear_skip_worktree_from_present_files() by caching
 - Update documentation related to sparsity and the skip-worktree bit
 - repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
 - unpack-trees: fix accidental loss of user changes
 - t1011: add testcase demonstrating accidental loss of user modifications
 - Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
 (this branch uses vd/sparse-clean-etc.)

 In sparse-checkouts, files mis-marked as missing from the working tree
 could lead to later problems.  Such files were hard to discover, and
 harder to correct.  Automatically detecting and correcting the marking
 of such files has been added to avoid these problems.
 source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>


* bc/csprng-mktemps (2022-01-17) 2 commits
 - wrapper: use a CSPRNG to generate random file names
 - wrapper: add a helper to generate numbers from a CSPRNG

 Pick a better random number generator and use it when we prepare
 temporary filenames.

 Are we solving the right problem?
 cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
 source: <20220117215617.843190-1-sandals@crustytoothpaste.net>


* jc/reflog-parse-options (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-12 at 1659e49c4b)
 + builtin/reflog.c: use parse-options api for expire, delete subcommands
 + Merge branch 'ab/reflog-prep' into jc/reflog-parse-options

 Use the parse-options API in "git reflog" command.

 Will cook in 'next'.
 source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>


* vd/sparse-clean-etc (2022-01-13) 9 commits
 - update-index: reduce scope of index expansion in do_reupdate
 - update-index: integrate with sparse index
 - update-index: add tests for sparse-checkout compatibility
 - checkout-index: integrate with sparse index
 - checkout-index: add --ignore-skip-worktree-bits option
 - checkout-index: expand sparse checkout compatibility tests
 - clean: integrate with sparse index
 - reset: reorder wildcard pathspec conditions
 - reset: fix validation in sparse index test
 (this branch is used by en/present-despite-skipped.)

 "git update-index", "git checkout-index", and "git clean" are
 taught to work better with the sparse checkout feature.
 source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>


* ms/update-index-racy (2022-01-07) 4 commits
  (merged to 'next' on 2022-01-14 at 705a33f63b)
 + update-index: refresh should rewrite index in case of racy timestamps
 + t7508: add tests capturing racy timestamp handling
 + t7508: fix bogus mtime verification
 + test-lib: introduce API for verifying file mtime

 "git update-index --refresh" has been taught to deal better with
 racy timestamps (just like "git status" already does).

 Will cook in 'next'.
 source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>


* jc/find-header (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 8a13b4f0b3)
 + receive-pack.c: consolidate find header logic

 Code clean-up.

 Will cook in 'next'.
 source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>


* jc/name-rev-stdin (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-19 at a58e05fabe)
 + name-rev.c: use strbuf_getline instead of limited size buffer
 + name-rev: deprecate --stdin in favor of --annotate-stdin

 "git name-rev --stdin" does not behave like usual "--stdin" at
 all.  Start the process of renaming it to "--annotate-stdin".

 Will cook in 'next'.
 source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>


* en/remerge-diff (2022-01-21) 11 commits
 - diff-merges: avoid history simplifications when diffing merges
 - merge-ort: mark conflict/warning messages from inner merges as omittable
 - show, log: include conflict/warning messages in --remerge-diff headers
 - diff: add ability to insert additional headers for paths
 - merge-ort: format messages slightly different for use in headers
 - merge-ort: mark a few more conflict messages as omittable
 - merge-ort: capture and print ll-merge warnings in our preferred fashion
 - ll-merge: make callers responsible for showing warnings
 - log: clean unneeded objects during `log --remerge-diff`
 - show, log: provide a --remerge-diff capability
 - Merge branch 'ns/tmp-objdir' into en/remerge-diff

 "git log --remerge-diff" shows the difference from mechanical merge
 result and the merge result that is actually recorded.

 Will merge to 'next'?
 source: <pull.1103.v4.git.1642792341.gitgitgadget@gmail.com>


* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
 - fixup! fetch-pack: parameterize message containing 'ready' keyword
 - fetch-pack: parameterize message containing 'ready' keyword

 L10n support for a few error messages.

 Expecting an ack for fixup.
 source: <20211222075805.19027-1-bagasdotme@gmail.com>


* gc/branch-recurse-submodules (2022-01-10) 6 commits
 - branch: add --recurse-submodules option for branch creation
 - builtin/branch: clean up action-picking logic in cmd_branch()
 - branch: add a dry_run parameter to create_branch()
 - branch: make create_branch() always create a branch
 - branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
 - Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

 "git branch" learned the "--recurse-submodules" option.

 Expecting a reroll.
 cf. <kl6l7db6kvp2.fsf@chooglen-macbookpro.roam.corp.google.com>
 source: <20211220233459.45739-1-chooglen@google.com>


* hn/reftable-coverity-fixes (2022-01-20) 17 commits
 - reftable: add print functions to the record types
 - reftable: make reftable_record a tagged union
 - reftable: remove outdated file reftable.c
 - reftable: implement record equality generically
 - reftable: make reftable-record.h function signatures const correct
 - reftable: handle null refnames in reftable_ref_record_equal
 - reftable: drop stray printf in readwrite_test
 - reftable: order unittests by complexity
 - reftable: all xxx_free() functions accept NULL arguments
 - reftable: fix resource warning
 - reftable: ignore remove() return value in stack_test.c
 - reftable: check reftable_stack_auto_compact() return value
 - reftable: fix resource leak blocksource.c
 - reftable: fix resource leak in block.c error path
 - reftable: fix OOB stack write in print functions
 - Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
 - Merge branch 'hn/reftable' into hn/reftable-coverity-fixes

 Problems identified by Coverity in the reftable code have been
 corrected.

 Will merge to 'next'.
 source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>


* tb/midx-bitmap-corruption-fix (2022-01-04) 9 commits
 - pack-bitmap.c: gracefully fallback after opening pack/MIDX
 - midx: read `RIDX` chunk when present
 - t/lib-bitmap.sh: parameterize tests over reverse index source
 - t5326: move tests to t/lib-bitmap.sh
 - t5326: extract `test_rev_exists`
 - t5326: drop unnecessary setup
 - pack-revindex.c: instrument loading on-disk reverse index
 - midx.c: make changing the preferred pack safe
 - t5326: demonstrate bitmap corruption after permutation

 A bug that made multi-pack bitmap and the object order out-of-sync
 (hence the .midx data gets corrupted) has been fixed.

 Waiting for a hopefully final review.
 cf. <Ydceeo33Yt4N%2FbrN@nand.local>
 source: <cover.1641320129.git.me@ttaylorr.com>


* pw/fix-some-issues-in-reset-head (2021-12-08) 14 commits
 - rebase -m: don't fork git checkout
 - rebase --apply: set ORIG_HEAD correctly
 - rebase --apply: fix reflog
 - reset_head(): take struct rebase_head_opts
 - rebase: cleanup reset_head() calls
 - reset_head(): make default_reflog_action optional
 - reset_head(): factor out ref updates
 - create_autostash(): remove unneeded parameter
 - reset_head(): remove action parameter
 - rebase --apply: don't run post-checkout hook if there is an error
 - rebase: do not remove untracked files on checkout
 - rebase: pass correct arguments to post-checkout hook
 - t5403: refactor rebase post-checkout hook tests
 - rebase: factor out checkout for up to date branch

 Fix "some issues" in a helper function reset_head().

 Expecting a reroll.
 cf. <xmqqk0gdskkh.fsf@gitster.g>
 cf. <xmqqwnkdr3xb.fsf@gitster.g>
 cf. <xmqqpmq5r3j9.fsf@gitster.g>
 cf. <xmqqczm5r34h.fsf@gitster.g>
 cf. <CABPp-BEHW4VLG18twcM_8iOco1jZ2iuGT+KN8aS+-sAAnBhTnw@mail.gmail.com>
 source: <pull.1049.v2.git.1638975481.gitgitgadget@gmail.com>


* ab/cat-file (2022-01-12) 12 commits
  (merged to 'next' on 2022-01-12 at ee4d43041d)
 + cat-file: s/_/-/ in typo'd usage_msg_optf() message
 + cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
  (merged to 'next' on 2022-01-05 at e145efa605)
 + cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
 + object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
 + cat-file: correct and improve usage information
 + cat-file: fix remaining usage bugs
 + cat-file: make --batch-all-objects a CMDMODE
 + cat-file: move "usage" variable to cmd_cat_file()
 + cat-file docs: fix SYNOPSIS and "-h" output
 + parse-options API: add a usage_msg_optf()
 + cat-file tests: test messaging on bad objects/paths
 + cat-file tests: test bad usage

 Assorted updates to "git cat-file", especially "-h".

 Will cook in 'next'.
 source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
 source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>


* ab/grep-patterntype (2022-01-18) 10 commits
 - grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED
 - grep: simplify config parsing and option parsing
 - grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
 - grep.h: make "grep_opt.pattern_type_option" use its enum
 - grep API: call grep_config() after grep_init()
 - grep.c: don't pass along NULL callback value
 - built-ins: trust the "prefix" from run_builtin()
 - grep tests: add missing "grep.patternType" config tests
 - log tests: check if grep_config() is called by "log"-like cmds
 - grep.h: remove unused "regex_t regexp" from grep_opt

 Some code clean-up in the "git grep" machinery.

 Looking good, except for the last two steps.
 source: <cover-v8-00.10-00000000000-20220118T155211Z-avarab@gmail.com>


* js/use-builtin-add-i (2021-12-01) 2 commits
 - add -i: default to the built-in implementation
 - t2016: require the PERL prereq only when necessary

 "git add -i" was rewritten in C some time ago and has been in
 testing; the reimplementation is now exposed to general public by
 default.

 On hold.
 There are known breakages on macOS.
 cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
 source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>


* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
  (merged to 'next' on 2022-01-19 at 3c2df266eb)
 + config: include file if remote URL matches a glob
 + config: make git_config_include() static

 The conditional inclusion mechanism of configuration files using
 "[includeIf <condition>]" learns to base its decision on the
 URL of the remote repository the repository interacts with.

 Will cook in 'next'.
 source: <cover.1642527965.git.jonathantanmy@google.com>


* ab/ambiguous-object-name (2022-01-13) 6 commits
 - object-name: re-use "struct strbuf" in show_ambiguous_object()
 - object-name: iterate ambiguous objects before showing header
 - object-name: show date for ambiguous tag objects
 - object-name: make ambiguous object output translatable
 - object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
 - object-name tests: add tests for ambiguous object blind spots

 Error output given in response to an ambiguous object name has been
 improved.
 source: <cover-v7-0.6-00000000000-20220111T130811Z-avarab@gmail.com>


* tl/ls-tree-oid-only (2022-01-13) 9 commits
 - ls-tree.c: introduce "--format" option
 - cocci: allow padding with `strbuf_addf()`
 - ls-tree.c: introduce struct "show_tree_data"
 - ls-tree.c: support --object-only option for "git-ls-tree"
 - ls-tree: optimize naming and handling of "return" in show_tree()
 - ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
 - ls-tree: use "enum object_type", not {blob,tree,commit}_type
 - ls-tree: add missing braces to "else" arms
 - ls-tree: remove commented-out code

 "git ls-tree" learns "--oid-only" option, similar to "--name-only",
 and more generalized "--format" option.
 source: <cover.1641978175.git.dyroneteng@gmail.com>


* ab/config-based-hooks-2 (2022-01-07) 17 commits
  (merged to 'next' on 2022-01-19 at 594b6da22c)
 + run-command: remove old run_hook_{le,ve}() hook API
 + receive-pack: convert push-to-checkout hook to hook.h
 + read-cache: convert post-index-change to use hook.h
 + commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
 + git-p4: use 'git hook' to run hooks
 + send-email: use 'git hook run' for 'sendemail-validate'
 + git hook run: add an --ignore-missing flag
 + hooks: convert worktree 'post-checkout' hook to hook library
 + hooks: convert non-worktree 'post-checkout' hook to hook library
 + merge: convert post-merge to use hook.h
 + am: convert applypatch-msg to use hook.h
 + rebase: convert pre-rebase to use hook.h
 + hook API: add a run_hooks_l() wrapper
 + am: convert {pre,post}-applypatch to use hook.h
 + gc: use hook library for pre-auto-gc hook
 + hook API: add a run_hooks() wrapper
 + hook: add 'run' subcommand

 More "config-based hooks".

 Will cook in 'next'.
 source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>


* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
 - fixup! t7527: create test for fsmonitor--daemon
 - fixup! t/perf/p7519: speed up test on Windows
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - fsmonitor: force update index after large responses
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon: periodically truncate list of modified files
 - t/perf/p7519: add fsmonitor--daemon test cases
 - t/perf/p7519: speed up test on Windows
 - t/helper/test-chmtime: skip directories on Windows
 - t/perf: avoid copying builtin fsmonitor files into test repo
 - t7527: create test for fsmonitor--daemon
 - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
 - help: include fsmonitor--daemon feature flag in version info
 - fsmonitor--daemon: implement handle_client callback
 - compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 - compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
 - compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement 'start' command
 - fsmonitor--daemon: implement 'run' command
 - compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 - compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement 'stop' and 'status' commands
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: document builtin fsmonitor
 - fsmonitor: use IPC to query the builtin FSMonitor daemon
 - fsmonitor: config settings are repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - fsmonitor: enhance existing comments

 Built-in fsmonitor (part 2).

 Expecting a reroll.
 Seems that the discussion stalled.
 cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
 source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>


* es/superproject-aware-submodules (2021-11-18) 5 commits
 - submodule: use config to find superproject worktree
 - submodule: record superproject gitdir during 'update'
 - submodule: record superproject gitdir during absorbgitdirs
 - introduce submodule.superprojectGitDir record
 - t7400-submodule-basic: modernize inspect() helper

 A configuration variable in a submodule points at the location of
 the superproject it is bound to (RFC).

 Expecting a reroll.
 cf. <20211117234300.2598132-1-jonathantanmy@google.com>
 source: <20211117005701.371808-1-emilyshaffer@google.com>


* ab/only-single-progress-at-once (2022-01-07) 7 commits
 - *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
 - pack-bitmap-write.c: don't return without stop_progress()
 - progress.c: add temporary variable from progress struct
 - progress.c tests: test some invalid usage
 - progress.c tests: make start/stop commands on stdin
 - progress.c test helper: add missing braces
 - leak tests: fix a memory leak in "test-progress" helper

 Further tweaks on progress API.

 Getting there.
 source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* Re: [PATCH] merge: indicate remote tracking branches in merge message
  @ 2009-08-09 10:00  3%       ` Jeff King
  0 siblings, 0 replies; 200+ results
From: Jeff King @ 2009-08-09 10:00 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, Aug 09, 2009 at 05:14:43AM -0400, Jeff King wrote:

> In t4202, we have a branch name and a tag name that are the same
> (octopus-a), and we "git merge octopus-a". This actually merges the tag,
> but because the branch name existed, we write "Merge branch 'octopus-a'"
> in the log, which is not true. With your patch, it does the right thing
> and says "Merge commit 'octopus-a'".
> 
> The simple thing is to just update the "expect" text. Though the current
> behavior does show off the ability to collape the two branches and say
> 
>   Merge branches 'octopus-a' and 'octopus-b'
> 
> instead of
> 
>   Merge commit 'octopus-a'; commit 'octopus-b'

Thinking about it for a few seconds, it's silly to try to test something
that happens to occur in a totally unrelated test. The right thing to do
is to write actual tests for this area, fix the bug, and then add the
new feature. So how about this series:

  [1/3] add tests for merge message headings
  [2/3] merge: fix incorrect merge message for ambiguous tag/branch
  [3/3] merge: indicate remote tracking branches in merge message

-Peff

^ permalink raw reply	[relevance 3%]

* [PATCH v2 0/9] Fix merge issues with index not matching HEAD
  2018-06-03  6:58  3% [RFC PATCH 0/7] merge requirement: index matches head Elijah Newren
@ 2018-07-01  1:24  3% ` Elijah Newren
    1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2018-07-01  1:24 UTC (permalink / raw)
  To: git; +Cc: gitster, pclouds, Elijah Newren

This series exists to fix problems for merges when the index doesn't
match HEAD.  We've had an almost comical number of these types of
problems in our history, as thoroughly documented in the commit
message for the final patch.

v1 can be found here:
  https://public-inbox.org/git/20180603065810.23841-1-newren@gmail.com/

Changes since v1 (full branch-diff below):
  * Minor wording tweaks to a few commit messages (fixing typos,
    rewrapping, etc.)
    
  * Move index_has_changes() to read-cache.c, and (partially) lift the
    assumption that we're always operating on the_index -- as
    suggested by Junio.  A full lift of the assumption would conflict
    with and duplicate work Duy is doing, so there is a simple BUG()
    check in place for now.
    
  * Add two new patches to the _beginning_ of the series, to implement
    the last point.  Reason: Since this series will probably conflict
    slightly with Duy's not-yet-submitted work to remove assumption of
    the_index throughout the codebase, I figured this would make it
    the clearest and easiest for him to fix up small conflicts.
    (Alternatively, if folks would rather that my series wait for his
    to go through, it should make it much easier for me to rebase my
    series on top of his work by having these placeholders at the
    beginning.)

Questions I'm particularly interested in reviewers addressing:

  * Do my two patches at the beginning make sense?  In particular, is
    the BUG() a reasonable way to limit conflicts with Duy for now,
    while he works on more thoroughly stamping out assumed the_index
    usage?

  * Does the series flow well?  I was curious if I should reorder the
    series when I submitted v1, but no one commented on that question.

  * The second to last patch points out that current git incorrectly
    implements what would be a safe exception to the index matching
    HEAD before a merge rule.  Would it be more desireable to
    correctly implement the safe exception (even though it would be
    somewhat difficult), rather than just disallow the exception for
    merge-recursive as I did in that patch?

  * Given the large number of problems we've had in this area -- as
    documented in the final commit message -- should we be more
    defensive and disallow all merge strategies from having even
    so-called safe exceptions?  We could do this in a single place,
    which would have prevented all the current and most if not all
    historical problems in this area, by just enforcing that the index
    match HEAD in builtin/merge.c.  (See the second to last paragraph
    of the last commit message for more details.)

Elijah Newren (9):
  read-cache.c: move index_has_changes() from merge.c
  index_has_changes(): avoid assuming operating on the_index
  t6044: verify that merges expected to abort actually abort
  t6044: add a testcase for index matching head, when head doesn't match
    HEAD
  merge-recursive: make sure when we say we abort that we actually abort
  merge-recursive: fix assumption that head tree being merged is HEAD
  t6044: add more testcases with staged changes before a merge is
    invoked
  merge-recursive: enforce rule that index matches head before merging
  merge: fix misleading pre-merge check documentation

 Documentation/git-merge.txt              |   6 +-
 builtin/am.c                             |   7 +-
 cache.h                                  |  16 +--
 merge-recursive.c                        |  14 +--
 merge.c                                  |  31 ------
 read-cache.c                             |  40 ++++++++
 t/t6044-merge-unrelated-index-changes.sh |  67 +++++++++++--
 t/t7504-commit-msg-hook.sh               |   4 +-
 t/t7611-merge-abort.sh                   | 118 -----------------------
 9 files changed, 124 insertions(+), 179 deletions(-)

-:  --------- > 1:  ff2501ac4 read-cache.c: move index_has_changes() from merge.c
-:  --------- > 2:  5813ca722 index_has_changes(): avoid assuming operating on the_index
1:  730e5e483 = 3:  ca11503bd t6044: verify that merges expected to abort actually abort
2:  36f7cc0a3 = 4:  386390899 t6044: add a testcase for index matching head, when head doesn't match HEAD
3:  70899afa3 ! 5:  8a900d2ee merge-recursive: make sure when we say we abort that we actually abort
    @@ -19,7 +19,7 @@
     @@
      		struct strbuf sb = STRBUF_INIT;
      
    - 		if (!o->call_depth && index_has_changes(&sb)) {
    + 		if (!o->call_depth && index_has_changes(&the_index, &sb)) {
     -			err(o, _("Dirty index: cannot merge (dirty: %s)"),
     +			err(o, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
      			    sb.buf);
4:  eab2f36a4 ! 6:  2564b29e9 merge-recursive: fix assumption that head tree being merged is HEAD
    @@ -6,10 +6,9 @@
         base, head, and remote.  Since the user is allowed to specify head, we can
         not necesarily assume that head == HEAD.
     
    -    We modify index_has_changes() to take an extra argument specifying the
    -    tree to compare the index to.  If NULL, it will compare to HEAD.  We then
    -    use this from merge-recursive to make sure we compare to the
    -    user-specified head.
    +    Modify index_has_changes() to take an extra argument specifying the tree
    +    to compare against.  If NULL, it will compare to HEAD.  We then use this
    +    from merge-recursive to make sure we compare to the user-specified head.
     
         Signed-off-by: Elijah Newren <newren@gmail.com>
     
    @@ -20,8 +19,8 @@
      
      	refresh_and_write_cache();
      
    --	if (index_has_changes(&sb)) {
    -+	if (index_has_changes(&sb, NULL)) {
    +-	if (index_has_changes(&the_index, &sb)) {
    ++	if (index_has_changes(&the_index, NULL, &sb)) {
      		write_state_bool(state, "dirtyindex", 1);
      		die(_("Dirty index: cannot apply patches (dirty: %s)"), sb.buf);
      	}
    @@ -29,8 +28,9 @@
      			 * Applying the patch to an earlier tree and merging
      			 * the result may have produced the same tree as ours.
      			 */
    --			if (!apply_status && !index_has_changes(NULL)) {
    -+			if (!apply_status && !index_has_changes(NULL, NULL)) {
    +-			if (!apply_status && !index_has_changes(&the_index, NULL)) {
    ++			if (!apply_status &&
    ++			    !index_has_changes(&the_index, NULL, NULL)) {
      				say(state, stdout, _("No changes -- Patch already applied."));
      				goto next;
      			}
    @@ -38,8 +38,8 @@
      
      	say(state, stdout, _("Applying: %.*s"), linelen(state->msg), state->msg);
      
    --	if (!index_has_changes(NULL)) {
    -+	if (!index_has_changes(NULL, NULL)) {
    +-	if (!index_has_changes(&the_index, NULL)) {
    ++	if (!index_has_changes(&the_index, NULL, NULL)) {
      		printf_ln(_("No changes - did you forget to use 'git add'?\n"
      			"If there is nothing left to stage, chances are that something else\n"
      			"already introduced the same changes; you might want to skip this patch."));
    @@ -48,20 +48,32 @@
     --- a/cache.h
     +++ b/cache.h
     @@
    - extern void move_index_extensions(struct index_state *dst, struct index_state *src);
    + /* Forward structure decls */
    + struct pathspec;
    + struct child_process;
    ++struct tree;
    + 
    + /*
    +  * Copy the sha1 and stat state of a cache entry from one to
    +@@
      extern int unmerged_index(const struct index_state *);
      
    --/**
    -- * Returns 1 if the index differs from HEAD, 0 otherwise. When on an unborn
    -- * branch, returns 1 if there are entries in the index, 0 otherwise. If an
    -- * strbuf is provided, the space-separated list of files that differ will be
    -- * appended to it.
    -- */
    --extern int index_has_changes(struct strbuf *sb);
    --
    + /**
    +- * Returns 1 if istate differs from HEAD, 0 otherwise.  When on an unborn
    +- * branch, returns 1 if there are entries in istate, 0 otherwise.  If an
    +- * strbuf is provided, the space-separated list of files that differ will
    +- * be appended to it.
    ++ * Returns 1 if istate differs from tree, 0 otherwise.  If tree is NULL,
    ++ * compares istate to HEAD.  If tree is NULL and on an unborn branch,
    ++ * returns 1 if there are entries in istate, 0 otherwise.  If an strbuf is
    ++ * provided, the space-separated list of files that differ will be appended
    ++ * to it.
    +  */
    + extern int index_has_changes(const struct index_state *istate,
    ++			     struct tree *tree,
    + 			     struct strbuf *sb);
    + 
      extern int verify_path(const char *path, unsigned mode);
    - extern int strcmp_offset(const char *s1, const char *s2, size_t *first_change);
    - extern int index_dir_exists(struct index_state *istate, const char *name, int namelen);
     
     diff --git a/merge-recursive.c b/merge-recursive.c
     --- a/merge-recursive.c
    @@ -70,26 +82,31 @@
      	if (oid_eq(&common->object.oid, &merge->object.oid)) {
      		struct strbuf sb = STRBUF_INIT;
      
    --		if (!o->call_depth && index_has_changes(&sb)) {
    -+		if (!o->call_depth && index_has_changes(&sb, head)) {
    +-		if (!o->call_depth && index_has_changes(&the_index, &sb)) {
    ++		if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
      			err(o, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
      			    sb.buf);
      			return -1;
     
    -diff --git a/merge.c b/merge.c
    ---- a/merge.c
    -+++ b/merge.c
    +diff --git a/read-cache.c b/read-cache.c
    +--- a/read-cache.c
    ++++ b/read-cache.c
     @@
    - 	return oid_to_hex(commit ? &commit->object.oid : the_hash_algo->empty_tree);
    + 	return 0;
      }
      
    --int index_has_changes(struct strbuf *sb)
    -+int index_has_changes(struct strbuf *sb, struct tree *tree)
    +-int index_has_changes(const struct index_state *istate, struct strbuf *sb)
    ++int index_has_changes(const struct index_state *istate,
    ++		      struct tree *tree,
    ++		      struct strbuf *sb)
      {
     -	struct object_id head;
     +	struct object_id cmp;
      	int i;
      
    + 	if (istate != &the_index) {
    + 		BUG("index_has_changes cannot yet accept istate != &the_index; do_diff_cache needs updating first.");
    + 	}
     -	if (!get_oid_tree("HEAD", &head)) {
     +	if (tree)
     +		cmp = tree->object.oid;
    @@ -118,20 +135,3 @@
      	git reset --hard &&
      	git checkout C^0 &&
      
    -
    -diff --git a/tree.h b/tree.h
    ---- a/tree.h
    -+++ b/tree.h
    -@@
    - extern int read_tree(struct tree *tree, int stage, struct pathspec *pathspec,
    - 		     struct index_state *istate);
    - 
    -+/**
    -+ * Returns 1 if the index differs from tree, 0 otherwise.  If tree is NULL,
    -+ * compares to HEAD.  If tree is NULL and on an unborn branch, returns 1 if
    -+ * there are entries in the index, 0 otherwise. If an strbuf is provided,
    -+ * the space-separated list of files that differ will be appended to it.
    -+ */
    -+extern int index_has_changes(struct strbuf *sb, struct tree *tree);
    -+
    - #endif /* TREE_H */
5:  4aa0684c0 ! 7:  88a8e44a2 t6044: add more testcases with staged changes before a merge is invoked
    @@ -5,8 +5,9 @@
         According to Documentation/git-merge.txt,
     
             ...[merge will] abort if there are any changes registered in the index
    -        relative to the `HEAD` commit.  (One exception is when the changed index
    -        entries are in the state that would result from the merge already.)
    +        relative to the `HEAD` commit.  (One exception is when the changed
    +        index entries are in the state that would result from the merge
    +        already.)
     
         Add some tests showing that this exception, while it does accurately state
         what would be a safe condition under which we could allow the merge to
6:  905f2683f ! 8:  c0049b788 merge-recursive: enforce rule that index matches head before merging
    @@ -48,16 +48,16 @@
         commit, just like the 'ours' and 'octopus' strategies do.
     
         Some testcase fixups were in order:
    -      t6044: We no longer expect stray staged changes to sometimes result
    -             in the merge continuing.  Also, fixes a case where a merge
    -             didn't abort but should have.
    -      t7504: had a few tests that had stray staged changes that were not
    -             actually part of the test under consideration
           t7611: had many tests designed to show that `git merge --abort` could
                  not always restore the index and working tree to the state they
                  were in before the merge started.  The tests that were associated
                  with having changes in the index before the merge started are no
                  longer applicable, so they have been removed.
    +      t7504: had a few tests that had stray staged changes that were not
    +             actually part of the test under consideration
    +      t6044: We no longer expect stray staged changes to sometimes result
    +             in the merge continuing.  Also, fix a case where a merge
    +             didn't abort but should have.
     
         Signed-off-by: Elijah Newren <newren@gmail.com>
     
    @@ -70,7 +70,7 @@
      	int code, clean;
     +	struct strbuf sb = STRBUF_INIT;
     +
    -+	if (!o->call_depth && index_has_changes(&sb, head)) {
    ++	if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
     +		err(o, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     +		    sb.buf);
     +		return -1;
    @@ -84,7 +84,7 @@
      	if (oid_eq(&common->object.oid, &merge->object.oid)) {
     -		struct strbuf sb = STRBUF_INIT;
     -
    --		if (!o->call_depth && index_has_changes(&sb, head)) {
    +-		if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
     -			err(o, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     -			    sb.buf);
     -			return -1;
7:  69f6fe8b1 ! 9:  557c5d94c merge: fix misleading pre-merge check documentation
    @@ -20,7 +20,7 @@
     
             ...the index file must match the tree of `HEAD` commit...
             [NOTE]
    -        This is a bit of a lite.  In certain special cases [explained
    +        This is a bit of a lie.  In certain special cases [explained
             in detail]...
             Otherwise, merge will refuse to do any harm to your repository
             (that is...your working tree...and index are left intact).

-- 
2.18.0.137.g2a11d05a6.dirty

^ permalink raw reply	[relevance 3%]

* Re: conflict resolution of pd/bash-4-completion [Re: What's cooking in git.git (Dec 2010, #05; Thu, 16)]
  @ 2010-12-17 19:24  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-12-17 19:24 UTC (permalink / raw)
  To: SZEDER Gábor; +Cc: git

SZEDER Gábor <szeder@ira.uka.de> writes:

> On Thu, Dec 16, 2010 at 11:38:21PM -0800, Junio C Hamano wrote:
>> * pd/bash-4-completion (2010-12-15) 3 commits
>>  - Merge branch 'master' (early part) into pd/bash-4-completion
>>  - bash: simple reimplementation of _get_comp_words_by_ref
>>  - bash: get --pretty=m<tab> completion to work with bash v4
>> 
>> Updated by Jonathan; this still has some conflicts around "notes"
>> completion I tried to resolve near the tip of 'pu'.
>
> The resolution of that conflict is not quite correct.  I'm not sure
> how I should send a proper conflict resolution...  but I'll try
> anyway.

Thanks, this helped me quite a lot to update my rerere database, so that
the fix-up can be carried forward in future merges to 'next' and
eventually 'master'.

For anybody interested, here is how a merge fix-up patch like yours can be
used:

1. First apply to the commit it is intended to be applied:

    $ git co pu
    $ git am your-patch

2. Re-attempt the merge.  CG stands for "Commit Goal".

    $ CG=$(git rev-parse HEAD)
    $ git reset --hard HEAD^^
    $ git merge pd/bash-4-completion

3. Clear the rerere database and redo the merge, letting it conflict.

    $ git rerere forget contrib/completion/git-completion.bash
    $ git reset --hard
    $ git merge pd/bash-4-completion

4. Take the fixup and conclude the merge; this updates the rerere
   database.

    $ git checkout $CG .
    $ git commit

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2021, #01; Thu, 6)
@ 2021-05-06  5:37  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-06  5:37 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

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']

* ab/pathname-encoding-doc (2021-04-20) 1 commit
  (merged to 'next' on 2021-04-20 at a90562c59f)
 + doc: clarify the filename encoding in git diff

 Clarify that pathnames recorded in Git trees are most often (but
 not necessarily) encoded in UTF-8.


* ds/maintenance-prefetch-fix (2021-04-16) 4 commits
  (merged to 'next' on 2021-04-16 at 0a1818e235)
 + maintenance: respect remote.*.skipFetchAll
 + maintenance: use 'git fetch --prefetch'
 + fetch: add --prefetch option
 + maintenance: simplify prefetch logic

 The prefetch task in "git maintenance" assumed that "git fetch"
 from any remote would fetch all its local branches, which would
 fetch too much if the user is interested in only a subset of
 branches there.


* ds/sparse-index (2021-03-30) 21 commits
  (merged to 'next' on 2021-04-07 at f1290a7929)
 + p2000: add sparse-index repos
 + sparse-index: loose integration with cache_tree_verify()
 + cache-tree: integrate with sparse directory entries
 + sparse-checkout: disable sparse-index
 + sparse-checkout: toggle sparse index from builtin
 + sparse-index: add index.sparse config option
 + sparse-index: check index conversion happens
 + unpack-trees: allow sparse directories
 + submodule: sparse-index should not collapse links
 + sparse-index: convert from full to sparse
 + sparse-index: add 'sdir' index extension
 + sparse-checkout: hold pattern list in index
 + unpack-trees: ensure full index
 + test-tool: don't force full index
 + test-read-cache: print cache entries with --table
 + t1092: compare sparse-checkout to sparse-index
 + sparse-index: implement ensure_full_index()
 + sparse-index: add guard to ensure full index
 + t1092: clean up script quoting
 + t/perf: add performance test for sparse operations
 + sparse-index: design doc and format update
 (this branch is used by ds/sparse-index-protections and ds/status-with-sparse-index.)

 Both in-core and on-disk index has been updated to optionally omit
 individual entries and replace them with the tree object that
 corresponds to the directory that contains them when the "cone"
 mode of sparse checkout is in use.


* ds/sparse-index-protections (2021-04-14) 26 commits
  (merged to 'next' on 2021-04-17 at f1c40f89ba)
 + name-hash: use expand_to_path()
 + sparse-index: expand_to_path()
 + name-hash: don't add directories to name_hash
 + revision: ensure full index
 + resolve-undo: ensure full index
 + read-cache: ensure full index
 + pathspec: ensure full index
 + merge-recursive: ensure full index
 + entry: ensure full index
 + dir: ensure full index
 + update-index: ensure full index
 + stash: ensure full index
 + rm: ensure full index
 + merge-index: ensure full index
 + ls-files: ensure full index
 + grep: ensure full index
 + fsck: ensure full index
 + difftool: ensure full index
 + commit: ensure full index
 + checkout: ensure full index
 + checkout-index: ensure full index
 + add: ensure full index
 + cache: move ensure_full_index() to cache.h
 + read-cache: expand on query into sparse-directory entry
 + *: remove 'const' qualifier for struct index_state
 + sparse-index: API protection strategy
 (this branch is used by ds/status-with-sparse-index; uses ds/sparse-index.)

 Builds on top of the sparse-index infrastructure to mark operations
 that are not ready to mark with the sparse index, causing them to
 fall back on fully-populated index that they always have worked with.


* hn/refs-trace-errno (2021-04-12) 1 commit
  (merged to 'next' on 2021-04-20 at 0816e49d22)
 + refs: print errno for read_raw_ref if GIT_TRACE_REFS is set

 Show errno in the trace output in the error codepath that calls
 read_raw_ref method.


* jk/promisor-optim (2021-04-13) 3 commits
  (merged to 'next' on 2021-04-15 at 41f303ef9b)
 + revision: avoid parsing with --exclude-promisor-objects
 + lookup_unknown_object(): take a repository argument
 + is_promisor_object(): free tree buffer after parsing
 (this branch is used by rs/repack-without-loosening-promised-objects.)

 Handling of "promisor packs" that allows certain objects to be
 missing and lazily retrievable has been optimized (a bit).


* mt/parallel-checkout-part-2 (2021-04-19) 5 commits
  (merged to 'next' on 2021-04-20 at d4779b8864)
 + parallel-checkout: add design documentation
 + parallel-checkout: support progress displaying
 + parallel-checkout: add configuration options
 + parallel-checkout: make it truly parallel
 + unpack-trees: add basic support for parallel checkout
 (this branch is used by mt/parallel-checkout-part-3.)

 The checkout machinery has been taught to perform the actual
 write-out of the files in parallel when able.


* mt/pkt-write-errors (2021-04-15) 1 commit
  (merged to 'next' on 2021-04-16 at 4a82d89ff3)
 + pkt-line: do not report packet write errors twice

 When packet_write() fails, we gave an extra error message
 unnecessarily, which has been corrected.


* ow/push-quiet-set-upstream (2021-04-15) 1 commit
  (merged to 'next' on 2021-04-16 at 9466d4ef38)
 + transport: respect verbosity when setting upstream

 "git push --quiet --set-upstream" was not quiet when setting the
 upstream branch configuration, which has been corrected.


* so/log-diff-merge (2021-04-16) 5 commits
  (merged to 'next' on 2021-04-17 at 6c1eba8ee3)
 + doc/diff-options: document new --diff-merges features
 + diff-merges: introduce log.diffMerges config variable
 + diff-merges: adapt -m to enable default diff format
 + diff-merges: refactor set_diff_merges()
 + diff-merges: introduce --diff-merges=on

 "git log" learned "--diff-merges=<style>" option, with an
 associated configuration variable log.diffMerges.


* vs/completion-with-set-u (2021-04-16) 1 commit
  (merged to 'next' on 2021-04-20 at 179933f961)
 + completion: avoid aliased command lookup error in nounset mode

 Effort to make the command line completion (in contrib/) safe with
 "set -u" continues.

--------------------------------------------------
[New Topics]

* ad/cygwin-no-backslashes-in-paths (2021-04-30) 1 commit
  (merged to 'next' on 2021-04-30 at e2cf03a8aa)
 + cygwin: disallow backslashes in file names

 Cygwin pathname handling fix.

 Will merge to 'master'.


* hn/refs-errno-cleanup (2021-04-30) 8 commits
 - refs: explicitly propagate errno from refs_read_raw_ref
 - refs: stop setting EINVAL and ELOOP in symref resolution
 - refs: clear errno return in refs_resolve_ref_unsafe()
 - refs: add failure_errno to refs_read_raw_ref() signature
 - refs: make errno output explicit for refs_resolve_ref_unsafe
 - refs: make errno output explicit for read_raw_ref_fn
 - refs/files-backend: stop setting errno from lock_ref_oid_basic
 - refs: remove EINVAL specification from the errno sideband in read_raw_ref_fn

 Futz with the way 'errno' is relied on in the refs API to carry the
 failure modes up the callchain.

 Waiting for reviews.


* jc/test-allows-local (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at 768071c554)
 + CodingGuidelines: explicitly allow "local" for test scripts

 Document that our test can use "local" keyword.

 Will merge to 'master'.


* jk/doc-format-patch-skips-merges (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at cac68f7193)
 + docs/format-patch: mention handling of merges

 Document that "format-patch" skips merges.

 Will merge to 'master'.


* jk/pack-objects-negative-options-fix (2021-05-03) 5 commits
  (merged to 'next' on 2021-05-04 at 4a61f68cf0)
 + pack-objects: clamp negative depth to 0
 + t5316: check behavior of pack-objects --depth=0
 + pack-objects: clamp negative window size to 0
 + t5300: check that we produced expected number of deltas
 + t5300: modernize basic tests

 Options to "git pack-objects" that take numeric values like
 --window and --depth should not accept negative values; the input
 validation has been tightened.

 Will merge to 'master'.


* jk/symlinked-dotgitx-cleanup (2021-05-04) 9 commits
  (merged to 'next' on 2021-05-04 at deca6ca662)
 + docs: document symlink restrictions for dot-files
 + fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
 + t0060: test ntfs/hfs-obscured dotfiles
 + t7450: test .gitmodules symlink matching against obscured names
 + t7450: test verify_path() handling of gitmodules
 + t7415: rename to expand scope
 + fsck_tree(): wrap some long lines
 + fsck_tree(): fix shadowed variable
 + t7415: remove out-dated comment about translation

 Various test and documentation updates about .gitsomething paths
 that are symlinks.

 Will merge to 'master'.


* nc/submodule-update-quiet (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at 09bed89b60)
 + submodule update: silence underlying fetch with "--quiet"

 "git submodule update --quiet" did not propagate the quiet option
 down to underlying "git fetch", which has been corrected.

 Will merge to 'master'.


* en/ort-perf-batch-11 (2021-05-04) 13 commits
 - merge-ort, diffcore-rename: employ cached renames when possible
 - merge-ort: handle interactions of caching and rename/rename(1to1) cases
 - merge-ort: add helper functions for using cached renames
 - merge-ort: preserve cached renames for the appropriate side
 - merge-ort: avoid accidental API mis-use
 - merge-ort: add code to check for whether cached renames can be reused
 - merge-ort: populate caches of rename detection results
 - merge-ort: add data structures for in-memory caching of rename detection
 - t6429: testcases for remembering renames
 - fast-rebase: write conflict state to working tree, index, and HEAD
 - fast-rebase: change assert() to BUG()
 - Documentation/technical: describe remembering renames optimization
 - t6423: rename file within directory that other side renamed

 Optimize out repeated rename detection in a sequence of mergy
 operations.

 Waiting for reviews.


* si/zsh-complete-comment-fix (2021-05-04) 1 commit
  (merged to 'next' on 2021-05-04 at a15c1ea590)
 + work around zsh comment in __git_complete_worktree_paths

 Portability fix for command line completion script (in contrib/).

 Will merge to 'master'.


* dd/mailinfo-quoted-cr (2021-05-05) 5 commits
 - am: learn to process quoted lines that ends with CRLF
 - mailinfo: strip quoted CR on users' wish
 - mailinfo: skip quoted CR on user's wish
 - mailinfo: warn if CR found in base64/quoted-printable email
 - mailinfo: avoid magic number in option parsing

 "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
 control how lines ending with CRLF wrapped in base64 or qp are
 handled.

 Expecting a reroll.
 cf. <YJK/ieA7fzB+h01t@danh.dev>


* ll/clone-reject-shallow (2021-05-05) 1 commit
  (merged to 'next' on 2021-05-06 at 4a165ffc96)
 + t5601: mark protocol v2-only test

 Fix tests when forced to use v0 protocol.

 Will merge to 'master'.


* ab/perl-makefile-cleanup (2021-05-06) 4 commits
 - perl: use mock i18n functions under NO_GETTEXT=Y
 - Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
 - Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
 - Makefile: don't re-define PERL_DEFINES

 Build procedure clean-up.

 Will merge to 'next'.


* ab/sparse-index-cleanup (2021-05-06) 1 commit
 - sparse-index.c: remove set_index_sparse_config()

 Code clean-up.

 Will merge to 'next'.


* ab/streaming-simplify (2021-05-06) 5 commits
 - streaming.c: move {open,close,read} from vtable to "struct git_istream"
 - streaming.c: stop passing around "object_info *" to open()
 - streaming.c: remove {open,close,read}_method_decl() macros
 - streaming.c: remove enum/function/vtbl indirection
 - streaming.c: avoid forward declarations

 Code clean-up.

 Will merge to 'next'.


* ab/trace2-squelch-bcc-warning (2021-05-05) 1 commit
 - trace2: refactor to avoid gcc warning under -O3

 Workaround compiler warnings.


* jk/p4-locate-branch-point-optim (2021-05-06) 2 commits
 - git-p4: speed up search for branch parent
 - git-p4: ensure complex branches are cloned correctly

 "git p4" learned to find branch points more efficiently.

 Will merge to 'next'.


* ow/no-dryrun-in-add-i (2021-05-06) 1 commit
 - add: die if both --dry-run and --interactive are given

 "git add -i --dry-run" does not dry-run, which was surprising.  The
 combination of options has taught to error out.

 Will merge to 'next'.


* pw/patience-diff-clean-up (2021-05-05) 2 commits
  (merged to 'next' on 2021-05-06 at 1ce651569c)
 + patience diff: remove unused variable
 + patience diff: remove unnecessary string comparisons

 Code clean-up.

 Will merge to 'master'.


* pw/word-diff-zero-width-matches (2021-05-05) 1 commit
  (merged to 'next' on 2021-05-06 at e5653da568)
 + word diff: handle zero length matches

 The word-diff mode has been taught to work better with a word
 regexp that can match an empty string.

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* jh/rfc-builtin-fsmonitor (2021-05-04) 24 commits
 - fsmonitor: only enable it in non-bare repositories
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - p7519: add fsmonitor--daemon
 - t7527: create test for fsmonitor--daemon
 - fsmonitor: force update index when fsmonitor token advances
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon:: introduce client delay for testing
 - fsmonitor--daemon: periodically truncate list of modified files
 - fsmonitor--daemon: implement handle_client callback
 - fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
 - fsmonitor-fs-listen-macos: add macos header files for FSEvent
 - fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement daemon command options
 - fsmonitor-fs-listen-macos: stub in backend for MacOS
 - fsmonitor-fs-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement client command options
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC
 - config: FSMonitor is repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - Merge branch 'jh/simple-ipc' into jh/rfc-builtin-fsmonitor

 An attempt to write and ship with a watchman equivalent tailored
 for our use.


* ag/merge-strategies-in-c (2021-03-17) 15 commits
 - sequencer: use the "octopus" merge strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index
 - t6407: modernise tests

 The resolve and octopus merge strategy backends have been rewritten
 in C.

 Expecting a (hopefully final) reroll.
 cf. <nycvar.QRO.7.76.6.2103241142220.50@tvgsbejvaqbjf.bet>


* ab/describe-tests-fix (2021-04-29) 5 commits
 - describe tests: support -C in "check_describe"
 - describe tests: fix nested "test_expect_success" call
 - describe tests: don't rely on err.actual from "check_describe"
 - describe tests: refactor away from glob matching
 - describe tests: improve test for --work-tree & --dirty
 (this branch uses ab/test-lib-updates.)

 Various updates to tests around "git describe"

 Waiting for the base topic to solidify.


* ab/pickaxe-pcre2 (2021-04-29) 22 commits
 - xdiff-interface: replace discard_hunk_line() with a flag
 - xdiff users: use designated initializers for out_line
 - pickaxe -G: don't special-case create/delete
 - pickaxe -G: terminate early on matching lines
 - xdiff-interface: allow early return from xdiff_emit_line_fn
 - xdiff-interface: prepare for allowing early return
 - pickaxe -S: slightly optimize contains()
 - pickaxe: rename variables in has_changes() for brevity
 - pickaxe -S: support content with NULs under --pickaxe-regex
 - pickaxe: assert that we must have a needle under -G or -S
 - pickaxe: refactor function selection in diffcore-pickaxe()
 - perf: add performance test for pickaxe
 - pickaxe/style: consolidate declarations and assignments
 - diff.h: move pickaxe fields together again
 - pickaxe: die when --find-object and --pickaxe-all are combined
 - pickaxe: die when -G and --pickaxe-regex are combined
 - pickaxe tests: add missing test for --no-pickaxe-regex being an error
 - pickaxe tests: test for -G, -S and --find-object incompatibility
 - pickaxe tests: add test for "log -S" not being a regex
 - pickaxe tests: add test for diffgrep_consume() internals
 - pickaxe tests: refactor to use test_commit --append --printf
 - grep/pcre2 tests: reword comments referring to kwset
 (this branch uses ab/test-lib-updates.)

 Rewrite the backend for "diff -G/-S" to use pcre2 engine when
 available.

 Waiting for the base topic to solidify.


* es/config-hooks (2021-03-10) 36 commits
 . run-command: stop thinking about hooks
 . git-send-email: use 'git hook run' for 'sendemail-validate'
 . bugreport: use hook_exists instead of find_hook
 . receive-pack: convert receive hooks to hook.h
 . post-update: use hook.h library
 . proc-receive: acquire hook list from hook.h
 . receive-pack: convert 'update' hook to hook.h
 . reference-transaction: look for hooks in config
 . transport: convert pre-push hook to use config
 . hook: convert 'post-rewrite' hook to config
 . hooks: convert 'post-checkout' hook to hook library
 . git-p4: use 'git hook' to run hooks
 . receive-pack: convert push-to-checkout hook to hook.h
 . read-cache: convert post-index-change hook to use config
 . rebase: teach pre-rebase to use hook.h
 . gc: use hook library for pre-auto-gc hook
 . merge: use config-based hooks for post-merge hook
 . am: convert applypatch hooks to use config
 . commit: use config-based hooks
 . hooks: allow callers to capture output
 . run-command: allow capturing of collated output
 . hook: provide stdin by string_list or callback
 . run-command: add stdin callback for parallelization
 . hook: allow specifying working directory for hooks
 . hook: allow parallel hook execution
 . run-command: allow stdin for run_processes_parallel
 . hook: support passing stdin to hooks
 . hook: introduce hook_exists()
 . hook: add 'run' subcommand
 . parse-options: parse into strvec
 . hook: implement hookcmd.<name>.skip
 . hook: teach hook.runHookDir
 . hook: include hookdir hook in list
 . hook: add list command
 . hook: scaffolding for git-hook subcommand
 . doc: propose hooks managed by the config

 The "hooks defined in config" topic.

--------------------------------------------------
[Cooking]

* dl/complete-stash-updates (2021-04-27) 4 commits
  (merged to 'next' on 2021-05-03 at 8901a9c431)
 + git-completion.bash: consolidate cases in _git_stash()
 + git-completion.bash: use $__git_cmd_idx in more places
 + git-completion.bash: rename to $__git_cmd_idx
 + git-completion.bash: separate some commands onto their own line
 (this branch uses dl/complete-stash.)

 Further update the command line completion (in contrib/) for "git
 stash".

 Will merge to 'master'.


* ab/pretty-date-format-tests (2021-04-27) 2 commits
  (merged to 'next' on 2021-04-30 at bd2d680c23)
 + pretty tests: give --date/format tests a better description
 + pretty tests: simplify %aI/%cI date format test
 (this branch is used by zh/pretty-date-human.)

 Tweak a few tests for "log --format=..." that show timestamps in
 various formats.

 Will merge to 'master'.


* ds/status-with-sparse-index (2021-04-28) 10 commits
 - fsmonitor: test with sparse index
 - status: use sparse-index throughout
 - status: skip sparse-checkout percentage with sparse-index
 - dir.c: accept a directory as part of cone-mode patterns
 - unpack-trees: stop recursing into sparse directories
 - unpack-trees: compare sparse directories correctly
 - unpack-trees: preserve cache_bottom
 - t1092: add tests for status/add and sparse files
 - Merge branch 'mt/add-rm-in-sparse-checkout' into ds/status-with-sparse-index
 - Merge branch 'ds/sparse-index-protections' into ds/status-with-sparse-index
 (this branch uses mt/add-rm-in-sparse-checkout.)

 "git status" codepath learned to work with sparsely populated index
 without hydrating it fully.


* hn/trace-reflog-expiry (2021-04-27) 1 commit
  (merged to 'next' on 2021-04-30 at 6bc9a79b61)
 + refs/debug: trace into reflog expiry too

 The reflog expiry machinery has been taught to emit trace events.

 Will merge to 'master'.


* jk/prune-with-bitmap-fix (2021-04-29) 2 commits
  (merged to 'next' on 2021-04-30 at bede558f31)
 + prune: save reachable-from-recent objects with bitmaps
 + pack-bitmap: clean up include_check after use

 When the reachability bitmap is in effect, the "do not lose
 recently created objects and those that are reachable from them"
 safety to protect us from races were disabled by mistake, which has
 been corrected.

 Will merge to 'master'.


* js/merge-already-up-to-date-message-reword (2021-05-03) 2 commits
  (merged to 'next' on 2021-05-04 at b2e696ecd7)
 + merge: fix swapped "up to date" message components
 + merge(s): apply consistent punctuation to "up to date" messages

 A few variants of informational message "Already up-to-date" has
 been rephrased.

 Will merge to 'master'.


* jz/apply-3way-first-message-fix (2021-04-29) 1 commit
  (merged to 'next' on 2021-04-30 at 829167e135)
 + apply: adjust messages to account for --3way changes

 When we swapped the order of --3way fallback, we forgot to adjust
 the message we give when the first method fails and the second
 method is attempted (which used to be "direct application failed
 hence we try 3way", now it is the other way around).

 Will merge to 'master'.


* ls/fast-export-signed (2021-05-03) 5 commits
 - fast-export, fast-import: add support for signed-commits
 - fast-export: do not modify memory from get_commit_buffer
 - git-fast-export.txt: clarify why 'verbatim' may not be a good idea
 - fast-export: rename --signed-tags='warn' to 'warn-verbatim'
 - git-fast-import.txt: add missing LF in the BNF

 "git fast-export" offers a way to control how signed tags are
 handled; the mechanism has been extended to allow specifying how
 signed commits are handled as well.

 Expecting a reroll.
 cf. <xmqqa6pca0pv.fsf@gitster.g>, <xmqq1rao9zev.fsf@gitster.g>


* ls/subtree (2021-04-28) 30 commits
  (merged to 'next' on 2021-05-03 at 12c5fe8677)
 + subtree: be stricter about validating flags
 + subtree: push: allow specifying a local rev other than HEAD
 + subtree: allow 'split' flags to be passed to 'push'
 + subtree: allow --squash to be used with --rejoin
 + subtree: give the docs a once-over
 + subtree: have $indent actually affect indentation
 + subtree: don't let debug and progress output clash
 + subtree: add comments and sanity checks
 + subtree: remove duplicate check
 + subtree: parse revs in individual cmd_ functions
 + subtree: use "^{commit}" instead of "^0"
 + subtree: don't fuss with PATH
 + subtree: use "$*" instead of "$@" as appropriate
 + subtree: use more explicit variable names for cmdline args
 + subtree: use git-sh-setup's `say`
 + subtree: use `git merge-base --is-ancestor`
 + subtree: drop support for git < 1.7
 + subtree: more consistent error propagation
 + subtree: don't have loose code outside of a function
 + subtree: t7900: add porcelain tests for 'pull' and 'push'
 + subtree: t7900: add a test for the -h flag
 + subtree: t7900: rename last_commit_message to last_commit_subject
 + subtree: t7900: fix 'verify one file change per commit'
 + subtree: t7900: delete some dead code
 + subtree: t7900: use 'test' for string equality
 + subtree: t7900: comment subtree_test_create_repo
 + subtree: t7900: use consistent formatting
 + subtree: t7900: use test-lib.sh's test_count
 + subtree: t7900: update for having the default branch name be 'main'
 + .gitignore: ignore 'git-subtree' as a build artifact

 "git subtree" updates.

 Will merge to 'master'.


* mt/parallel-checkout-part-3 (2021-05-05) 8 commits
 - ci: run test round with parallel-checkout enabled
 - parallel-checkout: add tests related to .gitattributes
 - t0028: extract encoding helpers to lib-encoding.sh
 - parallel-checkout: add tests related to path collisions
 - parallel-checkout: add tests for basic operations
 - checkout-index: add parallel checkout support
 - builtin/checkout.c: complete parallel checkout support
 - make_transient_cache_entry(): optionally alloc from mem_pool

 The final part of "parallel checkout".

 Will merge to 'next'.


* po/diff-patch-doc (2021-04-28) 1 commit
  (merged to 'next' on 2021-04-30 at 58af0f4b5e)
 + doc: point to diff attribute in patch format docs

 Doc update.

 Will merge to 'master'.


* rj/bisect-skip-honor-terms (2021-04-30) 1 commit
  (merged to 'next' on 2021-05-04 at f7c11bba06)
 + bisect--helper: use BISECT_TERMS in 'bisect skip' command

 "git bisect skip" when custom words are used for new/old did not
 work, which has been corrected.

 Will merge to 'master'.


* tv/p4-fallback-encoding (2021-04-30) 1 commit
 - git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset

 "git p4" learns the fallbackEncoding configuration variable to
 safely accept changeset descriptions that aren't written in UTF-8.


* zh/pretty-date-human (2021-04-27) 1 commit
  (merged to 'next' on 2021-04-30 at 2320ad8fb0)
 + pretty: provide human date format
 (this branch uses ab/pretty-date-format-tests.)

 "git log --format=..." placeholders learned %ah/%ch placeholders to
 request the --date=human output.

 Will merge to 'master'.


* dl/complete-stash (2021-03-24) 3 commits
  (merged to 'next' on 2021-03-24 at ce573a99cc)
 + git-completion.bash: use __gitcomp_builtin() in _git_stash()
 + git-completion.bash: extract from else in _git_stash()
 + git-completion.bash: pass $__git_subcommand_idx from __git_main()
 (this branch is used by dl/complete-stash-updates.)

 The command line completion (in contrib/) for "git stash" has been
 updated.

 Will merge to 'master'.


* ba/object-info (2021-04-20) 1 commit
 - object-info: support for retrieving object info

 Over-the-wire protocol learns a new request type to ask for object
 sizes given a list of object names.

 Will merge to 'next'.


* zh/format-ref-array-optim (2021-04-20) 2 commits
  (merged to 'next' on 2021-04-30 at b6c835cc51)
 + ref-filter: reuse output buffer
 + ref-filter: get rid of show_ref_array_item

 "git (branch|tag) --format=..." has been micro-optimized.

 Will merge to 'master'.


* hn/prep-tests-for-reftable (2021-04-28) 21 commits
 - t1415: set REFFILES for test specific to storage format
 - t4202: mark bogus head hash test with REFFILES
 - t7003: check reflog existence only for REFFILES
 - t7900: mark pack-refs tests as REFFILES
 - t1404: mark tests that muck with .git directly as REFFILES.
 - t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
 - t1414: mark corruption test with REFFILES
 - t1407: require REFFILES for for_each_reflog test
 - test-lib: provide test prereq REFFILES
 - t5304: use "reflog expire --all" to clear the reflog
 - t5304: restyle: trim empty lines, drop ':' before >
 - t7003: use rev-parse rather than FS inspection
 - t5000: inspect HEAD using git-rev-parse
 - t5000: reformat indentation to the latest fashion
 - t1301: fix typo in error message
 - t1413: use tar to save and restore entire .git directory
 - t1401-symbolic-ref: avoid direct filesystem access
 - t5601: read HEAD using rev-parse
 - t9300: check ref existence using test-helper rather than a file system check
 - t/helper/ref-store: initialize oid in resolve-ref
 - t4202: split testcase for invalid HEAD symref and HEAD hash

 Preliminary clean-up of tests before the main reftable changes
 hits the codebase.

 Waiting for reviews.


* ps/config-env-option-with-separate-value (2021-04-30) 2 commits
  (merged to 'next' on 2021-04-30 at 46fbcd08c1)
 + git: support separate arg for `--config-env`'s value
 + git.txt: fix synopsis of `--config-env` missing the equals sign

 "git --config-env var=val cmd" weren't accepted (only
 --config-env=var=val was).

 Will merge to 'master'.


* rs/repack-without-loosening-promised-objects (2021-04-28) 1 commit
  (merged to 'next' on 2021-05-03 at 6681b49209)
 + repack: avoid loosening promisor objects in partial clones

 "git repack -A -d" in a partial clone unnecessarily loosened
 objects in promisor pack.

 Will merge to 'master'.


* jt/push-negotiation (2021-05-05) 6 commits
  (merged to 'next' on 2021-05-06 at 644a1bc4ee)
 + send-pack: support push negotiation
 + fetch: teach independent negotiation (no packfile)
 + fetch-pack: refactor command and capability write
 + fetch-pack: refactor add_haves()
 + fetch-pack: refactor process_acks()
 + Merge branch 'jt/fetch-pack-request-fix' into jt/push-negotiation

 "git push" learns to discover common ancestor with the receiving
 end over protocol v2.

 Will merge to 'master'.


* ab/doc-lint (2021-04-10) 7 commits
  (merged to 'next' on 2021-04-30 at 285b9c4d64)
 + docs: fix linting issues due to incorrect relative section order
 + doc lint: lint relative section order
 + doc lint: lint and fix missing "GIT" end sections
 + doc lint: fix bugs in, simplify and improve lint script
 + doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
 + Documentation/Makefile: make doc.dep dependencies a variable again
 + Documentation/Makefile: make $(wildcard howto/*.txt) a var

 Dev support.

 Will merge to 'master'.


* ab/rebase-no-reschedule-failed-exec (2021-04-10) 2 commits
  (merged to 'next' on 2021-04-30 at 97d56cc674)
 + rebase: don't override --no-reschedule-failed-exec with config
 + rebase tests: camel-case rebase.rescheduleFailedExec consistently

 "git rebase --[no-]reschedule-failed-exec" did not work well with
 its configuration variable, which has been corrected.

 Will merge to 'master'.


* ah/plugleaks (2021-04-28) 12 commits
  (merged to 'next' on 2021-04-30 at ccb3984029)
 + builtin/rm: avoid leaking pathspec and seen
 + builtin/rebase: release git_format_patch_opt too
 + builtin/for-each-ref: free filter and UNLEAK sorting.
 + mailinfo: also free strbuf lists when clearing mailinfo
 + builtin/checkout: clear pending objects after diffing
 + builtin/check-ignore: clear_pathspec before returning
 + builtin/bugreport: don't leak prefixed filename
 + branch: FREE_AND_NULL instead of NULL'ing real_ref
 + bloom: clear each bloom_key after use
 + ls-files: free max_prefix when done
 + wt-status: fix multiple small leaks
 + revision: free remainder of old commit list in limit_list

 Plug various leans reported by LSAN.

 Will merge to 'master'.


* bc/hash-transition-interop-part-1 (2021-04-27) 13 commits
  (merged to 'next' on 2021-05-03 at 19dba33d17)
 + hex: print objects using the hash algorithm member
 + hex: default to the_hash_algo on zero algorithm value
 + builtin/pack-objects: avoid using struct object_id for pack hash
 + commit-graph: don't store file hashes as struct object_id
 + builtin/show-index: set the algorithm for object IDs
 + hash: provide per-algorithm null OIDs
 + hash: set, copy, and use algo field in struct object_id
 + builtin/pack-redundant: avoid casting buffers to struct object_id
 + Use the final_oid_fn to finalize hashing of object IDs
 + hash: add a function to finalize object IDs
 + http-push: set algorithm when reading object ID
 + Always use oidread to read into struct object_id
 + hash: add an algo member to struct object_id

 SHA-256 transition.

 Will merge to 'master'.


* ps/rev-list-object-type-filter (2021-04-19) 8 commits
  (merged to 'next' on 2021-04-30 at fa0ceacde4)
 + rev-list: allow filtering of provided items
 + pack-bitmap: implement combined filter
 + pack-bitmap: implement object type filter
 + list-objects: implement object type filter
 + list-objects: support filtering by tag and commit
 + list-objects: move tag processing into its own function
 + revision: mark commit parents as NOT_USER_GIVEN
 + uploadpack.txt: document implication of `uploadpackfilter.allow`

 "git rev-list" learns the "--filter=object:type=<type>" option,
 which can be used to exclude objects of the given kind from the
 packfile generated by pack-objects.

 Will merge to 'master'.


* tb/multi-pack-bitmaps (2021-04-10) 23 commits
 - p5326: perf tests for MIDX bitmaps
 - p5310: extract full and partial bitmap tests
 - midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
 - t7700: update to work with MIDX bitmap test knob
 - t5319: don't write MIDX bitmaps in t5319
 - t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
 - t5326: test multi-pack bitmap behavior
 - t/helper/test-read-midx.c: add --checksum mode
 - t5310: move some tests to lib-bitmap.sh
 - pack-bitmap: write multi-pack bitmaps
 - pack-bitmap: read multi-pack bitmaps
 - pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
 - pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
 - pack-bitmap.c: introduce 'bitmap_num_objects()'
 - midx: respect 'core.multiPackIndex' when writing
 - midx: clear auxiliary .rev after replacing the MIDX
 - midx: make a number of functions non-static
 - Documentation: describe MIDX-based bitmaps
 - Documentation: build 'technical/bitmap-format' by default
 - pack-bitmap-write.c: free existing bitmaps
 - pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
 - pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
 - Merge branch 'tb/pack-preferred-tips-to-give-bitmap' into tb/multi-pack-bitmaps

 The reachability bitmap file used to be generated only for a single
 pack, but now we've learned to generate bitmaps for history that
 span across multiple packfiles.

 Waiting for reviews.
 cf. <cover.1617991824.git.me@ttaylorr.com>


* ab/svn-tests-set-e-fix (2021-04-12) 2 commits
  (merged to 'next' on 2021-04-30 at 41f7907187)
 + svn tests: refactor away a "set -e" in test body
 + svn tests: remove legacy re-setup from init-clone test

 Test clean-up.

 Will merge to 'master'.


* ab/test-lib-updates (2021-04-29) 11 commits
 - test-lib: split up and deprecate test_create_repo()
 - test-lib: do not show advice about init.defaultBranch under --verbose
 - test-lib: reformat argument list in test_create_repo()
 - submodule tests: use symbolic-ref --short to discover branch name
 - test-lib functions: add --printf option to test_commit
 - describe tests: convert setup to use test_commit
 - test-lib functions: add an --annotated option to "test_commit"
 - test-lib-functions: document test_commit --no-tag
 - test-lib-functions: reword "test_commit --append" docs
 - test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
 - test-lib: bring $remove_trash out of retirement
 (this branch is used by ab/describe-tests-fix and ab/pickaxe-pcre2.)

 Test clean-up.


* ao/p4-avoid-decoding (2021-04-12) 2 commits
 - git-p4: do not decode data from perforce by default
 - git-p4: avoid decoding more data from perforce

 "git p4" in Python-2 days used to accept a lot more kinds of data
 from Perforce server as uninterrupted byte sequence, but after
 switching to Python-3, too many things are expected to be in UTF-8,
 which broke traditional use cases.

 Waiting for reviews.


* ma/t0091-bugreport-fix (2021-04-12) 1 commit
 - t0091-bugreport.sh: actually verify some content of report

 Test fix.

 Expecting a reroll.
 cf. <YHYZTLl90rkWWVOr@google.com>, <87a6q22dei.fsf@evledraar.gmail.com>


* ps/config-global-override (2021-04-27) 4 commits
  (merged to 'next' on 2021-04-30 at 5ce435d98f)
 + t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
  (merged to 'next' on 2021-04-20 at 82578c696d)
 + config: allow overriding of global and system configuration
 + config: unify code paths to get global config paths
 + config: rename `git_etc_config()`

 Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
 system-wide configuration file with GIT_CONFIG_SYSTEM that lets
 users specify from which file to read the system-wide configuration
 (setting it to an empty file would essentially be the same as
 setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
 per-user configuration in $HOME/.gitconfig.

 Will merge to 'master'.


* mr/bisect-in-c-4 (2021-04-11) 4 commits
 - bisect--helper: retire `--bisect-next-check` subcommand
 - bisect--helper: reimplement `bisect_run` shell function in C
 - bisect--helper: reimplement `bisect_visualize()`shell function in C
 - run-command: make `exists_in_PATH()` non-static

 The codepaths involved in running "git bisect visualize" and "git
 bisect run" has been rewritten in C.

 Expecting a reroll.
 cf. <xmqq35vwh8qk.fsf@gitster.g>, <xmqqy2doftrj.fsf@gitster.g>,
 <CAP8UFD3X24F3qgefHpi00PM-KUk+vcqxwy2Dbngbyj7ciavCVQ@mail.gmail.com>
 May want to boost the test coverage.


* mt/add-rm-in-sparse-checkout (2021-04-08) 7 commits
  (merged to 'next' on 2021-04-30 at ddead90eaf)
 + rm: honor sparse checkout patterns
 + add: warn when asked to update SKIP_WORKTREE entries
 + refresh_index(): add flag to ignore SKIP_WORKTREE entries
 + pathspec: allow to ignore SKIP_WORKTREE entries on index matching
 + add: make --chmod and --renormalize honor sparse checkouts
 + t3705: add tests for `git add` in sparse checkouts
 + add: include magic part of pathspec on --refresh error
 (this branch is used by ds/status-with-sparse-index.)

 "git add" and "git rm" learned not to touch those paths that are
 outside of sparse checkout.

 Will merge to 'master'.


* zh/trailer-cmd (2021-05-04) 2 commits
  (merged to 'next' on 2021-05-04 at fb677877f7)
 + trailer: add new .cmd config option
 + docs: correct descript of trailer.<token>.command

 The way the command line specified by the trailer.<token>.command
 configuration variable receives the end-user supplied value was
 both error prone and misleading.  An alternative to achieve the
 same goal in a safer and more intuitive way has been added, as
 the trailer.<token>.cmd configuration variable, to replace it.

 Will merge to 'master'.


* hn/reftable (2021-04-20) 28 commits
 - t1404: annotate test cases with REFFILES
 - t1401,t2011: parameterize HEAD.lock for REFTABLE
 - t1301: document what needs to be done for REFTABLE
 - Add "test-tool dump-reftable" command.
 - git-prompt: prepare for reftable refs backend
 - Reftable support for git-core
 - reftable: add dump utility
 - reftable: implement stack, a mutable database of reftable files.
 - reftable: implement refname validation
 - reftable: add merged table view
 - reftable: add a heap-based priority queue for reftable records
 - reftable: reftable file level tests
 - reftable: read reftable files
 - reftable: generic interface to tables
 - reftable: write reftable files
 - reftable: a generic binary tree implementation
 - reftable: reading/writing blocks
 - Provide zlib's uncompress2 from compat/zlib-compat.c
 - reftable: (de)serialization for the polymorphic record type.
 - reftable: add blocksource, an abstraction for random access reads
 - reftable: utility functions
 - reftable: add error related functionality
 - reftable: add LICENSE
 - init-db: set the_repository->hash_algo early on
 - hash.h: provide constants for the hash IDs
 - refs/debug: trace into reflog expiry too
 - refs: document reflog_expire_fn's flag argument
 - refs: ref_iterator_peel returns boolean, rather than peel_status

 The "reftable" backend for the refs API.

 Waiting for reviews.

--------------------------------------------------
[Discarded]

* ab/fsck-unexpected-type (2021-04-13) 6 commits
 . fsck: report invalid object type-path combinations
 . fsck: report invalid types recorded in objects
 . object-store.h: move read_loose_object() below 'struct object_info'
 . fsck: don't hard die on invalid object types
 . fsck tests: refactor one test to use a sub-repo
 . cache.h: move object functions to object-store.h

 "git fsck" has been taught to report mismatch between expected and
 actual types of an object better.

 Retracted for now.
 cf. <cover-0.5-00000000000-20210505T122816Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* Re: Commiting changes onto more than one branch
  @ 2009-11-25 16:50  3% ` Jakub Narebski
  0 siblings, 0 replies; 200+ results
From: Jakub Narebski @ 2009-11-25 16:50 UTC (permalink / raw)
  To: Mike Jarmy; +Cc: git

Mike Jarmy <mjarmy@gmail.com> writes:

> My question is this:  How do I manage a checkin for a bugfix that
> affects, say, only branches v3, v4, and v5?

Take a look at "Resolving conflicts/dependencies between topic
branches early" blog post by Junio C Hamano (git maintainer) at 
http://gitster.livejournal.com/27297.html

In short the solution is to create separate topic branch for a bugfix,
branching off earliest place where it would be relevant, then merge
this bugfix branch into all development branches you need
(e.g. maint-v3, maint-v4, maint-v5, master).

This means:

  $ git checkout -b fix-frobulator--issue-1235 maint-v3
  <create commit or series of commits>
  
  $ git checkout maint-v3
  $ git merge fix-frobulator--issue-1235
  <resolve conflicts if any>

  $ git checkout maint-v4
  $ git merge fix-frobulator--issue-1235
  <resolve conflicts if any>

  [...]

-- 
Jakub Narebski
Poland
ShadeHawk on #git

^ permalink raw reply	[relevance 3%]

* [PATCH 0/2] Fix some old memory leaks in merge-ort and builtin/merge
@ 2022-01-20  7:47  3% Elijah Newren via GitGitGadget
  0 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-01-20  7:47 UTC (permalink / raw)
  To: git; +Cc: Ævar Arnfjörð Bjarmason, Elijah Newren

This series fixes three memory leaks.

The first comes from a report at [1]. It's a leak in merge-ort that
pre-dates the remerge-diff topic (technically traceable back 15.5 years ago
across merge-recursive.c history) and is triggerable from a variety of
testcases. I think I may have overlooked it previously just because there's
other leaks in revision walking and this looks like one of those.

The next two leaks were ones in builtin/merge.c found while fixing the above
leak; they are fixed together in the second patch.

[1] https://lore.kernel.org/git/220119.86pmonn2mb.gmgdl@evledraar.gmail.com/

Elijah Newren (2):
  merge-ort: fix memory leak in merge_ort_internal()
  merge: fix memory leaks in cmd_merge()

 builtin/merge.c |  6 +++++-
 merge-ort.c     | 10 +++++-----
 2 files changed, 10 insertions(+), 6 deletions(-)


base-commit: af4e5f569bc89f356eb34a9373d7f82aca6faa8a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1200%2Fnewren%2Fmerge-leaks-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1200/newren/merge-leaks-v1
Pull-Request: https://github.com/git/git/pull/1200
-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Apr 2016, #06; Thu, 21)
@ 2016-04-21 22:20  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-21 22:20 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the fifth batch of topics of this cycle.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* jd/p4-jobs-in-commit (2016-04-19) 2 commits
 - git-p4: add P4 jobs to git commit message
 - git-p4: clean-up code style in tests

 "git p4" learned to record P4 jobs in Git commit that imports from
 the history in Perforce.

 Will merge to 'next'.


* js/replace-edit-use-editor-configuration (2016-04-20) 1 commit
 - replace --edit: respect core.editor

 "git replace -e" did not honour "core.editor" configuration.

 Will merge to 'next'.


* ls/p4-lfs (2016-04-19) 2 commits
 - git-p4: fix Git LFS pointer parsing
 - travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.


* sb/mv-submodule-fix (2016-04-19) 1 commit
 - mv: allow moving nested submodules

 "git mv old new" did not adjust the path for a submodule that lives
 as a subdirectory inside old/ directory correctly.

 Will merge to 'next'.


* tb/convert-eol-autocrlf (2016-04-19) 4 commits
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: avoid false "unchanged" due to lstat() matching after a change

 Setting core.autocrlf to 'input' and core.eol to 'crlf' used to be
 rejected, but because the code gives precedence to core.autcrlf,
 there is no need to, hence we no longer reject the combination.

 Will merge to 'next'.


* bc/object-id (2016-04-19) 6 commits
 - match-trees: convert several leaf functions to use struct object_id
 - tree-walk: convert tree_entry_extract() to use struct object_id
 - struct name_entry: use struct object_id instead of unsigned char sha1[20]
 - match-trees: convert shift_tree() and shift_tree_by() to use object_id
 - test-match-trees: convert to use struct object_id
 - sha1-name: introduce a get_oid() function

 Will be rerolled.
 ($gmane/291950)


* ep/http-curl-trace (2016-04-20) 3 commits
 - git.txt: document the new GIT_TRACE_CURL environment variable
 - imap-send.c: introduce the GIT_TRACE_CURL enviroment variable
 - http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074)


* nd/worktree-various-heads (2016-04-20) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: test if branch being bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: test if branch being rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - SQUASH???
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Being reviewed.
 ($gmane/292050)


* bw/rebase-merge-entire-branch (2016-04-20) 1 commit
 - git-rebase--merge: don't include absent parent as a base

 "git rebase -m" could be asked to rebase an entire branch starting
 from the root, but failed by assuming that there always is a parent
 commit to the first commit on the branch.

 Will merge to 'next'.


* jk/push-client-deadlock-fix (2016-04-20) 5 commits
 - t5504: drop sigpipe=ok from push tests
 - fetch-pack: isolate sigpipe in demuxer thread
 - send-pack: isolate sigpipe in demuxer thread
 - run-command: teach async threads to ignore SIGPIPE
 - send-pack: close demux pipe before finishing async process

 "git push" from a corrupt repository that attempts to push a large
 number of refs deadlocked waiting for a rejection from the
 receiving end that will never come.

 Will merge to 'next'.


* jc/merge-refuse-new-root (2016-04-21) 2 commits
 - pull: pass --allow-unrelated-histories to "git merge"
 - t3033: avoid 'ambiguous refs' warning

 "git pull" has been taught to pass --allow-unrelated-histories
 option to underlying "git merge".

 Will merge to 'next'.
 

--------------------------------------------------
[Stalled]

* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sb/clone-shallow-passthru (2016-04-13) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - clone: add `--shallow-submodules` flag
 - submodule clone: pass along `local` option

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* pb/commit-verbose-config (2016-04-19) 6 commits
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Is this going to be rerolled?
 ($gmane/291382)


* en/merge-fixes (2016-04-12) 2 commits
 - merge-recursive: do not check working copy when creating a virtual merge base
 - merge-recursive: remove duplicate code

 "merge-recursive" strategy incorrectly checked if a path that is
 involved in its internal merge exists in the working tree.

 Will merge to 'next'.


* en/merge-octopus-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at 600b479)
 + merge-octopus: abort if index does not match HEAD
 + t6044: new merge testcases for when index doesn't match HEAD

 "merge-octopus" strategy did not ensure that the index is clean
 when merge begins.

 Will merge to 'master'.


* en/merge-trivial-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at fb3ea86)
 + builtin/merge.c: fix a bug with trivial merges
 + t7605: add a testcase demonstrating a bug with trivial merges

 When "git merge" notices that the merge can be resolved purely at
 the tree level (without having to merge blobs) and the resulting
 tree happens to already exist in the object store, it forgot to
 update the index, which lead to an inconsistent state for later
 operations.

 Will merge to 'master'.


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.


* jc/ll-merge-internal (2016-04-14) 2 commits
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 RFC.


* jk/diff-compact-heuristic (2016-04-19) 2 commits
 - xdiff: implement empty line chunk heuristic
 - xdiff: add recs_match helper function

 Patch output from "git diff" and friends has been tweaked to be
 more readable by using a blank line as a strong hint that the
 contents before and after it belong to a logically separate unit.

 Will merge to 'next'.


* nd/test-helpers (2016-04-15) 2 commits
 - test helpers: move test-* to t/helper/ subdirectory
 - Makefile: clean *.o files we create

 Sources to many test helper binaries (and the generated helpers)
 have been moved to t/helper/ subdirectory to reduce clutter at the
 top level of the tree.

 Will merge to 'next'.


* sb/submodule-init (2016-04-16) 4 commits
 - submodule: port init from shell to C
 - submodule: port resolve_relative_url from shell to C
 - Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 - Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init
 (this branch uses sb/submodule-helper-clone-regression-fix and sb/submodule-path-misc-bugs.)

 Update of "git submodule" to move pieces of logic to C continues.

 Will merge to 'next'.


* ad/commit-have-m-option (2016-04-07) 2 commits
  (merged to 'next' on 2016-04-13 at 74088c2)
 + commit: do not ignore an empty message given by -m ''
 + commit: --amend -m '' silently fails to wipe message

 "git commit" misbehaved in a few minor ways when an empty message
 is given via -m '', all of which has been corrected.

 Will merge to 'master'.


* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
  (merged to 'next' on 2016-04-13 at 2457462)
 + setup.c: do not feed NULL to "%.*s" even with precision 0

 Will merge to 'master'.


* dt/pre-refs-backend (2016-04-10) 24 commits
  (merged to 'next' on 2016-04-13 at 0a8f9dd)
 + refs: on symref reflog expire, lock symref not referrent
 + refs: move resolve_ref_unsafe into common code
 + show_head_ref(): check the result of resolve_ref_namespace()
 + check_aliased_update(): check that dst_name is non-NULL
 + checkout_paths(): remove unneeded flag variable
 + cmd_merge(): remove unneeded flag variable
 + fsck_head_link(): remove unneeded flag variable
 + read_raw_ref(): change flags parameter to unsigned int
 + files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
 + read_raw_ref(): manage own scratch space
 + files-backend: break out ref reading
 + resolve_ref_1(): eliminate local variable "bad_name"
 + resolve_ref_1(): reorder code
 + resolve_ref_1(): eliminate local variable
 + resolve_ref_unsafe(): ensure flags is always set
 + resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
 + resolve_missing_loose_ref(): simplify semantics
 + t1430: improve test coverage of deletion of badly-named refs
 + t1430: test for-each-ref in the presence of badly-named refs
 + t1430: don't rely on symbolic-ref for creating broken symrefs
 + t1430: clean up broken refs/tags/shadow
 + t1430: test the output and error of some commands more carefully
 + refs: move for_each_*ref* functions into common code
 + refs: move head_ref{,_submodule} to the common code

 Code restructuring around the "refs" area to prepare for pluggable
 refs backends.

 Will merge to 'master'.


* ky/imap-send (2016-04-13) 2 commits
  (merged to 'next' on 2016-04-13 at 52cf493)
 + imap-send: fix CRAM-MD5 response calculation
 + imap-send: check for NOLOGIN capability only when using LOGIN command

 Support for CRAM-MD5 authentication method in "git imap-send" did
 not work well.

 Will merge to 'master'.


* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
  (merged to 'next' on 2016-04-13 at 49d2643)
 + configure: remove checking for HMAC_CTX_cleanup
 + imap-send: avoid deprecated TLSv1_method()
 + imap-send: check NULL return of SSL_CTX_new()
 + imap-send: use HMAC() function provided by OpenSSL

 Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
 we use in imap-send, which has been adjusted for the change.

 Will merge to 'master'.


* jc/http-socks5h (2016-04-10) 1 commit
  (merged to 'next' on 2016-04-13 at eb27afc)
 + http: differentiate socks5:// and socks5h://

 The socks5:// proxy support added back in 2.6.4 days was not aware
 that socks5h:// proxies behave differently.

 Will merge to 'master'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* jk/do-not-printf-NULL (2016-04-10) 3 commits
  (merged to 'next' on 2016-04-13 at 60912e3)
 + git_config_set_multivar_in_file: handle "unset" errors
 + git_config_set_multivar_in_file: all non-zero returns are errors
 + config: lower-case first word of error strings

 "git config" had a codepath that tried to pass a NULL to
 printf("%s"), which nobody seems to have noticed.

 Will merge to 'master'.


* jk/use-write-script-more (2016-04-12) 3 commits
  (merged to 'next' on 2016-04-13 at d6718bf)
 + t3404: use write_script
 + t1020: do not overuse printf and use write_script
 + t5532: use write_script

 Code clean-up.

 Will merge to 'master'.


* nf/mergetool-prompt (2016-04-12) 2 commits
 - SQUASH???
 - difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Comments?  They looked all sensible to me.


* jc/drop-git-spec-in (2016-04-06) 1 commit
 - Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Will merge to 'next'.


* ew/send-email-readable-message-id (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 422959a)
 + send-email: more meaningful Message-ID

 "git send-email" now uses a more readable timestamps when
 formulating a message ID.

 Will merge to 'master'.


* st/verify-tag (2016-04-19) 6 commits
 - tag -v: verfy directly rather than exec-ing verify-tag
 - verify-tag: move tag verification code to tag.c
 - verify-tag: prepare verify_tag for libification
 - verify-tag: update variable name and type
 - t7030: test verifying multiple tags
 - builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Unify internal logic between "git tag -v" and "git verify-tag"
 commands by making one directly call into the other.

 Will merge to 'next'.


* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 180266c)
 + send-email: do not load Data::Dumper

 Code clean-up.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-12) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Rerolled but seems to lack jk/branch-shortening-funny-symrefs aka
 $gmane/291295 yet.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
  (merged to 'next' on 2016-04-13 at c6584bb)
 + submodule--helper, module_clone: catch fprintf failure
 + submodule--helper: do not borrow absolute_path() result for too long
 + submodule--helper, module_clone: always operate on absolute paths
 + submodule--helper clone: create the submodule path just once
 + submodule--helper: fix potential NULL-dereference
 + recursive submodules: test for relative paths
 (this branch is used by sb/submodule-init.)

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Will merge to 'master'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
  (merged to 'next' on 2016-04-18 at 9daa5ce)
 + t7407: make expectation as clear as possible
 + submodule update: test recursive path reporting from subdirectory
 + submodule update: align reporting path for custom command execution
 + submodule status: correct path handling in recursive submodules
 + submodule update --init: correct path handling in recursive submodules
 + submodule foreach: correct path display in recursive submodules
 (this branch is used by sb/submodule-init.)

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Will merge to 'master'.


* xy/format-patch-base (2016-04-12) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Review comments sent.
 ($gmane/291198)


* dt/index-helper (2016-04-14) 16 commits
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - index-helper: add watchman support to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
  (merged to 'next' on 2016-04-19 at 1352ede)
 + config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 On Cygwin, object creation uses the "create a temporary and then
 rename it to the final name" pattern, not "create a temporary,
 hardlink it to the final name and then unlink the temporary"
 pattern.

 This is necessary to use Git on Windows shared directories, and is
 already enabled for the MinGW and plain Windows builds.  It also
 has been used in Cygwin packaged versions of Git for quite a while.
 See http://thread.gmane.org/gmane.comp.version-control.git/291853

 Will merge to 'master'.
 ($gmane/275680, $gmane/291853).


* jc/rerere-multi (2016-04-06) 11 commits
  (merged to 'next' on 2016-04-13 at 3db2753)
 + rerere: adjust 'forget' to multi-variant world order
 + rerere: split code to call ll_merge() further
 + rerere: move code related to "forget" together
 + rerere: gc and clear
 + rerere: do use multiple variants
 + t4200: rerere a merge with two identical conflicts
 + rerere: allow multiple variants to exist
 + rerere: delay the recording of preimage
 + rerere: handle leftover rr-cache/$ID directory and postimage files
 + rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 + rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Will merge to 'master'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2008, #07; Sat, 23)
@ 2008-08-24  3:38  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-24  3:38 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

Here is a list of issues/topics we saw on the mailing list but haven't
resulted in anything queuable in 'pu' yet.  They need further work by
interested parties:

 * Windows relocatable install

   Steffen Prohaska ($gmane/92605), Johannes Sixt.

 * Haiku port

   Andreas Färber ($gmane/92582)

 * ksh "trap foo EXIT" triggers on function return, loses exit status

   Brandon Casey ($gmane/92873)

 * document webdav debugging tip with davfs2

   Giovanni Funchal ($gmane/92745)

 * update "rebase -i" documentation with examples

   Eric Hanchrow ($gmane/92669)

 * pre-push hook

   Scott Chacon ($gmane/92900, $gmane/92936)

 * "git commit --author=nickname" expanding nickname from somewhere

   Michael J Gruber ($gmane/93274)

 * Handling (possibly $HOME-) relative paths in config files

   Karl Chen ($gmane/93250)

 * "submodule sync"

   David Aguilar ($gmane/93265)

 * "rev-list --bisect --first-parent"

   Avery Pennarun, me ($gmane/93420)

 * "apply --include"

   Joe Perches ($gmane/93505)

----------------------------------------------------------------
[New Topics]

* bd/blame (Thu Aug 21 18:22:01 2008 -0500) 5 commits
 . Use xdiff caching to improve git blame performance
 . Allow xdiff machinery to cache hash results for a file
 . Always initialize xpparam_t to 0
 . Bypass textual patch generation and parsing in git blame
 . Allow alternate "low-level" emit function from xdl_diff

Réne had a good comments on how the callback is structured.

* jc/maint-name-hash-clear (Sat Aug 23 13:05:10 2008 -0700) 1 commit
 - discard_cache: reset lazy name_hash bit

I spotted this by accident while working on something unrelated.

When a program calls discard_cache() to read the index again, we do not
properly re-initialize the name_hash structure that is used by the case
insensitivitly logic.  This _might_ improve issues people may be having on
case insensitive filesystems.  I dunno.

* mv/maint-merge-fix (Sat Aug 23 12:56:57 2008 -0700) 1 commit
 + merge: fix numerus bugs around "trivial merge" area

* ml/submodule (Thu Aug 21 19:54:01 2008 -0400) 2 commits
 + git-submodule.sh - Remove trailing / from URL if found
 + git-submodule.sh - Remove trailing / from URL if found

Soon to be in 'master', I guess.

* np/verify-pack (Fri Aug 22 15:45:53 2008 -0400) 1 commit
 + discard revindex data when pack list changes

* jc/add-ita (Thu Aug 21 01:44:53 2008 -0700) 3 commits
 - git-add --intent-to-add (-N)
 - cached_object: learn empty blob
 - sha1_object_info(): pay attention to cached objects

Teaches "git add" to record only the intent to add a path later.
I think this is better done without the hardcoded empty blob object.

----------------------------------------------------------------
[Stalled -- Needs Action to Proceed (or to be dropped)]

* sb/daemon (Thu Aug 14 20:02:20 2008 +0200) 4 commits
 - git-daemon: rewrite kindergarden, new option --max-connections
 - git-daemon: Simplify dead-children reaping logic
 - git-daemon: use LOG_PID, simplify logging code
 - git-daemon: call logerror() instead of error()

Can somebody who actually runs the daemon standalone comment on this one?

* jc/cc-ld-dynpath (Sat Aug 16 15:01:23 2008 +0200) 2 commits
 - configure: auto detect dynamic library path switches
 - Makefile: Allow CC_LD_DYNPATH to be overriden

Needs success reports from people who do use user-defined dynamic library
path when they build their "git" before this series can go anywhere.

* lt/time-reject-fractional-seconds (Sat Aug 16 21:25:40 2008 -0700) 1 commit
 - date/time: do not get confused by fractional seconds

Linus hints further enhancements as "the right way", so let's see if
somebody else steps up and tries it before merging this to 'next'.

* sp/smart-http (Sun Aug 3 00:25:17 2008 -0700) 2 commits
 - [do not merge -- original version] Add Git-aware CGI for Git-aware
   smart HTTP transport
 - Add backdoor options to receive-pack for use in Git-aware CGI

The "magic" detection protocol was revised to use POST to info/refs; the
top one queued is from before that discussion.

----------------------------------------------------------------
[Actively Cooking]

* cc/bisect (Fri Aug 22 05:52:29 2008 +0200) 2 commits
 - bisect: only check merge bases when needed
 - bisect: test merge base if good rev is not an ancestor of bad rev

* mv/merge-recursive (Tue Aug 12 22:14:00 2008 +0200) 3 commits
 . Make builtin-revert.c use merge_recursive_generic()
 . merge-recursive.c: Add more generic merge_recursive_generic()
 . Split out merge_recursive() to merge-recursive.c

Miklos will be working on updates based on comments.

* lw/gitweb (Mon Aug 18 21:39:49 2008 +0200) 3 commits
 . gitweb: use new Git::Repo API, and add optional caching
 . add new Perl API: Git::Repo, Git::Commit, Git::Tag, and
   Git::RepoRoot
 . gitweb: add test suite with Test::WWW::Mechanize::CGI

Tentatively dropped as its tests do not seem to pass and I have no time to
look at them.

* jc/diff-prefix (Mon Aug 18 20:08:09 2008 -0700) 1 commit
 - diff: vary default prefix depending on what are compared

As some people may have noticed, I've been running with this one when
sending out "How about this" patches to the discussion threads.

* sp/missing-thin-base (Tue Aug 12 11:31:06 2008 -0700) 1 commit
 + pack-objects: Allow missing base objects when creating thin packs

* tr/filter-branch (Tue Aug 12 10:45:59 2008 +0200) 3 commits
 + filter-branch: use --simplify-merges
 + filter-branch: fix ref rewriting with --subdirectory-filter
 + filter-branch: Extend test to show rewriting bug

Fixes a longstanding filter branch bug.  Success stories?

* jc/post-simplify (Fri Aug 15 01:34:51 2008 -0700) 8 commits
 - revision --simplify-merges: incremental simplification
 - revision --simplify-merges: prepare for incremental simplification
 - revision --simplify-merges: make it a no-op without pathspec
 + revision --simplify-merges: do not leave commits unprocessed
 + revision --simplify-merges: use decoration instead of commit->util
   field
 + Topo-sort before --simplify-merges
 + revision traversal: show full history with merge simplification
 + revision.c: whitespace fix

"log --full-history" is with too much clutter, "log" itself is too cleverer
than some people, and here is the middle level of merge simplification.

I started making this incremental but the progress is not so great.

* tr/rev-list-docs (Tue Aug 12 01:55:37 2008 +0200) 1 commit
 + Documentation: rev-list-options: move --simplify-merges
   documentation

----------------------------------------------------------------
[Will merge to master soon]

* jc/no-slim-shell (Tue Aug 19 18:05:43 2008 -0700) 2 commits
 + Build-in "git-shell"
 + shell: do not play duplicated definition games to shrink the
   executable

* mv/merge-custom (Sat Aug 23 19:23:22 2008 -0700) 9 commits
 + t7606: fix custom merge test
 + Fix "git-merge -s bogo" help text
 + Update .gitignore to ignore git-help
 + Builtin git-help.
 + builtin-help: always load_command_list() in cmd_help()
 + Add a second testcase for handling invalid strategies in git-merge
 + Add a new test for using a custom merge strategy
 + builtin-merge: allow using a custom strategy
 + builtin-help: make some internal functions available to other
   builtins

The one at the tip fixes a test that assumed git-merge has a broken
"trivial merge" implementation.

* jc/add-addremove (Tue Jul 22 22:30:40 2008 -0700) 2 commits
 + builtin-add.c: optimize -A option and "git add ."
 + builtin-add.c: restructure the code for maintainability

* am/cherry-pick-rerere (Sun Aug 10 17:18:55 2008 +0530) 1 commit
 + Make cherry-pick use rerere for conflict resolution.

----------------------------------------------------------------
[On Hold]

* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits
 - git-am --forge: add Signed-off-by: line for the author
 - git-am: clean-up Signed-off-by: lines
 - stripspace: add --log-clean option to clean up signed-off-by:
   lines
 - stripspace: use parse_options()
 - Add "git am -s" test
 - git-am: refactor code to add signed-off-by line for the committer

* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit
 - "git push": tellme-more protocol extension

* jc/merge-whitespace (Sun Feb 24 23:29:36 2008 -0800) 1 commit
 - WIP: start teaching the --whitespace=fix to merge machinery

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output

* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
 + merge: remove deprecated summary and diffstat options and config
   variables

This was previously in "will be in master soon" category, but it turns out
that the synonyms to the ones this one deletes are fairly new invention
that happend in 1.5.6 timeframe, and we cannot do this just yet.  Perhaps
in 1.7.0.

* jc/dashless (Wed Jun 25 15:55:11 2008 -0700) 1 commit
 - Make clients ask for "git program" over ssh and local transport

This is the "botched" one.  Will be resurrected during 1.7.0 or 1.8.0
timeframe.

* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
 - diff: enable "too large a rename" warning when -M/-C is explicitly
   asked for

This would be the right thing to do for command line use, but gitk will be
hit due to tcl/tk's limitation, so I am holding this back for now.

----------------------------------------------------------------
[Graduated to "master"]

* ml/submodule-foreach (Sun Aug 10 19:10:04 2008 -0400) 1 commit
 + git-submodule - Add 'foreach' subcommand

* pm/log-exit-code (Mon Aug 11 08:46:25 2008 +0200) 2 commits
 + Teach git log --exit-code to return an appropriate exit code
 + Teach git log --check to return an appropriate exit code

* sb/commit-tree-minileak (Tue Aug 12 00:35:11 2008 +0200) 1 commit
 + Fix commit_tree() buffer leak

* pb/reflog-dwim (Sun Aug 10 22:22:21 2008 +0200) 1 commit
 + builtin-reflog: Allow reflog expire to name partial ref

* jc/add-stop-at-symlink (Mon Aug 4 00:52:37 2008 -0700) 2 commits
 + add: refuse to add working tree items beyond symlinks
 + update-index: refuse to add working tree items beyond symlinks

Fix for a longstanding bug that allows "git add" and "git update-index" to
add a path "a/b" to the index when "a" is a symbolic link.  We would need
a similar fix for the case where "a" is a submodule.

* kh/diff-tree (Sun Aug 10 18:13:04 2008 +0200) 4 commits
 + Add test for diff-tree --stdin with two trees
 + Teach git diff-tree --stdin to diff trees
 + diff-tree: Note that the commit ID is printed with --stdin
 + Refactoring: Split up diff_tree_stdin

* mg/count-objects (Fri Aug 15 00:20:20 2008 -0400) 1 commit
 + count-objects: Add total pack size to verbose output

This one is without the human readable bits.

* mz/push-verbose (Sat Aug 16 19:58:32 2008 +0200) 1 commit
 + Make push more verbose about illegal combination of options

* jc/index-extended-flags (Sat Aug 16 23:02:08 2008 -0700) 1 commit
 + index: future proof for "extended" index entries

* cc/merge-base-many (Sun Jul 27 13:47:22 2008 -0700) 4 commits
 + git-merge-octopus: use (merge-base A (merge B C D E...)) for
   stepwise merge
 + merge-base-many: add trivial tests based on the documentation
 + documentation: merge-base: explain "git merge-base" with more than
   2 args
 + merge-base: teach "git merge-base" to drive underlying
   merge_bases_many()

* js/parallel-test (Mon Aug 18 12:25:40 2008 -0400) 4 commits
 + Update t/.gitignore to ignore all trash directories
 + Enable parallel tests
 + tests: Clarify dependencies between tests, 'aggregate-results' and
   'clean'
 + t9700: remove useless check

* jc/test-deeper (Fri Aug 8 02:26:28 2008 -0700) 1 commit
 + tests: use $TEST_DIRECTORY to refer to the t/ directory

This does not actually move "t/test directory" any deeper, but fixes test
scripts that assume they run immediately below "t/" to use TEST_DIRECTORY
variable.

* js/mingw-stat (Mon Aug 18 22:01:06 2008 +0200) 2 commits
 + Revert "Windows: Use a customized struct stat that also has the
   st_blocks member."
 + compat: introduce on_disk_bytes()

This gets rid of use of st_blocks member (which is XSI but not POSIX
proper), which was originally prompted by recent Haiku port but it turns
out MinGW has the same issue as well.  Queued on 'pu' just to have a
chance to make sure I munged the version j6t sent me correctly before
merging it upwards.

* js/checkout-dwim-local (Sat Aug 9 16:00:12 2008 +0200) 1 commit
 + checkout --track: make up a sensible branch name if '-b' was
   omitted

Alex has update to dwim "checkout --track remotes/origin/hack" as well.

* bd/diff-strbuf (Wed Aug 13 23:18:22 2008 -0700) 3 commits
 + xdiff-interface: hide the whole "xdiff_emit_state" business from
   the caller
 + Use strbuf for struct xdiff_emit_state's remainder
 + Make xdi_diff_outf interface for running xdiff_outf diffs

Gives measurable performance improvement to textual diff generation.  For
improving "blame" performance, it might be more effective to hook directly
to lower level of xdiff machinery so that we do not even have to generate
patch only to discard after reading "@@ -l,k +m,n @@" lines, but that
would be a separate topic.

* dp/hash-literally (Sun Aug 3 18:36:22 2008 +0400) 6 commits
 + add --no-filters option to git hash-object
 + add --path option to git hash-object
 + use parse_options() in git hash-object
 + correct usage help string for git-hash-object
 + correct argument checking test for git hash-object
 + teach index_fd to work with pipes

Gives a bit more flexibility to hash-objects by allowing us to lie about
the path the contents comes from.

* rs/imap (Wed Jul 9 22:29:02 2008 +0100) 5 commits
 + Documentation: Improve documentation for git-imap-send(1)
 + imap-send.c: more style fixes
 + imap-send.c: style fixes
 + git-imap-send: Support SSL
 + git-imap-send: Allow the program to be run from subdirectories of
   a git tree

Some people seem to prefer having this feature available also with gnutls.
Such an enhancement can be done in-tree on top of this series if they are
so inclined.

* jk/pager-swap (Tue Jul 22 03:14:12 2008 -0400) 2 commits
 + spawn pager via run_command interface
 + run-command: add pre-exec callback

This changes the parent-child relationship between the pager and the git
process.  We used to make pager the parent which meant that the exit
status from git is lost from the caller.

* ph/enable-threaded (Mon Jul 21 11:23:43 2008 +0200) 1 commit
 + Enable threaded delta search on *BSD and Linux.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2018, #02; Thu, 17)
@ 2018-05-17  6:01  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-17  6:01 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* hn/sort-ls-remote (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 244ca5d30a)
 + ls-remote: create '--sort' option

 "git ls-remote" learned an option to allow sorting its output based
 on the refnames being shown.


* sb/object-store-replace (2018-04-12) 15 commits
  (merged to 'next' on 2018-04-25 at 9a213fb505)
 + replace-object: allow lookup_replace_object to handle arbitrary repositories
 + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
 + replace-object: allow prepare_replace_object to handle arbitrary repositories
 + refs: allow for_each_replace_ref to handle arbitrary repositories
 + refs: store the main ref store inside the repository struct
 + replace-object: add repository argument to lookup_replace_object
 + replace-object: add repository argument to do_lookup_replace_object
 + replace-object: add repository argument to prepare_replace_object
 + refs: add repository argument to for_each_replace_ref
 + refs: add repository argument to get_main_ref_store
 + replace-object: check_replace_refs is safe in multi repo environment
 + replace-object: eliminate replace objects prepared flag
 + object-store: move lookup_replace_object to replace-object.h
 + replace-object: move replace_map to object store
 + replace_object: use oidmap
 (this branch is used by sb/object-store-alloc and sb/oid-object-info.)

 The effort to pass the repository in-core structure throughout the
 API continues.  This round deals with the code that implements the
 refs/replace/ mechanism.


* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-30 at 23f875f6b9)
 + git-svn: avoid warning on undef readline()

 "git svn" had a minor thinko/typo which has been fixed.


* ab/nuke-emacs-contrib (2018-04-16) 1 commit
  (merged to 'next' on 2018-04-25 at 9b133d8a65)
 + git{,-blame}.el: remove old bitrotting Emacs code

 The scripts in contrib/emacs/ have outlived their usefulness and
 have been replaced with a stub that errors out and tells the user
 there are replacements.


* ab/simplify-perl-makefile (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at 906cf21682)
 + Makefile: mark perllibdir as a .PHONY target
  (merged to 'next' on 2018-04-17 at 4448756934)
 + perl: fix installing modules from contrib

 Recent simplification of build procedure forgot a bit of tweak to
 the build procedure of contrib/mw-to-git/


* bt/gpg-interface (2018-04-16) 7 commits
  (merged to 'next' on 2018-04-30 at 50c507b7d8)
 + gpg-interface: find the last gpg signature line
 + gpg-interface: extract gpg line matching helper
 + gpg-interface: fix const-correctness of "eol" pointer
 + gpg-interface: use size_t for signature buffer size
 + gpg-interface: modernize function declarations
 + gpg-interface: handle bool user.signingkey
 + t7004: fix mistaken tag name

 What is queued here is only the obviously correct and
 uncontroversial code clean-up part, which is an earlier 7 patches,
 of a larger series.

 The remainder that is not queued introduces a few configuration
 variables to deal with e-signature backends with different
 signature format.


* bw/protocol-v2 (2018-03-15) 35 commits
  (merged to 'next' on 2018-04-11 at 23ee234a2c)
 + remote-curl: don't request v2 when pushing
 + remote-curl: implement stateless-connect command
 + http: eliminate "# service" line when using protocol v2
 + http: don't always add Git-Protocol header
 + http: allow providing extra headers for http requests
 + remote-curl: store the protocol version the server responded with
 + remote-curl: create copy of the service name
 + pkt-line: add packet_buf_write_len function
 + transport-helper: introduce stateless-connect
 + transport-helper: refactor process_connect_service
 + transport-helper: remove name parameter
 + connect: don't request v2 when pushing
 + connect: refactor git_connect to only get the protocol version once
 + fetch-pack: support shallow requests
 + fetch-pack: perform a fetch using v2
 + upload-pack: introduce fetch server command
 + push: pass ref prefixes when pushing
 + fetch: pass ref prefixes when fetching
 + ls-remote: pass ref prefixes when requesting a remote's refs
 + transport: convert transport_get_remote_refs to take a list of ref prefixes
 + transport: convert get_refs_list to take a list of ref prefixes
 + connect: request remote refs using v2
 + ls-refs: introduce ls-refs server command
 + serve: introduce git-serve
 + test-pkt-line: introduce a packet-line test helper
 + protocol: introduce enum protocol_version value protocol_v2
 + transport: store protocol version
 + connect: discover protocol version outside of get_remote_heads
 + connect: convert get_remote_heads to use struct packet_reader
 + transport: use get_refs_via_connect to get refs
 + upload-pack: factor out processing lines
 + upload-pack: convert to a builtin
 + pkt-line: add delim packet support
 + pkt-line: allow peeking a packet line without consuming it
 + pkt-line: introduce packet_read_with_status
 (this branch is used by bw/server-options and jt/partial-clone-proto-v2.)

 The beginning of the next-gen transfer protocol.


* dj/runtime-prefix (2018-04-24) 7 commits
  (merged to 'next' on 2018-04-25 at e7e635a70e)
 + Makefile: quote $INSTLIBDIR when passing it to sed
 + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with js/runtime-prefix.)

 A build-time option has been added to allow Git to be told to refer
 to its associated files relative to the main binary, in the same
 way that has been possible on Windows for quite some time, for
 Linux, BSDs and Darwin.


* ds/commit-graph (2018-04-11) 16 commits
  (merged to 'next' on 2018-04-25 at 18af3d28d9)
 + commit-graph: implement "--append" option
 + commit-graph: build graph from starting commits
 + commit-graph: read only from specific pack-indexes
 + commit: integrate commit graph with commit parsing
 + commit-graph: close under reachability
 + commit-graph: add core.commitGraph setting
 + commit-graph: implement git commit-graph read
 + commit-graph: implement git-commit-graph write
 + commit-graph: implement write_commit_graph()
 + commit-graph: create git-commit-graph builtin
 + graph: add commit graph design document
 + commit-graph: add format document
 + csum-file: refactor finalize_hashfile() method
 + csum-file: rename hashclose() to finalize_hashfile()
 + Merge branch 'jk/cached-commit-buffer' into HEAD
 + Merge branch 'jt/binsearch-with-fanout' into HEAD
 (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)

 Precompute and store information necessary for ancestry traversal
 in a separate file to optimize graph walking.

 Will merge to 'master'.


* jc/parseopt-expiry-errors (2018-04-23) 2 commits
  (merged to 'next' on 2018-04-30 at 637085f3d8)
 + parseopt: handle malformed --expire arguments more nicely
 + gc: do not upcase error message shown with die()

 "git gc --prune=nonsense" spent long time repacking and then
 silently failed when underlying "git prune --expire=nonsense"
 failed to parse its command line.  This has been corrected.


* js/colored-push-errors (2018-04-24) 4 commits
  (merged to 'next' on 2018-04-30 at 31076c52a2)
 + config: document the settings to colorize push errors/hints
 + push: test to verify that push errors are colored
 + push: colorize errors
 + color: introduce support for colorizing stderr

 Error messages from "git push" can be painted for more visibility.


* js/empty-config-section-fix (2018-04-09) 15 commits
  (merged to 'next' on 2018-04-25 at 1690df3e5f)
 + git_config_set: reuse empty sections
 + git config --unset: remove empty sections (in the common case)
 + git_config_set: make use of the config parser's event stream
 + git_config_set: do not use a state machine
 + config_set_store: rename some fields for consistency
 + config: avoid using the global variable `store`
 + config: introduce an optional event stream while parsing
 + t1300: `--unset-all` can leave an empty section behind (bug)
 + t1300: add a few more hairy examples of sections becoming empty
 + t1300: remove unreasonable expectation from TODO
 + t1300: avoid relying on a bug
 + config --replace-all: avoid extra line breaks
 + t1300: demonstrate that --replace-all can "invent" newlines
 + t1300: rename it to reflect that `repo-config` was deprecated
 + git_config_set: fix off-by-two

 "git config --unset a.b", when "a.b" is the last variable in an
 otherwise empty section "a", left an empty section "a" behind, and
 worse yet, a subsequent "git config a.c value" did not reuse that
 empty shell and instead created a new one.  These have been
 (partially) corrected.


* js/ident-date-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at d50ec2f4c1)
 + sequencer: reset the committer date before commits

 During a "rebase -i" session, the code could give older timestamp
 to commits created by later "pick" than an earlier "reword", which
 has been corrected.


* js/runtime-prefix (2018-04-24) 8 commits
  (merged to 'next' on 2018-04-30 at c6cfccf40e)
 + Avoid multiple PREFIX definitions
 + git_setup_gettext: plug memory leak
 + gettext: avoid initialization if the locale dir is not present
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with dj/runtime-prefix.)


* ls/checkout-encoding (2018-04-16) 10 commits
  (merged to 'next' on 2018-04-25 at e0f8554b2a)
 + convert: add round trip check based on 'core.checkRoundtripEncoding'
 + convert: add tracing for 'working-tree-encoding' attribute
 + convert: check for detectable errors in UTF encodings
 + convert: add 'working-tree-encoding' attribute
 + utf8: add function to detect a missing UTF-16/32 BOM
 + utf8: add function to detect prohibited UTF-16/32 BOM
 + utf8: teach same_encoding() alternative UTF encoding names
 + strbuf: add a case insensitive starts_with()
 + strbuf: add xstrdup_toupper()
 + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()

 The new "checkout-encoding" attribute can ask Git to convert the
 contents to the specified encoding when checking out to the working
 tree (and the other way around when checking in).


* ma/double-dashes-in-docs (2018-04-18) 4 commits
  (merged to 'next' on 2018-04-25 at aaac2dc63c)
 + git-submodule.txt: quote usage in monospace, drop backslash
 + git-[short]log.txt: unify quoted standalone --
 + doc: convert [\--] to [--]
 + doc: convert \--option to --option

 Doc formatting updates.


* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
  (merged to 'next' on 2018-04-30 at f7fca02ab1)
 + fast-export: fix regression skipping some merge-commits

 "git fast-export" had a regression in v2.15.0 era where it skipped
 some merge commits in certain cases, which has been corrected.


* ma/http-walker-no-partial (2018-04-24) 2 commits
  (merged to 'next' on 2018-04-30 at 4582c99ba8)
 + walker: drop fields of `struct walker` which are always 1
 + http-fetch: make `-a` standard behavior

 "git http-fetch" (deprecated) had an optional and experimental
 "feature" to fetch only commits and/or trees, which nobody used.
 This has been removed.


* nd/submodule-status-fix (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 34d1f9ca83)
 + submodule--helper: don't print null in 'submodule status'

 "git submodule status" did not check the symbolic revision name it
 computed for the submodule HEAD is not the NULL, and threw it at
 printf routines, which has been corrected.


* nd/warn-more-for-devs (2018-04-16) 4 commits
  (merged to 'next' on 2018-04-25 at 2978e61414)
 + Makefile: add a DEVOPTS to get all of -Wextra
 + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
 + Makefile: detect compiler and enable more warnings in DEVELOPER=1
 + connect.c: mark die_initial_contact() NORETURN

 The build procedure "make DEVELOPER=YesPlease" learned to enable a
 bit more warning options depending on the compiler used to help
 developers more.  There also is "make DEVOPTS=tokens" knob
 available now, for those who want to help fixing warnings we
 usually ignore, for example.


* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 056bcaa69c)
 + ref-filter: libify get_ref_atom_value()
 + ref-filter: add return value to parsers
 + ref-filter: change parsing function error handling
 + ref-filter: add return value && strbuf to handlers
 + ref-filter: start adding strbufs with errors
 + ref-filter: add shortcut to work with strbufs

 Code restructuring, in preparation for further work.


* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
  (merged to 'next' on 2018-04-30 at 2a1fd8217e)
 + send-email: avoid duplicate In-Reply-To/References

 When fed input that already has In-Reply-To: and/or References:
 headers and told to add the same information, "git send-email"
 added these headers separately, instead of appending to an existing
 one, which is a violation of the RFC.  This has been corrected.


* sb/submodule-move-nested (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 86b177433a)
 + submodule: fixup nested submodules after moving the submodule
 + submodule-config: remove submodule_from_cache
 + submodule-config: add repository argument to submodule_from_{name, path}
 + submodule-config: allow submodule_free to handle arbitrary repositories
 + grep: remove "repo" arg from non-supporting funcs
 + submodule.h: drop declaration of connect_work_tree_and_git_dir

 Moving a submodule that itself has submodule in it with "git mv"
 forgot to make necessary adjustment to the nested sub-submodules;
 now the codepath learned to recurse into the submodules.


* sb/worktree-remove-opt-force (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 0367d52a4b)
 + worktree: accept -f as short for --force for removal

 "git worktree remove" learned that "-f" is a shorthand for
 "--force" option, just like for "git worktree add".


* sg/completion-clear-cached (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 9178da6c3d)
 + completion: reduce overhead of clearing cached --options

 The completion script (in contrib/) learned to clear cached list of
 command line options upon dot-sourcing it again in a more efficient
 way.


* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at bc3d1abf45)
 + docs/git-gc: fix minor rendering issue

 Doc formatting fix.


* so/glossary-ancestor (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 0a849fee00)
 + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

 Docfix.


* tb/config-default (2018-04-23) 3 commits
  (merged to 'next' on 2018-04-25 at 59bb6beb2a)
 + builtin/config: introduce `color` type specifier
 + config.c: introduce 'git_config_color' to parse ANSI colors
 + builtin/config: introduce `--default`
 (this branch uses tb/config-type.)

 "git config --get" learned the "--default" option, to help the
 calling script.  Building on top of the tb/config-type topic, the
 "git config" learns "--type=color" type.  Taken together, you can
 do things like "git config --get foo.color --default blue" and get
 the ANSI color sequence for the color given to foo.color variable,
 or "blue" if the variable does not exist.


* tb/config-type (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at fe69e93c82)
 + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
 + builtin/config.c: treat type specifiers singularly
 (this branch is used by tb/config-default.)

 The "git config" command uses separate options e.g. "--int",
 "--bool", etc. to specify what type the caller wants the value to
 be interpreted as.  A new "--type=<typename>" option has been
 introduced, which would make it cleaner to define new types.


* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
  (merged to 'next' on 2018-04-30 at 93d0af5375)
 + completion: make stash -p and alias for stash push -p
 + completion: stop showing 'save' for stash by default

 The command line completion (in contrib/) has been taught that "git
 stash save" has been deprecated ("git stash push" is the preferred
 spelling in the new world) and does not offer it as a possible
 completion candidate when "git stash push" can be.


* tq/t1510 (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 5710c81979)
 + t1510-repo-setup.sh: remove useless mkdir

 Test cleanup.


* tz/doc-git-urls-reference (2018-04-20) 1 commit
  (merged to 'next' on 2018-04-30 at 39926c99fd)
 + doc/clone: update caption for GIT URLS cross-reference

 Doc fix.

--------------------------------------------------
[New Topics]

* hn/sort-ls-remote (2018-05-14) 1 commit
  (merged to 'next' on 2018-05-16 at 64336850f2)
 + t5512: run git fetch inside test

 Hotfix.

 Will merge to 'master'.


* sb/object-store-replace (2018-05-10) 2 commits
  (merged to 'next' on 2018-05-16 at 41bbedcc81)
 + replace-object.c: remove the_repository from prepare_replace_object
 + object.c: free replace map in raw_object_store_clear

 Hotfix.

 Will merge to 'master'.


* sg/t6500-no-redirect-of-stdin (2018-05-09) 1 commit
 - t6050-replace: don't disable stdin for the whole test script

 Test cleanup.

 Will merge to 'next'.


* ao/config-api-doc (2018-05-11) 1 commit
 - doc: fix config API documentation about config_with_options

 Doc update.

 Will merge to 'next'.


* bc/hash-independent-tests (2018-05-16) 28 commits
 - t5300: abstract away SHA-1-specific constants
 - t4208: abstract away SHA-1-specific constants
 - t4045: abstract away SHA-1-specific constants
 - t4042: abstract away SHA-1-specific constants
 - t4205: sort log output in a hash-independent way
 - t/lib-diff-alternative: abstract away SHA-1-specific constants
 - t4030: abstract away SHA-1-specific constants
 - t4029: abstract away SHA-1-specific constants
 - t4029: fix test indentation
 - t4022: abstract away SHA-1-specific constants
 - t4020: abstract away SHA-1-specific constants
 - t4014: abstract away SHA-1-specific constants
 - t4008: abstract away SHA-1-specific constants
 - t4007: abstract away SHA-1-specific constants
 - t3905: abstract away SHA-1-specific constants
 - t3702: abstract away SHA-1-specific constants
 - t3103: abstract away SHA-1-specific constants
 - t2203: abstract away SHA-1-specific constants
 - t: skip pack tests if not using SHA-1
 - t4044: skip test if not using SHA-1
 - t1512: skip test if not using SHA-1
 - t1007: annotate with SHA1 prerequisite
 - t0000: annotate with SHA1 prerequisite
 - t: switch $_x40 to $OID_REGEX
 - t/test-lib: introduce OID_REGEX
 - t: switch $_z40 to $ZERO_OID
 - t/test-lib: introduce ZERO_OID
 - t/test-lib: add an SHA1 prerequisite

 Many tests hardcode the raw object names, which would change once
 we migrate away from SHA-1.  While some of them must test against
 exact object names, most of them do not have to use hardcoded
 constants in the test.  The latter kind of tests have been updated
 to test the moral equivalent of the original without hardcoding the
 actual object names.

 Will merge to 'next'.


* bp/status-rename-config (2018-05-13) 1 commit
 - add status config and command line options for rename detection
 (this branch uses em/status-rename-config.)

 "git status" learned to honor a new status.renames configuration to
 skip rename detection, which could be useful for those who want to
 do so without disabling the default rename detection done by the
 "git diff" command.

 Will merge to 'next'.


* bw/refspec-api (2018-05-16) 35 commits
 - submodule: convert push_unpushed_submodules to take a struct refspec
 - remote: convert check_push_refs to take a struct refspec
 - remote: convert match_push_refs to take a struct refspec
 - http-push: store refspecs in a struct refspec
 - transport: remove transport_verify_remote_names
 - send-pack: store refspecs in a struct refspec
 - transport: convert transport_push to take a struct refspec
 - push: convert to use struct refspec
 - push: check for errors earlier
 - remote: convert match_explicit_refs to take a struct refspec
 - remote: convert get_ref_match to take a struct refspec
 - remote: convert query_refspecs to take a struct refspec
 - remote: convert apply_refspecs to take a struct refspec
 - remote: convert get_stale_heads to take a struct refspec
 - fetch: convert prune_refs to take a struct refspec
 - fetch: convert get_ref_map to take a struct refspec
 - fetch: convert do_fetch to take a struct refspec
 - refspec: remove the deprecated functions
 - fetch: convert refmap to use struct refspec
 - fetch: convert fetch_one to use struct refspec
 - transport-helper: convert to use struct refspec
 - remote: convert fetch refspecs to struct refspec
 - remote: convert push refspecs to struct refspec
 - fast-export: convert to use struct refspec
 - clone: convert cmd_clone to use refspec_item_init
 - remote: convert match_push_refs to use struct refspec
 - remote: convert check_push_refs to use struct refspec
 - transport: convert transport_push to use struct refspec
 - pull: convert get_tracking_branch to use refspec_item_init
 - submodule--helper: convert push_check to use struct refspec
 - refspec: convert valid_fetch_refspec to use parse_refspec
 - refspec: introduce struct refspec
 - refspec: rename struct refspec to struct refspec_item
 - refspec: factor out parsing a single refspec
 - refspec: move refspec parsing logic into its own file

 An API update for handling of refspecs used by fetch & push
 codepath.

 Will merge to 'next'.


* ds/commit-graph-lockfile-fix (2018-05-11) 1 commit
 - commit-graph: fix UX issue when .lock file exists
 (this branch uses ds/generation-numbers and ds/lazy-load-trees.)

 Update to ds/generation-numbers topic.


* jk/apply-p-doc (2018-05-11) 1 commit
 - apply: clarify "-p" documentation

 Doc update.

 Will merge to 'next'.


* jk/unavailable-can-be-missing (2018-05-13) 4 commits
 - mark_parents_uninteresting(): avoid most allocation
 - mark_parents_uninteresting(): replace list with stack
 - mark_parents_uninteresting(): drop missing object check
 - mark_tree_contents_uninteresting(): drop missing object check

 Code clean-up to turn history traversal more robust in a
 semi-corrupt repository.

 Will merge to 'next'.


* lm/credential-netrc (2018-05-14) 2 commits
 - git-credential-netrc: accept gpg option
 - git-credential-netrc: adapt to test framework for git

 Update credential-netrc helper (in contrib/) to allow customizing
 the GPG used to decrypt the encrypted .netrc file.

 Will merge to 'next'.


* ma/create-pseudoref-with-null-old-oid (2018-05-13) 3 commits
 - refs: handle zero oid for pseudorefs
 - t1400: add tests around adding/deleting pseudorefs
 - refs.c: refer to "object ID", not "sha1", in error messages

 "git update-ref A B" is supposed to ensure that ref A does not yet
 exist when B is a NULL OID, but this check was not done correctly
 for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 Will merge to 'next'.


* ma/lockfile-cleanup (2018-05-10) 5 commits
 - lock_file: move static locks into functions
 - lock_file: make function-local locks non-static
 - refs.c: do not die if locking fails in `delete_pseudoref()`
 - refs.c: do not die if locking fails in `write_pseudoref()`
 - t/helper/test-write-cache: clean up lock-handling

 Code clean-up to adjust to a more recent lockfile API convention that
 allows lockfile instances kept on the stack.

 Will merge to 'next'.


* nd/commit-util-to-slab (2018-05-14) 14 commits
 - commit.h: delete 'util' field in struct commit
 - merge: use commit-slab in merge remote desc instead of commit->util
 - log: use commit-slab in prepare_bases() instead of commit->util
 - show-branch: use commit-slab for commit-name instead of commit->util
 - name-rev: use commit-slab for rev-name instead of commit->util
 - bisect.c: use commit-slab for commit weight instead of commit->util
 - revision.c: use commit-slab for show_source
 - sequencer.c: use commit-slab to associate todo items to commits
 - sequencer.c: use commit-slab to mark seen commits
 - shallow.c: use commit-slab for commit depth instead of commit->util
 - describe: use commit-slab for commit names instead of commit->util
 - blame: use commit-slab for blame suspects instead of commit->util
 - commit-slab: support shared commit-slab
 - commit-slab.h: code split

 The in-core "commit" object had an all-purpose "void *util" field,
 which was tricky to use especially in library-ish part of the
 code.  All of the existing uses of the field has been migrated to a
 more dedicated "commit-slab" mechanism and the field is eliminated.

 Will merge to 'next'.


* nd/diff-apply-ita (2018-05-14) 2 commits
 - apply: add --intent-to-add
 - diff: turn --ita-invisible-in-index on by default

 "git diff" compares the index and the working tree.  For paths
 added with intent-to-add bit, the command shows the full contents
 of them as added, but the paths themselves were not marked as new
 files.  They are now shown as new by default.

 "git apply" learned the "--intent-to-add" option so that an
 otherwise working-tree-only application of a patch will add new
 paths to the index marked with the "intent-to-add" bit.

 Will merge to and cook in 'next'.


* nd/pack-format-doc (2018-05-13) 1 commit
 - pack-format.txt: more details on pack file format

 Doc update.

 Will merge to 'next'.


* nd/pack-struct-commit (2018-05-13) 1 commit
 - commit.h: rearrange 'index' to shrink struct commit

 Memory optimization.

 Will merge to 'next'.


* nd/repo-clear-keep-the-index (2018-05-10) 1 commit
 - repository: fix free problem with repo_clear(the_repository)

 the_repository->index is not a allocated piece of memory but
 repo_clear() indiscriminately attempted to free(3) it, which has
 been corrected.

 Will merge to 'next'.


* nd/term-columns (2018-05-13) 2 commits
 - column: fix off-by-one default width
 - pager: set COLUMNS to term_columns()

 The code did not propagate the terminal width to subprocesses via
 COLUMNS environment variable, which it now does.  This caused
 trouble to "git column" helper subprocess when "git tag --column=row"
 tried to list the existing tags on a display with non-default width.

 Will merge to 'next'.


* nd/travis-gcc-7 (2018-05-14) 1 commit
 - travis-ci: run gcc-7 on linux-gcc jobs

 Developer support.  Use newer GCC on one of the builds done at
 TravisCI.org to get more warnings and errors diagnosed.

 Will merge to 'next'.


* rs/no-null-ptr-arith-in-fast-export (2018-05-10) 1 commit
 - fast-export: avoid NULL pointer arithmetic

 Code clean-up to avoid non-standard-conformant pointer arithmetic.

 Will merge to 'next'.


* sb/grep-die-on-unreadable-index (2018-05-16) 1 commit
 - grep: handle corrupt index files early


* sb/object-store-grafts (2018-05-16) 19 commits
 - commit: allow lookup_commit_graft to handle arbitrary repositories
 - commit: allow prepare_commit_graft to handle arbitrary repositories
 - shallow: migrate shallow information into the object parser
 - path.c: migrate git_path_ to take a repository argument
 - cache: convert get_graft_file to handle arbitrary repositories
 - commit: convert read_graft_file to handle arbitrary repositories
 - commit: convert register_commit_graft to handle arbitrary repositories
 - commit: convert commit_graft_pos() to handle arbitrary repositories
 - shallow: add repository argument to is_repository_shallow
 - shallow: add repository argument to check_shallow_file_for_update
 - shallow: add repository argument to register_shallow
 - shallow: add repository argument to set_alternate_shallow_file
 - commit: add repository argument to lookup_commit_graft
 - commit: add repository argument to prepare_commit_graft
 - commit: add repository argument to read_graft_file
 - commit: add repository argument to register_commit_graft
 - commit: add repository argument to commit_graft_pos
 - object: move grafts to object parser
 - object-store: move object access functions to object-store.h
 (this branch uses sb/object-store-alloc and sb/oid-object-info.)


* sb/submodule-merge-in-merge-recursive (2018-05-16) 3 commits
 - merge-recursive: give notice when submodule commit gets fast-forwarded
 - merge-recursive: i18n submodule merge output and respect verbosity
 - submodule.c: move submodule merging to merge-recursive.c

 By code restructuring of submodule merge in merge-recursive,
 informational messages from the codepath are now given using the
 same mechanism as other output, and honor the merge.verbosity
 configuration.  The code also learned to give a few new messages
 when a submodule three-way merge resolves cleanly when one side
 records a descendant of the commit chosen by the other side.

 Will merge to 'next'.


* sb/submodule-update-try-harder (2018-05-16) 1 commit
 - git-submodule.sh: try harder to fetch a submodule

 "git submodule update" attempts two different kinds of "git fetch"
 against the upstream repository to grab a commit bound at the
 submodule's path, but it incorrectly gave up if the first kind
 (i.e. a normal fetch) failed, making the second "last resort" one
 (i.e. fetching an exact commit object by object name) ineffective.
 This has been corrected.

 Will merge to 'next'.


* sg/t5310-jgit-bitmap-test (2018-05-11) 1 commit
 - t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX

 Test update.

 Will merge to 'next'.


* sg/t5516-fixes (2018-05-11) 2 commits
 - t5516-fetch-push: fix broken &&-chain
 - t5516-fetch-push: fix 'push with dry-run' test

 Test fixes.

 Will merge to 'next'.


* sg/t7005-spaces-in-filenames-cleanup (2018-05-15) 1 commit
 - t7005-editor: get rid of the SPACES_IN_FILENAMES prereq

 Test update.

 Will merge to 'next'.


* tb/grep-only-matching (2018-05-14) 2 commits
 - builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
 - grep.c: extract show_line_header()
 (this branch uses tb/grep-column.)

--------------------------------------------------
[Stalled]

* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
 - block alloc: add validations around cache_entry lifecyle
 - block alloc: allocate cache entries from mem_pool
 - mem-pool: fill out functionality
 - block alloc: add lifecycle APIs for cache_entry structs
 - read-cache: teach refresh_cache_entry() to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 Needs review.
 Is the "caller always knows which pool an entry came from and calls
 the right kind of free" a feasible approach?
 Oh, another thing, there is "lifecyle" typo in the title.


* ab/fetch-tags-noclobber (2018-05-16) 9 commits
 - fixup! push tests: assert re-pushing annotated tags
 - fetch: stop clobbering existing tags without --force
 - fetch tests: add a test clobbering tag behavior
 - fetch tests: correct a comment "remove it" -> "remove them"
 - push doc: correct lies about how push refspecs work
 - push tests: assert re-pushing annotated tags
 - push tests: add more testing for forced tag pushing
 - push tests: fix logic error in "push" test assertion
 - push tests: remove redundant 'git push' invocation

 Expecting a reboot of the discussion to take it to some conclusion
 and then a reroll.
 cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
 cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
 cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
 cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>


* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* jh/json-writer (2018-03-28) 1 commit
 - json_writer: new routines to create data in JSON format

 Preparatory code to later add json output for unspecified telemetry
 data.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* is/parsing-line-range (2018-04-27) 2 commits
 . log: prevent error if line range ends past end of file
 . blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Seems to break a few tests.


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* mk/http-backend-content-length (2017-11-27) 4 commits
 - SQUASH???
 - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
 - SQUASH???
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.

 Expecting a reroll.
 Suggested fixes to be used when rerolling is queued, but I'd
 prefer _not_ squashing them myself.

 Also, it may be too complex solution for the problem.
 cf. <20171204171308.GA13332@sigill.intra.peff.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* ld/p4-unshelve (2018-05-16) 1 commit
 - git-p4: add unshelve command

 "git p4" learned to "unshelve" shelved commit from P4.

 Will merge to 'next'.


* pc/submodule-helper-foreach (2018-05-11) 4 commits
 - submodule: port submodule subcommand 'foreach' from shell to C
 - submodule foreach: document variable '$displaypath'
 - submodule foreach: document '$sm_path' instead of '$path'
 - submodule foreach: correct '$path' in nested submodules from a subdirectory

 The bulk of "git submodule foreach" has been rewritten in C.

 Will merge to and cook in 'next'.


* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
  (merged to 'next' on 2018-05-16 at feabe72b42)
 + test: correct detection of UTF8_NFD_TO_NFC for APFS

 A test to see if the filesystem normalizes UTF-8 filename has been
 updated to check what we need to know in a more direct way, i.e. a
 path created in NFC form can be accessed with NFD form (or vice
 versa) to cope with APFS as well as HFS.

 Will merge to 'master'.


* ab/get-short-oid (2018-05-11) 5 commits
 - get_short_oid: sort ambiguous objects by type, then SHA-1
 - sha1-name.c: move around the collect_ambiguous() function
 - git-p4: change "commitish" typo to "committish"
 - sha1-array.h: align function arguments
 - sha1-name.c: remove stray newline

 When a short hexadecimal string is used to name an object but there
 are multiple objects that share the string as the prefix of their
 names, the code lists these ambiguous candidates in a help message.
 These object names are now sorted according to their types for
 easier eyeballing.

 Will merge to 'next'.


* ah/misc-doc-updates (2018-05-06) 7 commits
  (merged to 'next' on 2018-05-16 at e2e3b68a66)
 + doc: normalize [--options] to [options] in git-diff
 + doc: add note about shell quoting to revision.txt
 + git-svn: remove ''--add-author-from' for 'commit-diff'
 + doc: add '-d' and '-o' for 'git push'
 + doc: clarify ignore rules for git ls-files
 + doc: align 'diff --no-index' in text and synopsis
 + doc: improve formatting in githooks.txt

 Misc doc fixes.

 Will merge to 'master'.


* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
  (merged to 'next' on 2018-05-16 at fa1ffeb3fe)
 + format-patch: make cover letters always text/plain

 "git format-patch --cover --attach" created a broken MIME multipart
 message for the cover letter, which has been fixed by keeping the
 cover letter as plain text file.

 Will merge to 'master'.


* bp/test-drop-caches (2018-05-04) 1 commit
  (merged to 'next' on 2018-05-16 at 0e40ab2408)
 + test-drop-caches: simplify delay loading of NtSetSystemInformation

 Code simplification.

 Will merge to 'master'.


* cc/perf-bisect (2018-05-06) 1 commit
  (merged to 'next' on 2018-05-16 at 5a078a2fdf)
 + perf/bisect_run_script: disable codespeed

 Performance test updates.

 Will merge to 'master'.


* cf/submodule-progress-dissociate (2018-05-04) 3 commits
 - submodule: add --dissociate option to add/update commands
 - submodule: add --progress option to add command
 - submodule: clean up subsititions in script

 "git submodule update" and "git submodule add" supported the
 "--reference" option to borrow objects from a neighbouring local
 repository like "git clone" does, but lacked the more recent
 invention "--dissociate".  Also "git submodule add" has been taught
 to take the "--progress" option.

 Will merge to 'next'..
 "subsititions" needs to be typofixed ;-)
 


* dd/send-email-reedit (2018-05-06) 1 commit
 - git-send-email: allow re-editing of message

 "git send-email" can sometimes offer confirmation dialog "Send this
 email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
 'Edit' has been added to this dialog's choice.

 Will merge to 'next'.


* em/status-rename-config (2018-05-06) 1 commit
  (merged to 'next' on 2018-05-16 at 33c1cc093c)
 + wt-status: use settings from git_diff_ui_config
 (this branch is used by bp/status-rename-config.)

 "git status" learned to pay attention to UI related diff
 configuration variables such as diff.renames.

 Will merge to 'master'.


* js/branch-diff (2018-05-16) 19 commits
 - fixup! Add a function to solve least-cost assignment problems
 - completion: support branch-diff
 - branch-diff: add a man page
 - branch-diff --dual-color: work around bogus white-space warning
 - branch-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: provide inverted colors, too
 - branch-diff: use color for the commit pairs
 - branch-diff: add tests
 - branch-diff: do not show "function names" in hunk headers
 - branch-diff: adjust the output of the commit pairs
 - branch-diff: suppress the diff headers
 - branch-diff: indent the diffs just like tbdiff
 - branch-diff: right-trim commit messages
 - branch-diff: also show the diff between patches
 - branch-diff: improve the order of the shown commits
 - branch-diff: first rudimentary implementation
 - Add a new builtin: branch-diff
 - Add a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 Expecting a reroll.
 cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>


* js/sequencer-and-root-commits (2018-05-06) 6 commits
 - rebase --rebase-merges: root commits can be cousins, too
 - rebase --rebase-merges: a "merge" into a new root is a fast-forward
 - sequencer: allow introducing new root commits
 - rebase -i --root: let the sequencer handle even the initial part
 - sequencer: learn about the special "fake root commit" handling
 - sequencer: extract helper to update active_cache_tree
 (this branch uses js/rebase-recreate-merge.)

 The implementation of "git rebase -i --root" has been updated to use
 the sequencer machinery more.

 Will merge to 'next'.


* js/use-bug-macro (2018-05-10) 5 commits
 - BUG_exit_code: fix sparse "symbol not declared" warning
 - Convert remaining die*(BUG) messages
 - Replace all die("BUG: ...") calls by BUG() ones
 - run-command: use BUG() to report bugs, not die()
 - test-tool: help verifying BUG() code paths

 Developer support update, by using BUG() macro instead of die() to
 mark codepaths that should not happen more clearly.

 Will merge to 'next'.
 Further updates can come on top later.
 cf. <20180507090109.GA367@sigill.intra.peff.net>


* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
 - {fetch,upload}-pack: support filter in protocol v2
 - upload-pack: read config when serving protocol v2
 - upload-pack: fix error message typo
 - Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2

 Transfer protocol v2 learned to support the partial clone.

 Will merge to 'next'.


* ma/doc-expand-tabs (2018-05-02) 1 commit
 - revisions.txt: expand tabs to spaces in diagram

 Fix one instance of asciidoctor's misformatting by expanding a tab
 into spaces in a literal block.

 Will discard.  This approach is less maintainable than the approach
 taken by bc/asciidoctor-tab-width topic.


* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
  (merged to 'next' on 2018-05-16 at 045e4ac190)
 + completion: fix misspelled config key aliasesfiletype

 Typofix.

 Will merge to 'master'.


* nd/doc-header (2018-05-02) 1 commit
  (merged to 'next' on 2018-05-16 at 0599eb3ec9)
 + doc: keep first level section header in upper case

 Doc formatting fix.

 Will merge to 'master'.


* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
  (merged to 'next' on 2018-05-16 at c4bf977564)
 + pack-objects: validation and documentation about unreachable options

 Doc update.

 Will merge to 'master'.


* sb/object-store-alloc (2018-05-16) 13 commits
 - alloc: allow arbitrary repositories for alloc functions
 - object: allow create_object to handle arbitrary repositories
 - object: allow grow_object_hash to handle arbitrary repositories
 - alloc: add repository argument to alloc_commit_index
 - alloc: add repository argument to alloc_report
 - alloc: add repository argument to alloc_object_node
 - alloc: add repository argument to alloc_tag_node
 - alloc: add repository argument to alloc_commit_node
 - alloc: add repository argument to alloc_tree_node
 - alloc: add repository argument to alloc_blob_node
 - object: add repository argument to grow_object_hash
 - object: add repository argument to create_object
 - repository: introduce parsed objects field
 (this branch is used by sb/object-store-grafts; uses sb/oid-object-info.)

 The conversion to pass "the_repository" and then "a_repository"
 throughout the object access API continues.


* tb/grep-column (2018-05-14) 7 commits
 - contrib/git-jump/git-jump: jump to match column in addition to line
 - grep.c: add configuration variables to show matched option
 - builtin/grep.c: add '--column' option to 'git-grep(1)'
 - grep.c: display column number of first match
 - grep.[ch]: extend grep_opt to allow showing matched column
 - grep.c: expose matched column in match_line()
 - Documentation/config.txt: camel-case lineNumber for consistency
 (this branch is used by tb/grep-only-matching.)

 "git grep" learned the "--column" option that gives not just the
 line number but the column number of the hit.


* bc/asciidoctor-tab-width (2018-05-07) 2 commits
  (merged to 'next' on 2018-05-16 at be2a42c473)
 + Documentation: render revisions correctly under Asciidoctor
 + Documentation: use 8-space tabs with Asciidoctor

 Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
 render illustration in a literal block correctly when indented with
 HT by default. The problem is fixed by forcing 8-space tabs.

 Will merge to 'master'.


* bc/mailmap-self (2018-05-08) 1 commit
  (merged to 'next' on 2018-05-16 at a009c64bd2)
 + mailmap: update brian m. carlson's email address

 Will merge to 'master'.


* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
  (merged to 'next' on 2018-05-08 at db7d2870f8)
 + perf/aggregate: use Getopt::Long for option parsing

 Perf-test helper updates.

 Will merge to 'master'.


* ab/perl-python-attrs (2018-04-27) 3 commits
  (merged to 'next' on 2018-05-08 at b440e9bbb9)
 + .gitattributes: add a diff driver for Python
 + .gitattributes: use the "perl" differ for Perl
 + .gitattributes: add *.pl extension for Perl

 We learned that our source files with ".pl" and ".py" extensions
 are Perl and Python files respectively and changes to them are
 better viewed as such with appropriate diff drivers.

 Will merge to 'master'.


* js/test-unset-prereq (2018-04-30) 1 commit
  (merged to 'next' on 2018-05-08 at 3aecbf25a3)
 + tests: introduce test_unset_prereq, for debugging

 Test debugging aid.

 Will merge to 'master'.
 cf. <20180507115950.3887-1-szeder.dev@gmail.com>


* fg/completion-external (2018-05-07) 1 commit
  (merged to 'next' on 2018-05-16 at 5d83f92caf)
 + completion: load completion file for external subcommand

 The command line completion mechanism (in contrib/) learned to load
 custom completion file for "git $command" where $command is a
 custom "git-$command" that the end user has on the $PATH when using
 newer version of bash.

 Will merge to 'master'.
 cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>


* js/deprecate-grafts (2018-04-30) 12 commits
  (merged to 'next' on 2018-05-08 at 1d7b31d179)
 + Remove obsolete script to convert grafts to replace refs
 + technical/shallow: describe why shallow cannot use replace refs
 + technical/shallow: stop referring to grafts
 + filter-branch: stop suggesting to use grafts
 + Deprecate support for .git/info/grafts
 + Add a test for `git replace --convert-graft-file`
 + replace: introduce --convert-graft-file
 + replace: prepare create_graft() for converting graft files wholesale
 + replace: "libify" create_graft() and callees
 + replace: avoid using die() to indicate a bug
 + commit: Let the callback of for_each_mergetag return on error
 + argv_array: offer to split a string by whitespace

 The functionality of "$GIT_DIR/info/grafts" has been superseded by
 the "refs/replace/" mechanism for some time now, but the internal
 code had support for it in many places, which has been cleaned up
 in order to drop support of the "grafts" mechanism.

 Will merge to 'master'.


* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
  (merged to 'next' on 2018-05-08 at 7e684c153d)
 + rebase --skip: clean up commit message after a failed fixup/squash
 + sequencer: always commit without editing when asked for
 + rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
 + rebase -i: demonstrate bugs with fixup!/squash! commit messages

 "git rebase -i" sometimes left intermediate "# This is a
 combination of N commits" message meant for the human consumption
 inside an editor in the final result in certain corner cases, which
 has been fixed.

 Will merge to 'master'.


* bw/server-options (2018-04-24) 4 commits
  (merged to 'next' on 2018-05-08 at a18ce56f3c)
 + fetch: send server options when using protocol v2
 + ls-remote: send server options when using protocol v2
 + serve: introduce the server-option capability
 + Merge branch 'bw/protocol-v2' into HEAD

 The transport protocol v2 is getting updated further.

 Will merge to 'master'.


* bc/object-id (2018-05-02) 42 commits
 - merge-one-file: compute empty blob object ID
 - add--interactive: compute the empty tree value
 - Update shell scripts to compute empty tree object ID
 - sha1_file: only expose empty object constants through git_hash_algo
 - dir: use the_hash_algo for empty blob object ID
 - sequencer: use the_hash_algo for empty tree object ID
 - cache-tree: use is_empty_tree_oid
 - sha1_file: convert cached object code to struct object_id
 - builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
 - builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
 - wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
 - submodule: convert several uses of EMPTY_TREE_SHA1_HEX
 - sequencer: convert one use of EMPTY_TREE_SHA1_HEX
 - merge: convert empty tree constant to the_hash_algo
 - builtin/merge: switch tree functions to use object_id
 - builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
 - sha1-file: add functions for hex empty tree and blob OIDs
 - builtin/receive-pack: avoid hard-coded constants for push certs
 - diff: specify abbreviation size in terms of the_hash_algo
 - upload-pack: replace use of several hard-coded constants
 - revision: replace use of hard-coded constants
 - http: eliminate hard-coded constants
 - dir: convert struct untracked_cache_dir to object_id
 - commit: convert uses of get_sha1_hex to get_oid_hex
 - index-pack: abstract away hash function constant
 - pack-redundant: convert linked lists to use struct object_id
 - Update struct index_state to use struct object_id
 - split-index: convert struct split_index to object_id
 - submodule-config: convert structures to object_id
 - fsck: convert static functions to struct object_id
 - tree-walk: convert get_tree_entry_follow_symlinks to object_id
 - tree-walk: avoid hard-coded 20 constant
 - pack-redundant: abstract away hash algorithm
 - pack-objects: abstract away hash algorithm
 - packfile: abstract away hash constant values
 - packfile: convert find_pack_entry to object_id
 - sha1-file: convert freshen functions to object_id
 - packfile: convert has_sha1_pack to object_id
 - packfile: remove unused member from struct pack_entry
 - Remove unused member in struct object_context
 - server-info: remove unused members from struct pack_info
 - cache: add a function to read an object ID from a buffer

 Conversion from uchar[20] to struct object_id continues.

 Will merge to 'next'.


* sb/oid-object-info (2018-04-26) 9 commits
  (merged to 'next' on 2018-05-08 at f3c08f298e)
 + cache.h: allow oid_object_info to handle arbitrary repositories
 + packfile: add repository argument to cache_or_unpack_entry
 + packfile: add repository argument to unpack_entry
 + packfile: add repository argument to read_object
 + packfile: add repository argument to packed_object_info
 + packfile: add repository argument to packed_to_object_type
 + packfile: add repository argument to retry_bad_packed_offset
 + cache.h: add repository argument to oid_object_info
 + cache.h: add repository argument to oid_object_info_extended
 (this branch is used by sb/object-store-alloc and sb/object-store-grafts.)

 The codepath around object-info API has been taught to take the
 repository object (which in turn tells the API which object store
 the objects are to be located).

 Will merge to 'master'.


* en/unpack-trees-split-index-fix (2018-05-02) 1 commit
  (merged to 'next' on 2018-05-16 at 1adff065b2)
 + unpack_trees: fix breakage when o->src_index != o->dst_index

 The split-index feature had a long-standing and dormant bug in
 certain use of the in-core merge machinery, which has been fixed.

 Will merge to 'master'.
 cf. <CACsJy8CeDhrT9GXe9q5gqsAeq_sSQ8jyF2nMOFxzjwKtE31oPQ@mail.gmail.com>


* bp/merge-rename-config (2018-05-08) 3 commits
 - merge: pass aggressive when rename detection is turned off
 - merge: add merge.renames config setting
 - merge: update documentation for {merge,diff}.renameLimit
 (this branch uses en/rename-directory-detection-reboot.)

 With merge.renames configuration set to false, the recursive merge
 strategy can be told not to spend cycles trying to find renamed
 paths and merge them accordingly.

 Will merge to 'next'.


* en/git-debugger (2018-04-25) 1 commit
  (merged to 'next' on 2018-05-08 at 73369cd1e5)
 + Make running git under other debugger-like programs easy

 Dev support.

 Will merge to 'master'.


* js/no-pager-shorthand (2018-05-04) 1 commit
  (merged to 'next' on 2018-05-08 at 10e6031dd1)
 + git: add -P as a short option for --no-pager

 "git --no-pager cmd" did not have short-and-sweet single letter
 option. Now it does.

 Will merge to 'master'.


* sb/diff-color-move-more (2018-04-25) 7 commits
 - diff.c: add --color-moved-ignore-space-delta option
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.

 Will merge to 'next'.


* ds/generation-numbers (2018-05-02) 11 commits
 - commit-graph.txt: update design document
 - merge: check config before loading commits
 - commit: use generation number in remove_redundant()
 - commit: add short-circuit to paint_down_to_common()
 - commit: use generation numbers for in_merge_bases()
 - ref-filter: use generation number for --contains
 - commit-graph: always load commit-graph information
 - commit: use generations in paint_down_to_common()
 - commit-graph: compute generation numbers
 - commit: add generation number to struct commmit
 - ref-filter: fix outdated comment on in_commit_list
 (this branch is used by ds/commit-graph-lockfile-fix; uses ds/lazy-load-trees.)

 A recently added "commit-graph" datafile has learned to store
 pre-computed generation numbers to speed up the decisions to stop
 history traversal.

 Is this ready for 'next' with ds/commit-graph-lockfile-fix?
 A commit with triple 'm' needs its title amended, though.


* en/rename-directory-detection-reboot (2018-05-08) 36 commits
  (merged to 'next' on 2018-05-08 at be350ebc17)
 + merge-recursive: fix check for skipability of working tree updates
 + merge-recursive: make "Auto-merging" comment show for other merges
 + merge-recursive: fix remainder of was_dirty() to use original index
 + merge-recursive: fix was_tracked() to quit lying with some renamed paths
 + t6046: testcases checking whether updates can be skipped in a merge
 + merge-recursive: avoid triggering add_cacheinfo error with dirty mod
 + merge-recursive: move more is_dirty handling to merge_content
 + merge-recursive: improve add_cacheinfo error handling
 + merge-recursive: avoid spurious rename/rename conflict from dir renames
 + directory rename detection: new testcases showcasing a pair of bugs
 + merge-recursive: fix remaining directory rename + dirty overwrite cases
 + merge-recursive: fix overwriting dirty files involved in renames
 + merge-recursive: avoid clobbering untracked files with directory renames
 + merge-recursive: apply necessary modifications for directory renames
 + merge-recursive: when comparing files, don't include trees
 + merge-recursive: check for file level conflicts then get new name
 + merge-recursive: add computation of collisions due to dir rename & merging
 + merge-recursive: check for directory level conflicts
 + merge-recursive: add get_directory_renames()
 + merge-recursive: make a helper function for cleanup for handle_renames
 + merge-recursive: split out code for determining diff_filepairs
 + merge-recursive: make !o->detect_rename codepath more obvious
 + merge-recursive: fix leaks of allocated renames and diff_filepairs
 + merge-recursive: introduce new functions to handle rename logic
 + merge-recursive: move the get_renames() function
 + directory rename detection: tests for handling overwriting dirty files
 + directory rename detection: tests for handling overwriting untracked files
 + directory rename detection: miscellaneous testcases to complete coverage
 + directory rename detection: testcases exploring possibly suboptimal merges
 + directory rename detection: more involved edge/corner testcases
 + directory rename detection: testcases checking which side did the rename
 + directory rename detection: files/directories in the way of some renames
 + directory rename detection: partially renamed directory testcase/discussion
 + directory rename detection: testcases to avoid taking detection too far
 + directory rename detection: directory splitting testcases
 + directory rename detection: basic testcases
 (this branch is used by bp/merge-rename-config.)

 Rename detection logic in "diff" family that is used in "merge" has
 learned to guess when all of x/a, x/b and x/c have moved to z/a,
 z/b and z/c, it is likely that x/d added in the meantime would also
 want to move to z/d by taking the hint that the entire directory
 'x' moved to 'z'.  A bug causing dirty files involved in a rename
 to be overwritten during merge has also been fixed as part of this
 work.  Incidentally, this also avoids updating a file in the
 working tree after a (non-trivial) merge whose result matches what
 our side originally had.

 Will merge to 'master'.


* nd/command-list (2018-05-10) 13 commits
 - completion: allow to customize the completable command list
 - completion: let git provide the completable command list
 - command-list.txt: documentation and guide line
 - help: use command-list.txt for the source of guides
 - help: add "-a --verbose" to list all commands with synopsis
 - git: support --list-cmds=list-<category>
 - completion: implement and use --list-cmds=main,others
 - git --list-cmds: collect command list in a string_list
 - git.c: convert --list-* to --list-cmds=*
 - Remove common-cmds.h
 - help: use command-list.h for common command list
 - generate-cmds.sh: export all commands to command-list.h
 - generate-cmds.sh: factor out synopsis extract code

 The list of commands with their various attributes were spread
 across a few places in the build procedure, but it now is getting a
 bit more consolidated to allow more automation.

 Will merge to 'next'.


* sg/complete-paths (2018-04-17) 11 commits
  (merged to 'next' on 2018-05-08 at 2a11444f90)
 + completion: fill COMPREPLY directly when completing paths
 + completion: improve handling quoted paths in 'git ls-files's output
 + completion: remove repeated dirnames with 'awk' during path completion
 + t9902-completion: ignore COMPREPLY element order in some tests
 + completion: use 'awk' to strip trailing path components
 + completion: let 'ls-files' and 'diff-index' filter matching paths
 + completion: improve handling quoted paths on the command line
 + completion: support completing non-ASCII pathnames
 + completion: simplify prefix path component handling during path completion
 + completion: move __git_complete_index_file() next to its helpers
 + t9902-completion: add tests demonstrating issues with quoted pathnames

 Command line completion (in contrib/) learned to complete pathnames
 for various commands better.

 Will merge to 'master'.


* sb/blame-color (2018-04-24) 3 commits
 - builtin/blame: add new coloring scheme config
 - builtin/blame: highlight recently changed lines
 - builtin/blame: dim uninteresting metadata lines

 "git blame" learns to unhighlight uninteresting metadata from the
 originating commit on lines that are the same as the previous one,
 and also paint lines in different colors depending on the age of
 the commit.

 Will merge to 'next'.


* ds/lazy-load-trees (2018-05-02) 6 commits
  (merged to 'next' on 2018-05-02 at d54016d9e3)
 + coccinelle: avoid wrong transformation suggestions from commit.cocci
  (merged to 'next' on 2018-04-25 at b90813f421)
 + commit-graph: lazy-load trees for commits
 + treewide: replace maybe_tree with accessor methods
 + commit: create get_commit_tree() method
 + treewide: rename tree to maybe_tree
 + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
 (this branch is used by ds/commit-graph-lockfile-fix and ds/generation-numbers.)

 The code has been taught to use the duplicated information stored
 in the commit-graph file to learn the tree object name for a commit
 to avoid opening and parsing the commit object when it makes sense
 to do so.

 Will merge to 'master'.


* jk/branch-l-0-deprecation (2018-03-26) 3 commits
  (merged to 'next' on 2018-04-11 at 9b2b0305dd)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step deprecates
 the short-hand and warns about the future removal of the it when it
 is used.

 Will cook in 'next'.
 Perhaps merge to 'master' immediately after 2.18 release?


* jk/branch-l-1-removal (2018-03-26) 1 commit
 - branch: drop deprecated "-l" option
 (this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)

 Following the "git branch -l" deprecation, the short-hand is removed.

 Will keep in 'pu'.


* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
 - branch: make "-l" a synonym for "--list"
 (this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)

 Following the "git branch -l" removal, "-l" is resurrected as a
 short-hand for "--list".

 Will keep in 'pu'.


* nd/pack-objects-pack-struct (2018-04-16) 15 commits
  (merged to 'next' on 2018-05-16 at 171459475d)
 + ci: exercise the whole test suite with uncommon code in pack-objects
 + pack-objects: reorder members to shrink struct object_entry
 + pack-objects: shrink delta_size field in struct object_entry
 + pack-objects: shrink size field in struct object_entry
 + pack-objects: clarify the use of object_entry::size
 + pack-objects: don't check size when the object is bad
 + pack-objects: shrink z_delta_size field in struct object_entry
 + pack-objects: refer to delta objects by index instead of pointer
 + pack-objects: move in_pack out of struct object_entry
 + pack-objects: move in_pack_pos out of struct object_entry
 + pack-objects: use bitfield for object_entry::depth
 + pack-objects: use bitfield for object_entry::dfs_state
 + pack-objects: turn type and in_pack_type to bitfields
 + pack-objects: a bit of document about struct object_entry
 + read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean

 "git pack-objects" needs to allocate tons of "struct object_entry"
 while doing its work, and shrinking its size helps the performance
 quite a bit.

 Will merge to 'master'.
 cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>


* nd/repack-keep-pack (2018-04-16) 7 commits
  (merged to 'next' on 2018-05-08 at ab906be358)
 + pack-objects: show some progress when counting kept objects
 + gc --auto: exclude base pack if not enough mem to "repack -ad"
 + gc: handle a corner case in gc.bigPackThreshold
 + gc: add gc.bigPackThreshold config
 + gc: add --keep-largest-pack option
 + repack: add --keep-pack option
 + t7700: have closing quote of a test at the beginning of line

 "git gc" in a large repository takes a lot of time as it considers
 to repack all objects into one pack by default.  The command has
 been taught to pretend as if the largest existing packfile is
 marked with ".keep" so that it is left untouched while objects in
 other packs and loose ones are repacked.

 Will merge to 'master'.
 cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>


* tg/worktree-add-existing-branch (2018-04-30) 4 commits
  (merged to 'next' on 2018-05-08 at 8b76505192)
 + worktree: teach "add" to check out existing branches
 + worktree: factor out dwim_branch function
 + worktree: improve message when creating a new worktree
 + worktree: remove extra members from struct add_opts

 "git worktree add" learned to check out an existing branch.

 Will merge to 'master'.


* js/rebase-recreate-merge (2018-04-26) 17 commits
  (merged to 'next' on 2018-05-16 at f1aeea2879)
 + rebase -i --rebase-merges: add a section to the man page
 + rebase -i: introduce --rebase-merges=[no-]rebase-cousins
 + pull: accept --rebase=merges to recreate the branch topology
 + rebase --rebase-merges: avoid "empty merges"
 + sequencer: handle post-rewrite for merge commands
 + sequencer: make refs generated by the `label` command worktree-local
 + rebase --rebase-merges: add test for --keep-empty
 + rebase: introduce the --rebase-merges option
 + rebase-helper --make-script: introduce a flag to rebase merges
 + sequencer: fast-forward `merge` commands, if possible
 + sequencer: introduce the `merge` command
 + sequencer: introduce new commands to reset the revision
 + git-rebase--interactive: clarify arguments
 + sequencer: offer helpful advice when a command was rescheduled
 + sequencer: refactor how original todo list lines are accessed
 + sequencer: make rearrange_squash() a bit more obvious
 + sequencer: avoid using errno clobbered by rollback_lock_file()
 (this branch is used by js/sequencer-and-root-commits.)

 "git rebase" learned "--rebase-merges" to transplant the whole
 topology of commit graph elsewhere.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* js/runtime-prefix-windows (2018-03-27) 5 commits
 . mingw/msvc: use the new-style RUNTIME_PREFIX helper
 . exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 . exec_cmd: RUNTIME_PREFIX on some POSIX systems
 . Makefile: add Perl runtime prefix support
 . Makefile: generate Perl header from template file

 The Windows port was the first that allowed Git to be installed
 anywhere by having its components refer to each other with relative
 pathnames.  The recent dj/runtime-prefix topic extends the idea to
 other platforms, and its approach has been adopted back in the
 Windows port.

 Ejected, as the parent topic dj/runtime-prefix covers Windows now.


* bp/fsexcludes (2018-04-16) 2 commits
 . fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
 . fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic

 Can we have a few lines summary here, just like we have for other
 topic ;-) I personally take the overlong title of these commits as
 a sign that they can further be simplified and cleaned up by
 splitting, focusing the scope, etc.

 Retracted.
 cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>

^ permalink raw reply	[relevance 3%]

* Re: Branching workflow
  @ 2013-12-03 19:12  3% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-12-03 19:12 UTC (permalink / raw)
  To: Javier Domingo; +Cc: git@vger.kernel.org

Javier Domingo <javierdo1@gmail.com> writes:

               
> Hi,
>
> I have been using a very basic workflow for branching, features each
> in a branch.
>
> My branches would be:
> - develop <= Main upstream branch
> - feature/* fix/*  <= Feature and fix branches
> - master <= Integration of the whole feature and fix branches
>
> So I have now came up with a very difficult task. I just discovered
> that one of those branches, lest call it feature/bad, is evil and is
> making the integration branch (master) fail horribly.
>
> In my workflow, I tend to merge develop (official updates) into my
> feature branches, and them into master.

I think the standard advice is not to contaminate feature branches
with unrelated changes, whether from an upstream updates or from
other unrelated feature breanches.

You would still want to make sure that your feature branches in
work-in-progress state would work with updated upstream from time to
time, but that is much better done by having a test integration
branch you maintain with:

    : always start from the tip of upstream
    $ git fetch upstream
    $ git checkout -B develop remotes/upstream/master

    : merge everything you want
    $ git merge feature/A
    $ git merge feature/B
    ...
    $ git merge fix/Z

And you will never merge 'develop' into 'master'.  Only after you
are satisfied with a single feature (or fix), you merge that to
'master', while your other features may still be suspect.

^ permalink raw reply	[relevance 3%]

* Re: What's cooking in git.git (Sep 2018, #04; Thu, 20)
  @ 2018-09-21 17:17  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-09-21 17:17 UTC (permalink / raw)
  To: Johannes Sixt; +Cc: git

Johannes Sixt <j6t@kdbg.org> writes:

> Am 21.09.18 um 07:22 schrieb Junio C Hamano:
>> The tip of 'next' hasn't been rewound yet.  The three GSoC "rewrite
>> in C" topics are still unclassified in this "What's cooking" report,
>> but I am hoping that we can have them in 'next' sooner rather than
>> later.  I got an impression that Dscho wanted a chance for the final
>> clean-up on some of them, so I am not doing anything hasty yet at
>> this moment, though.
>
> While playing around with those topics in my own build on Windows, I
> noticed a small glitch in your merge commits.
>
> When I compile 59085279e6, which is today's jch~11, I see
>
>     CC builtin/rebase.o
> builtin/rebase.c: In function 'can_fast_forward':
> builtin/rebase.c:443:2: warning: implicit declaration of function 'get_merge_bases' [-Wimplicit-function-declaration]
>   merge_bases = get_merge_bases(onto, head);
>   ^
> builtin/rebase.c:443:14: warning: assignment makes pointer from integer without a cast [enabled by default]
>   merge_bases = get_merge_bases(onto, head);
>               ^
>
> I notice that you fixed it in the next merge, jch~10 aka d311e29abe,
> by adding
>
> #include "commit-reach.h"
>
> in builtin/rebase.c; this line is obviously required one merge
> commit earlier, jch~11.

Thanks.  Near the problematic merges are

    41e89b1c02 Merge branch 'pk/rebase-in-c-6-final' into jch
    a9794eb0fe Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c' into jch
    d348159563 Merge branch 'pk/rebase-in-c-5-test' into jch
    d311e29abe Merge branch 'pk/rebase-in-c-4-opts' into jch
    59085279e6 Merge branch 'pk/rebase-in-c-3-acts' into jch
    88091f8941 Merge branch 'pk/rebase-in-c-2-basic' into jch
    38a693a042 Merge branch 'ps/stash-in-c' into jch
    488f36e338 Merge branch 'ag/rebase-i-in-c' into jch

Actually 88091f8941 is already broken.  The merge-fix must go there.

Thanks for letting me know (even though it is very unlikely that
2-basic would graduate without any of these other topics---in a
sense there is not much point for these patches to be spread across
this many topics).

commit a581ba92f4f4e112a7d7e0c84c0ced1af271b7dc
Author: Junio C Hamano <gitster@pobox.com>
Date:   Fri Sep 21 10:14:43 2018 -0700

    merge-fix/pk/rebase-in-c-2-basic

diff --git a/builtin/rebase.c b/builtin/rebase.c
index e817956d96..71367c8530 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -21,6 +21,7 @@
 #include "diff.h"
 #include "wt-status.h"
 #include "revision.h"
+#include "commit-reach.h"
 
 static char const * const builtin_rebase_usage[] = {
 	N_("git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] "

^ permalink raw reply related	[relevance 3%]

* What's cooking in git.git (Jul 2014, #01; Tue, 8)
@ 2014-07-08 21:47  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-07-08 21:47 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/fix-rebase-merge-skip (2014-06-16) 1 commit
  (merged to 'next' on 2014-06-20 at 01f81f5)
 + rebase--merge: fix --skip with two conflicts in a row

 "git rebase --skip" did not work well when it stopped due to a
 conflict twice in a row.


* dt/refs-check-refname-component-sse (2014-06-18) 1 commit
  (merged to 'next' on 2014-06-20 at d286027)
 + refs.c: SSE2 optimizations for check_refname_component

 Further micro-optimization of a leaf-function.


* jk/commit-buffer-length (2014-06-13) 18 commits
  (merged to 'next' on 2014-06-16 at b2d2d7b)
 + reuse cached commit buffer when parsing signatures
 + commit: record buffer length in cache
 + commit: convert commit->buffer to a slab
 + commit-slab: provide a static initializer
 + use get_commit_buffer everywhere
 + convert logmsg_reencode to get_commit_buffer
 + use get_commit_buffer to avoid duplicate code
 + use get_cached_commit_buffer where appropriate
 + provide helpers to access the commit buffer
 + provide a helper to set the commit buffer
 + provide a helper to free commit buffer
 + sequencer: use logmsg_reencode in get_message
 + logmsg_reencode: return const buffer
 + do not create "struct commit" with xcalloc
 + commit: push commit_index update into alloc_commit_node
 + alloc: include any-object allocations in alloc_report
 + replace dangerous uses of strbuf_attach
 + commit_tree: take a pointer/len pair rather than a const strbuf

 Move "commit->buffer" out of the in-core commit object and keep
 track of their lengths.  Use this to optimize the code paths to
 validate GPG signatures in commit objects.


* ye/http-extract-charset (2014-06-17) 1 commit
  (merged to 'next' on 2014-06-20 at 9492bae)
 + http: fix charset detection of extract_content_type()

--------------------------------------------------
[New Topics]

* cc/replace-edit (2014-06-25) 3 commits
 - replace: use argv_array in export_object
 - avoid double close of descriptors handed to run_command
 - replace: replace spaces with tabs in indentation
 (this branch is used by jk/replace-edit-raw.)

 Will merge to 'next'.


* ep/submodule-code-cleanup (2014-06-30) 1 commit
 - submodule.c: use the ARRAY_SIZE macro

 Will merge to 'next'.


* jk/replace-edit-raw (2014-06-25) 1 commit
 - replace: add a --raw mode for --edit
 (this branch uses cc/replace-edit.)

 Will merge to 'next'.


* jk/strip-suffix (2014-06-30) 9 commits
 - prepare_packed_git_one: refactor duplicate-pack check
 - verify-pack: use strbuf_strip_suffix
 - strbuf: implement strbuf_strip_suffix
 - index-pack: use strip_suffix to avoid magic numbers
 - use strip_suffix instead of ends_with in simple cases
 - replace has_extension with ends_with
 - implement ends_with via strip_suffix
 - add strip_suffix function
 - sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()

 Will merge to 'next'.


* jk/tag-contains (2014-06-30) 8 commits
 - perf: add tests for tag --contains
 - tag: use commit_contains
 - commit: provide a fast multi-tip contains function
 - string-list: add pos to iterator callback
 - add functions for memory-efficient bitmaps
 - paint_down_to_common: use prio_queue
 - tag: factor out decision to stream tags
 - tag: allow --sort with -n

 Expecting a reroll.


* mg/fix-log-mergetag-color (2014-06-30) 1 commit
 - log: correctly identify mergetag signature verification status

 Will merge to 'next'.


* mk/merge-incomplete-files (2014-06-30) 2 commits
 - git-merge-file: do not add LF at EOF while applying unrelated change
 - t6023-merge-file.sh: fix and mark as broken invalid tests

 Will merge to 'next'.


* rs/status-code-clean-up (2014-06-29) 2 commits
  (merged to 'next' on 2014-07-08 at db67965)
 + wt-status: simplify building of summary limit argument
 + wt-status: use argv_array for environment

 Will merge to 'master'.


* tb/crlf-tests (2014-07-08) 2 commits
  (merged to 'next' on 2014-07-08 at 40764b7)
 + t0027: combinations of core.autocrlf, core.eol and text
 + t0025: rename the test files

 Will merge to 'master'.


* ak/profile-feedback-build (2014-07-08) 4 commits
 - Fix profile feedback with -jN and add profile-fast
 - Run the perf test suite for profile feedback too
 - Don't define away __attribute__ on gcc
 - Use BASIC_FLAGS for profile feedback

 Will merge to 'next'.


* cb/filter-branch-prune-empty-degenerate-merges (2014-07-01) 1 commit
 - filter-branch: eliminate duplicate mapped parents

 Will merge to 'next'.


* cc/for-each-mergetag (2014-07-07) 1 commit
 - commit: add for_each_mergetag()
 (this branch is used by cc/replace-graft.)

 Will merge to 'next'.


* dt/cache-tree-repair (2014-07-08) 4 commits
 - cache-tree: write updated cache-tree after commit
 - cache-tree: subdirectory tests
 - test-dump-cache-tree: invalid trees are not errors
 - cache-tree: create/update cache-tree on checkout

 Reviews seen; waiting for a response.


* jl/test-lint-scripts (2014-07-07) 3 commits
 - DONTMERGE: missing sign-off
 - t/Makefile: always test all lint targets when running tests
 - t/Makefile: check helper scripts for non-portable shell commands too


* kb/hashmap-updates (2014-07-07) 4 commits
 - hashmap: add string interning API
 - hashmap: add simplified hashmap_get_from_hash() API
 - hashmap: improve struct hashmap member documentation
 - hashmap: factor out getting a hash code from a SHA1

 Reviews sent; waiting for a response.


* kb/path-max-must-go (2014-07-07) 2 commits
  (merged to 'next' on 2014-07-08 at 4d41c18)
 + dir: remove PATH_MAX limitation
 + symlinks: remove PATH_MAX limitation

 Will merge to 'master'.


* rs/fix-alt-odb-path-comparison (2014-07-01) 1 commit
  (merged to 'next' on 2014-07-08 at f9c69e5)
 + sha1_file: avoid overrunning alternate object base string

 Will merge to 'master'.


* rs/simplify-archive-tests (2014-07-07) 1 commit
  (merged to 'next' on 2014-07-08 at c46cfac)
 + t5000, t5003: simplify commit

 Will merge to 'master'.


* zk/log-graph-showsig (2014-07-08) 1 commit
 - log: fix indentation for --graph --show-signature

 The "--show-signature" option did not pay much attention to
 "--graph".

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ab/add-interactive-show-diff-func-name (2014-05-12) 2 commits
 - SQUASH??? git-add--interactive: Preserve diff heading when splitting hunks
 - git-add--interactive: Preserve diff heading when splitting hunks

 Waiting for a reroll.


* jn/gitweb-utf8-in-links (2014-05-27) 1 commit
 - gitweb: Harden UTF-8 handling in generated links

 $gmane/250758?


* rh/prompt-tests (2014-06-05) 11 commits
 - t9904: new __git_ps1 tests for Zsh
 - test-lib: make it possible to override how test code is eval'd
 - lib-prompt-tests.sh: add variable for string that encodes percent in PS1
 - lib-prompt-tests.sh: put all tests inside a function
 - t9903: move prompt tests to a new lib-prompt-tests.sh file
 - t9903: move PS1 color code variable definitions to lib-bash.sh
 - t9903: include "Bash" in test names via new $shellname var
 - t9903: run pc mode tests again with PS1 expansion disabled
 - t9903: move test name prefix to a separate variable
 - t9903: put the Bash pc mode prompt test cases in a function
 - t9903: remove Zsh test from the suite of Bash prompt tests

 Expecting a reroll to limit the damage to test_eval_; also reported
 to be broken with older zsh that are still in the field ($gmane/251231).


* ss/userdiff-update-csharp-java (2014-06-02) 2 commits
 - userdiff: support Java try keyword
 - userdiff: support C# async methods and correct C# keywords

 Reviews sent; waiting for a response.


* cc/interpret-trailers (2014-05-28) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from file or stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from input message and arguments
 - trailer: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 What is the status of this one?  I think I saw reviews by Michael
 but after that I do not recall seeing any updates.


* mh/lockfile (2014-04-15) 25 commits
 - trim_last_path_elm(): replace last_path_elm()
 - resolve_symlink(): take a strbuf parameter
 - resolve_symlink(): use a strbuf for internal scratch space
 - change lock_file::filename into a strbuf
 - commit_lock_file(): use a strbuf to manage temporary space
 - try_merge_strategy(): use a statically-allocated lock_file object
 - try_merge_strategy(): remove redundant lock_file allocation
 - struct lock_file: declare some fields volatile
 - lockfile: avoid transitory invalid states
 - commit_lock_file(): die() if called for unlocked lockfile object
 - commit_lock_file(): inline temporary variable
 - remove_lock_file(): call rollback_lock_file()
 - lock_file(): exit early if lockfile cannot be opened
 - write_packed_entry_fn(): convert cb_data into a (const int *)
 - prepare_index(): declare return value to be (const char *)
 - delete_ref_loose(): don't muck around in the lock_file's filename
 - cache.h: define constants LOCK_SUFFIX and LOCK_SUFFIX_LEN
 - lockfile.c: document the various states of lock_file objects
 - lock_file(): always add lock_file object to lock_file_list
 - hold_lock_file_for_append(): release lock on errors
 - lockfile: unlock file if lockfile permissions cannot be adjusted
 - rollback_lock_file(): set fd to -1
 - rollback_lock_file(): do not clear filename redundantly
 - api-lockfile: expand the documentation
 - unable_to_lock_die(): rename function from unable_to_lock_index_die()

 Refactor and fix corner-case bugs in the lockfile API, all looked
 sensible.

 Expecting a reroll.


* bg/rebase-off-of-previous-branch (2014-04-16) 1 commit
 - git-rebase: print name of rev when using shorthand

 Teach "git rebase -" to report the concrete name of the branch
 (i.e. the previous one).

 But it stops short and does not do the same for "git rebase @{-1}".
 Expecting a reroll.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 Needs to be rebased, now kb/fast-hashmap topic is in.


* jk/makefile (2014-02-05) 16 commits
 . FIXUP
 . move LESS/LV pager environment to Makefile
 . Makefile: teach scripts to include make variables
 . FIXUP
 . Makefile: auto-build C strings from make variables
 . Makefile: drop *_SQ variables
 . FIXUP
 . Makefile: add c-quote helper function
 . Makefile: introduce sq function for shell-quoting
 . Makefile: always create files via make-var
 . Makefile: store GIT-* sentinel files in MAKE/
 . Makefile: prefer printf to echo for GIT-*
 . Makefile: use tempfile/mv strategy for GIT-*
 . Makefile: introduce make-var helper function
 . Makefile: fix git-instaweb dependency on gitweb
 . Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 . t1507 (rev-parse-upstream): fix typo in test title
 . implement @{publish} shorthand
 . branch_get: provide per-branch pushremote pointers
 . branch_get: return early on error
 . sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Ejected from 'pu' to unclutter.


* fc/publish-vs-upstream (2014-04-21) 8 commits
 . sha1_name: add support for @{publish} marks
 . sha1_name: simplify track finding
 . sha1_name: cleanup interpret_branch_name()
 . branch: display publish branch
 . push: add --set-publish option
 . branch: add --set-publish-to option
 . Add concept of 'publish' branch
 . t5516 (fetch-push): fix test restoration

 Add branch@{publish}; it seems that this is somewhat different from
 Ram and Peff started working on.  At least the tip needs to be
 rerolled not to squat on @{p} which @{push} and possibly @{pull}
 may want to share.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Needs to be rebased, now the pack-bitmap series is in.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.


* jh/submodule-tests (2014-04-17) 1 commit
 - t7410: 210 tests for various 'git submodule update' scenarios

 More or less abandoned.  Will drop.


* nd/multiple-work-trees (2014-03-25) 28 commits
 . count-objects: report unused files in $GIT_DIR/repos/...
 . gc: support prune --repos
 . gc: style change -- no SP before closing bracket
 . prune: strategies for linked checkouts
 . checkout: detach if the branch is already checked out elsewhere
 . checkout: clean up half-prepared directories in --to mode
 . checkout: support checking out into a new working directory
 . use new wrapper write_file() for simple file writing
 . wrapper.c: wrapper to open a file, fprintf then close
 . setup.c: support multi-checkout repo setup
 . setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 . setup.c: convert check_repository_format_gently to use strbuf
 . setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 . setup.c: convert is_git_directory() to use strbuf
 . git-stash: avoid hardcoding $GIT_DIR/logs/....
 . *.sh: avoid hardcoding $GIT_DIR/hooks/...
 . git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 . $GIT_COMMON_DIR: a new environment variable
 . commit: use SEQ_DIR instead of hardcoding "sequencer"
 . fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 . reflog: avoid constructing .lock path with git_path
 . *.sh: respect $GIT_INDEX_FILE
 . git_path(): be aware of file relocation in $GIT_DIR
 . path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 . path.c: rename vsnpath() to do_git_path()
 . git_snpath(): retire and replace with strbuf_git_path()
 . path.c: make get_pathname() call sites return const char *
 . path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

--------------------------------------------------
[Cooking]

* cc/replace-graft (2014-07-07) 9 commits
 - replace: add test for --graft with a mergetag
 - replace: check mergetags when using --graft
 - replace: add test for --graft with signed commit
 - replace: remove signature when using --graft
 - contrib: add convert-grafts-to-replace-refs.sh
 - Documentation: replace: add --graft option
 - replace: add test for --graft
 - replace: add --graft option
 - replace: cleanup redirection style in tests
 (this branch uses cc/for-each-mergetag.)

 "git replace" learned a "--graft" option to rewrite parents of a
 commit.


* jc/fix-clone-single-starting-at-a-tag (2014-06-23) 1 commit
  (merged to 'next' on 2014-07-02 at cc0c4b1)
 + builtin/clone.c: detect a clone starting at a tag correctly

 Will merge to 'master'.


* mg/verify-commit (2014-06-23) 5 commits
  (merged to 'next' on 2014-07-02 at 6d77bcf)
 + t7510: test verify-commit
 + t7510: exit for loop with test result
 + verify-commit: scriptable commit signature verification
 + gpg-interface: provide access to the payload
 + gpg-interface: provide clear helper for struct signature_check

 Add 'verify-commit' to be used in a way similar to 'verify-tag' is
 used.  Further work on verifying the mergetags might be needed.

 Will merge to 'master'.


* dt/refs-check-refname-component-sse-fix (2014-07-08) 2 commits
  (merged to 'next' on 2014-07-08 at 35b839c)
 + refs: fix valgrind suppression file
 + refs.c: handle REFNAME_REFSPEC_PATTERN at end of page

 Fixes to a topic that is already in 'master'.

 Will merge to 'master'.


* jk/skip-prefix (2014-06-20) 18 commits
  (merged to 'next' on 2014-06-23 at cd387a6)
 + http-push: refactor parsing of remote object names
 + imap-send: use skip_prefix instead of using magic numbers
 + use skip_prefix to avoid repeated calculations
 + git: avoid magic number with skip_prefix
 + fetch-pack: refactor parsing in get_ack
 + fast-import: refactor parsing of spaces
 + stat_opt: check extra strlen call
 + daemon: use skip_prefix to avoid magic numbers
 + fast-import: use skip_prefix for parsing input
 + use skip_prefix to avoid repeating strings
 + use skip_prefix to avoid magic numbers
 + transport-helper: avoid reading past end-of-string
 + fast-import: fix read of uninitialized argv memory
 + apply: use skip_prefix instead of raw addition
 + refactor skip_prefix to return a boolean
 + avoid using skip_prefix as a boolean
 + daemon: mark some strings as const
 + parse_diff_color_slot: drop ofs parameter

 Will merge to 'master'.


* jk/xstrfmt (2014-06-25) 11 commits
  (merged to 'next' on 2014-06-25 at 5031d4e)
 + setup_git_env(): introduce git_path_from_env() helper
  (merged to 'next' on 2014-06-23 at 64f2558)
 + unique_path: fix unlikely heap overflow
 + walker_fetch: fix minor memory leak
 + merge: use argv_array when spawning merge strategy
 + sequencer: use argv_array_pushf
 + setup_git_env: use git_pathdup instead of xmalloc + sprintf
 + use xstrfmt to replace xmalloc + strcpy/strcat
 + use xstrfmt to replace xmalloc + sprintf
 + use xstrdup instead of xmalloc + strcpy
 + use xstrfmt in favor of manual size calculations
 + strbuf: add xstrfmt helper

 Will merge to 'master'.


* kb/perf-trace (2014-07-07) 17 commits
 - progress: simplify performance measurement by using getnanotime()
 - wt-status: simplify performance measurement by using getnanotime()
 - git: add performance tracing for git's main() function to debug scripts
 - trace: add trace_performance facility to debug performance issues
 - trace: add high resolution timer function to debug performance issues
 - trace: add 'file:line' to all trace output
 - trace: move code around, in preparation to file:line output
 - trace: add current timestamp to all trace output
 - trace: disable additional trace output for unit tests
 - trace: add infrastructure to augment trace output with additional info
 - sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
 - Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
 - trace.h: suppress some sparse warnings and errors
 - trace: improve trace performance
 - trace: remove redundant printf format attribute
 - trace: consistently name the format parameter
 - trace: move trace declarations from cache.h to new trace.h

 Will merge to 'next'.


* hv/submodule-config (2014-06-30) 4 commits
 - do not die on error of parsing fetchrecursesubmodules option
 - use new config API for worktree configurations of submodules
 - extract functions for submodule config set and lookup
 - implement submodule config cache for lookup of submodule names


* jl/submodule-tests (2014-07-07) 14 commits
 - revert: add t3513 for submodule updates
 - stash: add t3906 for submodule updates
 - am: add t4255 for submodule updates
 - cherry-pick: add t3512 for submodule updates
 - pull: add t5572 for submodule updates
 - rebase: add t3426 for submodule updates
 - merge: add t7613 for submodule updates
 - bisect: add t6041 for submodule updates
 - reset: add t7112 for submodule updates
 - read-tree: add t1013 for submodule updates
 - apply: add t4137 for submodule updates
 - checkout: call the new submodule update test framework
 - submodules: add the lib-submodule-update.sh test library
 - test-lib: add test_dir_is_empty()

 Will merge to 'next'.


* po/error-message-style (2014-06-16) 1 commit
 - doc: state coding guideline for error message punctuation

 Expecting a reroll.


* rs/ref-transaction (2014-06-20) 48 commits
 - refs.c: make write_ref_sha1 static
 - fetch.c: change s_update_ref to use a ref transaction
 - refs.c: propagate any errno==ENOTDIR from _commit back to the callers
 - refs.c: pass a skip list to name_conflict_fn
 - refs.c: call lock_ref_sha1_basic directly from commit
 - refs.c: move the check for valid refname to lock_ref_sha1_basic
 - refs.c: pass NULL as *flags to read_ref_full
 - refs.c: pass the ref log message to _create/delete/update instead of _commit
 - refs.c: add an err argument to delete_ref_loose
 - refs.c: make delete_ref use a transaction
 - refs.c: make prune_ref use a transaction to delete the ref
 - refs.c: remove lock_ref_sha1
 - refs.c: remove the update_ref_write function
 - refs.c: remove the update_ref_lock function
 - refs.c: make lock_ref_sha1 static
 - walker.c: use ref transaction for ref updates
 - fast-import.c: use a ref transaction when dumping tags
 - receive-pack.c: use a reference transaction for updating the refs
 - refs.c: change update_ref to use a transaction
 - branch.c: use ref transaction for all ref updates
 - fast-import.c: change update_branch to use ref transactions
 - sequencer.c: use ref transactions for all ref updates
 - commit.c: use ref transactions for updates
 - replace.c: use the ref transaction functions for updates
 - tag.c: use ref transactions when doing updates
 - refs.c: add transaction.status and track OPEN/CLOSED/ERROR
 - refs.c: make ref_transaction_begin take an err argument
 - refs.c: update ref_transaction_delete to check for error and return status
 - refs.c: change ref_transaction_create to do error checking and return status
 - refs.c: change ref_transaction_update() to do error checking and return status
 - refs.c: remove the onerr argument to ref_transaction_commit
 - update-ref: use err argument to get error from ref_transaction_commit
 - refs.c: make update_ref_write update a strbuf on failure
 - refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
 - refs.c: log_ref_write should try to return meaningful errno
 - refs.c: make resolve_ref_unsafe set errno to something meaningful on error
 - refs.c: commit_packed_refs to return a meaningful errno on failure
 - refs.c: make remove_empty_directories always set errno to something sane
 - refs.c: verify_lock should set errno to something meaningful
 - refs.c: make sure log_ref_setup returns a meaningful errno
 - refs.c: add an err argument to repack_without_refs
 - lockfile.c: make lock_file return a meaningful errno on failurei
 - lockfile.c: add a new public function unable_to_lock_message
 - refs.c: add a strbuf argument to ref_transaction_commit for error logging
 - refs.c: allow passing NULL to ref_transaction_free
 - refs.c: constify the sha arguments for ref_transaction_create|delete|update
 - refs.c: ref_transaction_commit should not free the transaction
 - refs.c: remove ref_transaction_rollback

 Portability workaround may be needed on top ($gmane/252496).
 Updates in response to review comments from Michael ($gmane/253033)
 may be needed for later parts, but the earlier parts look ready
 for 'next'.


* jk/pretty-G-format-fixes (2014-06-25) 6 commits
  (merged to 'next' on 2014-06-26 at 7138407)
 + move "%G" format test from t7510 to t6006
  (merged to 'next' on 2014-06-20 at f504bbc)
 + pretty: avoid reading past end-of-string with "%G"
 + t7510: check %G* pretty-format output
 + t7510: test a commit signed by an unknown key
 + t7510: use consistent &&-chains in loop
 + t7510: stop referring to master in later tests

 Will merge to 'master'.


* nd/split-index (2014-06-13) 32 commits
  (merged to 'next' on 2014-07-08 at 49325ef)
 + t1700: new tests for split-index mode
 + t2104: make sure split index mode is off for the version test
 + read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
 + read-tree: note about dropping split-index mode or index version
 + read-tree: force split-index mode off on --index-output
 + rev-parse: add --shared-index-path to get shared index path
 + update-index --split-index: do not split if $GIT_DIR is read only
 + update-index: new options to enable/disable split index mode
 + split-index: strip pathname of on-disk replaced entries
 + split-index: do not invalidate cache-tree at read time
 + split-index: the reading part
 + split-index: the writing part
 + read-cache: mark updated entries for split index
 + read-cache: save deleted entries in split index
 + read-cache: mark new entries for split index
 + read-cache: split-index mode
 + read-cache: save index SHA-1 after reading
 + entry.c: update cache_changed if refresh_cache is set in checkout_entry()
 + cache-tree: mark istate->cache_changed on prime_cache_tree()
 + cache-tree: mark istate->cache_changed on cache tree update
 + cache-tree: mark istate->cache_changed on cache tree invalidation
 + unpack-trees: be specific what part of the index has changed
 + resolve-undo: be specific what part of the index has changed
 + update-index: be specific what part of the index has changed
 + read-cache: be specific what part of the index has changed
 + read-cache: be strict about "changed" in remove_marked_cache_entries()
 + read-cache: store in-memory flags in the first 12 bits of ce_flags
 + read-cache: relocate and unexport commit_locked_index()
 + read-cache: new API write_locked_index instead of write_index/write_cache
 + sequencer: do not update/refresh index if the lock cannot be held
 + ewah: delete unused ewah_read_mmap_native declaration
 + ewah: fix constness of ewah_read_mmap

 An experiment to use two files (the base file and incremental
 changes relative to it) to represent the index to reduce I/O cost
 of rewriting a large index when only small part of the working tree
 changes.

 Will merge to 'master'.


* jc/test-lazy-prereq (2014-06-13) 1 commit
 - tests: drop GIT_*_TIMING_TESTS environment variable support

 Test-script clean-up.

 Will hold.


* sk/mingw-unicode-spawn-args (2014-06-16) 6 commits
  (merged to 'next' on 2014-06-30 at c8f79d0)
 + Win32: Unicode arguments (incoming)
 + Win32: Unicode arguments (outgoing)
 + MinGW: disable CRT command line globbing
 + Win32: fix potential multi-threading issue
 + Win32: simplify internal mingw_spawn* APIs
 + Win32: let mingw_execve() return an int
 (this branch uses sk/mingw-main and sk/mingw-uni-console.)

 Will merge to 'master'.


* sk/mingw-dirent (2014-06-09) 5 commits
  (merged to 'next' on 2014-06-30 at ae9e2d6)
 + Win32 dirent: improve dirent implementation
 + Win32 dirent: clarify #include directives
 + Win32 dirent: change FILENAME_MAX to MAX_PATH
 + Win32 dirent: remove unused dirent.d_reclen member
 + Win32 dirent: remove unused dirent.d_ino member

 Will merge to 'master'.


* sk/mingw-main (2014-06-10) 2 commits
  (merged to 'next' on 2014-06-30 at 447cb50)
 + mingw: avoid const warning
 + Win32: move main macro to a function
 (this branch is used by sk/mingw-uni-console and sk/mingw-unicode-spawn-args.)

 Will merge to 'master'.


* sk/mingw-uni-console (2014-06-16) 7 commits
  (merged to 'next' on 2014-06-30 at f4fbc41)
 + Win32: reliably detect console pipe handles
 + Win32: fix broken pipe detection
 + Win32: Thread-safe windows console output
 + Win32: add Unicode conversion functions
 + Win32: warn if the console font doesn't support Unicode
 + Win32: detect console streams more reliably
 + Win32: support Unicode console output
 (this branch is used by sk/mingw-unicode-spawn-args; uses sk/mingw-main.)

 Will merge to 'master'.


* mt/patch-id-stable (2014-06-10) 1 commit
 - patch-id: change default to stable

 Teaches "git patch-id" to compute the patch ID that does not change
 when the files in a single patch is reordered. As this new algorithm
 is backward incompatible, the last bit to flip it to be the default
 is left out of 'master' for now.

 Will hold.

^ permalink raw reply	[relevance 3%]

* Re: 'git pull' complains that a locally resurrected directory would be overwritten by merge when no pulled changes are affecting that directory
  @ 2021-08-25 15:42  3%   ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2021-08-25 15:42 UTC (permalink / raw)
  To: Jeff King; +Cc: Yuri, Git Mailing List

On Tue, Aug 24, 2021 at 6:09 PM Jeff King <peff@peff.net> wrote:
>
> On Tue, Aug 24, 2021 at 09:41:49AM -0700, Yuri wrote:
>
> > In the FreeBSD ports repository I resurrected the directory (that was
> > removed a long time ago) with the command:
> >
> > > $ git checkout {hash}~1 -- math/polymake
> >
> >
> > I made local changes to this directory and called 'git add math/polymake'.
> >
> > Then 'git pull' complained:
> >
> > > $ git pull
> > > error: Your local changes to the following files would be overwritten by
> > merge:
> > >   math/polymake/Makefile math/polymake/distinfo
> > math/polymake/files/patch-Makefile
> > math/polymake/files/patch-support_install.pl math/polymake/pkg-descr
> > math/polymake/pkg-plist
> >
> >
> > No incoming changes affect math/polymake. Nobody has created this directory
> > simultaneously with me. There is no intersection with incoming changes.
> >
> >
> > Why does 'git pull' complain then?
>
> It's hard to say without seeing a full example. The merge machinery is
> supposed to handle this situation (and indeed, in a simple reproduction
> example it does). So presumably it thinks the other side may have
> touched those files for some reason. Perhaps it's confused by rename
> detection?
>
> Is it possible to give us a more complete example, including:
>
>   - a url for the repository
>   - the commit at HEAD when you ran "git checkout"
>   - the {hash} commit from which you rescued the files
>   - the state of the remote branch (i.e., what we attempted to merge
>     with "git pull")
>
> ?

The `git checkout {hash}~1 -- math/polymake` is enough to highlight
that Yuri doesn't just have local changes (which the merge machinery
should allow if the incoming changes don't touch the same files), but
local *staged* changes.  As per the merge manpage:

"""
To avoid recording unrelated changes in the merge commit, git pull and
git merge will also abort if there are any changes registered in the
index relative to the HEAD commit.
"""

While this particular example could theoretically be handled by the
merge machinery without requiring the index match HEAD, at least with
the new ort backend (it'd be way too complex with the recursive
backend, see below), in practice I'm so sick of index != HEAD bugs
that I have zero motivation to even consider it and I might even NAK
patches from others who attempted it.  For why, let me quote from the
commit message of 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17), which also references
another commit that I'm tempted to also quote:

"""
Ensure index matches head before invoking merge machinery, round N

This is the bug that just won't die; there always seems to be another
form of it somewhere.  See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:

<quick summary>

builtin/merge.c contains this important requirement for merge
strategies:

    ...the index must be in sync with the head commit.  The strategies are
    responsible to ensure this.

This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:

  * we silently throw away changes the user had staged before the merge

  * we accidentally (and silently) include changes in the merge that
    were not part of either of the branches/trees being merged

Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found.  But, fear not: the bugs from this were fixed in commit
  ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge).  And it was fixed
again in commit
  160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
  3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
  65170c07d466 ("merge-recursive: avoid incorporating uncommitted
changes in a merge", 2017-12-21)
...and again in commit
  eddd1a411d93 ("merge-recursive: enforce rule that index matches head
before merging", 2018-06-30)

...with multiple testcases added to the testsuite that could be
enumerated in even more commits.

Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...

</quick summary>

Unfortunately, "ever after" apparently denotes a limited time and it
expired today.
"""

and then the commit message goes on to explain multiple other bugs
found and fixed due to not strictly enforcing that the index needs to
match HEAD before starting a merge.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2016, #01; Tue, 3)
@ 2016-05-03 22:49  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-03 22:49 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the ninth batch of topics of this cycle.
On the 'maint' front, 2.8.2 is out and fixes that have been in
'master' accumulates on it for 2.8.3.

Ones with questionable status has a '?' character in their comments.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* en/merge-fixes (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-27 at 14d7d10)
 + merge-recursive: do not check working copy when creating a virtual merge base
 + merge-recursive: remove duplicate code

 "merge-recursive" strategy incorrectly checked if a path that is
 involved in its internal merge exists in the working tree.


* jd/p4-jobs-in-commit (2016-04-19) 2 commits
  (merged to 'next' on 2016-04-27 at 654d946)
 + git-p4: add P4 jobs to git commit message
 + git-p4: clean-up code style in tests

 "git p4" learned to record P4 jobs in Git commit that imports from
 the history in Perforce.


* jd/send-email-to-whom (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 47ae363)
 + send-email: fix grammo in the prompt that asks e-mail recipients

 A question by "git send-email" to ask the identity of the sender
 has been updated.


* jk/fix-attribute-macro-in-2.5 (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 2e42613)
 + remote.c: spell __attribute__ correctly

 Code fixup.


* js/name-rev-use-oldest-ref (2016-04-22) 1 commit
  (merged to 'next' on 2016-04-27 at 8fdc0ac)
 + name-rev: include taggerdate in considering the best name

 "git describe --contains" often made a hard-to-justify choice of
 tag to give name to a given commit, because it tried to come up
 with a name with smallest number of hops from a tag, causing an old
 commit whose close descendant that is recently tagged were not
 described with respect to an old tag but with a newer tag.  It did
 not help that its computation of "hop" count was further tweaked to
 penalize being on a side branch of a merge.  The logic has been
 updated to favor using the tag with the oldest tagger date, which
 is a lot easier to explain to the end users: "We describe a commit
 in terms of the (chronologically) oldest tag that contains the
 commit."


* nd/remove-unused (2016-04-22) 2 commits
  (merged to 'next' on 2016-04-27 at 7917efa)
 + wrapper.c: delete dead function git_mkstemps()
 + dir.c: remove dead function fnmatch_icase()

 Code cleanup.


* nf/mergetool-prompt (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 1c992df)
 + difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.


* rt/string-list-lookup-cleanup (2016-04-25) 1 commit
  (merged to 'next' on 2016-04-27 at 53514e1)
 + string_list: use string-list API in unsorted_string_list_lookup()

 Code cleanup.


* sg/test-lib-simplify-expr-away (2016-04-22) 1 commit
  (merged to 'next' on 2016-04-27 at 8f40952)
 + test-lib: simplify '--option=value' parsing

 Code cleanup.

--------------------------------------------------
[New Topics]

* ew/normal-to-e (2016-05-02) 1 commit
 - .mailmap: update to my shorter email address

 Will merge to 'next'.


* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 3 commits
 - diff: enable "compaction heuristics" and lose experimentation knob
  (merged to 'next' on 2016-04-22 at 0c117ea)
 + xdiff: implement empty line chunk heuristic
 + xdiff: add recs_match helper function
 (this branch is tangled with jk/diff-compact-heuristic.)

 This should be discarded.


* js/close-packs-before-gc (2016-05-02) 1 commit
 - t5510: run auto-gc in the foreground

 Will merge to 'next'.


* ls/travis-submitting-patches (2016-05-02) 1 commit
 - Documentation: add setup instructions for Travis CI

 Will merge to 'next'.


* rn/glossary-typofix (2016-05-02) 1 commit
 - Documentation: fix typo 'In such these cases'

 Will merge to 'next'.


* jc/commit-tree-ignore-commit-gpgsign (2016-05-03) 1 commit
 - commit-tree: do not pay attention to commit.gpgsign

 "git commit-tree" plumbing command required the user to always sign
 its result when the user sets the commit.gpgsign configuration
 variable, which was an ancient mistake.  Rework "git rebase" that
 relied on this mistake so that it reads commit.gpgsign and pass (or
 not pass) the -S option to "git commit-tree" to keep the end-user
 expectation the same, while teaching "git commit-tree" to ignore
 the configuration variable.  This will stop requiring the users to
 sign commit objects used internally as an implementation detail of
 "git stash".

 Will merge to 'next'.


* jk/push-client-deadlock-fix (2016-05-02) 1 commit
 - Windows: add pthread_sigmask() that does nothing

 Will merge to 'next'.


* sb/clean-test-fix (2016-05-03) 1 commit
 - t7300: mark test with SANITY

 Will merge to 'next'.


* sb/submodule-module-list-pathspec-fix (2016-05-03) 1 commit
 - submodule deinit test: fix broken && chain in subshell

 Will merge to 'next'.


* sk/gitweb-highlight-encoding (2016-05-03) 1 commit
 - gitweb: apply fallback encoding before highlight

 Some multi-byte encoding can have a backslash byte as a later part
 of one letter, which would confuse "highlight" filter used in
 gitweb.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will this be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* ab/hooks (2016-04-26) 4 commits
 - hooks: allow customizing where the hook directory is
 - githooks.txt: minor improvements to the grammar & phrasing
 - githooks.txt: amend dangerous advice about 'update' hook ACL
 - githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Almost there.
 ($gmane/292635)


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.


* js/http-custom-headers (2016-04-27) 1 commit
  (merged to 'next' on 2016-04-27 at 0c97a50)
 + http: support sending custom HTTP headers

 HTTP transport clients learned to throw extra HTTP headers at the
 server, specified via http.extraHeader configuration variable.

 Will merge to 'master'.


* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* sb/config-exit-status-list (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 44fe343)
 + config doc: improve exit code listing

 Doc update.

 Will merge to 'master'.


* mh/split-under-lock (2016-04-27) 29 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Almost there.
 ($gmane/292772)


* bn/http-cookiefile-config (2016-04-29) 2 commits
 - http: expand http.cookieFile as a path
 - Documentation: config: improve word ordering for http.cookieFile
 (this branch uses jc/config-pathname-type.)

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Waiting for an Ack to what's queued with tweaks, or a reroll.
 ($gmane/292969)


* ew/doc-split-pack-disables-bitmap (2016-04-28) 1 commit
 - pack-objects: warn on split packs disabling bitmaps

 Doc update.

 Will merge to 'next'.


* jc/config-pathname-type (2016-04-29) 1 commit
 - config: describe 'pathname' value type
 (this branch is used by bn/http-cookiefile-config.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'next'.


* jk/submodule-config-sanitize-fix (2016-04-28) 5 commits
 - submodule: use prepare_submodule_repo_env consistently
 - submodule--helper: move config-sanitizing to submodule.c
 - submodule: export sanitized GIT_CONFIG_PARAMETERS
 - t5550: break submodule config test into multiple sub-tests
 - t5550: fix typo in $HTTPD_URL

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly.

 With a rethink of the merit of "sanitization" going on, we may end
 up doing the configuration propagation very differently, though.

 Will hold.


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* sb/misc-cleanups (2016-04-28) 2 commits
 - submodule-config: don't shadow `cache`
 - config.c: drop local variable

 Will merge to 'next'.


* ew/fast-import-unpack-limit (2016-04-24) 1 commit
 - fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Need to pick up the rerolled version.
 ($gmane/292562)


* ld/p4-test-py3 (2016-04-26) 3 commits
  (merged to 'next' on 2016-04-27 at d5d5fca)
 + git-p4 tests: time_in_seconds should use $PYTHON_PATH
 + git-p4 tests: work with python3 as well as python2
 + git-p4 tests: cd to / before running python

 The test scripts for "git p4" (but not "git p4" implementation
 itself) has been updated so that they would work even on a system
 where the installed version of Python is python 3.

 Will merge to 'master'.


* ls/p4-lfs-test-fix-2.7.0 (2016-04-29) 2 commits
  (merged to 'next' on 2016-04-29 at da56b67)
 + t9824: fix wrong reference value
  (merged to 'next' on 2016-04-27 at be87c63)
 + t9824: fix broken &&-chain in a subshell

 Fix a broken test.

 Will merge to 'master'.


* sb/clone-shallow-passthru (2016-04-26) 1 commit
  (merged to 'next' on 2016-04-27 at 3112b24)
 + clone: add `--shallow-submodules` flag

 "git clone" learned "--shallow-submodules" option.

 Will merge to 'master'.


* ls/p4-lfs (2016-04-28) 3 commits
 - git-p4: fix Git LFS pointer parsing
 - travis-ci: express Linux/OS X dependency versions more clearly
 - travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.

 Will merge to 'next'.


* tb/convert-eol-autocrlf (2016-04-29) 10 commits
 - ce_compare_data() did not respect conversion
 - t6038; use crlf on all platforms
 - convert.c: more safer crlf handling with text attribute
 - convert: unify the "auto" handling of CRLF
 - convert.c: stream and early out
 - read-cache: factor out get_sha1_from_index() helper
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: make commit_chk_wrnNNO() reliable

 The combination of text=auto & eol=crlf (or eol=lf for that matter)
 is taught to be much more useful; it used to be "auto detection"
 was defeated as if setting eol declares that the file _is_ text,
 but now text=auto is still in effect for such a path and the code
 refrains from applying eol conversion if it found the path is not
 text.  Also setting core.autocrlf to 'input' and core.eol to 'crlf'
 used to be rejected, but because the code gives precedence to
 core.autocrlf, there is no need to, hence we no longer reject the
 combination.

 Earlier steps looked alright, but it veers into a wrong direction
 in the middle.


* bc/object-id (2016-04-25) 6 commits
  (merged to 'next' on 2016-04-29 at 02f13a4)
 + match-trees: convert several leaf functions to use struct object_id
 + tree-walk: convert tree_entry_extract() to use struct object_id
 + struct name_entry: use struct object_id instead of unsigned char sha1[20]
 + match-trees: convert shift_tree() and shift_tree_by() to use object_id
 + test-match-trees: convert to use struct object_id
 + sha1-name: introduce a get_oid() function

 Move from unsigned char[20] to struct object_id continues.

 Will merge to 'master'.


* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074, 293236)


* nd/worktree-various-heads (2016-04-22) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: check whether branch is bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: check whether branch is rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()
 - dir.c: rename str(n)cmp_icase to fspath(n)cmp

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Being reviewed.
 ($gmane/292189)


* bw/rebase-merge-entire-branch (2016-04-24) 1 commit
  (merged to 'next' on 2016-04-29 at 7a9487f)
 + git-rebase--merge: don't include absent parent as a base

 "git rebase -m" could be asked to rebase an entire branch starting
 from the root, but failed by assuming that there always is a parent
 commit to the first commit on the branch.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-05-02) 7 commits
 - t/t7507: tests for broken behavior of status
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Almost there.
 ($gmane/293410).


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.

 What was the status of this one?  Ready to proceed?


* jc/ll-merge-internal (2016-04-27) 3 commits
 - t6036: remove pointless test that expects failure
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.

 Will rebase to remove the comment after three-dash line and then merge.


* jk/diff-compact-heuristic (2016-05-02) 3 commits
  (merged to 'next' on 2016-05-02 at 2a74763)
 + diff: undocument the compaction heuristic knobs for experimentation
  (merged to 'next' on 2016-04-22 at 0c117ea)
 + xdiff: implement empty line chunk heuristic
 + xdiff: add recs_match helper function
 (this branch is tangled with jc/diff-compact-always-use-blank-heuristics.)

 Patch output from "git diff" and friends has been tweaked to be
 more readable by using a blank line as a strong hint that the
 contents before and after it belong to a logically separate unit.

 Will merge to 'master'.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Comments?  They looked all sensible to me.
 Does the lack of response mean lack of interest and support?


* jc/drop-git-spec-in (2016-04-27) 2 commits
  (merged to 'next' on 2016-04-27 at 2b85030)
 + Makefile: remove dependency on git.spec
  (merged to 'next' on 2016-04-22 at 531583f)
 + Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
 - format-patch: introduce format.useAutoBase configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Looking close to be ready.
 ($gmane/292622).


* dt/index-helper (2016-05-02) 19 commits
 . untracked-cache: config option
 . Add tracing to measure where most of the time is spent
 . index-helper: optionally automatically run
 . index-helper: autorun mode
 . index-helper: don't run if already running
 . index-helper: kill mode
 . watchman: add a config option to enable the extension
 . unpack-trees: preserve index extensions
 . update-index: enable/disable watchman support
 . index-helper: use watchman to avoid refreshing index with lstat()
 . watchman: add support to watchman to reduce refresh cost
 . read-cache: add watchman 'WAMA' extension
 . index-helper: add --detach
 . daemonize(): set a flag before exiting the main process
 . index-helper: log warnings
 . index-helper: add --strict
 . index-helper: new daemon for caching index and related stuff
 . read-cache: allow to keep mmap'd memory after reading
 . read-cache.c: fix constness of verify_hdr()

 Needs review.  Reported to break its own tests.
 ($gmane/293461).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 3%]

* [PATCH 0/7] rebase: make reflog messages independent of the backend
@ 2022-02-21 11:10  3% Phillip Wood via GitGitGadget
  2022-04-20  9:56  3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
                   ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-02-21 11:10 UTC (permalink / raw)
  To: git; +Cc: Phillip Wood

This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.

 * improve rebase reflog test coverage
 * rebase --merge: fix reflog messages for --continue and --skip
 * rebase --apply: respect GIT_REFLOG_ACTION
 * rebase --abort: improve reflog message
 * unify reflog messages between the two rebase backends

This series is based on pw/use-inprocess-checkout-in-rebase

Phillip Wood (7):
  rebase --apply: remove duplicated code
  rebase --merge: fix reflog when continuing
  rebase --merge: fix reflog message after skipping
  rebase --apply: respect GIT_REFLOG_ACTION
  rebase --apply: make reflog messages match rebase --merge
  rebase --abort: improve reflog message
  rebase: cleanup action handling

 builtin/rebase.c          | 144 ++++++++++++-----------------
 sequencer.c               |   5 ++
 t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
 3 files changed, 214 insertions(+), 120 deletions(-)


base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Apr 2018, #03; Wed, 25)
@ 2018-04-25  8:37  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-04-25  8:37 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ak/bisect-doc-typofix (2018-04-07) 1 commit
  (merged to 'next' on 2018-04-17 at eafdeb0248)
 + Documentation/git-bisect.txt: git bisect term → git bisect terms

 Docfix.


* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
  (merged to 'next' on 2018-04-17 at e439f0398d)
 + Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
 + git-gui: search for all current SSH key types

 "git gui" learned that "~/.ssh/id_ecdsa.pub" and
 "~/.ssh/id_ed25519.pub" are also possible SSH key files.


* bp/fsmonitor-bufsize-fix (2018-04-11) 1 commit
  (merged to 'next' on 2018-04-17 at 70a7091e06)
 + fsmonitor: fix incorrect buffer size when printing version number

 Fix an unexploitable (because the oversized contents are not under
 attacker's control) buffer overflow.


* bp/fsmonitor-prime-index (2018-04-11) 1 commit
  (merged to 'next' on 2018-04-17 at 765edccdf0)
 + fsmonitor: force index write after full scan

 The index file is updated to record the fsmonitor section after a
 full scan was made, to avoid wasting the effort that has already
 spent.


* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
  (merged to 'next' on 2018-04-17 at 35828e90e2)
 + Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
 + git-gui: bind CTRL/CMD+numpad ENTER to do_commit

 "git gui" performs commit upon CTRL/CMD+ENTER but the
 CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
 same key binding.  It now does.


* br/mergetools-guiffy (2018-04-06) 1 commit
  (merged to 'next' on 2018-04-17 at 8ec0697d5d)
 + mergetools: add support for guiffy

 "git mergetools" learned talking to guiffy.


* bw/commit-partial-from-subdirectory-fix (2018-04-05) 1 commit
  (merged to 'next' on 2018-04-17 at 1e56bbc14d)
 + commit: allow partial commits with relative paths

 "cd sub/dir && git commit ../path" ought to record the changes to
 the file "sub/path", but this regressed long time ago.


* cb/bash-completion-ls-files-processing (2018-04-10) 1 commit
  (merged to 'next' on 2018-04-17 at 956b155366)
 + completion: improve ls-files filter performance

 Shell completion (in contrib) that gives list of paths have been
 optimized somewhat.


* cb/git-gui-ttk-style (2018-03-05) 2 commits
  (merged to 'next' on 2018-04-17 at 1a4f677a0d)
 + Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
 + git-gui: workaround ttk:style theme use

 "git gui" has been taught to work with old versions of tk (like
 8.5.7) that do not support "ttk::style theme use" as a way to query
 the current theme.


* cc/perf-bisect (2018-04-11) 2 commits
  (merged to 'next' on 2018-04-17 at 62a1498dd0)
 + t/perf: add scripts to bisect performance regressions
 + perf/run: add --subsection option

 Performance measuring framework in t/perf learned to help bisecting
 performance regressions.


* en/doc-typoes (2018-04-09) 2 commits
  (merged to 'next' on 2018-04-17 at 81e5c8da18)
 + Documentation: normalize spelling of 'normalised'
 + Documentation: fix several one-character-off spelling errors

 Docfix.


* es/fread-reads-dir-autoconf-fix (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-17 at 538601fef3)
 + configure.ac: fix botched FREAD_READS_DIRECTORIES check

 Small fix to the autoconf build procedure.


* es/worktree-docs (2018-04-09) 2 commits
  (merged to 'next' on 2018-04-17 at 15a098e9b1)
 + git-worktree.txt: unify command-line prompt in example blocks
 + git-worktree.txt: recommend 'git worktree remove' over manual deletion
 (this branch uses nd/worktree-move.)

 Doc updates.


* jk/flockfile-stdio (2018-03-30) 1 commit
  (merged to 'next' on 2018-04-17 at e11bd565f4)
 + config: move flockfile() closer to unlocked functions

 Code clean-up.


* jk/ref-array-push (2018-04-09) 3 commits
  (merged to 'next' on 2018-04-17 at 61859b271b)
 + ref-filter: factor ref_array pushing into its own function
 + ref-filter: make ref_array_item allocation more consistent
 + ref-filter: use "struct object_id" consistently
 (this branch is used by hn/sort-ls-remote.)

 API clean-up aournd ref-filter code.


* jk/relative-directory-fix (2018-03-30) 5 commits
  (merged to 'next' on 2018-04-17 at 1b8cc9dcb4)
 + refs: use chdir_notify to update cached relative paths
 + set_work_tree: use chdir_notify
 + add chdir-notify API
 + trace.c: export trace_setup_key
 + set_git_dir: die when setenv() fails

 Some codepaths, including the refs API, get and keep relative
 paths, that go out of sync when the process does chdir(2).  The
 chdir-notify API is introduced to let these codepaths adjust these
 cached paths to the new current directory.


* jk/t5561-missing-curl (2018-04-05) 2 commits
  (merged to 'next' on 2018-04-17 at d8592fa6c2)
 + t5561: skip tests if curl is not available
 + t5561: drop curl stderr redirects

 Test fixes.


* jm/mem-pool (2018-04-12) 3 commits
  (merged to 'next' on 2018-04-17 at 8a3641ab3a)
 + mem-pool: move reusable parts of memory pool into its own file
 + fast-import: introduce mem_pool type
 + fast-import: rename mem_pool type to mp_block

 An reusable "memory pool" implementation has been extracted from
 fast-import.c, which in turn has become the first user of the
 mem-pool API.


* js/t5404-path-fix (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-17 at 94092f2896)
 + t5404: relax overzealous test

 Test fix.


* ks/branch-list-detached-rebase-i (2018-04-05) 2 commits
  (merged to 'next' on 2018-04-17 at 5c2842c3f9)
 + t3200: verify "branch --list" sanity when rebasing from detached HEAD
 + branch --list: print useful info whilst interactive rebasing a detached HEAD

 "git branch --list" during an interrupted "rebase -i" now lets
 users distinguish the case where a detached HEAD is being rebased
 and a normal branch is being rebased.


* lw/daemon-log-destination (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-17 at b06cdcc45e)
 + daemon.c: fix condition for redirecting stderr

 Recent introduction of "--log-destination" option to "git daemon"
 did not work well when the daemon was run under "--inetd" mode.


* mn/send-email-credential-doc (2018-04-08) 1 commit
  (merged to 'next' on 2018-04-17 at c4db21eb9b)
 + send-email: simplify Gmail example in the documentation

 Doc update.


* nd/worktree-move (2018-04-05) 1 commit
  (merged to 'next' on 2018-04-17 at 11ca393110)
 + t2028: tighten grep expression to make "move worktree" test more robust
 (this branch is used by es/worktree-docs.)

 Test update.


* ps/test-chmtime-get (2018-04-09) 1 commit
  (merged to 'next' on 2018-04-17 at dcb138d8b1)
 + t/helper: 'test-chmtime (--get|-g)' to print only the mtime

 Test cleanup.


* pw/rebase-keep-empty-fixes (2018-03-29) 3 commits
  (merged to 'next' on 2018-04-17 at 10a4d92060)
 + rebase: respect --no-keep-empty
 + rebase -i --keep-empty: don't prune empty commits
 + rebase --root: stop assuming squash_onto is unset
 (this branch is used by pw/rebase-signoff.)

 "git rebase --keep-empty" still removed an empty commit if the
 other side contained an empty commit (due to the "does an
 equivalent patch exist already?" check), which has been corrected.


* pw/rebase-signoff (2018-03-29) 4 commits
  (merged to 'next' on 2018-04-17 at fbdc16e20e)
 + rebase --keep-empty: always use interactive rebase
 + rebase -p: error out if --signoff is given
 + rebase: extend --signoff support
 + Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
 (this branch uses pw/rebase-keep-empty-fixes.)

 "git rebase" has learned to honor "--signoff" option when using
 backends other than "am" (but not "--preserve-merges").


* sb/filenames-with-dashes (2018-04-11) 6 commits
  (merged to 'next' on 2018-04-17 at 45fdeb5cb1)
 + replace_object.c: rename to use dash in file name
 + sha1_file.c: rename to use dash in file name
 + sha1_name.c: rename to use dash in file name
 + exec_cmd: rename to use dash in file name
 + unicode_width.h: rename to use dash in file name
 + write_or_die.c: rename to use dashes in file name

 Rename bunch of source files to more consistently use dashes
 instead of underscores to connect words.


* tg/use-git-contacts (2018-04-12) 1 commit
  (merged to 'next' on 2018-04-17 at 26cf8c1d8c)
 + SubmittingPatches: mention the git contacts command

 Doc update.

--------------------------------------------------
[New Topics]

* ma/double-dashes-in-docs (2018-04-18) 4 commits
  (merged to 'next' on 2018-04-25 at aaac2dc63c)
 + git-submodule.txt: quote usage in monospace, drop backslash
 + git-[short]log.txt: unify quoted standalone --
 + doc: convert [\--] to [--]
 + doc: convert \--option to --option

 Doc formatting updates.

 Will merge to 'master'.


* sb/worktree-remove-opt-force (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 0367d52a4b)
 + worktree: accept -f as short for --force for removal

 "git worktree remove" learned that "-f" is a shorthand for
 "--force" option, just like for "git worktree add".

 Will merge to 'master'.


* sg/completion-clear-cached (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at 9178da6c3d)
 + completion: reduce overhead of clearing cached --options

 The completion script (in contrib/) learned to clear cached list of
 command line options upon dot-sourcing it again in a more efficient
 way.

 Will merge to 'master'.


* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
  (merged to 'next' on 2018-04-25 at bc3d1abf45)
 + docs/git-gc: fix minor rendering issue

 Doc formatting fix.

 Will merge to 'master'.


* js/ident-date-fix (2018-04-19) 1 commit
 - sequencer: reset the committer date before commits

 During a "rebase -i" session, the code could give older timestamp
 to commits created by later "pick" than an earlier "reword", which
 has been corrected.

 Will merge to 'next'.


* nd/submodule-status-fix (2018-04-19) 1 commit
 - submodule--helper: don't print null in 'submodule status'

 "git submodule status" did not check the symbolic revision name it
 computed for the submodule HEAD is not the NULL, and threw it at
 printf routines, which has been corrected.

 Will merge to 'next'.


* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
 - send-email: avoid duplicate In-Reply-To/References

 When fed input that already has In-Reply-To: and/or References:
 headers and told to add the same information, "git send-email"
 added these headers separately, instead of appending to an existing
 one, which is a violation of the RFC.  This has been corrected.

 Will merge to 'next'.


* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
 - completion: make stash -p and alias for stash push -p
 - completion: stop showing 'save' for stash by default

 THe command line completion (in contrib/) has been taught that "git
 stash save" has been deprecated ("git stash push" is the preferred
 spellingin the new world) and does not offer it as a possible
 completion candidate when "git stash push" can be.

 Will merge to 'next'.


* tz/doc-git-urls-reference (2018-04-20) 1 commit
 - doc/clone: update caption for GIT URLS cross-reference

 Doc fix.

 Will merge to 'next'.


* js/deprecate-grafts (2018-04-24) 11 commits
 - Remove obsolete script to convert grafts to replace refs
 - technical/shallow: describe why shallow cannot use replace refs
 - technical/shallow: describe the relationship with replace refs
 - filter-branch: stop suggesting to use grafts
 - Deprecate support for .git/info/grafts
 - Add a test for `git replace --convert-graft-file`
 - replace: introduce --convert-graft-file
 - replace: "libify" create_graft() and callees
 - replace: avoid using die() to indicate a bug
 - commit: Let the callback of for_each_mergetag return on error
 - argv_array: offer to split a string by whitespace

 The functionality of "$GIT_DIR/info/grafts" has been superseded by
 the "refs/replace/" mechanism for some time now, but the internal
 code had support for it in many places, which has been cleaned up
 in order to drop support of the "grafts" mechanism.


* js/rebase-i-clean-msg-after-fixup-continue (2018-04-24) 4 commits
 - rebase --skip: clean up commit message after a failed fixup/squash
 - sequencer: leave a tell-tale when a fixup/squash failed
 - rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
 - rebase -i: demonstrate bugs with fixup!/squash! commit messages

 "git rebase -i" sometimes left intermediate "# This is a
 combination of N commits" message meant for the human consumption
 inside an editor in the final result in certain corner cases, which
 has been fixed.

 Will merge to 'next'.


* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
 - fast-export: fix regression skipping some merge-commits

 "git fast-export" had a regression in v2.15.0 era where it skipped
 some merge commits in certain cases, which has been corrected.

 Will merge to 'next'.


* bw/server-options (2018-04-24) 4 commits
 - fetch: send server options when using protocol v2
 - ls-remote: send server options when using protocol v2
 - serve: introduce the server-option capability
 - Merge branch 'bw/protocol-v2' into HEAD
 (this branch uses bw/protocol-v2.)

 The transport protocol v2 is getting updated further.


* jc/parseopt-expiry-errors (2018-04-23) 2 commits
 - parseopt: handle malformed --expire arguments more nicely
 - gc: do not upcase error message shown with die()

 "git gc --prune=nonsense" spent long time repacking and then
 silently failed when underlying "git prune --expire=nonsense"
 failed to parse its command line.  This has been corrected.

 Will merge to 'next'.


* js/colored-push-errors (2018-04-24) 4 commits
 - config: document the settings to colorize push errors/hints
 - push: test to verify that push errors are colored
 - push: colorize errors
 - color: introduce support for colorizing stderr

 Error messages from "git push" can be painted for more visibility.

 Will merge to 'next'.


* js/runtime-prefix (2018-04-24) 8 commits
 - Avoid multiple PREFIX definitions
 - git_setup_gettext: plug memory leak
 - gettext: avoid initialization if the locale dir is not present
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with dj/runtime-prefix.)

 Will merge to 'next'.


* ma/http-walker-no-partial (2018-04-24) 2 commits
 - walker: drop fields of `struct walker` which are always 1
 - http-fetch: make `-a` standard behaviour

 "git http-fetch" (deprecated) had an optional and experimental
 "feature" to fetch only commits and/or trees, which nobody used.
 This has been removed.

 Will merge to 'next'.


* bc/object-id (2018-04-24) 41 commits
 - merge-one-file: compute empty blob object ID
 - add--interactive: compute the empty tree value
 - Update shell scripts to compute empty tree object ID
 - sha1_file: only expose empty object constants through git_hash_algo
 - dir: use the_hash_algo for empty blob object ID
 - sequencer: use the_hash_algo for empty tree object ID
 - cache-tree: use is_empty_tree_oid
 - sha1_file: convert cached object code to struct object_id
 - builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
 - builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
 - wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
 - submodule: convert several uses of EMPTY_TREE_SHA1_HEX
 - sequencer: convert one use of EMPTY_TREE_SHA1_HEX
 - merge: convert empty tree constant to the_hash_algo
 - builtin/merge: switch tree functions to use object_id
 - builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
 - builtin/receive-pack: avoid hard-coded constants for push certs
 - diff: specify abbreviation size in terms of the_hash_algo
 - upload-pack: replace use of several hard-coded constants
 - revision: replace use of hard-coded constants
 - http: eliminate hard-coded constants
 - dir: convert struct untracked_cache_dir to object_id
 - commit: convert uses of get_sha1_hex to get_oid_hex
 - index-pack: abstract away hash function constant
 - pack-redundant: convert linked lists to use struct object_id
 - Update struct index_state to use struct object_id
 - split-index: convert struct split_index to object_id
 - submodule-config: convert structures to object_id
 - fsck: convert static functions to struct object_id
 - tree-walk: convert get_tree_entry_follow_symlinks to object_id
 - tree-walk: avoid hard-coded 20 constant
 - pack-redundant: abstract away hash algorithm
 - pack-objects: abstract away hash algorithm
 - packfile: abstract away hash constant values
 - packfile: convert find_pack_entry to object_id
 - sha1_file: convert freshen functions to object_id
 - packfile: convert has_sha1_pack to object_id
 - packfile: remove unused member from struct pack_entry
 - Remove unused member in struct object_context
 - server-info: remove unused members from struct pack_info
 - cache: add a function to read an object ID from a buffer

 Conversion from uchar[20] to struct object_id continues.


* sb/oid-object-info (2018-04-25) 9 commits
 - cache.h: allow oid_object_info to handle arbitrary repositories
 - packfile: add repository argument to cache_or_unpack_entry
 - packfile: add repository argument to unpack_entry
 - packfile: add repository argument to read_object
 - packfile: add repository argument to packed_object_info
 - packfile: add repository argument to packed_to_object_type
 - packfile: add repository argument to retry_bad_packed_offset
 - cache.h: add repository argument to oid_object_info
 - cache.h: add repository argument to oid_object_info_extended
 (this branch uses sb/object-store-replace.)

 The codepath around object-info API has been taught to take the
 repository object (which in turn tells the API which object store
 the objects are to be located).


* en/unpack-trees-split-index-fix (2018-04-24) 1 commit
 - unpack_trees: fix breakage when o->src_index != o->dst_index

 The split-index feature had a long-standing and dormant bug in
 certain use of the in-core merge machinery, which has been fixed.

 Will merge to 'next'.


* bp/merge-rename-config (2018-04-25) 2 commits
 - merge: add merge.aggressive config setting
 - merge: add merge.renames config setting


* en/git-debugger (2018-04-25) 1 commit
 - Make running git under other debugger-like programs easy


* js/no-pager-shorthand (2018-04-25) 1 commit
 - git: add -N as a short option for --no-pager

 "git --no-pager cmd" did not have short-and-sweet single letter
 option.


* sb/diff-color-move-more (2018-04-25) 7 commits
 - diff.c: add --color-moved-ignore-space-delta option
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.


--------------------------------------------------
[Stalled]

* fg/completion-external (2018-04-11) 1 commit
 - completion: load completion file for external subcommand

 The command line completion mechanism (in contrib/) learned to load
 custom completion file for "git $command" where $command is a
 custom "git-$command" that the end user has on the $PATH when using
 newer version of bash.

 Hold.
 cf. <CAM0VKj=pDVxfJtUZx7c6uCmPxwQFPBOQYdd7NH=YnVG86iK0Pw@mail.gmail.com>


* ld/p4-unshelve (2018-02-22) 1 commit
 - git-p4: add unshelve command

 "git p4" learned to "unshelve" shelved commit from P4.

 Will hold, perhaps drop and use format-change that uses a proper "diff".
 cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2017-10-28) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>


* mk/http-backend-content-length (2017-11-27) 4 commits
 - SQUASH???
 - t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
 - SQUASH???
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.

 Expecting a reroll.
 Suggested fixes to be used when rerolling is queued, but I'd
 prefer _not_ squashing them myself.

 Also, it may be too complex solution for the problem.
 cf. <20171204171308.GA13332@sigill.intra.peff.net>


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* so/glossary-ancestor (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 0a849fee00)
 + glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

 Docfix.

 Will merge to 'master'.


* bt/gpg-interface (2018-04-16) 7 commits
 - gpg-interface: find the last gpg signature line
 - gpg-interface: extract gpg line matching helper
 - gpg-interface: fix const-correctness of "eol" pointer
 - gpg-interface: use size_t for signature buffer size
 - gpg-interface: modernize function declarations
 - gpg-interface: handle bool user.signingkey
 - t7004: fix mistaken tag name

 What is queued here is only the obviously correct and
 uncontroversial code clean-up part, which is an earlier 7 patches,
 of a larger series.

 The remainder that is not queued introuces a few configuration
 variables to deal with e-signature backends with different
 signature format.

 Will merge to 'next'.


* ds/generation-numbers (2018-04-11) 10 commits
 - commit: add short-circuit to paint_down_to_common()
 - commit: use generation numbers for in_merge_bases()
 - ref-filter: use generation number for --contains
 - commit-graph.txt: update future work
 - commit.c: use generation to halt paint walk
 - commit: use generations in paint_down_to_common()
 - commit-graph: compute generation numbers
 - commit: add generation number to struct commmit
 - merge: check config before loading commits
 - object.c: parse commit in graph first
 (this branch uses ds/commit-graph; is tangled with ds/lazy-load-trees.)

 A recently added "commit-graph" datafile has learned to store
 pre-computed generation numbers to speed up the decisions to stop
 history traversal.

 Expecting a reroll.
 cf. <cc58d8c1-f8de-4841-934f-56e4ad7729aa@gmail.com>


* en/rename-directory-detection-reboot (2018-04-25) 36 commits
 - merge-recursive: fix check for skipability of working tree updates
 - merge-recursive: make "Auto-merging" comment show for other merges
 - merge-recursive: fix remainder of was_dirty() to use original index
 - merge-recursive: fix was_tracked() to quit lying with some renamed paths
 - t6046: testcases checking whether updates can be skipped in a merge
 - merge-recursive: avoid triggering add_cacheinfo error with dirty mod
 - merge-recursive: move more is_dirty handling to merge_content
 - merge-recursive: improve add_cacheinfo error handling
 - merge-recursive: avoid spurious rename/rename conflict from dir renames
 - directory rename detection: new testcases showcasing a pair of bugs
 - merge-recursive: fix remaining directory rename + dirty overwrite cases
 - merge-recursive: fix overwriting dirty files involved in renames
 - merge-recursive: avoid clobbering untracked files with directory renames
 - merge-recursive: apply necessary modifications for directory renames
 - merge-recursive: when comparing files, don't include trees
 - merge-recursive: check for file level conflicts then get new name
 - merge-recursive: add computation of collisions due to dir rename & merging
 - merge-recursive: check for directory level conflicts
 - merge-recursive: add get_directory_renames()
 - merge-recursive: make a helper function for cleanup for handle_renames
 - merge-recursive: split out code for determining diff_filepairs
 - merge-recursive: make !o->detect_rename codepath more obvious
 - merge-recursive: fix leaks of allocated renames and diff_filepairs
 - merge-recursive: introduce new functions to handle rename logic
 - merge-recursive: move the get_renames() function
 - directory rename detection: tests for handling overwriting dirty files
 - directory rename detection: tests for handling overwriting untracked files
 - directory rename detection: miscellaneous testcases to complete coverage
 - directory rename detection: testcases exploring possibly suboptimal merges
 - directory rename detection: more involved edge/corner testcases
 - directory rename detection: testcases checking which side did the rename
 - directory rename detection: files/directories in the way of some renames
 - directory rename detection: partially renamed directory testcase/discussion
 - directory rename detection: testcases to avoid taking detection too far
 - directory rename detection: directory splitting testcases
 - directory rename detection: basic testcases

 Reboot of an attempt to detect wholesale directory renames and use
 it while merging.

 Expecting a reroll.
 cf. <CABPp-BHZ-agTY77iqe9BxLC2ijrcKO+UPk83Bn+0cckA3fJFYg@mail.gmail.com>


* nd/command-list (2018-04-24) 6 commits
 - help: use command-list.txt for the source of guides
 - help: add "-a --verbose" to list all commands with synopsis
 - git.c: implement --list-cmds=porcelain
 - generate-cmdlist.sh: keep all information in common-cmds.h
 - git.c: implement --list-cmds=all and use it in git-completion.bash
 - git.c: convert --list-*builtins to --list-cmds=*

 The list of commands with their various attributes were spread
 across a few places in the build procedure, but it now is getting a
 bit more consolidated to allow more automation.

 Expecting a reroll.
 Bash-isms and other things need to be fixed.


* sb/object-store-replace (2018-04-12) 15 commits
  (merged to 'next' on 2018-04-25 at 9a213fb505)
 + replace-object: allow lookup_replace_object to handle arbitrary repositories
 + replace-object: allow do_lookup_replace_object to handle arbitrary repositories
 + replace-object: allow prepare_replace_object to handle arbitrary repositories
 + refs: allow for_each_replace_ref to handle arbitrary repositories
 + refs: store the main ref store inside the repository struct
 + replace-object: add repository argument to lookup_replace_object
 + replace-object: add repository argument to do_lookup_replace_object
 + replace-object: add repository argument to prepare_replace_object
 + refs: add repository argument to for_each_replace_ref
 + refs: add repository argument to get_main_ref_store
 + replace-object: check_replace_refs is safe in multi repo environment
 + replace-object: eliminate replace objects prepared flag
 + object-store: move lookup_replace_object to replace-object.h
 + replace-object: move replace_map to object store
 + replace_object: use oidmap
 (this branch is used by sb/oid-object-info.)

 The effort to pass the repository in-core structure throughout the
 API continues.  This round deals with the code that implements the
 refs/replace/ mechanism.

 Will merge to 'master'.


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* sg/complete-paths (2018-04-17) 11 commits
 - completion: fill COMPREPLY directly when completing paths
 - completion: improve handling quoted paths in 'git ls-files's output
 - completion: remove repeated dirnames with 'awk' during path completion
 - t9902-completion: ignore COMPREPLY element order in some tests
 - completion: use 'awk' to strip trailing path components
 - completion: let 'ls-files' and 'diff-index' filter matching paths
 - completion: improve handling quoted paths on the command line
 - completion: support completing non-ASCII pathnames
 - completion: simplify prefix path component handling during path completion
 - completion: move __git_complete_index_file() next to its helpers
 - t9902-completion: add tests demonstrating issues with quoted pathnames

 Command line completion (in contrib/) learned to complete pathnames
 for various commands better.

 Will merge to 'next'.


* tq/t1510 (2018-04-17) 1 commit
  (merged to 'next' on 2018-04-25 at 5710c81979)
 + t1510-repo-setup.sh: remove useless mkdir

 Test cleanup.

 Will merge to 'master'.


* sb/blame-color (2018-04-24) 3 commits
 - builtin/blame: add new coloring scheme config
 - builtin/blame: highlight recently changed lines
 - builtin/blame: dim uninteresting metadata lines

 "git blame" learns to unhighlight uninteresting metadata from the
 originating commit on lines that are the same as the previous one,
 and also paint lines in different colors depending on the age of
 the commit.


* ab/simplify-perl-makefile (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at 906cf21682)
 + Makefile: mark perllibdir as a .PHONY target
  (merged to 'next' on 2018-04-17 at 4448756934)
 + perl: fix installing modules from contrib

 Recent simplification of build procedure forgot a bit of tweak to
 the build procedure of contrib/mw-to-git/

 Will merge to 'master'.


* ds/lazy-load-trees (2018-04-11) 5 commits
  (merged to 'next' on 2018-04-25 at b90813f421)
 + commit-graph: lazy-load trees for commits
 + treewide: replace maybe_tree with accessor methods
 + commit: create get_commit_tree() method
 + treewide: rename tree to maybe_tree
 + Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
 (this branch uses ds/commit-graph; is tangled with ds/generation-numbers.)

 The code has been taught to use the duplicated information stored
 in the commit-graph file to learn the tree object name for a commit
 to avoid opening and parsing the commit object when it makes sense
 to do so.

 Will merge to 'master'.


* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
 - git-svn: avoid warning on undef readline()

 "git svn" had a minor thinko/typo which has been fixed.

 Will merge to 'next'.


* hn/sort-ls-remote (2018-04-09) 1 commit
 - ls-remote: create '--sort' option

 "git ls-remote" learned an option to allow sorting its output based
 on the refnames being shown.

 Will merge to 'next'.


* js/empty-config-section-fix (2018-04-09) 15 commits
  (merged to 'next' on 2018-04-25 at 1690df3e5f)
 + git_config_set: reuse empty sections
 + git config --unset: remove empty sections (in the common case)
 + git_config_set: make use of the config parser's event stream
 + git_config_set: do not use a state machine
 + config_set_store: rename some fields for consistency
 + config: avoid using the global variable `store`
 + config: introduce an optional event stream while parsing
 + t1300: `--unset-all` can leave an empty section behind (bug)
 + t1300: add a few more hairy examples of sections becoming empty
 + t1300: remove unreasonable expectation from TODO
 + t1300: avoid relying on a bug
 + config --replace-all: avoid extra line breaks
 + t1300: demonstrate that --replace-all can "invent" newlines
 + t1300: rename it to reflect that `repo-config` was deprecated
 + git_config_set: fix off-by-two

 "git config --unset a.b", when "a.b" is the last variable in an
 otherwise empty section "a", left an empty section "a" behind, and
 worse yet, a subsequent "git config a.c value" did not reuse that
 empty shell and instead created a new one.  These have been
 (partially) corrected.

 Will merge to 'master'.


* nd/warn-more-for-devs (2018-04-16) 4 commits
  (merged to 'next' on 2018-04-25 at 2978e61414)
 + Makefile: add a DEVOPTS to get all of -Wextra
 + Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
 + Makefile: detect compiler and enable more warnings in DEVELOPER=1
 + connect.c: mark die_initial_contact() NORETURN

 The build procedure "make DEVELOPER=YesPlease" learned to enable a
 bit more warning options depending on the compiler used to help
 developers more.  There also is "make DEVOPTS=tokens" knob
 available now, for those who want to help fixing warnings we
 usually ignore, for example.

 Will merge to 'master'.


* sb/submodule-move-nested (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 86b177433a)
 + submodule: fixup nested submodules after moving the submodule
 + submodule-config: remove submodule_from_cache
 + submodule-config: add repository argument to submodule_from_{name, path}
 + submodule-config: allow submodule_free to handle arbitrary repositories
 + grep: remove "repo" arg from non-supporting funcs
 + submodule.h: drop declaration of connect_work_tree_and_git_dir

 Moving a submodule that itself has submodule in it with "git mv"
 forgot to make necessary adjustment to the nested sub-submodules;
 now the codepath learned to recurse into the submodules.

 Will merge to 'master'.


* tb/config-type (2018-04-19) 2 commits
  (merged to 'next' on 2018-04-25 at fe69e93c82)
 + builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
 + builtin/config.c: treat type specifiers singularly
 (this branch is used by tb/config-default.)

 The "git config" command uses separate options e.g. "--int",
 "--bool", etc. to specify what type the caller wants the value to
 be interpreted as.  A new "--type=<typename>" option has been
 introduced, which would make it cleaner to define new types.

 Expecting a final reroll.
 cf. <20180411034941.GA63158@syl.local>
 This looked more or less ready, IIRC


* tb/config-default (2018-04-23) 3 commits
  (merged to 'next' on 2018-04-25 at 59bb6beb2a)
 + builtin/config: introduce `color` type specifier
 + config.c: introduce 'git_config_color' to parse ANSI colors
 + builtin/config: introduce `--default`
 (this branch uses tb/config-type.)

 "git config --get" learned the "--default" option, to help the
 calling script.  Building on top of the tb/config-type topic, the
 "git config" learns "--type=color" type.  Taken together, you can
 do things like "git config --get foo.color --default blue" and get
 the ANSI color sequence for the color given to foo.color variable,
 or "blue" if the variable does not exist.

 Will wait on the tb/config-type topic.


* jh/json-writer (2018-03-28) 1 commit
 - json_writer: new routines to create data in JSON format

 Preparatory code to later add json output for unspecified telemetry
 data.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
  (merged to 'next' on 2018-04-25 at 056bcaa69c)
 + ref-filter: libify get_ref_atom_value()
 + ref-filter: add return value to parsers
 + ref-filter: change parsing function error handling
 + ref-filter: add return value && strbuf to handlers
 + ref-filter: start adding strbufs with errors
 + ref-filter: add shortcut to work with strbufs

 Code restructuring, in preparation for further work.

 Will merge to 'master'.


* jk/branch-l-0-deprecation (2018-03-26) 3 commits
  (merged to 'next' on 2018-04-11 at 9b2b0305dd)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step deprecates
 the short-hand and warns about the future removal of the it when it
 is used.

 Will cook in 'next'.


* jk/branch-l-1-removal (2018-03-26) 1 commit
 - branch: drop deprecated "-l" option
 (this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)

 Following the "git branch -l" deprecation, the short-hand is removed.

 Will keep in 'pu'.


* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
 - branch: make "-l" a synonym for "--list"
 (this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)

 Following the "git branch -l" removal, "-l" is resurrected as a
 short-hand for "--list".

 Will keep in 'pu'.


* dj/runtime-prefix (2018-04-24) 7 commits
  (merged to 'next' on 2018-04-25 at e7e635a70e)
 + Makefile: quote $INSTLIBDIR when passing it to sed
 + Makefile: remove unused @@PERLLIBDIR@@ substitution variable
  (merged to 'next' on 2018-04-17 at a69aaa7a22)
 + mingw/msvc: use the new-style RUNTIME_PREFIX helper
 + exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 + exec_cmd: RUNTIME_PREFIX on some POSIX systems
 + Makefile: add Perl runtime prefix support
 + Makefile: generate Perl header from template file
 (this branch is tangled with js/runtime-prefix.)

 A build-time option has been added to allow Git to be told to refer
 to its associated files relative to the main binary, in the same
 way that has been possible on Windows for quite some time, for
 Linux, BSDs and Darwin.

 Will merge to 'master'.


* ab/nuke-emacs-contrib (2018-04-16) 1 commit
  (merged to 'next' on 2018-04-25 at 9b133d8a65)
 + git{,-blame}.el: remove old bitrotting Emacs code

 The scripts in contrib/emacs/ have outlived their usefulness and
 have been replaced with a stub that errors out and tells the user
 there are replacements.

 Will merge to 'master'.


* nd/pack-objects-pack-struct (2018-04-16) 15 commits
 - ci: exercise the whole test suite with uncommon code in pack-objects
 - pack-objects: reorder members to shrink struct object_entry
 - pack-objects: shrink delta_size field in struct object_entry
 - pack-objects: shrink size field in struct object_entry
 - pack-objects: clarify the use of object_entry::size
 - pack-objects: don't check size when the object is bad
 - pack-objects: shrink z_delta_size field in struct object_entry
 - pack-objects: refer to delta objects by index instead of pointer
 - pack-objects: move in_pack out of struct object_entry
 - pack-objects: move in_pack_pos out of struct object_entry
 - pack-objects: use bitfield for object_entry::depth
 - pack-objects: use bitfield for object_entry::dfs_state
 - pack-objects: turn type and in_pack_type to bitfields
 - pack-objects: a bit of document about struct object_entry
 - read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean

 "git pack-objects" needs to allocate tons of "struct object_entry"
 while doing its work, and shrinking its size helps the performance
 quite a bit.

 What's the doneness of this thing?  The interdiff since previous
 rounds looked reasonable, but I didn't see this round otherwise
 scrutinized by reviewers.  The numbers given in the commit near the
 tip do look impressive, though ;-)


* nd/repack-keep-pack (2018-04-16) 7 commits
 - pack-objects: show some progress when counting kept objects
 - gc --auto: exclude base pack if not enough mem to "repack -ad"
 - gc: handle a corner case in gc.bigPackThreshold
 - gc: add gc.bigPackThreshold config
 - gc: add --keep-largest-pack option
 - repack: add --keep-pack option
 - t7700: have closing quote of a test at the beginning of line

 "git gc" in a large repository takes a lot of time as it considers
 to repack all objects into one pack by default.  The command has
 been taught to pretend as if the largest existing packfile is
 marked with ".keep" so that it is left untouched while objects in
 other packs and loose ones are repacked.

 What's the doneness of this thing?  The interdiff since the earlier
 one looked reasonable, but I didn't see this round otherwise
 scrutinized by reviewers.


* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* ds/commit-graph (2018-04-11) 16 commits
  (merged to 'next' on 2018-04-25 at 18af3d28d9)
 + commit-graph: implement "--append" option
 + commit-graph: build graph from starting commits
 + commit-graph: read only from specific pack-indexes
 + commit: integrate commit graph with commit parsing
 + commit-graph: close under reachability
 + commit-graph: add core.commitGraph setting
 + commit-graph: implement git commit-graph read
 + commit-graph: implement git-commit-graph write
 + commit-graph: implement write_commit_graph()
 + commit-graph: create git-commit-graph builtin
 + graph: add commit graph design document
 + commit-graph: add format document
 + csum-file: refactor finalize_hashfile() method
 + csum-file: rename hashclose() to finalize_hashfile()
 + Merge branch 'jk/cached-commit-buffer' into HEAD
 + Merge branch 'jt/binsearch-with-fanout' into HEAD
 (this branch is used by ds/generation-numbers and ds/lazy-load-trees.)

 Precompute and store information necessary for ancestry traversal
 in a separate file to optimize graph walking.

 Will merge to 'master'.


* pc/submodule-helper-foreach (2018-02-02) 5 commits
 - submodule: port submodule subcommand 'foreach' from shell to C
 - submodule foreach: document variable '$displaypath'
 - submodule foreach: clarify the '$toplevel' variable documentation
 - submodule foreach: document '$sm_path' instead of '$path'
 - submodule foreach: correct '$path' in nested submodules from a subdirectory

 Expecting a response to review comments
 e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>


* tg/worktree-add-existing-branch (2018-04-25) 4 commits
 - worktree: teach "add" to check out existing branches
 - worktree: factor out dwim_branch function
 - worktree: improve message when creating a new worktree
 - worktree: remove extra members from struct add_opts

 "git worktree add" learned to check out an existing branch.

 Is this ready for 'next'?


* js/rebase-recreate-merge (2018-04-24) 16 commits
 - rebase -i --rebase-merges: add a section to the man page
 - rebase -i: introduce --rebase-merges=[no-]rebase-cousins
 - pull: accept --rebase=merges to recreate the branch topology
 - rebase --rebase-merges: avoid "empty merges"
 - sequencer: handle post-rewrite for merge commands
 - sequencer: make refs generated by the `label` command worktree-local
 - rebase --rebase-merges: add test for --keep-empty
 - rebase: introduce the --rebase-merges option
 - rebase-helper --make-script: introduce a flag to rebase merges
 - sequencer: fast-forward `merge` commands, if possible
 - sequencer: introduce the `merge` command
 - git-rebase--interactive: clarify arguments
 - sequencer: offer helpful advice when a command was rescheduled
 - sequencer: refactor how original todo list lines are accessed
 - sequencer: make rearrange_squash() a bit more obvious
 - sequencer: avoid using errno clobbered by rollback_lock_file()

 "git rebase" learned "--rebase-merges" to transplant the whole
 topology of commit graph elsewhere.

 Was on hold.  What's the donness of this thing?
 cf. <nycvar.QRO.7.76.6.1804210017020.4241@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>


* bw/protocol-v2 (2018-03-15) 35 commits
  (merged to 'next' on 2018-04-11 at 23ee234a2c)
 + remote-curl: don't request v2 when pushing
 + remote-curl: implement stateless-connect command
 + http: eliminate "# service" line when using protocol v2
 + http: don't always add Git-Protocol header
 + http: allow providing extra headers for http requests
 + remote-curl: store the protocol version the server responded with
 + remote-curl: create copy of the service name
 + pkt-line: add packet_buf_write_len function
 + transport-helper: introduce stateless-connect
 + transport-helper: refactor process_connect_service
 + transport-helper: remove name parameter
 + connect: don't request v2 when pushing
 + connect: refactor git_connect to only get the protocol version once
 + fetch-pack: support shallow requests
 + fetch-pack: perform a fetch using v2
 + upload-pack: introduce fetch server command
 + push: pass ref prefixes when pushing
 + fetch: pass ref prefixes when fetching
 + ls-remote: pass ref prefixes when requesting a remote's refs
 + transport: convert transport_get_remote_refs to take a list of ref prefixes
 + transport: convert get_refs_list to take a list of ref prefixes
 + connect: request remote refs using v2
 + ls-refs: introduce ls-refs server command
 + serve: introduce git-serve
 + test-pkt-line: introduce a packet-line test helper
 + protocol: introduce enum protocol_version value protocol_v2
 + transport: store protocol version
 + connect: discover protocol version outside of get_remote_heads
 + connect: convert get_remote_heads to use struct packet_reader
 + transport: use get_refs_via_connect to get refs
 + upload-pack: factor out processing lines
 + upload-pack: convert to a builtin
 + pkt-line: add delim packet support
 + pkt-line: allow peeking a packet line without consuming it
 + pkt-line: introduce packet_read_with_status
 (this branch is used by bw/server-options.)

 The beginning of the next-gen transfer protocol.

 Will cook in 'next'.


* ls/checkout-encoding (2018-04-16) 10 commits
  (merged to 'next' on 2018-04-25 at e0f8554b2a)
 + convert: add round trip check based on 'core.checkRoundtripEncoding'
 + convert: add tracing for 'working-tree-encoding' attribute
 + convert: check for detectable errors in UTF encodings
 + convert: add 'working-tree-encoding' attribute
 + utf8: add function to detect a missing UTF-16/32 BOM
 + utf8: add function to detect prohibited UTF-16/32 BOM
 + utf8: teach same_encoding() alternative UTF encoding names
 + strbuf: add a case insensitive starts_with()
 + strbuf: add xstrdup_toupper()
 + strbuf: remove unnecessary NUL assignment in xstrdup_tolower()

 The new "checkout-encoding" attribute can ask Git to convert the
 contents to the specified encoding when checking out to the working
 tree (and the other way around when checking in).

 Will merge to 'master'.
 This looked more or less ready for 'next'.  Please stop me if there
 are remaining issues I forgot about.

--------------------------------------------------
[Discarded]

* js/runtime-prefix-windows (2018-03-27) 5 commits
 . mingw/msvc: use the new-style RUNTIME_PREFIX helper
 . exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
 . exec_cmd: RUNTIME_PREFIX on some POSIX systems
 . Makefile: add Perl runtime prefix support
 . Makefile: generate Perl header from template file

 The Windows port was the first that allowed Git to be installed
 anywhere by having its components refer to each other with relative
 pathnames.  The recent dj/runtime-prefix topic extends the idea to
 other platforms, and its approach has been adopted back in the
 Windows port.

 Ejected, as the parent topic dj/runtime-prefix covers Windows now.


* bp/fsexcludes (2018-04-16) 2 commits
 . fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
 . fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic

 Can we have a few lines summary here, just like we have for other
 topic ;-) I personally take the overlong title of these commits as
 a sign that they can further be simplified and cleaned up by
 splitting, focusing the scope, etc.

 Retracted.
 cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #09; Mon, 31)
@ 2022-10-31  5:31  3% Taylor Blau
  0 siblings, 0 replies; 200+ results
From: Taylor Blau @ 2022-10-31  5:31 UTC (permalink / raw)
  To: git

What's cooking in git.git (Oct 2022, #09; Mon, 31)
--------------------------------------------------

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.  A topic without enough support may be
discarded after a long period of no activity.

This is the first pushout from the interim maintainer. Topics which
were marked as ready for 'master' have been merged, and 'next' is now
empty. A number of topics have been marked for 'next' which will start
graduating in the next round.

Please point out any glitches you see along the way. If a topic you
sent doesn't appear here, please nudge me or resend it.

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:

	https://github.com/git/git/

The following mirrors are currently out-of-date while the usual
maintainer is offline.

	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://gitlab.com/git-vcs/git/

With all the integration branches and topics broken out:

	https://github.com/ttaylorr/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are typically 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/

...but these and the release tarballs below are similarly out-of-date:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[Graduated to 'master']

* ds/bundle-uri-3 (2022-10-12) 13 commits
  (merged to 'next' on 2022-10-28 at 9d9092b4cc)
 + bundle-uri: suppress stderr from remote-https
 + bundle-uri: quiet failed unbundlings
 + bundle: add flags to verify_bundle()
 + bundle-uri: fetch a list of bundles
 + bundle: properly clear all revision flags
 + bundle-uri: limit recursion depth for bundle lists
 + bundle-uri: parse bundle list in config format
 + bundle-uri: unit test "key=value" parsing
 + bundle-uri: create "key=value" line parsing
 + bundle-uri: create base key-value pair parsing
 + bundle-uri: create bundle_list struct and helpers
 + bundle-uri: use plain string in find_temp_filename()
 + Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* en/merge-tree-sequence (2022-10-22) 2 commits
  (merged to 'next' on 2022-10-28 at 31459cd5a8)
 + merge-tree: support multiple batched merges with --stdin
 + merge-tree: update documentation for differences in -z output

 "git merge-tree --stdin" is a new way to request a series of merges
 and report the merge results.
 source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>


* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
  (merged to 'next' on 2022-10-27 at 56f1e5222d)
 + merge-ort: fix bug with dir rename vs change dir to symlink

 Merging a branch with directory renames into a branch that changes
 the directory to a symlink was mishandled by the ort merge
 strategy, which has been corrected.
 source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>


* jc/doc-fsck-msgids (2022-10-25) 4 commits
  (merged to 'next' on 2022-10-28 at 3c00edabf8)
 + Documentation: add lint-fsck-msgids
 + fsck: document msg-id
 + fsck: remove the unused MISSING_TREE_OBJECT
 + fsck: remove the unused BAD_TAG_OBJECT

 Add documentation for message IDs in fsck error messages.
 source: <20221025224224.2352979-1-gitster@pobox.com>


* jh/trace2-timers-and-counters (2022-10-24) 8 commits
  (merged to 'next' on 2022-10-26 at e4933e2658)
 + trace2: add global counter mechanism
 + trace2: add stopwatch timers
 + trace2: convert ctx.thread_name from strbuf to pointer
 + trace2: improve thread-name documentation in the thread-context
 + trace2: rename the thread_name argument to trace2_thread_start
 + api-trace2.txt: elminate section describing the public trace2 API
 + tr2tls: clarify TLS terminology
 + trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.
 source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>


* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
  (merged to 'next' on 2022-10-26 at e706eb120c)
 + t7700: annotate cruft-pack failure with ok=sigpipe
 + repack: drop remove_temporary_files()
 + repack: use tempfiles for signal cleanup
 + repack: expand error message for missing pack files
 + repack: populate extension bits incrementally
 + repack: convert "names" util bitfield to array

 The way "git repack" creared temporary files when it received a
 signal was prone to deadlocking, which has been corrected.
 source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>


* jr/embargoed-releases-doc (2022-10-24) 1 commit
  (merged to 'next' on 2022-10-27 at c000502eaa)
 + embargoed releases: also describe the git-security list and the process

 The role the security mailing list plays in an embargoed release
 has been documented.
 source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>


* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
  (merged to 'next' on 2022-10-28 at 4a2588ab9e)
 + negotiator/skipping: avoid stack overflow

 Rewrite a deep recursion in the skipping negotiator to use a loop
 with on-heap prio queue to avoid stack wastage.
 source: <20221025232934.1504445-1-jonathantanmy@google.com>


* jz/patch-id (2022-10-24) 6 commits
  (merged to 'next' on 2022-10-24 at 1ac3b46fbe)
 + builtin: patch-id: remove unused diff-tree prefix
 + builtin: patch-id: add --verbatim as a command mode
 + patch-id: fix patch-id for mode changes
 + builtin: patch-id: fix patch-id with binary diffs
 + patch-id: use stable patch-id for rebases
 + patch-id: fix stable patch id for binary / header-only

 A new "--include-whitespace" option is added to "git patch-id", and
 existing bugs in the internal patch-id logic that did not match
 what "git patch-id" produces have been corrected.
 source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>


* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
  (merged to 'next' on 2022-10-27 at 4f2134dd87)
 + subtree: fix split after annotated tag was squashed merged
 + subtree: fix squash merging after annotated tag was squashed merged
 + subtree: process 'git-subtree-split' trailer in separate function
 + subtree: use named variables instead of "$@" in cmd_pull
 + subtree: define a variable before its first use in 'find_latest_squash'
 + subtree: prefix die messages with 'fatal'
 + subtree: add 'die_incompatible_opt' function to reduce duplication
 + subtree: use 'git rev-parse --verify [--quiet]' for better error messages
 + test-lib-functions: mark 'test_commit' variables as 'local'

 A bugfix to "git subtree" in its split and merge features.
 source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
  (merged to 'next' on 2022-10-27 at 802359afac)
 + rebase --keep-base: imply --no-fork-point
 + rebase --keep-base: imply --reapply-cherry-picks
 + rebase: factor out branch_base calculation
 + rebase: rename merge_base to branch_base
 + rebase: store orig_head as a commit
 + rebase: be stricter when reading state files containing oids
 + t3416: set $EDITOR in subshell
 + t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
  (merged to 'next' on 2022-10-27 at 60738821ef)
 + rebase: cleanup action handling
 + rebase --abort: improve reflog message
 + rebase --apply: make reflog messages match rebase --merge
 + rebase --apply: respect GIT_REFLOG_ACTION
 + rebase --merge: fix reflog message after skipping
 + rebase --merge: fix reflog when continuing
 + t3406: rework rebase reflog tests
 + rebase --apply: remove duplicated code
 + Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* rj/branch-copy-rename-error-codepath-cleanup (2022-10-26) 1 commit
  (merged to 'next' on 2022-10-27 at f01a4ff619)
 + branch: error copying or renaming a detached HEAD

 Code simplification.
 source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>


* rj/branch-do-not-exit-with-minus-one-status (2022-10-26) 1 commit
  (merged to 'next' on 2022-10-27 at 061f63d4e2)
 + branch: error code with --edit-description

 "git branch --edit-description" can exit with status -1 which is
 not a good practice; it learned to use 1 as everybody else instead.
 source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>


* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
  (merged to 'next' on 2022-10-26 at 3d23cfd399)
 + submodule: use strvec_pushf() for --super-prefix

 Code simplification by using strvec_pushf() instead of building an
 argument in a separate strbuf.
 source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
  (merged to 'next' on 2022-10-26 at b984763a1b)
 + docs: git-send-email: difference between ssl and tls smtp-encryption

 Will merge to 'master'.
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* sg/stable-docdep (2022-10-21) 1 commit
  (merged to 'next' on 2022-10-26 at 68432e1b2c)
 + Documentation/build-docdep.perl: generate sorted output

 Make sure generated dependency file is stably sorted to help
 developers debugging their build issues.
 source: <20221021102950.539148-1-szeder.dev@gmail.com>


* tb/cap-patch-at-1gb (2022-10-25) 1 commit
  (merged to 'next' on 2022-10-27 at f0b4f9c12a)
 + apply: reject patches larger than ~1 GiB

 "git apply" limits its input to a bit less than 1 GiB.
 source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>


* tb/midx-cleanup-fix (2022-10-25) 1 commit
 - midx.c: clear auxiliary MIDX files first

 The order in which multi-pack-index and its associated files are
 dropped has been tweaked to make it safer for concurrent users.

 Under discussion, but leaning to negative..
 cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
 source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>


* tb/shortlog-group (2022-10-24) 7 commits
  (merged to 'next' on 2022-10-26 at 76e64a6036)
 + shortlog: implement `--group=committer` in terms of `--group=<format>`
 + shortlog: implement `--group=author` in terms of `--group=<format>`
 + shortlog: extract `shortlog_finish_setup()`
 + shortlog: support arbitrary commit format `--group`s
 + shortlog: extract `--group` fragment for translation
 + shortlog: make trailer insertion a noop when appropriate
 + shortlog: accept `--date`-related options

 "git shortlog" learned to group by the "format" string.
 source: <cover.1666637725.git.me@ttaylorr.com>

--------------------------------------------------
[New Topics]

* ab/cmake-nix-and-ci (2022-10-30) 11 commits
 - CI: add a "linux-cmake-test" to run cmake & ctest on linux
 - cmake: copy over git-p4.py for t983[56] perforce test
 - cmake: support GIT_TEST_OPTS, abstract away WIN32 defaults
 - Makefile + cmake: use environment, not GIT-BUILD-DIR
 - test-lib.sh: support a "GIT_TEST_BUILD_DIR"
 - cmake: set "USE_LIBPCRE2" in "GIT-BUILD-OPTIONS" for test-lib.sh
 - cmake & test-lib.sh: add a $GIT_SOURCE_DIR variable
 - cmake: chmod +x the bin-wrappers/* & SCRIPT_{SH,PERL} & git-p4
 - cmake: don't copy chainlint.pl to build directory
 - cmake: update instructions for portable CMakeLists.txt
 - cmake: don't "mkdir -p" and "cd" in build instructions

 Fix assorted issues with CTest on *nix machines.

 Waiting for review.
 source: <cover-v2-00.11-00000000000-20221027T032622Z-avarab@gmail.com>


* ab/make-bin-wrappers (2022-10-30) 3 commits
 - Makefile: simplify $(test_bindir_programs) rule by splitting it up
 - Makefile: define "TEST_{PROGRAM,OBJS}" variables earlier
 - Makefile: factor sed-powered '#!/bin/sh' munging into a variable

 Resolve issues with the bin-wrappers/% rules where "make
 bin-wrappers/git" would generate the script but not "git" itself.

 Waiting for review.
 source: <cover-v2-0.3-00000000000-20221026T143533Z-avarab@gmail.com>


* ab/misc-hook-submodule-run-command (2022-10-31) 3 commits
 - run-command tests: test stdout of run_command_parallel()
 - submodule tests: reset "trace.out" between "grep" invocations
 - hook tests: fix redirection logic error in 96e7225b310

 Various test updates.

 Waiting for review.
 source: <cover-0.3-00000000000-20221029T025520Z-avarab@gmail.com>


* do/modernize-t7001 (2022-10-31) 1 commit
 - t7001-mv.sh:modernizing test script using function

 Modernize test script to avoid "test -f" and friends.

 Will merge to 'next'.
 source: <pull.1372.git.git.1667150441883.gitgitgadget@gmail.com>


* kz/merge-tree-merge-base (2022-10-29) 1 commit
 - merge-tree.c: add --merge-base=<commit> option

 "merge-tree" learns a new `--merge-base` option.

 Waiting for review.
 source: <pull.1397.v3.git.1667014975042.gitgitgadget@gmail.com>


* mh/password-can-be-pat (2022-10-30) 1 commit
 - Mention that password could be a personal access token.

 Documentation update to git-credential(1).

 Will merge to 'next'.
 source: <pull.1396.git.1666845947898.gitgitgadget@gmail.com>


* po/pretty-hard-trunc (2022-10-30) 1 commit
 - pretty-formats: add hard truncation, without ellipsis, options

 Add a new pretty format which truncates without ellipsis.

 Missing test coverage.
 source: <20221030185614.3842-1-philipoakley@iee.email>


* rr/long-status-advice (2022-10-31) 1 commit
 - status: long status advice adapted to recent capabilities

 The advice message emitted by a slow "status" run is amended to
 mention fsmonitor.

 Waiting for reviewer feedback on the updated round.
 source: <pull.1384.v2.git.1667002005494.gitgitgadget@gmail.com>


* rs/archive-filter-error-once (2022-10-30) 1 commit
 - archive-tar: report filter start error only once

 "git archive" mistakenly complained twice about a missing executable,
 which has been corrected.

 Will merge to 'next'.
 source: <c51b72e5-1c32-65e4-6faa-04693b623e2e@web.de>

--------------------------------------------------
[Stalled]

* cw/submodule-status-in-parallel (2022-10-20) 7 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor match_stat_with_submodule
 . submodule: move status parsing into function
 . submodule: strbuf variable rename
 . run-command: add hide_output to run_processes_parallel_opts
 . run-command: add pipe_output_fn to run_processes_parallel_opts
 . Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks winVS test?
 cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
 source: <20221011232604.839941-1-calvinwan@google.com>


* js/bisect-in-c (2022-08-30) 17 commits
 . bisect: no longer try to clean up left-over `.git/head-name` files
 . bisect: remove Cogito-related code
 . Turn `git bisect` into a full built-in
 . bisect: move even the command-line parsing to `bisect--helper`
 . bisect--helper: make `state` optional
 . bisect--helper: calling `bisect_state()` without an argument is a bug
 . bisect: avoid double-quoting when printing the failed command
 . bisect run: fix the error message
 . bisect: verify that a bogus option won't try to start a bisection
 . bisect--helper: migrate to OPT_SUBCOMMAND()
 . bisect--helper: make the order consistently `argc, argv`
 . bisect--helper: make `terms` an explicit singleton
 . bisect--helper: simplify exit code computation
 . bisect--helper: really retire `--bisect-autostart`
 . bisect--helper: really retire --bisect-next-check
 . bisect--helper: retire the --no-log option
 . Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 . Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.
 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* ag/merge-strategies-in-c (2022-08-10) 14 commits
 . sequencer: use the "octopus" strategy without forking
 . sequencer: use the "resolve" strategy without forking
 . merge: use the "octopus" strategy without forking
 . merge: use the "resolve" strategy without forking
 . merge-octopus: rewrite in C
 . merge-recursive: move better_branch_name() to merge.c
 . merge-resolve: rewrite in C
 . merge-one-file: rewrite in C
 . update-index: move add_cacheinfo() to read-cache.c
 . merge-index: add a new way to invoke `git-merge-one-file'
 . merge-index: drop the index
 . merge-index: libify merge_one_path() and merge_all()
 . t6060: add tests for removed files
 . t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 . range-diff: clarify --creation-factor=<factor>
 . format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ab/config-multi-and-nonbool (2022-10-27) 10 commits
 - for-each-repo: with bad config, don't conflate <path> and <cmd>
 - config API: add "string" version of *_value_multi(), fix segfaults
 - config tests: add "NULL" tests for *_get_value_multi()
 - config API: add and use "lookup_value" functions
 - builtin/gc.c: use "unsorted_string_list_has_string()" where appropriate
 - string-list API: make has_string() and list_lookup() "const"
 - string-list API: mark "struct_string_list" to "for_each_string_list" const
 - config API: mark *_multi() with RESULT_MUST_BE_USED
 - for-each-repo: error on bad --config
 - config API: have *_multi() return an "int" and take a "dest"

 A mixed bag of config API updates.

 Expecting a reroll.
 cf. <221026.86pmeebcj9.gmgdl@evledraar.gmail.com>
 source: <cover-00.10-00000000000-20221026T151328Z-avarab@gmail.com>


* ab/sha-makefile-doc (2022-10-26) 9 commits
 - Makefile: discuss SHAttered in *_SHA{1,256} discussion
 - Makefile: document default SHA-1 backend on OSX
 - Makefile: document SHA-1 and SHA-256 default and selection order
 - Makefile: document default SHA-256 backend
 - Makefile: rephrase the discussion of *_SHA1 knobs
 - Makefile: create and use sections for "define" flag listing
 - Makefile: correct DC_SHA1 documentation
 - INSTALL: remove discussion of SHA-1 backends
 - Makefile: always (re)set DC_SHA1 on fallback

 Makefile comments updates and reordering to clarify knobs used to
 choose SHA implementations.

 Will merge to 'next'?
 source: <cover-v4-0.9-00000000000-20221026T145255Z-avarab@gmail.com>


* rs/no-more-run-command-v (2022-10-30) 12 commits
 - replace and remove run_command_v_opt()
 - replace and remove run_command_v_opt_cd_env_tr2()
 - replace and remove run_command_v_opt_tr2()
 - replace and remove run_command_v_opt_cd_env()
 - use child_process members "args" and "env" directly
 - use child_process member "args" instead of string array variable
 - sequencer: simplify building argument list in do_exec()
 - bisect--helper: factor out do_bisect_run()
 - bisect: simplify building "checkout" argument list
 - am: simplify building "show" argument list
 - run-command: fix return value comment
 - merge: remove always-the-same "verbose" arguments

 Simplify the run-command API.

 Will merge to 'next'.
 source: <ea061164-b36b-485c-963f-8c13e813a47e@web.de>


* tb/howto-using-redo-script (2022-10-26) 1 commit
 - Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation

 Doc update.

 Will merge to 'next'.
 source: <4ba057094ae6b1bd5c18583f23f7f99232034c72.1666815325.git.me@ttaylorr.com>


* ps/receive-use-only-advertised (2022-10-28) 3 commits
 - SQUASH - leakfix
 - receive-pack: use advertised reference tips to inform connectivity check
 - connected: allow supplying different view of reachable objects

 "git receive-pack" used to use all the local refs as the boundary
 for checking connectivity of the data "git push" sent, but now it
 uses only the refs that it advertised to the pusher.  In a
 repository with the .hideRefs configuration, this reduces the
 resource needed to perform the check, and also forces the pusher to
 prove they have all objects that are necessary to complete the
 history on top of only the history available to them.

 Expecting a reroll.
 cf. <221028.86bkpw805n.gmgdl@evledraar.gmail.com>
 cf. <xmqqr0yrizqm.fsf@gitster.g>
 source: <cover.1666967670.git.ps@pks.im>


* jc/set-gid-bit-less-aggressively (2022-10-28) 1 commit
 - adjust_shared_perm(): leave g+s alone when the group does not matter

 The adjust_shared_perm() helper function learned to refrain from
 setting the "g+s" bit on directories when it is not necessary.

 Will merge to 'next'.
 source: <xmqqr0yrhco6.fsf@gitster.g>


* gc/submodule-clone-update-with-branches (2022-10-30) 8 commits
 - clone, submodule update: create and check out branches
 - submodule--helper: remove update_data.suboid
 - submodule update: refactor update targets
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - submodule--helper clone: create named branch
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.

 Waiting for review.
 source: <pull.1321.v3.git.git.1666988096.gitgitgadget@gmail.com>


* es/mark-gc-cruft-as-experimental (2022-10-26) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Will merge to 'next'.
 source: <cover.1666819953.git.me@ttaylorr.com>


* pw/config-int-parse-fixes (2022-10-22) 3 commits
 - git_parse_signed(): avoid integer overflow
 - config: require at least one digit when parsing numbers
 - git_parse_unsigned: reject negative values

 Assorted fixes of parsing end-user input as integers.

 Expecting a reroll to add test coverage.
 cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
 source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-10-21) 1 commit
 - doc/cat-file: allow --use-mailmap for --batch options

 Doc updates.

 Waiting for review response.
 source: <20221021103442.202759-1-siddharthasthana31@gmail.com>


* tb/repack-expire-to (2022-10-24) 4 commits
 - builtin/repack.c: implement `--expire-to` for storing pruned objects
 - builtin/repack.c: write cruft packs to arbitrary locations
 - builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
 - builtin/repack.c: pass "out" to `prepare_pack_objects`

 "git repack" learns to send cruft objects out of the way into
 packfiles outside the repository.

 Waiting for review.
 source: <cover.1666636974.git.me@ttaylorr.com>


* cc/filtered-repack (2022-10-25) 2 commits
 - repack: add --filter=<filter-spec> option
 - pack-objects: allow --filter without --stdout

 "git repack" learns to discard objects that ought to be retrievable
 again from the promissor remote.

 Needs review.
 source: <20221025122856.20204-1-christian.couder@gmail.com>


* al/trace2-clearing-skip-worktree (2022-10-28) 2 commits
 - SQUASH???
 - index: add trace2 region for clear skip worktree

 Add trace2 counters to the region to clear skip worktree bits in a
 sparse checkout.

 Expecting a reroll?
 source: <pull.1368.v2.git.git.1666917961644.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-10-30) 4 commits
 - glossary: add reachability bitmap description
 - glossary: add "commit graph" description
 - doc: use 'object database' not ODB or abbreviation
 - doc: use "commit-graph" hyphenation consistently

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Will merge to 'next'.
 source: <20221029164112.2097-1-philipoakley@iee.email>


* mc/credential-helper-auth-headers (2022-10-21) 6 commits
 - t5556-http-auth: add test for HTTP auth hdr logic
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers

 Extending credential helper protocol.

 Needs review.
 source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-19) 10 commits
 - fixup! archive: add tests for git archive --recurse-submodules
 - archive: add tests for git archive --recurse-submodules
 - archive: add --recurse-submodules to git-archive command
 - archive: remove global repository from archive_args
 - archive: pass repo objects to write_archive handlers
 - tree: add repository parameter to read_tree_fn_t
 - tree: handle submodule case for read_tree_at properly
 - tree: increase test coverage for tree.c
 - tree: update cases to use repo_ tree methods
 - tree: do not use the_repository for tree traversal methods.

 "git archive" has been taught "--recurse-submodules" option to
 create a tarball that includes contents from submodules.

 Expecting a reroll.
 Seems to break win+VS test(8).
 cf. https://github.com/git/git/actions/runs/3293333066 whose only
 difference from https://github.com/git/git/actions/runs/3293553109
 is the inclusion of this topic.
 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* ab/coccicheck-incremental (2022-10-26) 12 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci rules: remove <id>'s from rules that don't need them
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Will merge to 'next'?
 source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc0
@ 2022-11-23  7:25  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-11-23  7:25 UTC (permalink / raw)
  To: git; +Cc: git-packagers, lwn

An early preview release Git v2.39.0-rc0 is now available for
testing at the usual places.  It is comprised of 423 non-merge
commits since v2.38.0, contributed by 67 people, 28 of which are
new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.39.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!

  Alexander Meshcheryakov, Anh Le, Arthur Chan, Daniel
  Sonbolian, Debra Obondo, Diomidis Spinellis, Erik Cervin
  Edin, Hank Leininger, herr.kaste, John A. Leuenhagen, Julia
  Ramer, Kevin Backhouse, Kousik Sanagavarapu, Lukáš Doktor,
  Martin Englund, M Hickford, Michael V. Scovetta, Noah Betzen,
  Nsengiyumva Wilberforce, orygaw, Ronan Pigott, Rubén Justo,
  Sotir Danailov, srz_zumix, Stefano Rivera, Tim Jaacks, Vincent
  Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jeff Hostetler, Jeff
  King, Jerry Zhang, Johannes Altmanninger, Johannes Schindelin,
  John Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Martin
  Ågren, Martin von Zweigbergk, Matthew John Cheetham, Michael
  J Gruber, Michael McClimon, Patrick Steinhardt, Philip Oakley,
  Philippe Blain, Phillip Wood, René Scharfe, Sergey Organov,
  Shaoxuan Yuan, SZEDER Gábor, Taylor Blau, Torsten Bögershausen,
  and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (8):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers

Eric Wong (1):
      delta-islands: free island-related data after use

Glen Choo (2):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (41):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (26):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (23):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (20):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (1):
      Documentation/build-docdep.perl: generate sorted output

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (100):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* Re: What's cooking in git.git (Dec 2015, #01; Tue, 1)
  @ 2015-12-02 22:31  3%   ` Jeff King
  0 siblings, 0 replies; 200+ results
From: Jeff King @ 2015-12-02 22:31 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Wed, Dec 02, 2015 at 02:11:32PM -0800, Junio C Hamano wrote:

> I think I managed to get my working area (together with a handful of
> new entries in the rerere database and a few merge-fix/ entries) in
> sync with what you pushed out well enough that my automated
> procedure would recreate the status of various branches you pushed
> out exactly.
> 
> I haven't caught up with the changes in the component branches,
> though, so it may take a few days until I start picking up new
> topics from the list traffic.

My whole workspace is at https://github.com/peff/git, if fetching that
directly is easier. I just noticed that my refspecs were not configured
to push up refs/merge-fix. I've just fixed that and pushed again.

I'll leave it that way for a few more days, but then will probably take
it back to my usual contributor setup (i.e., just my topics and personal
integration branches).

Let me know if there's anything else I can do to help with the handoff.

> > * bc/object-id (2015-11-20) 12 commits
> [...]
> 
> Aside from niggles on titles of a handful of changes in this topic,
> I have a bit of concern with this one and dt/refs-backend-pre-vtable
> topic (marked as "Will merge to 'master' two cycles from now.",
> which I am reading as "two cycles" means 2 x (8-10 week release
> cycle), not "two integration cycles by the maintainer, aka two
> issues of What's cooking report", which is typically less than a
> week).

My "two cycles from now" meant "two integration cycles". I seemed to do
only about two per week. You can take those all with a grain of salt. It
was meant only as a note to myself that the topic seemed risky enough to
allow extra cooking time in next.

Since your "Meta/cook -w" output shows dates of merges, I imagine you
are in the habit of simply looking at those dates and saying "eh, this
has been in next for 2 weeks and nobody has complained; that's enough
cooking time".

> The merge resolution in 'pu' discards what this topic did to refs.c
> because much of the original goes away from there, but does it mean
> (remember, I haven't caught up with the contents of the topics yet)
> that the merge reverts part of what this topic did, and in an ideal
> world, if the other one were more mature when this topic got
> started, more use of "unsigned char[40]" would have been migrated to
> "struct object_id" in new files the other one introduced?  Or
> perhaps we would want to go the other way around, i.e. as this topic
> conceptually is fairly straight-forward, merge this to 'next' and
> then down to 'master' (which would not take two release cycles) and
> then redo the other topic on top?

I took the resolution proposed by brian, which was that the refs.c code
went away. There was some evil-merge required to make the new
refs/files-backend.c compile (in my refs/merge-fix/bc/object-id) for
code that moved. I was surprised there wasn't more, but I think it's
right. We dropped the _users_ of some sha1/object_id transition code
(which is why it doesn't need more fixup to compile). We did not drop
any actual function conversions (which might have been wrong but still
compiled, if both the function signature and its callers all moved).

As it's all part of an incremental conversion anyway, my feeling was
that it was OK to move forward as long as it wasn't disturbing topics in
flight (assuming we're agreed on the overall direction, which I think is
the case).

> > * mr/ff-refs (2015-11-28) 6 commits
> [...]
> 
> This is another one that needs some evil-merge interaction with
> bc/object-id, but I have a feeling that this is not such a good
> addition to our workflow elements, so I am not worried too much
> about it.  I'm inclined to eject this topic (and will welcome if
> people come up with an alternative, perhaps based on the "let fetch
> do so instead" approach discussed there).

Right. There's another merge-fix for this.

I explicitly put this after bc/object-id (requiring another merge-fix,
rather than rolling it into the bc/object-id merge fix), because I
expected bc/object-id to graduate, and this one to languish in pu or get
re-rolled.

I agree that ejecting is fine here.

> > * ps/rebase-keep-empty (2015-11-24) 2 commits
> >  - rebase: fix preserving commits with --keep-empty
> >  - rebase: test broken behavior with --keep-empty
> >
> >  Keep duplicate commits via rebase --keep-empty.
> >
> >  I'm not sure if I agree with this interpretation of the "rebase
> >  --keep-empty" documentation, but I haven't thought too hard about it.
> >  Comments welcome.
> 
> "--keep-empty" has always been about keeping an originally empty
> commit, not a commit that becomes empty because of rebasing
> (i.e. what has already been applied to the updated base).  The
> documentation, if it leads to any other interpretation, needs to be
> fixed.
> 
> Besides, if "--keep-empty" were to mean "keep redundant ones that
> are already in the updated base", the patch must do a lot more,
> e.g. stop filtering with git-cherry patch equivalence.
> 
> I'm inclined to eject this topic.

That was my thinking too (and I notice it didn't get any review from
anybody else).

> > * ls/test-must-fail-sigpipe (2015-11-28) 2 commits
> >   (merged to 'next' on 2015-12-01 at d374686)
> >  + add "ok=sigpipe" to test_must_fail and use it to fix flaky tests
> >  + implement test_might_fail using a refactored test_must_fail
> >
> >  Fix some racy client/server tests by treating SIGPIPE the same as a
> >  normal non-zero exit.
> >
> >  Will merge to 'master' two cycles from now.
> 
> Hmm, perhaps I misread what you meant by "two cycles", as this is
> only the test suite and I cannot imagine we would want to be
> ultra-safe to cook that for two release cycles, and you did mean two
> issues of "What's cooking" report?

Yes, the latter. Even though it is "only" the test suite, it gave us
enough trouble that I did not want to go to next and then immediately to
master in the next cycle (i.e., I wanted to give people time enough to
complain if it breaks their "make test" in next).

> > * dt/refs-backend-pre-vtable (2015-11-20) 10 commits
> >   (merged to 'next' on 2015-11-24 at 8fd7293)
> >  + refs: break out ref conflict checks
> >  + files_log_ref_write: new function
> >  + initdb: make safe_create_dir public
> >  + refs: split filesystem-based refs code into a new file
> >  + refs/refs-internal.h: new header file
> >  + refname_is_safe(): improve docstring
> >  + pack_if_possible_fn(): use ref_type() instead of is_per_worktree_ref()
> >  + copy_msg(): rename to copy_reflog_msg()
> >  + verify_refname_available(): new function
> >  + verify_refname_available(): rename function
> >
> >  Code preparation for pluggable ref backends.
> >
> >  Will merge to 'master' two cycles from now.
> 
> ... that is, I'd very much prefer bc/object-id redone on top of an
> updated codebase that already has dt/refs-backend-pre-vtable in it.

I think that is OK to do, though I'm not sure the end result will be
all that different.

-Peff

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.9.0-rc1
@ 2016-05-31 21:53  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-31 21:53 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

A release candidate Git v2.9.0-rc1 is now available for testing
at the usual places.  It is comprised of 462 non-merge commits
since v2.8.0, contributed by 63 people, 24 of which are new faces.

There still are a few topics yet to be merged to 'master' for the
upcoming release, but otherwise this is pretty much "feature
complete".  One known brown-paper-bag breakage exists in t/perf/,
whose fix is still in 'next'.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.9.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!

  Alexander Rinass, Armin Kunaschik, Ben Woosley, Gabriel Souza
  Franco, Jacob Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki
  Yamaguchi, Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas,
  Mehul Jain, Michael Procter, Nikola Forró, Pranit Bauva, Ray
  Zhang, René Nyffenegger, Santiago Torres, Saurav Sachidanand,
  Shin Kojima, Sidhant Sharma [:tk], Stanislav Kolotinskiy,
  and Xiaolong Ye.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
  brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
  David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
  Eric Sunshine, Eric Wong, Felipe Contreras, Jacob Keller,
  Jeff King, Jiang Xin, Johannes Schindelin, Johannes Sixt,
  John Keeping, Junio C Hamano, Karsten Blees, Lars Schneider,
  Linus Torvalds, Luke Diamand, Matthieu Moy, Michael Haggerty,
  Michael J Gruber, Michael Rappazzo, Nguyễn Thái Ngọc Duy,
  Ori Avtalion, Ralf Thielow, Ramsay Jones, Stefan Beller, Stephen
  P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
  and Vasco Almeida.

----------------------------------------------------------------

Git 2.9 Release Notes (draft)
=============================

Backward compatibility notes
----------------------------

The end-user facing Porcelain level commands in the "git diff" and
"git log" family by default enable the rename detection; you can still
use "diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.

The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default.  You can use
the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.


Updates since v2.8
------------------

UI, Workflows & Features

 * Comes with git-multimail 1.3.1 (in contrib/).

 * The end-user facing commands like "git diff" and "git log"
   now enable the rename detection by default.

 * The credential.helper configuration variable is cumulative and
   there is no good way to override it from the command line.  As
   a special case, giving an empty string as its value now serves
   as the signal to clear the values specified in various files.

 * A new "interactive.diffFilter" configuration can be used to
   customize the diff shown in "git add -i" sessions.

 * "git p4" now allows P4 author names to be mapped to Git author
   names.

 * "git rebase -x" can be used without passing "-i" option.

 * "git -c credential.<var>=<value> submodule" can now be used to
   propagate configuration variables related to credential helper
   down to the submodules.

 * "git tag" can create an annotated tag without explicitly given an
   "-a" (or "-s") option (i.e. when a tag message is given).  A new
   configuration variable, tag.forceSignAnnotated, can be used to tell
   the command to create signed tag in such a situation.

 * "git merge" used to allow merging two branches that have no common
   base by default, which led to a brand new history of an existing
   project created and then get pulled by an unsuspecting maintainer,
   which allowed an unnecessary parallel history merged into the
   existing project.  The command has been taught not to allow this by
   default, with an escape hatch "--allow-unrelated-histories" option
   to be used in a rare event that merges histories of two projects
   that started their lives independently.

 * "git pull" has been taught to pass the "--allow-unrelated-histories"
   option to underlying "git merge".

 * "git apply -v" learned to report paths in the patch that were
   skipped via --include/--exclude mechanism or being outside the
   current working directory.

 * Shell completion (in contrib/) updates.

 * The commit object name reported when "rebase -i" stops has been
   shortened.

 * "git worktree add" can be given "--no-checkout" option to only
   create an empty worktree without checking out the files.

 * "git mergetools" learned to drive ExamDiff.

 * "git pull --rebase" learned "--[no-]autostash" option, so that
   the rebase.autostash configuration variable set to true can be
   overridden from the command line.

 * When "git log" shows the log message indented by 4-spaces, the
   remainder of a line after a HT does not align in the way the author
   originally intended.  The command now expands tabs by default to help
   such a case, and allows the users to override it with a new option,
   "--no-expand-tabs".

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.

 * "git p4" learned to record P4 jobs in Git commit that imports from
   the history in Perforce.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to name a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."
   (merge 7550424 js/name-rev-use-oldest-ref later to maint).

 * "git clone" learned the "--shallow-submodules" option.

 * HTTP transport clients learned to throw extra HTTP headers at the
   server, specified via http.extraHeader configuration variable.

 * Patch output from "git diff" and friends has been tweaked to be
   more readable by using a blank line as a strong hint that the
   contents before and after it belong to logically separate units.

 * A new configuration variable core.hooksPath allows customizing
   where the hook directory is.

 * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
   submodule honor -c credential.* from command line, 2016-02-29)
   turned out to be a convoluted no-op; implement what it wanted to do
   correctly, and stop filtering settings given via "git -c var=val".

 * "git commit --dry-run" reported "No, no, you cannot commit." in one
   case where "git commit" would have allowed you to commit, and this
   improves it a little bit ("git commit --dry-run --short" still does
   not give you the correct answer, for example).  This is a stop-gap
   measure in that "commit --short --dry-run" still gives an incorrect
   result.

 * The experimental "multiple worktree" feature gains more safety to
   forbid operations on a branch that is checked out or being actively
   worked on elsewhere, by noticing that e.g. it is being rebased.

 * "git format-patch" learned a new "--base" option to record what
   (public, well-known) commit the original series was built on in
   its output.

 * "git commit" learned to pay attention to the "commit.verbose"
   configuration variable and act as if the "--verbose" option
   was given from the command line.

 * Updated documentation gives hints to GMail users with two-factor
   auth enabled that they need app-specific-password when using
   "git send-email".


Performance, Internal Implementation, Development Support etc.

 * The embedded args argv-array in the child process is used to build
   the command line to run pack-objects instead of using a separate
   array of strings.

 * A test for tags has been restructured so that more parts of it can
   easily be run on a platform without a working GnuPG.

 * The startup_info data, which records if we are working inside a
   repository (among other things), are now uniformly available to Git
   subcommand implementations, and Git avoids attempting to touch
   references when we are not in a repository.

 * The command line argument parser for "receive-pack" has been
   rewritten to use parse-options.

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.  Other updates to "git submodule" that move pieces of
   logic to C continues.

 * Rename bunch of tests on "git clone" for better organization.

 * The tests that involve running httpd leaked the system-wide
   configuration in /etc/gitconfig to the tested environment.

 * Build updates for MSVC.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * Code restructuring around the "refs" API to prepare for pluggable
   refs backends.

 * Sources to many test helper binaries and the generated helpers
   have been moved to t/helper/ subdirectory to reduce clutter at the
   top level of the tree.

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.

 * "merge-recursive" strategy incorrectly checked if a path that is
   involved in its internal merge exists in the working tree.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * As nobody maintains our in-tree git.spec.in and distros use their
   own spec file, we stopped pretending that we support "make rpm".

 * Move from "unsigned char[20]" to "struct object_id" continues.

 * The code for warning_errno/die_errno has been refactored and a new
   error_errno() reporting helper is introduced.
   (merge 1da045f nd/error-errno later to maint).

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.
   (merge d88785e jk/test-send-sh-x-trace-elsewhere later to maint).

 * t0040 had too many unnecessary repetitions in its test data.  Teach
   test-parse-options program so that a caller can tell what it
   expects in its output, so that these repetitions can be cleaned up.

 * Add perf test for "rebase -i".

 * Common mistakes when writing gitlink: in our documentation are
   found by "make check-docs".

 * t9xxx series has been updated primarily for readability, while
   fixing small bugs in it.  A few scripted Porcelain commands have
   also been updated to fix possible bugs around their use of
   "test -z" and "test -n".

 * CI test was taught to run git-svn tests.

 * "git cat-file --batch-all" has been sped up, by taking advantage
   of the fact that it does not have to read a list of objects, in two
   ways.

 * test updates to make it more readable and maintainable.
   (merge e6273f4 es/t1500-modernize later to maint).


Also contains various documentation updates and code clean-ups.


Fixes since v2.8
----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git config --get-urlmatch", unlike other variants of the "git
   config --get" family, did not signal error with its exit status
   when there was no matching configuration.

 * The "--local-env-vars" and "--resolve-git-dir" options of "git
   rev-parse" failed to work outside a repository when the command's
   option parsing was rewritten in 1.8.5 era.

 * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 * Fetching of history by naming a commit object name directly didn't
   work across remote-curl transport.

 * A small memory leak in an error codepath has been plugged in xdiff
   code.

 * strbuf_getwholeline() did not NUL-terminate the buffer on certain
   corner cases in its error codepath.

 * "git mergetool" did not work well with conflicts that both sides
   deleted.

 * "git send-email" had trouble parsing alias file in mailrc format
   when lines in it had trailing whitespaces on them.

 * When "git merge --squash" stopped due to conflict, the concluding
   "git commit" failed to read in the SQUASH_MSG that shows the log
   messages from all the squashed commits.

 * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
   nothing into an unborn history (which is arguably unusual usage,
   which perhaps was the reason why nobody noticed it).

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree,
   which was wrong.

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git diff -M" used to work better when two originally identical
   files A and B got renamed to X/A and X/B by pairing A to X/A and B
   to X/B, but this was broken in the 2.0 timeframe.

 * "git send-pack --all <there>" was broken when its command line
   option parsing was written in the 2.6 timeframe.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * When running "git blame $path" with unnormalized data in the index
   for the path, the data in the working tree was blamed, even though
   "git add" would not have changed what is already in the index, due
   to "safe crlf" that disables the line-end conversion.  It has been
   corrected.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
   elements we use in imap-send, which has been adjusted for the change.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently from socks5:// proxies.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853

 * "merge-octopus" strategy did not ensure that the index is clean
   when merge begins.

 * When "git merge" notices that the merge can be resolved purely at
   the tree level (without having to merge blobs) and the resulting
   tree happens to already exist in the object store, it forgot to
   update the index, which left an inconsistent state that would
   break later operations.

 * "git submodule" reports the paths of submodules the command
   recurses into, but these paths were incorrectly reported when
   the command was not run from the root level of the superproject.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git replace -e" did not honour "core.editor" configuration.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * mmap emulation on Windows has been optimized and work better without
   consuming paging store when not needed.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * UI consistency improvements for "git mergetool".

 * "git rebase -m" could be asked to rebase an entire branch starting
   from the root, but failed by assuming that there always is a parent
   commit to the first commit on the branch.

 * Fix a broken "p4 lfs" test.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * "git fetch" test t5510 was flaky while running a (forced) automagic
   garbage collection.

 * Documentation updates to help contributors setting up Travis CI
   test for their patches.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

 * "git commit-tree" plumbing command required the user to always sign
   its result when the user sets the commit.gpgsign configuration
   variable, which was an ancient mistake.  Rework "git rebase" that
   relied on this mistake so that it reads commit.gpgsign and pass (or
   not pass) the -S option to "git commit-tree" to keep the end-user
   expectation the same, while teaching "git commit-tree" to ignore
   the configuration variable.  This will stop requiring the users to
   sign commit objects used internally as an implementation detail of
   "git stash".

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.
   (merge e5a39ad bn/http-cookiefile-config later to maint).

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.
   (merge dca83ab jc/config-pathname-type later to maint).

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.
   (merge f6a5279 sb/submodule-deinit-all later to maint).

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.
   (merge 1cca17d jc/linkgit-fix later to maint).

 * "git rerere" can get confused by conflict markers deliberately left
   by the inner merge step, because they are indistinguishable from
   the real conflict markers left by the outermost merge which are
   what the end user and "rerere" need to look at.  This was fixed by
   making the conflict markers left by the inner merges a bit longer.
   (merge 0f9fd5c jc/ll-merge-internal later to maint).

 * CI test was taught to build documentation pages.
   (merge b98712b ls/travis-build-doc later to maint).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.
   (merge 6d2d780 jc/fsck-nul-in-commit later to maint).

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).
   (merge 8e98b35 jk/rebase-interactive-eval-fix later to maint).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.
   (merge ebf31e7 js/windows-dotgit later to maint).

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.
   (merge 05a5869 kf/gpg-sig-verification-doc later to maint).

 * A couple of bugs around core.autocrlf have been fixed.
   (merge caa47ad tb/core-eol-fix later to maint).

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.
   (merge 90a78b8 ar/diff-args-osx-precompose later to maint).

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.
   (merge 366f9ce da/difftool later to maint).

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".
   (merge f7f90e0 kb/msys2-tty later to maint).

 * We forgot to add "git log --decorate=auto" to documentation when we
   added the feature back in v2.1.0 timeframe.
   (merge 462cbb4 rj/log-decorate-auto later to maint).

 * "git fast-import --export-marks" would overwrite the existing marks
   file even when it makes a dump from its custom die routine.
   Prevent it from doing so when we have an import-marks file but
   haven't finished reading it.
   (merge f4beed6 fc/fast-import-broken-marks-file later to maint).

 * Other minor clean-ups and documentation updates
   (merge 832c0e5 lp/typofixes later to maint).
   (merge f5ee54a sb/z-is-gnutar-ism later to maint).
   (merge 2e3926b va/i18n-misc-updates later to maint).
   (merge f212dcc bn/config-doc-tt-varnames later to maint).
   (merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
   (merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
   (merge 4df4313 jc/test-seq later to maint).
   (merge a75a308 tb/t5601-sed-fix later to maint).
   (merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
   (merge dee2303 va/mailinfo-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.8.0 are as follows:

Adam Dinwoodie (2):
      config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
      commit: --amend -m '' silently fails to wipe message

Alexander Kuleshov (1):
      submodule-config: use hashmap_iter_first()

Alexander Rinass (1):
      diff: run arguments through precompose_argv

Armin Kunaschik (2):
      t4151: make sure argument to 'test -z' is given
      t0008: 4 tests fail with ksh88

Ben Woosley (1):
      git-rebase--merge: don't include absent parent as a base

Brian Norris (3):
      Documentation: config: improve word ordering for http.cookieFile
      http: expand http.cookieFile as a path
      config: consistently format $variables in monospaced font

Christian Couder (5):
      Documentation: talk about pager in api-trace.txt
      builtin/apply: get rid of useless 'name' variable
      builtin/apply: handle parse_binary() failure
      builtin/apply: free patch when parse_chunk() fails
      Git/SVN: die when there is no commit metadata

David Aguilar (4):
      mergetool: support delete/delete conflicts
      mergetool: honor tempfile configuration when resolving delete conflicts
      difftool: initialize variables for readability
      difftool: handle unmerged files in dir-diff mode

David Turner (5):
      refs: move head_ref{,_submodule} to the common code
      refs: move for_each_*ref* functions into common code
      files-backend: break out ref reading
      refs: move resolve_ref_unsafe into common code
      refs: on symref reflog expire, lock symref not referrent

Dennis Kaarsemaker (1):
      Makefile: remove dependency on git.spec

Elia Pinto (1):
      api-trace.txt: fix typo

Elijah Newren (6):
      merge-recursive: remove duplicate code
      merge-recursive: do not check working copy when creating a virtual merge base
      t7605: add a testcase demonstrating a bug with trivial merges
      builtin/merge.c: fix a bug with trivial merges
      merge-octopus: abort if index does not match HEAD
      t6044: new merge testcases for when index doesn't match HEAD

Eric Sunshine (10):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing
      git-format-patch.txt: don't show -s as shorthand for multiple options
      t1500: be considerate to future potential tests
      t1500: test_rev_parse: facilitate future test enhancements
      t1500: avoid changing working directory outside of tests
      t1500: avoid setting configuration options outside of tests
      t1500: avoid setting environment variables outside of tests

Eric Wong (4):
      send-email: more meaningful Message-ID
      send-email: do not load Data::Dumper
      pack-objects: warn on split packs disabling bitmaps
      .mailmap: update to my shorter email address

Felipe Contreras (1):
      fast-import: do not truncate exported marks file

Gabriel Souza Franco (2):
      fetch-pack: fix object_id of exact sha1
      fetch-pack: update the documentation for "<refs>..." arguments

Jacob Keller (7):
      submodule: don't pass empty string arguments to submodule--helper clone
      submodule: check argc count for git submodule--helper clone
      submodule: fix submodule--helper clone usage
      submodule: fix segmentation fault in submodule--helper clone
      quote: implement sq_quotef()
      git: submodule honor -c credential.* from command line
      xdiff: add recs_match helper function

Jacob Nisnevich (2):
      mergetools: create mergetool_find_win32_cmd() helper function for winmerge
      mergetools: add support for ExamDiff

Jan Durovec (2):
      git-p4: clean-up code style in tests
      git-p4: add P4 jobs to git commit message

Jeff King (55):
      credential: let empty credential specs reset helper list
      t1515: add tests for rev-parse out-of-repo helpers
      add--interactive: allow custom diff highlighting programs
      rev-parse: let some options run outside repository
      strbuf_getwholeline: NUL-terminate getdelim buffer on error
      setup: make startup_info available everywhere
      setup: set startup_info->have_repository more reliably
      remote: don't resolve HEAD in non-repository
      mailmap: do not resolve blobs in a non-repository
      grep: turn off gitlink detection for --no-index
      use setup_git_directory() in test-* programs
      setup: document check_repository_format()
      wrap shared_repository global in get/set accessors
      lazily load core.sharedrepository
      check_repository_format_gently: stop using git_config_early
      config: drop git_config_early
      setup: refactor repo format reading and verification
      init: use setup.c's repo version verification
      setup: unify repository version callbacks
      setup: drop repository_format_version global
      verify_repository_format: mark messages for translation
      send-email: ignore trailing whitespace in mailrc alias file
      credential-cache--daemon: clarify "exit" action semantics
      t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
      git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
      branch: fix shortening of non-remote symrefs
      commit: do not ignore an empty message given by -m ''
      config: lower-case first word of error strings
      git_config_set_multivar_in_file: all non-zero returns are errors
      git_config_set_multivar_in_file: handle "unset" errors
      t5532: use write_script
      send-pack: close demux pipe before finishing async process
      run-command: teach async threads to ignore SIGPIPE
      send-pack: isolate sigpipe in demuxer thread
      fetch-pack: isolate sigpipe in demuxer thread
      t5504: drop sigpipe=ok from push tests
      remote.c: spell __attribute__ correctly
      t5550: fix typo in $HTTPD_URL
      t5550: break submodule config test into multiple sub-tests
      submodule: export sanitized GIT_CONFIG_PARAMETERS
      submodule--helper: move config-sanitizing to submodule.c
      submodule: use prepare_submodule_repo_env consistently
      submodule: stop sanitizing config options
      t6302: simplify non-gpg cases
      rebase--interactive: avoid empty list in shell for-loop
      test-lib: set BASH_XTRACEFD automatically
      t/lib-git-svn: drop $remote_git_svn and $git_svn_id
      t9100,t3419: enclose all test code in single-quotes
      t9107: use "return 1" instead of "exit 1"
      t9107: switch inverted single/double quotes in test
      t9103: modernize test style
      always quote shell arguments to test -z/-n
      cat-file: avoid noop calls to sha1_object_info_extended
      cat-file: default to --buffer when --batch-all-objects is used
      archive-tar: convert snprintf to xsnprintf

Johannes Schindelin (16):
      replace --edit: respect core.editor
      name-rev: include taggerdate in considering the best name
      win32mmap: set errno appropriately
      mmap(win32): avoid copy-on-write when it is unnecessary
      mmap(win32): avoid expensive fstat() call
      http: support sending custom HTTP headers
      tests: adjust the configuration for Apache 2.2
      t5551: make the test for extra HTTP headers more robust
      t3404: fix typo
      submodule: ensure that -c http.extraheader is heeded
      mingw: introduce the 'core.hideDotFiles' setting
      mingw: remove unnecessary definition
      Windows: only add a no-op pthread_sigmask() when needed
      perf: let's disable symlinks when they are not available
      perf: make the tests work in worktrees
      perf: run "rebase -i" under perf

Johannes Sixt (3):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing
      t6044: replace seq by test_seq

John Keeping (3):
      config: fail if --get-urlmatch finds no value
      Documentation/git-config: use bulleted list for exit codes
      Documentation/git-config: fix --get-all description

Junio C Hamano (74):
      rerere: split conflict ID further
      rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
      index-pack: correct --keep[=<msg>]
      index-pack: add a helper function to derive .idx/.keep filename
      rerere: handle leftover rr-cache/$ID directory and postimage files
      rerere: delay the recording of preimage
      rerere: allow multiple variants to exist
      t4200: rerere a merge with two identical conflicts
      rerere: do use multiple variants
      apply: remove unused call to free() in gitdiff_{old,new}name()
      merge: fix NULL pointer dereference when merging nothing into void
      merge: refuse to create too cool a merge by default
      pretty: enable --expand-tabs by default for selected pretty formats
      pretty: allow tweaking tabwidth in --expand-tabs
      submodule--helper: do not borrow absolute_path() result for too long
      Git 2.8.1
      First batch for post 2.8 cycle
      pretty: test --expand-tabs
      Makefile: fix misdirected redirections
      Second batch for post 2.8 cycle
      Makefile: stop pretending to support rpmbuild
      rerere: gc and clear
      rerere: move code related to "forget" together
      rerere: split code to call ll_merge() further
      rerere: adjust 'forget' to multi-variant world order
      setup.c: do not feed NULL to "%.*s" even with precision 0
      Third batch for post 2.8 cycle
      http: differentiate socks5:// and socks5h://
      t1020: do not overuse printf and use write_script
      t3404: use write_script
      Fourth batch for post 2.8 cycle
      Start preparing for 2.8.2
      fsck_commit_buffer(): do not special case the last validation
      ll-merge: fix typo in comment
      Prepare for 2.8.2
      Makefile: clean *.o files we create
      Fifth batch for post 2.8 cycle
      t3033: avoid 'ambiguous refs' warning
      pull: pass --allow-unrelated-histories to "git merge"
      Sixth batch for post 2.8 cycle
      send-email: fix grammo in the prompt that asks e-mail recipients
      Seventh batch for post 2.8 cycle
      Git 2.8.2
      Eighth batch for 2.9
      diff: undocument the compaction heuristic knobs for experimentation
      Start preparing for 2.8.3
      commit-tree: do not pay attention to commit.gpgsign
      Ninth batch for 2.9
      config: describe 'pathname' value type
      Tenth batch for 2.9
      Almost ready for 2.8.3
      test-lib-functions.sh: remove misleading comment on test_seq
      test-lib-functions.sh: rewrite test_seq without Perl
      ll-merge: use a longer conflict marker for internal merge
      t6036: remove pointless test that expects failure
      Documentation: fix linkgit references
      fsck: detect and warn a commit with embedded NUL
      ci: validate "linkgit:" in documentation
      test-parse-options: fix output when callback option fails
      test-parse-options: --expect=<string> option to simplify tests
      t0040: remove unused test helpers
      t0040: convert a few tests to use test-parse-options --expect
      Eleventh batch for 2.9
      rerere: plug memory leaks upon "rerere forget" failure
      Twelfth batch for 2.9
      Thirteenth batch for 2.9
      Git 2.8.3
      rerere: remove an null statement
      Git 2.9-rc0
      t4204: do not let $name variable clobbered
      Start preparing for 2.8.4
      Final batch before 2.9-rc1
      More topics for 2.8.4
      Git 2.9-rc1

Karsten Blees (1):
      mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)

Kazuki Yamaguchi (10):
      branch -d: refuse deleting a branch which is currently checked out
      refs: add a new function set_worktree_head_symref
      branch -m: update all per-worktree HEADs
      set_worktree_head_symref(): fix error message
      imap-send: use HMAC() function provided by OpenSSL
      imap-send: check NULL return of SSL_CTX_new()
      imap-send: avoid deprecated TLSv1_method()
      configure: remove checking for HMAC_CTX_cleanup
      imap-send: check for NOLOGIN capability only when using LOGIN command
      imap-send: fix CRAM-MD5 response calculation

Keller Fuchs (1):
      Documentation: clarify signature verification

Lars Schneider (8):
      git-p4: map a P4 user to Git author name and email address
      travis-ci: update Git-LFS and P4 to the latest version
      travis-ci: express Linux/OS X dependency versions more clearly
      git-p4: fix Git LFS pointer parsing
      t9824: fix wrong reference value
      Documentation: add setup instructions for Travis CI
      travis-ci: build documentation
      travis-ci: enable Git SVN tests t91xx on Linux

Laurent Arnoud (1):
      tag: add the option to force signing of annotated tags

Li Peng (1):
      typofix: assorted typofixes in comments, documentation and messages

Linus Torvalds (1):
      pretty: expand tabs in indented logs to make things line up properly

Luke Diamand (3):
      git-p4 tests: cd to / before running python
      git-p4 tests: work with python3 as well as python2
      git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
      ident: check for useConfigOnly before auto-detection of name/email
      ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (11):
      Documentation/diff-config: fix description of diff.renames
      t4001-diff-rename: wrap file creations in a test
      t: add tests for diff.renames (true/false/unset)
      log: introduce init_log_defaults()
      diff: activate diff.renames by default
      lockfile: mark strings for translation
      lockfile: improve error message when lockfile exists
      git.spec.in: use README.md, not README
      README.md: don't take 'commandname' literally
      git-multimail: update to release 1.3.0
      git-multimail: update to release 1.3.1

Mehul Jain (9):
      git-pull.c: introduce git_pull_config()
      pull --rebase: add --[no-]autostash flag
      t5520: use consistent capitalization in test titles
      t5520: ensure consistent test conditions
      t5520: use better test to check stderr output
      t5520: factor out common "successful autostash" code
      t5520: factor out common "failing autostash" code
      t5520: reduce commom lines of code
      t5520: test --[no-]autostash with pull.rebase=true

Michael Haggerty (19):
      t1430: test the output and error of some commands more carefully
      t1430: clean up broken refs/tags/shadow
      t1430: don't rely on symbolic-ref for creating broken symrefs
      t1430: test for-each-ref in the presence of badly-named refs
      t1430: improve test coverage of deletion of badly-named refs
      resolve_missing_loose_ref(): simplify semantics
      resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
      resolve_ref_unsafe(): ensure flags is always set
      resolve_ref_1(): eliminate local variable
      resolve_ref_1(): reorder code
      resolve_ref_1(): eliminate local variable "bad_name"
      read_raw_ref(): manage own scratch space
      files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
      read_raw_ref(): change flags parameter to unsigned int
      fsck_head_link(): remove unneeded flag variable
      cmd_merge(): remove unneeded flag variable
      checkout_paths(): remove unneeded flag variable
      check_aliased_update(): check that dst_name is non-NULL
      show_head_ref(): check the result of resolve_ref_namespace()

Michael J Gruber (1):
      completion: complete --cherry-mark for git log

Michael Procter (1):
      upload-pack: use argv_array for pack_objects

Michael Rappazzo (1):
      Documentation: add instructions to help setup gmail 2FA

Nguyễn Thái Ngọc Duy (62):
      git-apply.txt: remove a space
      git-apply.txt: mention the behavior inside a subdir
      apply: report patch skipping in verbose mode
      test helpers: move test-* to t/helper/ subdirectory
      dir.c: remove dead function fnmatch_icase()
      wrapper.c: delete dead function git_mkstemps()
      dir.c: rename str(n)cmp_icase to fspath(n)cmp
      path.c: add git_common_path() and strbuf_git_common_path()
      worktree.c: store "id" instead of "git_dir"
      worktree.c: make find_shared_symref() return struct worktree *
      worktree.c: mark current worktree
      path.c: refactor and add worktree_git_path()
      wt-status.c: split rebase detection out of wt_status_get_state()
      wt-status.c: make wt_status_check_rebase() work on any worktree
      worktree.c: avoid referencing to worktrees[i] multiple times
      worktree.c: check whether branch is rebased in another worktree
      wt-status.c: split bisect detection out of wt_status_get_state()
      worktree.c: check whether branch is bisected in another worktree
      branch: do not rename a branch under bisect or rebase
      remote.c: specify correct plural form in "commit diverge" message
      usage.c: move format processing out of die_errno()
      usage.c: add warning_errno() and error_errno()
      bisect.c: use die_errno() and warning_errno()
      builtin/am.c: use error_errno()
      builtin/branch.c: use error_errno()
      builtin/fetch.c: use error_errno()
      builtin/help.c: use warning_errno()
      builtin/mailsplit.c: use error_errno()
      builtin/merge-file.c: use error_errno()
      builtin/pack-objects.c: use die_errno() and warning_errno()
      builtin/rm.c: use warning_errno()
      builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
      builtin/upload-archive.c: use error_errno()
      builtin/worktree.c: use error_errno()
      check-racy.c: use error_errno()
      combine-diff.c: use error_errno()
      compat/win32/syslog.c: use warning_errno()
      config.c: use error_errno()
      connected.c: use error_errno()
      copy.c: use error_errno()
      credential-cache--daemon.c: use warning_errno()
      diff-no-index.c: use error_errno()
      editor.c: use error_errno()
      entry.c: use error_errno()
      fast-import.c: use error_errno()
      gpg-interface.c: use error_errno()
      grep.c: use error_errno()
      http.c: use error_errno() and warning_errno()
      ident.c: use warning_errno()
      mailmap.c: use error_errno()
      reachable.c: use error_errno()
      rerere.c: use error_errno() and warning_errno()
      run-command.c: use error_errno()
      sequencer.c: use error_errno()
      server-info.c: use error_errno()
      sha1_file.c: use {error,die,warning}_errno()
      transport-helper.c: use error_errno()
      unpack-trees.c: use error_errno()
      upload-pack.c: use error_errno()
      vcs-svn: use error_errno()
      wrapper.c: use warning_errno()
      wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Nikola Forró (1):
      difftool/mergetool: make the form of yes/no questions consistent

Ori Avtalion (1):
      Documentation: git diff --check detects conflict markers

Pranit Bauva (9):
      t/t7502 : drop duplicate test
      api-parse-options.txt: document OPT_CMDMODE()
      t0040-test-parse-options.sh: fix style issues
      test-parse-options: print quiet as integer
      t0040-parse-options: improve test coverage
      t/t7507: improve test coverage
      parse-options.c: make OPTION_COUNTUP respect "unspecified" values
      t7507-commit-verbose: improve test coverage by testing number of diffs
      commit: add a commit.verbose config variable

Ralf Thielow (4):
      completion: add option '--guides' to 'git help'
      completion: add 'revisions' and 'everyday' to 'git help'
      rebase-i: print an abbreviated hash when stop for editing
      string_list: use string-list API in unsorted_string_list_lookup()

Ramsay Jones (3):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak
      log: document the --decorate=auto option

Ray Zhang (1):
      worktree: add: introduce --checkout option

René Nyffenegger (1):
      Documentation: fix typo 'In such these cases'

SZEDER Gábor (5):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground

Santiago Torres (6):
      builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
      t7030: test verifying multiple tags
      verify-tag: update variable name and type
      verify-tag: prepare verify_tag for libification
      verify-tag: move tag verification code to tag.c
      tag -v: verify directly rather than exec-ing verify-tag

Saurav Sachidanand (1):
      dir: store EXC_FLAG_* values in unsigned integers

Shin Kojima (1):
      gitweb: apply fallback encoding before highlight

Sidhant Sharma [:tk] (1):
      builtin/receive-pack.c: use parse_options API

Stanislav Kolotinskiy (1):
      git-send-pack: fix --all option when used with directory

Stefan Beller (44):
      submodule-config: keep update strategy around
      submodule-config: drop check against NULL
      fetching submodules: respect `submodule.fetchJobs` config option
      submodule update: direct error message to stderr
      run_processes_parallel: treat output of children as byte array
      run_processes_parallel: rename parameters for the callbacks
      git submodule update: have a dedicated helper for cloning
      submodule helper: remove double 'fatal: ' prefix
      submodule update: expose parallelism to the user
      clone: allow an explicit argument for parallel submodule clones
      clone tests: rename t57* => t56*
      rebase: decouple --exec from --interactive
      t3404: cleanup double empty lines between tests
      submodule foreach: correct path display in recursive submodules
      submodule update --init: correct path handling in recursive submodules
      submodule status: correct path handling in recursive submodules
      submodule update: align reporting path for custom command execution
      submodule update: test recursive path reporting from subdirectory
      t7407: make expectation as clear as possible
      recursive submodules: test for relative paths
      submodule--helper: fix potential NULL-dereference
      submodule--helper clone: create the submodule path just once
      notes: don't leak memory in git_config_get_notes_strategy
      abbrev_sha1_in_line: don't leak memory
      bundle: don't leak an fd in case of early return
      credential-cache, send_request: close fd when done
      submodule--helper, module_clone: always operate on absolute paths
      submodule--helper, module_clone: catch fprintf failure
      submodule: port resolve_relative_url from shell to C
      submodule: port init from shell to C
      xdiff: implement empty line chunk heuristic
      mv: allow moving nested submodules
      clone: add `--shallow-submodules` flag
      config doc: improve exit code listing
      config.c: drop local variable
      submodule-config: don't shadow `cache`
      submodule init: fail gracefully with a missing .gitmodules file
      submodule--helper update-clone: abort gracefully on missing .gitmodules
      submodule deinit test: fix broken && chain in subshell
      submodule init: redirect stdout to stderr
      t7300: mark test with SANITY
      submodule deinit: require '--all' instead of '.' for all submodules
      t3513: do not compress backup tar file
      t6041: do not compress backup tar file

Stephen P. Smith (1):
      wt-status.c: set commitable bit if there is a meaningful merge.

Sven Strickroth (3):
      commit: do not lose SQUASH_MSG contents
      MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
      MSVC: use shipped headers instead of fallback definitions

Torsten Bögershausen (6):
      correct blame for files commited with CRLF
      t0027: make commit_chk_wrnNNO() reliable
      convert: allow core.autocrlf=input and core.eol=crlf
      t0027: test cases for combined attributes
      convert.c: ident + core.autocrlf didn't work
      t5601: Remove trailing space in sed expression

Vasco Almeida (16):
      l10n: fr: fix transcation of "dir"
      l10n: fr: fix wrongly translated option name
      l10n: fr: change "id de clé" to match "id-clé"
      l10n: fr: don't translate "merge" as a parameter
      i18n: index-pack: use plural string instead of normal one
      i18n: builtin/branch.c: mark option for translation
      i18n: unpack-trees: mark strings for translation
      i18n: builtin/rm.c: remove a comma ',' from string
      i18n: branch: unmark string for translation
      i18n: branch: move comment for translators
      i18n: git-parse-remote.sh: mark strings for translation
      i18n: builtin/pull.c: mark placeholders for translation
      i18n: builtin/pull.c: split strings marked for translation
      i18n: remote: add comment for translators
      Documentation/git-mailinfo: fix typo
      i18n: unpack-trees: avoid substituting only a verb in sentences

Xiaolong Ye (4):
      patch-ids: make commit_patch_id() a public helper function
      format-patch: add '--base' option to record base tree info
      format-patch: introduce --base=auto option
      format-patch: introduce format.useAutoBase configuration

brian m. carlson (6):
      sha1-name: introduce a get_oid() function
      test-match-trees: convert to use struct object_id
      match-trees: convert shift_tree() and shift_tree_by() to use object_id
      struct name_entry: use struct object_id instead of unsigned char sha1[20]
      tree-walk: convert tree_entry_extract() to use struct object_id
      match-trees: convert several leaf functions to use struct object_id

Ævar Arnfjörð Bjarmason (4):
      githooks.txt: improve the intro section
      githooks.txt: amend dangerous advice about 'update' hook ACL
      githooks.txt: minor improvements to the grammar & phrasing
      hooks: allow customizing where the hook directory is

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.18.0-rc2
@ 2018-06-13 22:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-13 22:12 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.18.0-rc2 is now available for testing
at the usual places.  It is comprised of 852 non-merge commits
since v2.17.0, contributed by 65 people, 20 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.18.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Leif Middelschulte,
  Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
  Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
  Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
  David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
  Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
  Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
  Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
  Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
  Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
  Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
  Gummerer, Todd Zullinger, and Torsten Bögershausen.

----------------------------------------------------------------

Git 2.18 Release Notes (draft)
==============================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic that is used in "merge" and "cherry-pick" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "working-tree-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.

 * The list of commands with their various attributes were spread
   across a few places in the build procedure, but it now is getting a
   bit more consolidated to allow more automation.

 * Quite a many tests assumed that newly created refs are made as
   loose refs using the files backend, which have been updated to use
   proper plumbing like rev-parse and update-ref, to avoid breakage
   once we start using different ref backends.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to undertand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * The import-tars script (in contrib/) has been taught to handle
   tarballs with overly long paths that use PAX extended headers.
   (merge 12ecea46e3 pa/import-tars-long-names later to maint).

 * "git rev-parse Y..." etc. misbehaved when given endpoints were
   not committishes.
   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).

 * "git pull --recurse-submodules --rebase", when the submodule
   repository's history did not have anything common between ours and
   the upstream's, failed to execute.  We need to fetch from them to
   continue even in such a case.
   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, but only one of them was documented.
   (merge a97447a42a nd/remote-update-doc later to maint).

 * "index-pack --strict" has been taught to make sure that it runs the
   final object integrity checks after making the freshly indexed
   packfile available to itself.
   (merge 3737746120 jk/index-pack-maint later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
   (merge 590551ca2c rd/tag-doc-lightweight later to maint).
   (merge 44f560fc16 rd/init-typo later to maint).
   (merge f156a0934a rd/p4-doc-markup-env later to maint).
   (merge 2a00502b14 tg/doc-sec-list later to maint).
   (merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #06; Wed, 19)
@ 2022-10-20  1:34  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-20  1:34 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.  A topic without enough support may be
discarded after a long period of no activity.

Git 2.38.1 and friends that address a couple of CVE on maintenance
tracks have been released and they are all merged up to the
development branches.

Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.

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']

* ab/coding-guidelines-c99 (2022-10-11) 5 commits
  (merged to 'next' on 2022-10-13 at c6b2b74dfb)
 + CodingGuidelines: recommend against unportable C99 struct syntax
 + CodingGuidelines: mention C99 features we can't use
 + CodingGuidelines: allow declaring variables in for loops
 + CodingGuidelines: mention dynamic C99 initializer elements
 + CodingGuidelines: update for C99

 Update CodingGuidelines to clarify what features to use and avoid
 in C99.
 source: <20221010203800.2154698-1-gitster@pobox.com>


* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-13 at 393abc3019)
 + config.mak.dev: disable suggest braces error on old clang versions

 Work around older clang that warns against C99 zero initialization
 syntax for struct.
 source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>


* rs/archive-dedup-printf (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at af770cf00f)
 + archive: deduplicate verbose printing

 Code simplification.
 source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>

--------------------------------------------------
[New Topics]

* jk/unused-anno-more (2022-10-17) 12 commits
 - ll-merge: mark unused parameters in callbacks
 - diffcore-pickaxe: mark unused parameters in pickaxe functions
 - convert: mark unused parameter in null stream filter
 - apply: mark unused parameters in noop error/warning routine
 - apply: mark unused parameters in handlers
 - date: mark unused parameters in handler functions
 - string-list: mark unused callback parameters
 - object-file: mark unused parameters in hash_unknown functions
 - mark unused parameters in trivial compat functions
 - update-index: drop unused argc from do_reupdate()
 - submodule--helper: drop unused argc from module_list_compute()
 - diffstat_consume(): assert non-zero length

 More UNUSED annotation to help using -Wunused option with the
 compiler.

 Will merge to 'next'.
 source: <Y036whEorZV0rOgB@coredump.intra.peff.net>


* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
 - repack: don't remove .keep packs with `--pack-kept-objects`

 When geometric repacking feature is in use together with the
 --pack-kept-objects option, we lost packs marked with .keep files.

 Will merge to 'next'.
 source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>


* mm/git-pm-try-catch-syntax-fix (2022-10-17) 1 commit
 - Git.pm: add semicolon after catch statement

 Fix a longstanding syntax error in Git.pm error codepath.

 Will merge to 'next'??
 source: <20221016212236.12453-2-michael@mcclimon.org>


* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 408ce79f33)
 + fsmonitor OSX: compile with DC_SHA1=YesPlease

 Enable macOS build with sha1dc hash function.

 Will merge to 'master'.
 source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>


* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 27c2546b98)
 + Makefile: force -O0 when compiling with SANITIZE=leak

 Avoid false-positive from LSan whose assumption may be broken with
 higher optimization levels.

 Will merge to 'master'.
 source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>


* jr/embargoed-releases-doc (2022-10-19) 1 commit
 - embargoed releases: also describe the git-security list and the process

 The role the security mailing list plays in an embargoed release
 has been documented.

 Will merge to 'next'?
 source: <pull.1345.v2.git.1666142160427.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2022-08-10) 14 commits
 - sequencer: use the "octopus" strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
 - clone, submodule update: check out branches
 - submodule--helper: refactor up-to-date criterion
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.

 Expecting a reroll.
 cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
 source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
 - diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.

 Expecting a reroll.
 source: <20220914151333.3309-1-tboegi@web.de>


* mj/credential-helper-auth-headers (2022-09-13) 8 commits
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers
 - osxkeychain: clarify that we ignore unknown lines
 - netrc: ignore unknown lines (do not die)
 - wincred: ignore unknown lines (do not die)

 Extending credential helper protocol.

 Expecting a reroll.
 A separate non-RFC submission of the first three is expected.
 cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
 source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>


* cw/submodule-status-in-parallel (2022-09-23) 4 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor functions
 . submodule: move status parsing into function
 . run-command: add pipe_output to run_processes_parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks its self check.
 cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
 source: <20220922232947.631309-1-calvinwan@google.com>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* js/cmake-updates (2022-10-19) 5 commits
 - cmake: increase time-out for a long-running test
 - cmake: avoid editing t/test-lib.sh
 - add -p: avoid ambiguous signed/unsigned comparison
 - cmake: copy the merge tools for testing
 - cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.

 Will merge to 'next'?
 source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-10-13) 1 commit
  (merged to 'next' on 2022-10-17 at 3de2be7c14)
 + config: respect includes in protected config

 Allow configuration files in "protected" scopes to include other
 configuration files.

 Will merge to 'master'.
 source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>


* jh/trace2-timers-and-counters (2022-10-13) 7 commits
 - trace2: add global counter mechanism
 - trace2: add stopwatch timers
 - trace2: convert ctx.thread_name from strbuf to pointer
 - trace2: rename the thread_name argument to trace2_thread_start
 - api-trace2.txt: elminate section describing the public trace2 API
 - tr2tls: clarify TLS terminology
 - trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.
 source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>


* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
 - pack-bitmap-write.c: instrument number of reused bitmaps
 - midx.c: instrument MIDX and bitmap generation with trace2 regions
 - midx.c: consider annotated tags during bitmap selection
 - midx.c: fix whitespace typo

 A bugfix with tracing support in midx codepath

 Will merge to 'next'.
 source: <cover.1665612094.git.me@ttaylorr.com>


* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
 - builtin/repack.c: remove redundant pack-based bitmaps

 When creating a multi-pack bitmap, remove per-pack bitmap files
 unconditionally as they will never be consulted.

 Will merge to 'next'?
 source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>


* nw/t1002-cleanup (2022-10-14) 1 commit
 - t1002: modernize outdated conditional

 Code clean-up in test.

 Will merge to 'next'.
 source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>


* zh/patch-id (2022-10-14) 7 commits
 - documentation: format-patch: clarify requirements for patch-ids to match
 - builtin: patch-id: remove unused diff-tree prefix
 - builtin: patch-id: add --include-whitespace as a command mode
 - patch-id: fix patch-id for mode changes
 - builtin: patch-id: fix patch-id with binary diffs
 - patch-id: use stable patch-id for rebases
 - patch-id: fix stable patch id for binary / header-only

 A new "--include-whitespace" option is added to "git patch-id", and
 existing bugs in the internal patch-id logic that did not match
 what "git patch-id" produces have been corrected.

 Will merge to 'next'?
 source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-19) 10 commits
 - fixup! archive: add tests for git archive --recurse-submodules
 - archive: add tests for git archive --recurse-submodules
 - archive: add --recurse-submodules to git-archive command
 - archive: remove global repository from archive_args
 - archive: pass repo objects to write_archive handlers
 - tree: add repository parameter to read_tree_fn_t
 - tree: handle submodule case for read_tree_at properly
 - tree: increase test coverage for tree.c
 - tree: update cases to use repo_ tree methods
 - tree: do not use the_repository for tree traversal methods.

 "git archive" has been taught "--recurse-submodules" option to
 create a tarball that includes contents from submodules.

 Expecting a reroll.
 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
 - rebase --keep-base: imply --no-fork-point
 - rebase --keep-base: imply --reapply-cherry-picks
 - rebase: factor out branch_base calculation
 - rebase: rename merge_base to branch_base
 - rebase: store orig_head as a commit
 - rebase: be stricter when reading state files containing oids
 - t3416: set $EDITOR in subshell
 - t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Will merge to 'next'??
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at 07993f09bc)
 + grep.c: remove "extended" in favor of "pattern_expression", fix segfault

 Giving "--invert-grep" and "--all-match" without "--grep" to the
 "git log" command resulted in an attempt to access grep pattern
 expression structure that has not been allocated, which has been
 corrected.

 Will merge to 'master'.
 source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
 - rebase: cleanup action handling
 - rebase --abort: improve reflog message
 - rebase --apply: make reflog messages match rebase --merge
 - rebase --apply: respect GIT_REFLOG_ACTION
 - rebase --merge: fix reflog message after skipping
 - rebase --merge: fix reflog when continuing
 - t3406: rework rebase reflog tests
 - rebase --apply: remove duplicated code
 - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.

 Will merge to 'next'??
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
 - docs: git-send-email: difference between ssl and tls smtp-encryption

 Expecting a reroll??
 cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
  (merged to 'next' on 2022-10-13 at 532a3f6a5f)
 + symbolic-ref: teach "--[no-]recurse" option

 After checking out a "branch" that is a symbolic-ref that points at
 another branch, "git symbolic-ref HEAD" reports the underlying
 branch, not the symbolic-ref the user gave checkout as argument.
 The command learned the "--no-recurse" option to stop after
 dereferencing a symbolic-ref only once.

 Will merge to 'master'.
 source: <xmqqleprcn08.fsf@gitster.g>


* ds/cmd-main-reorder (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-14 at d7f07dbecf)
 + git.c: improve code readability in cmd_main()

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 . Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.

 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
 . ci: add address and undefined sanitizer tasks

 Enable address and undefined sanitizer tasks at GitHub Actions CI.

 With this p4 tests seem to die with the server side going away.
 source: <xmqqpmezxl9p.fsf@gitster.g>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ab/run-hook-api-cleanup (2022-10-12) 15 commits
 - run-command.c: remove "max_processes", add "const" to signal() handler
 - run-command.c: pass "opts" further down, and use "opts->processes"
 - run-command.c: use "opts->processes", not "pp->max_processes"
 - run-command.c: don't copy "data" to "struct parallel_processes"
 - run-command.c: don't copy "ungroup" to "struct parallel_processes"
 - run-command.c: don't copy *_fn to "struct parallel_processes"
 - run-command.c: make "struct parallel_processes" const if possible
 - run-command API: move *_tr2() users to "run_processes_parallel()"
 - run-command API: have run_process_parallel() take an "opts" struct
 - run-command.c: use designated init for pp_init(), add "const"
 - run-command API: don't fall back on online_cpus()
 - run-command API: make "n" parameter a "size_t"
 - run-command tests: use "return", not "exit"
 - run-command API: have "run_processes_parallel{,_tr2}()" return void
 - run-command test helper: use "else if" pattern

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.

 Will merge to 'next'.
 source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-14 at 90850a2211)
 + branch: support for shortcuts like @{-1}, completed

 "git branch --edit-description @{-1}" is now a way to edit branch
 description of the branch you were on before switching to the
 current branch.

 Will merge to 'master'.
 source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>


* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
  (merged to 'next' on 2022-10-17 at 24609eb777)
 + diff: support ^! for merges
 + revisions.txt: unspecify order of resolved parts of ^!
 + revision: use strtol_i() for exclude_parent

 "git diff rev^!" did not show combined diff to go to the rev from
 its parents.

 Will merge to 'master'.
 source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>


* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
 - tests: assert consistent whitespace in -h output
 - tests: start asserting that *.txt SYNOPSIS matches -h output
 - doc txt & -h consistency: make "worktree" consistent
 - worktree: define subcommand -h in terms of command -h
 - reflog doc: list real subcommands up-front
 - doc txt & -h consistency: make "commit" consistent
 - doc txt & -h consistency: make "diff-tree" consistent
 - doc txt & -h consistency: use "[<label>...]" for "zero or more"
 - doc txt & -h consistency: make "annotate" consistent
 - doc txt & -h consistency: make "stash" consistent
 - doc txt & -h consistency: add missing options
 - doc txt & -h consistency: use "git foo" form, not "git-foo"
 - doc txt & -h consistency: make "bundle" consistent
 - doc txt & -h consistency: make "read-tree" consistent
 - doc txt & -h consistency: make "rerere" consistent
 - doc txt & -h consistency: add missing options and labels
 - doc txt & -h consistency: make output order consistent
 - doc txt & -h consistency: add or fix optional "--" syntax
 - doc txt & -h consistency: fix mismatching labels
 - doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 - doc txt & -h consistency: use "<options>", not "<options>..."
 - stash doc SYNOPSIS & -h: correct padding around "[]()"
 - doc txt & -h consistency: correct padding around "[]()"
 - doc txt & -h consistency: balance unbalanced "[" and "]"
 - doc txt & -h consistency: add "-z" to cat-file "-h"
 - doc txt & -h consistency: fix incorrect alternates syntax
 - doc txt & -h consistency: word-wrap
 - built-ins: consistently add "\n" between "usage" and options
 - doc SYNOPSIS: consistently use ' for commands
 - doc SYNOPSIS: don't use ' for subcommands
 - bundle: define subcommand -h in terms of command -h
 - builtin/bundle.c: indent with tabs
 - CodingGuidelines: update and clarify command-line conventions
 - tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.

 Will merge to 'next'?
 source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>


* ab/coccicheck-incremental (2022-10-14) 11 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Will merge to 'next'?
 source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
 - bundle-uri: suppress stderr from remote-https
 - bundle-uri: quiet failed unbundlings
 - bundle: add flags to verify_bundle()
 - bundle-uri: fetch a list of bundles
 - bundle: properly clear all revision flags
 - bundle-uri: limit recursion depth for bundle lists
 - bundle-uri: parse bundle list in config format
 - bundle-uri: unit test "key=value" parsing
 - bundle-uri: create "key=value" line parsing
 - bundle-uri: create base key-value pair parsing
 - bundle-uri: create bundle_list struct and helpers
 - bundle-uri: use plain string in find_temp_filename()
 - Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-08-30) 17 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: make `state` optional
 - bisect--helper: calling `bisect_state()` without an argument is a bug
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection
 - bisect--helper: migrate to OPT_SUBCOMMAND()
 - bisect--helper: make the order consistently `argc, argv`
 - bisect--helper: make `terms` an explicit singleton
 - bisect--helper: simplify exit code computation
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #06; Wed, 19)
@ 2022-10-20  1:31  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-20  1:31 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.  A topic without enough support may be
discarded after a long period of no activity.

Git 2.38.1 and friends that address a couple of CVE on maintenance
tracks have been released and they are all merged up to the
development branches.

Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.

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']

* ab/coding-guidelines-c99 (2022-10-11) 5 commits
  (merged to 'next' on 2022-10-13 at c6b2b74dfb)
 + CodingGuidelines: recommend against unportable C99 struct syntax
 + CodingGuidelines: mention C99 features we can't use
 + CodingGuidelines: allow declaring variables in for loops
 + CodingGuidelines: mention dynamic C99 initializer elements
 + CodingGuidelines: update for C99

 Update CodingGuidelines to clarify what features to use and avoid
 in C99.
 source: <20221010203800.2154698-1-gitster@pobox.com>


* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-13 at 393abc3019)
 + config.mak.dev: disable suggest braces error on old clang versions

 Work around older clang that warns against C99 zero initialization
 syntax for struct.
 source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>


* rs/archive-dedup-printf (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at af770cf00f)
 + archive: deduplicate verbose printing

 Code simplification.
 source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>

--------------------------------------------------
[New Topics]

* jk/unused-anno-more (2022-10-17) 12 commits
 - ll-merge: mark unused parameters in callbacks
 - diffcore-pickaxe: mark unused parameters in pickaxe functions
 - convert: mark unused parameter in null stream filter
 - apply: mark unused parameters in noop error/warning routine
 - apply: mark unused parameters in handlers
 - date: mark unused parameters in handler functions
 - string-list: mark unused callback parameters
 - object-file: mark unused parameters in hash_unknown functions
 - mark unused parameters in trivial compat functions
 - update-index: drop unused argc from do_reupdate()
 - submodule--helper: drop unused argc from module_list_compute()
 - diffstat_consume(): assert non-zero length

 More UNUSED annotation to help using -Wunused option with the
 compiler.

 Will merge to 'next'.
 source: <Y036whEorZV0rOgB@coredump.intra.peff.net>


* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
 - repack: don't remove .keep packs with `--pack-kept-objects`

 When geometric repacking feature is in use together with the
 --pack-kept-objects option, we lost packs marked with .keep files.

 Will merge to 'next'.
 source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>


* mm/git-pm-try-catch-syntax-fix (2022-10-17) 1 commit
 - Git.pm: add semicolon after catch statement

 Fix a longstanding syntax error in Git.pm error codepath.

 Will merge to 'next'??
 source: <20221016212236.12453-2-michael@mcclimon.org>


* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 408ce79f33)
 + fsmonitor OSX: compile with DC_SHA1=YesPlease

 Enable macOS build with sha1dc hash function.

 Will merge to 'master'.
 source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>


* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 27c2546b98)
 + Makefile: force -O0 when compiling with SANITIZE=leak

 Avoid false-positive from LSan whose assumption may be broken with
 higher optimization levels.

 Will merge to 'master'.
 source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>


* jr/embargoed-releases-doc (2022-10-19) 1 commit
 - embargoed releases: also describe the git-security list and the process

 The role the security mailing list plays in an embargoed release
 has been documented.

 Will merge to 'next'?
 source: <pull.1345.v2.git.1666142160427.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2022-08-10) 14 commits
 - sequencer: use the "octopus" strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
 - clone, submodule update: check out branches
 - submodule--helper: refactor up-to-date criterion
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.

 Expecting a reroll.
 cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
 source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
 - diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.

 Expecting a reroll.
 source: <20220914151333.3309-1-tboegi@web.de>


* mj/credential-helper-auth-headers (2022-09-13) 8 commits
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers
 - osxkeychain: clarify that we ignore unknown lines
 - netrc: ignore unknown lines (do not die)
 - wincred: ignore unknown lines (do not die)

 Extending credential helper protocol.

 Expecting a reroll.
 A separate non-RFC submission of the first three is expected.
 cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
 source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>


* cw/submodule-status-in-parallel (2022-09-23) 4 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor functions
 . submodule: move status parsing into function
 . run-command: add pipe_output to run_processes_parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks its self check.
 cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
 source: <20220922232947.631309-1-calvinwan@google.com>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* js/cmake-updates (2022-10-19) 5 commits
 - cmake: increase time-out for a long-running test
 - cmake: avoid editing t/test-lib.sh
 - add -p: avoid ambiguous signed/unsigned comparison
 - cmake: copy the merge tools for testing
 - cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.

 Will merge to 'next'?
 source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-10-13) 1 commit
  (merged to 'next' on 2022-10-17 at 3de2be7c14)
 + config: respect includes in protected config

 Allow configuration files in "protected" scopes to include other
 configuration files.

 Will merge to 'master'.
 source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>


* jh/trace2-timers-and-counters (2022-10-13) 7 commits
 - trace2: add global counter mechanism
 - trace2: add stopwatch timers
 - trace2: convert ctx.thread_name from strbuf to pointer
 - trace2: rename the thread_name argument to trace2_thread_start
 - api-trace2.txt: elminate section describing the public trace2 API
 - tr2tls: clarify TLS terminology
 - trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.
 source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>


* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
 - pack-bitmap-write.c: instrument number of reused bitmaps
 - midx.c: instrument MIDX and bitmap generation with trace2 regions
 - midx.c: consider annotated tags during bitmap selection
 - midx.c: fix whitespace typo

 A bugfix with tracing support in midx codepath

 Will merge to 'next'.
 source: <cover.1665612094.git.me@ttaylorr.com>


* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
 - builtin/repack.c: remove redundant pack-based bitmaps

 When creating a multi-pack bitmap, remove per-pack bitmap files
 unconditionally as they will never be consulted.

 Will merge to 'next'?
 source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>


* nw/t1002-cleanup (2022-10-14) 1 commit
 - t1002: modernize outdated conditional

 Code clean-up in test.

 Will merge to 'next'.
 source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>


* zh/patch-id (2022-10-14) 7 commits
 - documentation: format-patch: clarify requirements for patch-ids to match
 - builtin: patch-id: remove unused diff-tree prefix
 - builtin: patch-id: add --include-whitespace as a command mode
 - patch-id: fix patch-id for mode changes
 - builtin: patch-id: fix patch-id with binary diffs
 - patch-id: use stable patch-id for rebases
 - patch-id: fix stable patch id for binary / header-only

 A new "--include-whitespace" option is added to "git patch-id", and
 existing bugs in the internal patch-id logic that did not match
 what "git patch-id" produces have been corrected.

 Will merge to 'next'?
 source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-19) 10 commits
 - fixup! archive: add tests for git archive --recurse-submodules
 - archive: add tests for git archive --recurse-submodules
 - archive: add --recurse-submodules to git-archive command
 - archive: remove global repository from archive_args
 - archive: pass repo objects to write_archive handlers
 - tree: add repository parameter to read_tree_fn_t
 - tree: handle submodule case for read_tree_at properly
 - tree: increase test coverage for tree.c
 - tree: update cases to use repo_ tree methods
 - tree: do not use the_repository for tree traversal methods.

 "git archive" has been taught "--recurse-submodules" option to
 create a tarball that includes contents from submodules.

 Expecting a reroll.
 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
 - rebase --keep-base: imply --no-fork-point
 - rebase --keep-base: imply --reapply-cherry-picks
 - rebase: factor out branch_base calculation
 - rebase: rename merge_base to branch_base
 - rebase: store orig_head as a commit
 - rebase: be stricter when reading state files containing oids
 - t3416: set $EDITOR in subshell
 - t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Will merge to 'next'??
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at 07993f09bc)
 + grep.c: remove "extended" in favor of "pattern_expression", fix segfault

 Giving "--invert-grep" and "--all-match" without "--grep" to the
 "git log" command resulted in an attempt to access grep pattern
 expression structure that has not been allocated, which has been
 corrected.

 Will merge to 'master'.
 source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
 - rebase: cleanup action handling
 - rebase --abort: improve reflog message
 - rebase --apply: make reflog messages match rebase --merge
 - rebase --apply: respect GIT_REFLOG_ACTION
 - rebase --merge: fix reflog message after skipping
 - rebase --merge: fix reflog when continuing
 - t3406: rework rebase reflog tests
 - rebase --apply: remove duplicated code
 - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.

 Will merge to 'next'??
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
 - docs: git-send-email: difference between ssl and tls smtp-encryption

 Expecting a reroll??
 cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
  (merged to 'next' on 2022-10-13 at 532a3f6a5f)
 + symbolic-ref: teach "--[no-]recurse" option

 After checking out a "branch" that is a symbolic-ref that points at
 another branch, "git symbolic-ref HEAD" reports the underlying
 branch, not the symbolic-ref the user gave checkout as argument.
 The command learned the "--no-recurse" option to stop after
 dereferencing a symbolic-ref only once.

 Will merge to 'master'.
 source: <xmqqleprcn08.fsf@gitster.g>


* ds/cmd-main-reorder (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-14 at d7f07dbecf)
 + git.c: improve code readability in cmd_main()

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 . Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.

 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
 . ci: add address and undefined sanitizer tasks

 Enable address and undefined sanitizer tasks at GitHub Actions CI.

 With this p4 tests seem to die with the server side going away.
 source: <xmqqpmezxl9p.fsf@gitster.g>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ab/run-hook-api-cleanup (2022-10-12) 15 commits
 - run-command.c: remove "max_processes", add "const" to signal() handler
 - run-command.c: pass "opts" further down, and use "opts->processes"
 - run-command.c: use "opts->processes", not "pp->max_processes"
 - run-command.c: don't copy "data" to "struct parallel_processes"
 - run-command.c: don't copy "ungroup" to "struct parallel_processes"
 - run-command.c: don't copy *_fn to "struct parallel_processes"
 - run-command.c: make "struct parallel_processes" const if possible
 - run-command API: move *_tr2() users to "run_processes_parallel()"
 - run-command API: have run_process_parallel() take an "opts" struct
 - run-command.c: use designated init for pp_init(), add "const"
 - run-command API: don't fall back on online_cpus()
 - run-command API: make "n" parameter a "size_t"
 - run-command tests: use "return", not "exit"
 - run-command API: have "run_processes_parallel{,_tr2}()" return void
 - run-command test helper: use "else if" pattern

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.

 Will merge to 'next'.
 source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-14 at 90850a2211)
 + branch: support for shortcuts like @{-1}, completed

 "git branch --edit-description @{-1}" is now a way to edit branch
 description of the branch you were on before switching to the
 current branch.

 Will merge to 'master'.
 source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>


* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
  (merged to 'next' on 2022-10-17 at 24609eb777)
 + diff: support ^! for merges
 + revisions.txt: unspecify order of resolved parts of ^!
 + revision: use strtol_i() for exclude_parent

 "git diff rev^!" did not show combined diff to go to the rev from
 its parents.

 Will merge to 'master'.
 source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>


* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
 - tests: assert consistent whitespace in -h output
 - tests: start asserting that *.txt SYNOPSIS matches -h output
 - doc txt & -h consistency: make "worktree" consistent
 - worktree: define subcommand -h in terms of command -h
 - reflog doc: list real subcommands up-front
 - doc txt & -h consistency: make "commit" consistent
 - doc txt & -h consistency: make "diff-tree" consistent
 - doc txt & -h consistency: use "[<label>...]" for "zero or more"
 - doc txt & -h consistency: make "annotate" consistent
 - doc txt & -h consistency: make "stash" consistent
 - doc txt & -h consistency: add missing options
 - doc txt & -h consistency: use "git foo" form, not "git-foo"
 - doc txt & -h consistency: make "bundle" consistent
 - doc txt & -h consistency: make "read-tree" consistent
 - doc txt & -h consistency: make "rerere" consistent
 - doc txt & -h consistency: add missing options and labels
 - doc txt & -h consistency: make output order consistent
 - doc txt & -h consistency: add or fix optional "--" syntax
 - doc txt & -h consistency: fix mismatching labels
 - doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 - doc txt & -h consistency: use "<options>", not "<options>..."
 - stash doc SYNOPSIS & -h: correct padding around "[]()"
 - doc txt & -h consistency: correct padding around "[]()"
 - doc txt & -h consistency: balance unbalanced "[" and "]"
 - doc txt & -h consistency: add "-z" to cat-file "-h"
 - doc txt & -h consistency: fix incorrect alternates syntax
 - doc txt & -h consistency: word-wrap
 - built-ins: consistently add "\n" between "usage" and options
 - doc SYNOPSIS: consistently use ' for commands
 - doc SYNOPSIS: don't use ' for subcommands
 - bundle: define subcommand -h in terms of command -h
 - builtin/bundle.c: indent with tabs
 - CodingGuidelines: update and clarify command-line conventions
 - tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.

 Will merge to 'next'?
 source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>


* ab/coccicheck-incremental (2022-10-14) 11 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Will merge to 'next'?
 source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
 - bundle-uri: suppress stderr from remote-https
 - bundle-uri: quiet failed unbundlings
 - bundle: add flags to verify_bundle()
 - bundle-uri: fetch a list of bundles
 - bundle: properly clear all revision flags
 - bundle-uri: limit recursion depth for bundle lists
 - bundle-uri: parse bundle list in config format
 - bundle-uri: unit test "key=value" parsing
 - bundle-uri: create "key=value" line parsing
 - bundle-uri: create base key-value pair parsing
 - bundle-uri: create bundle_list struct and helpers
 - bundle-uri: use plain string in find_temp_filename()
 - Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-08-30) 17 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: make `state` optional
 - bisect--helper: calling `bisect_state()` without an argument is a bug
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection
 - bisect--helper: migrate to OPT_SUBCOMMAND()
 - bisect--helper: make the order consistently `argc, argv`
 - bisect--helper: make `terms` an explicit singleton
 - bisect--helper: simplify exit code computation
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.1.0-rc0
@ 2014-07-27 23:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-07-27 23:18 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

An early preview release Git v2.1.0-rc0 is now available for testing
at the usual places.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the 'v2.1.0-rc0'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.1 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * The default value we give to the environment variable LESS has been
   changed from "FRSX" to "FRX", losing "S" (chop long lines instead
   of wrapping).  Existing users who prefer not to see line-wrapped
   output may want to set

     $ git config core.pager "less -S"

   to restore the traditional behaviour.  It is expected that people
   find output from the most subcommands easier to read with the new
   default, except for "blame" which tends to produce really long
   lines.  To override the new default only for "git blame", you can
   do this:

     $ git config pager.blame "less -S"

 * A few disused directories in contrib/ have been retired.


Updates since v2.0
------------------

UI, Workflows & Features

 * Since the very beginning of Git, we gave the LESS environment a
   default value "FRSX" when we spawn "less" as the pager.  "S" (chop
   long lines instead of wrapping) has been removed from this default
   set of options, because it is more or less a personal taste thing,
   as opposed to others that have good justifications (i.e. "R" is
   very much justified because many kinds of output we produce are
   colored and "FX" is justified because output we produce is often
   shorter than a page).

 * The logic and data used to compute the display width needed for
   UTF-8 strings have been updated to match Unicode 7.0 better.

 * HTTP-based transports learned to propagate the error messages from
   the webserver better to the client coming over the HTTP transport.

 * The completion script for bash (in contrib/) has been updated to
   handle aliases that define complex sequence of commands better.

 * The "core.preloadindex" configuration variable is by default
   enabled, allowing modern platforms to take advantage of the
   multiple cores they have.

 * "git clone" applies the "if cloning from a local disk, physically
   copy repository using hardlinks, unless otherwise told not to with
   --no-local" optimization when url.*.insteadOf mechanism rewrites a
   "git clone $URL" that refers to a repository over the network to a
   clone from a local disk.

 * "git commit --date=<date>" option learned to read from more
   timestamp formats, including "--date=now".

 * The `core.commentChar` configuration variable is used to specify a
   custom comment character other than the default "#" to be used in
   the commit log editor.  This can be set to `auto` to attempt to
   choose a different character that does not conflict with what
   already starts a line in the message being edited for cases like
   "git commit --amend".

 * "git format-patch" learned --signature-file=<file> to take the mail
   signature from.

 * "git grep" learned grep.fullname configuration variable to force
   "--full-name" to be default.  This may cause regressions on
   scripted users that do not expect this new behaviour.

 * "git imap-send" learned to ask the credential helper for auth
   material.

 * "git log" and friends now understand the value "auto" set to the
   "log.decorate" configuration variable to enable the "--decorate"
   option automatically when the output is sent to tty.

 * "git merge" without argument, even when there is an upstream
   defined for the current branch, refused to run until
   merge.defaultToUpstream is set to true.  Flip the default of that
   configuration variable to true.

 * "git mergetool" learned to drive the vimdiff3 backend.

 * mergetool.prompt used to default to 'true', always asking "do you
   really want to run the tool on this path?".  Among the two
   purposes this prompt serves, ignore the use case to confirm that
   the user wants to view particular path with the named tool, and
   redefine the meaning of the prompt only to confirm the choice of
   the tool made by the autodetection (for those who configured the
   tool explicitly, the prompt shown for the latter purpose is
   simply annoying).

   Strictly speaking, this is a backward incompatible change and the
   users need to explicitly set the variable to 'true' if they want
   to resurrect the now-ignored use case.

 * "git replace" learned the "--edit" subcommand to create a
   replacement by editing an existing object.

 * "git replace" learned a "--graft" option to rewrite parents of a
   commit.

 * "git send-email" learned "--to-cover" and "--cc-cover" options, to
   tell it to copy To: and Cc: headers found in the first input file
   when emitting later input files.

 * "git svn" learned to cope with malformed timestamps with only one
   digit in the hour part, e.g. 2014-01-07T5:01:02.048176Z, emitted
   by some broken subversion server implementations.

 * "git tag" when editing the tag message shows the name of the tag
   being edited as a comment in the editor.

 * "git tag" learned to pay attention to "tag.sort" configuration, to
   be used as the default sort order when no --sort=<value> the option
   is given.

 * "git verify-commit" command to check GPG signature in signed
   commits, in a way similar to "git verify-tag" is used to check
   signed tags, was added.


Performance, Internal Implementation, etc.

 * Build procedure for 'subtree' (in contrib/) has been cleaned up.

 * The support for the profile-feedback build, which has been left
   bit-rotten for quite a while, has been updated.

 * An experimental format to use two files (the base file and
   incremental changes relative to it) to represent the index has been
   introduced; this may reduce I/O cost of rewriting a large index
   when only small part of the working tree changes.

 * Effort to shrink the size of patches Windows folks maintain on top
   by upstreaming them continues.

 * Patches maintained by msysgit folks for Windows port are being
   upstreamed here a bit by bit.

 * The leaf function to check validity of a refname format has been
   micro-optimized, using SSE2 instructions when available.  A few
   breakages during its development have been caught and fixed already
   but there might remain some more still; please test and report if
   you find any.

 * The `core.deltabasecachelimit` used to default to 16 MiB , but this
   proved to be too small, and has been bumped to 96 MiB.

 * "git blame" has been optimized greatly by reorganising the data
   structure that is used to keep track of the work to be done.

 * "git diff" that compares 3-or-more trees (e.g. parents and the
   result of a merge) have been optimized.

 * The API to update/delete references are being converted to handle
   updates to multiple references in a transactional way.  As an
   example, "update-ref --stdin [-z]" has been updated to use this
   API.

 * skip_prefix() and strip_suffix() API functions are used a lot more
   widely throughout the codebase now.

 * Parts of the test scripts can be skipped by using a range notation,
   e.g. "sh t1234-test.sh --run='1-4 6 8-'" to omit test piece 5 and 7
   and run everything else.


Also contains various documentation updates and code clean-ups.


Fixes since v2.0
----------------

Unless otherwise noted, all the fixes since v2.0 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * We used to unconditionally disable the pager in the pager process
   we spawn to feed out output, but that prevented people who want to
   run "less" within "less" from doing so.
   (merge c0459ca je/pager-do-not-recurse later to maint).

 * Tools that read diagnostic output in our standard error stream do
   not want to see terminal control sequence (e.g. erase-to-eol).
   Detect them by checking if the standard error stream is connected
   to a tty.
   (merge 38de156 mn/sideband-no-ansi later to maint).

 * Mishandling of patterns in .gitignore that has trailing SPs quoted
   with backslashes (e.g. ones that end with "\ ") have been
   corrected.
   (merge 97c1364be6b pb/trim-trailing-spaces later to maint).

 * Reworded the error message given upon a failure to open an existing
   loose object file due to e.g. permission issues; it was reported as
   the object being corrupt, but that is not quite true.
   (merge d6c8a05 jk/report-fail-to-read-objects-better later to maint).

 * "git log -2master" is a common typo that shows two commits starting
   from whichever random branch that is not 'master' that happens to
   be checked out currently.
   (merge e3fa568 jc/revision-dash-count-parsing later to maint).

 * Code to avoid adding the same alternate object store twice was
   subtly broken for a long time, but nobody seems to have noticed.
   (merge 80b4785 rs/fix-alt-odb-path-comparison later to maint).
   (merge 539e750 ek/alt-odb-entry-fix later to maint).

 * The "%<(10,trunc)%s" pretty format specifier in the log family of
   commands is used to truncate the string to a given length (e.g. 10
   in the example) with padding to column-align the output, but did
   not take into account that number of bytes and number of display
   columns are different.
   (merge 7d50987 as/pretty-truncate later to maint).

 * "%G" (nothing after G) is an invalid pretty format specifier, but
   the parser did not notice it as garbage.
   (merge 958b2eb jk/pretty-G-format-fixes later to maint).

 * A handful of code paths had to read the commit object more than
   once when showing header fields that are usually not parsed.  The
   internal data structure to keep track of the contents of the commit
   object has been updated to reduce the need for this double-reading,
   and to allow the caller find the length of the object.
   (merge 218aa3a jk/commit-buffer-length later to maint).

 * The "mailmap.file" configuration option did not support the tilde
   expansion (i.e. ~user/path and ~/path).
   (merge 9352fd5 ow/config-mailmap-pathname later to maint).

 * The completion scripts (in contrib/) did not know about quite a few
   options that are common between "git merge" and "git pull", and a
   couple of options unique to "git merge".
   (merge 8fee872 jk/complete-merge-pull later to maint).

 * The unix-domain socket used by the sample credential cache daemon
   tried to unlink an existing stale one at a wrong path, if the path
   to the socket was given as an overlong path that does not fit in
   sun_path member of the sockaddr_un structure.
   (merge 2869b3e rs/fix-unlink-unix-socket later to maint).

 * An ancient rewrite passed a wrong pointer to a curl library
   function in a rarely used code path.
   (merge 479eaa8 ah/fix-http-push later to maint).

 * "--ignore-space-change" option of "git apply" ignored the spaces
   at the beginning of line too aggressively, which is inconsistent
   with the option of the same name "diff" and "git diff" have.
   (merge 14d3bb4 jc/apply-ignore-whitespace later to maint).

 * "git blame" miscounted number of columns needed to show localized
   timestamps, resulting in jaggy left-side-edge of the source code
   lines in its output.
   (merge dd75553 jx/blame-align-relative-time later to maint).

 * "git blame" assigned the blame to the copy in the working-tree if
   the repository is set to core.autocrlf=input and the file used CRLF
   line endings.
   (merge 4d4813a bc/blame-crlf-test later to maint).

 * "git clone -b brefs/tags/bar" would have mistakenly thought we were
   following a single tag, even though it was a name of the branch,
   because it incorrectly used strstr().
   (merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint).

 * "git commit --allow-empty-messag -C $commit" did not work when the
   commit did not have any log message.
   (merge 076cbd6 jk/commit-C-pick-empty later to maint).

 * "git diff --find-copies-harder" sometimes pretended as if the mode
   bits have changed for paths that are marked with assume-unchanged
   bit.
   (merge 5304810 jk/diff-files-assume-unchanged later to maint).

 * "filter-branch" left an empty single-parent commit that results when
   all parents of a merge commit gets mapped to the same commit, even
   under "--prune-empty".
   (merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint).

 * "git format-patch" did not enforce the rule that the "--follow"
   option from the log/diff family of commands must be used with
   exactly one pathspec.
   (merge dd63f16 jk/diff-follow-must-take-one-pathspec later to maint).

 * "git gc --auto" was recently changed to run in the background to
   give control back early to the end-user sitting in front of the
   terminal, but it forgot that housekeeping involving reflogs should
   be done without other processes competing for accesses to the refs.
   (merge 62aad18 nd/daemonize-gc later to maint).

 * "git grep -O" to show the lines that hit in the pager did not work
   well with case insensitive search.  We now spawn "less" with its
   "-I" option when it is used as the pager (which is the default).
   (merge f7febbe sk/spawn-less-case-insensitively-from-grep-O-i later to maint).

 * We used to disable threaded "git index-pack" on platforms without
   thread-safe pread(); use a different workaround for such
   platforms to allow threaded "git index-pack".
   (merge 3953949 nd/index-pack-one-fd-per-thread later to maint).

 * The error reporting from "git index-pack" has been improved to
   distinguish missing objects from type errors.
   (merge 77583e7 jk/index-pack-report-missing later to maint).

 * "log --show-signature" incorrectly decided the color to paint a
   mergetag that was and was not correctly validated.
   (merge 42c55ce mg/fix-log-mergetag-color later to maint).

 * "log --show-signature" did not pay attention to "--graph" option.
   (merge cf3983d zk/log-graph-showsig later to maint).

 * "git mailinfo" used to read beyond the end of header string while
   parsing an incoming e-mail message to extract the patch.
   (merge b1a013d rs/mailinfo-header-cmp later to maint).

 * On a case insensitive filesystem, merge-recursive incorrectly
   deleted the file that is to be renamed to a name that is the same
   except for case differences.
   (merge baa37bf dt/merge-recursive-case-insensitive later to maint).

 * Merging changes into a file that ends in an incomplete line made the
   last line into a complete one, even when the other branch did not
   change anything around the end of file.
   (merge ba31180 mk/merge-incomplete-files later to maint).

 * "git pack-objects" unnecessarily copied the previous contents when
   extending the hashtable, even though it will populate the table
   from scratch anyway.
   (merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint).

 * Recent updates to "git repack" started to duplicate objects that
   are in packfiles marked with .keep flag into the new packfile by
   mistake.
   (merge d078d85 jk/repack-pack-keep-objects later to maint).

 * "git rerere forget" did not work well when merge.conflictstyle
   was set to a non-default value.
   (merge de3d8bb fc/rerere-conflict-style later to maint).

 * "git remote rm" and "git remote prune" can involve removing many
   refs at once, which is not a very efficient thing to do when very
   many refs exist in the packed-refs file.
   (merge e6bea66 jl/remote-rm-prune later to maint).

 * "git log --exclude=<glob> --all | git shortlog" worked as expected,
   but "git shortlog --exclude=<glob> --all", which is supposed to be
   identical to the above pipeline, was not accepted at the command
   line argument parser level.
   (merge eb07774 jc/shortlog-ref-exclude later to maint).

 * The autostash mode of "git rebase -i" did not restore the dirty
   working tree state if the user aborted the interactive rebase by
   emptying the insn sheet.
   (merge ddb5432 rr/rebase-autostash-fix later to maint).

 * "git rebase --fork-point" did not filter out patch-identical
   commits correctly.

 * During "git rebase --merge", a conflicted patch could not be
   skipped with "--skip" if the next one also conflicted.
   (merge 95104c7 bc/fix-rebase-merge-skip later to maint).

 * "git show -s" (i.e. show log message only) used to incorrectly emit
   an extra blank line after a merge commit.
   (merge ad2f725 mk/show-s-no-extra-blank-line-for-merges later to maint).

 * "git status", even though it is a read-only operation, tries to
   update the index with refreshed lstat(2) info to optimize future
   accesses to the working tree opportunistically, but this could
   race with a "read-write" operation that modify the index while it
   is running.  Detect such a race and avoid overwriting the index.
   (merge 426ddee ym/fix-opportunistic-index-update-race later to maint).

 * "git status" (and "git commit") behaved as if changes in a modified
   submodule are not there if submodule.*.ignore configuration is set,
   which was misleading.  The configuration is only to unclutter diff
   output during the course of development, and should not to hide
   changes in the "status" output to cause the users forget to commit
   them.
   (merge c215d3d jl/status-added-submodule-is-never-ignored later to maint).

 * Documentation for "git submodule sync" forgot to say that the subcommand
   can take the "--recursive" option.
   (merge 9393ae7 mc/doc-submodule-sync-recurse later to maint).

 * "git update-index --cacheinfo" in 2.0 release crashed on a
   malformed command line.
   (merge c8e1ee4 jc/rev-parse-argh-dashed-multi-words later to maint).

 * The mode to run tests with HTTP server tests disabled was broken.
   (merge afa53fe na/no-http-test-in-the-middle later to maint).

----------------------------------------------------------------

Changes since v2.0.0, 643 non-merge changes from 80 contributors,
are as follows:

Abbaad Haider (1):
      http-push.c: make CURLOPT_IOCTLDATA a usable pointer

Alexey Shumkin (5):
      t4205 (log-pretty-formats): don't hardcode SHA-1 in expected outputs
      t4041, t4205, t6006, t7102: don't hardcode tested encoding value
      t4205 (log-pretty-format): use `tformat` rather than `format`
      t4205, t6006: add tests that fail with i18n.logOutputEncoding set
      pretty.c: format string with truncate respects logOutputEncoding

Anders Kaseorg (1):
      gitk: Allow displaying time zones from author and commit dates timestamps

Andi Kleen (4):
      Use BASIC_FLAGS for profile feedback
      Don't define away __attribute__ on gcc
      Run the perf test suite for profile feedback too
      Fix profile feedback with -jN and add profile-fast

Andreas Schwab (1):
      grep: add grep.fullName config variable

Ben Walton (1):
      compat/bswap.h: fix endianness detection

Brian Gesiak (14):
      strbuf: use _rtrim and _ltrim in strbuf_trim
      api-strbuf.txt: add docs for _trim and _ltrim
      builtin/ls-remote.c: rearrange xcalloc arguments
      builtin/remote.c: rearrange xcalloc arguments
      commit.c: rearrange xcalloc arguments
      config.c: rearrange xcalloc arguments
      diff.c: rearrange xcalloc arguments
      http-push.c: rearrange xcalloc arguments
      imap-send.c: rearrange xcalloc arguments
      notes.c: rearrange xcalloc arguments
      pack-revindex.c: rearrange xcalloc arguments
      reflog-walk.c: rearrange xcalloc arguments
      remote.c: rearrange xcalloc arguments
      transport-helper.c: rearrange xcalloc arguments

Cezary Zawadka (1):
      Windows: allow using UNC path for git repository

Charles Bailey (3):
      compat/bswap.h: detect endianness on more platforms that don't use BYTE_ORDER
      filter-branch: eliminate duplicate mapped parents
      Fix contrib/subtree Makefile to patch #! line

Christian Couder (16):
      replace: make sure --edit results in a different object
      replace: refactor checking ref validity
      replace: die early if replace ref already exists
      replace: add tests for --edit
      replace: add --edit to usage string
      Documentation: replace: describe new --edit option
      commit: add for_each_mergetag()
      replace: cleanup redirection style in tests
      replace: add --graft option
      replace: add test for --graft
      Documentation: replace: add --graft option
      contrib: add convert-grafts-to-replace-refs.sh
      replace: remove signature when using --graft
      replace: add test for --graft with signed commit
      replace: check mergetags when using --graft
      replace: add test for --graft with a mergetag

Dan Albert (1):
      imap-send: use git-credential

David Aguilar (3):
      gitk: Honor TMPDIR when viewing external diffs
      gitk: Use mktemp -d to avoid predictable temporary directories
      gitk: Catch mkdtemp errors

David Kastrup (2):
      blame: large-scale performance rewrite
      Bump core.deltaBaseCacheLimit to 96m

David Turner (7):
      docs: document RUN_SETUP_GENTLY and clarify RUN_SETUP
      merge-recursive.c: fix case-changing merge bug
      mv: allow renaming to fix case on case insensitive filesystems
      refs.c: optimize check_refname_component()
      refs.c: SSE2 optimizations for check_refname_component
      refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
      refs: fix valgrind suppression file

Elia Pinto (62):
      t9365-continuing-queries.sh: use the $( ... ) construct for command substitution
      test-gitmw-lib.sh: use the $( ... ) construct for command substitution
      t7900-subtree.sh: use the $( ... ) construct for command substitution
      appp.sh: use the $( ... ) construct for command substitution
      git-pull.sh: use the $( ... ) construct for command substitution
      git-rebase--merge.sh: use the $( ... ) construct for command substitution
      git-rebase.sh: use the $( ... ) construct for command substitution
      git-stash.sh: use the $( ... ) construct for command substitution
      git-web--browse.sh: use the $( ... ) construct for command substitution
      lib-credential.sh: use the $( ... ) construct for command substitution
      lib-cvs.sh: use the $( ... ) construct for command substitution
      lib-gpg.sh: use the $( ... ) construct for command substitution
      p5302-pack-index.sh: use the $( ... ) construct for command substitution
      t0001-init.sh: use the $( ... ) construct for command substitution
      t0010-racy-git.sh: use the $( ... ) construct for command substitution
      t0020-crlf.sh: use the $( ... ) construct for command substitution
      t0025-crlf-auto.sh: use the $( ... ) construct for command substitution
      t0026-eol-config.sh: use the $( ... ) construct for command substitution
      t0030-stripspace.sh: use the $( ... ) construct for command substitution
      t0300-credentials.sh: use the $( ... ) construct for command substitution
      t1000-read-tree-m-3way.sh: use the $( ... ) construct for command substitution
      t1001-read-tree-m-2way.sh: use the $( ... ) construct for command substitution
      t1002-read-tree-m-u-2way.sh: use the $( ... ) construct for command substitution
      t1003-read-tree-prefix.sh: use the $( ... ) construct for command substitution
      t1004-read-tree-m-u-wf.sh: use the $( ... ) construct for command substitution
      t1020-subdirectory.sh: use the $( ... ) construct for command substitution
      t1050-large.sh: use the $( ... ) construct for command substitution
      t3905-stash-include-untracked.sh: use the $( ... ) construct for command substitution
      t3910-mac-os-precompose.sh: use the $( ... ) construct for command substitution
      t4006-diff-mode.sh: use the $( ... ) construct for command substitution
      t4010-diff-pathspec.sh: use the $( ... ) construct for command substitution
      t4012-diff-binary.sh: use the $( ... ) construct for command substitution
      t4013-diff-various.sh: use the $( ... ) construct for command substitution
      t4014-format-patch.sh: use the $( ... ) construct for command substitution
      t4036-format-patch-signer-mime.sh: use the $( ... ) construct for command substitution
      t4038-diff-combined.sh: use the $( ... ) construct for command substitution
      t4057-diff-combined-paths.sh: use the $( ... ) construct for command substitution
      t4116-apply-reverse.sh: use the $( ... ) construct for command substitution
      t4119-apply-config.sh: use the $( ... ) construct for command substitution
      t4204-patch-id.sh: use the $( ... ) construct for command substitution
      t5000-tar-tree.sh: use the $( ... ) construct for command substitution
      scripts: "export VAR=VALUE" construct is not portable
      check_bindir: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-clone.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-commit.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-merge.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-repack.sh: avoid "test <cond> -a/-o <cond>"
      contrib/examples/git-resolve.sh: avoid "test <cond> -a/-o <cond>"
      git-bisect.sh: avoid "test <cond> -a/-o <cond>"
      git-mergetool.sh: avoid "test <cond> -a/-o <cond>"
      git-rebase--interactive.sh: avoid "test <cond> -a/-o <cond>"
      t/lib-httpd.sh: avoid "test <cond> -a/-o <cond>"
      t/t0025-crlf-auto.sh: avoid "test <cond> -a/-o <cond>"
      t/t0026-eol-config.sh: avoid "test <cond> -a/-o <cond>"
      t/t4102-apply-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/t5000-tar-tree.sh: avoid "test <cond> -a/-o <cond>"
      t/t5403-post-checkout-hook.sh: avoid "test <cond> -a/-o <cond>"
      t/t5538-push-shallow.sh: avoid "test <cond> -a/-o <cond>"
      t/t9814-git-p4-rename.sh: avoid "test <cond> -a/-o <cond>"
      t/test-lib-functions.sh: avoid "test <cond> -a/-o <cond>"
      git-submodule.sh: avoid "test <cond> -a/-o <cond>"
      submodule.c: use the ARRAY_SIZE macro

Ephrim Khong (1):
      sha1_file: do not add own object directory as alternate

Eric Wong (1):
      config: preserve config file permissions on edits

Erik Faye-Lund (1):
      send-email: recognize absolute path on Windows

Fabian Ruch (1):
      sequencer: signal failed ff as an aborted, not a conflicted merge

Felipe Contreras (13):
      fast-export: improve argument parsing
      fast-export: add new --refspec option
      transport-helper: add support for old:new refspec
      transport-helper: add support to push symbolic refs
      fast-import: add support to delete refs
      fast-export: add support to delete refs
      transport-helper: add support to delete branches
      transport-helper: remove unnecessary strbuf resets
      mergetools: add vimdiff3 mode
      mergetool: run prompt only if guessed tool
      merge: enable defaulttoupstream by default
      rerere: fix for merge.conflictstyle
      silence a bunch of format-zero-length warnings

Ilya Bobyr (4):
      test-lib: document short options in t/README
      test-lib: tests skipped by GIT_SKIP_TESTS say so
      test-lib: '--run' to run only specific tests
      gitk: Replace SHA1 entry field on keyboard paste

Jacek Konieczny (1):
      pull: do not abuse 'break' inside a shell 'case'

Jacob Keller (2):
      tag: fix --sort tests to use cat<<-\EOF format
      tag: support configuring --sort via .gitconfig

James Denholm (6):
      contrib/subtree/Makefile: scrap unused $(gitdir)
      contrib/subtree/Makefile: use GIT-VERSION-FILE
      contrib/subtree/Makefile: s/libexecdir/gitexecdir/
      contrib/subtree/Makefile: clean up rules to generate documentation
      contrib/subtree/Makefile: clean up rule for "clean"
      contrib/subtree: allow adding an annotated tag

Jason St. John (1):
      Documentation: use "command-line" when used as a compound adjective, and fix other minor grammatical issues

Jean-Jacques Lafay (1):
      git tag --contains: avoid stack overflow

Jeff King (131):
      run_external_diff: use an argv_array for the environment
      run_external_diff: clean up error handling
      run_external_diff: drop fflush(NULL)
      run_external_diff: hoist common bits out of conditional
      run_external_diff: refactor cmdline setup logic
      commit: do not complain of empty messages from -C
      t3910: show failure of core.precomposeunicode with decomposed filenames
      replace: refactor command-mode determination
      replace: use OPT_CMDMODE to handle modes
      replace: factor object resolution out of replace_object
      replace: add --edit option
      commit: use split_ident_line to compare author/committer
      pretty: make show_ident_date public
      commit: print "Date" line when the user has set date
      commit: accept more date formats for "--date"
      inline constant return from error() function
      let clang use the constant-return error() macro
      grep: use run-command's "dir" option for --open-files-in-pager
      t/lib-httpd: require SANITY prereq
      index-pack: distinguish missing objects from type errors
      run_diff_files: do not look at uninitialized stat data
      run-command: store an optional argv_array
      run_column_filter: use argv_array
      git_connect: use argv_array
      get_helper: use run-command's internal argv_array
      get_exporter: use argv_array
      get_importer: use run-command's internal argv_array
      argv-array: drop "detach" code
      open_sha1_file: report "most interesting" errno
      move "--follow needs one pathspec" rule to diff_setup_done
      format-patch: make newline after signature conditional
      daemon/config: factor out duplicate xstrdup_tolower
      test-lib: preserve GIT_CURL_VERBOSE from the environment
      t/lib-httpd: use write_script to copy CGI scripts
      t5550: test display of remote http error messages
      strbuf: add strbuf_tolower function
      http: extract type/subtype portion of content-type
      http: optionally extract charset parameter from content-type
      strbuf: add strbuf_reencode helper
      remote-curl: reencode http error messages
      http: default text charset to iso-8859-1
      t5537: re-drop http tests
      error_resolve_conflict: rewrap advice message
      error_resolve_conflict: drop quotations around operation
      update-index: fix segfault with missing --cacheinfo argument
      repack: do not accidentally pack kept objects by default
      repack: respect pack.writebitmaps
      repack: s/write_bitmap/&s/ in code
      pack-objects: stop respecting pack.writebitmaps
      repack: simplify handling of --write-bitmap-index
      repack: introduce repack.writeBitmaps config option
      commit_tree: take a pointer/len pair rather than a const strbuf
      replace dangerous uses of strbuf_attach
      alloc: include any-object allocations in alloc_report
      commit: push commit_index update into alloc_commit_node
      do not create "struct commit" with xcalloc
      logmsg_reencode: return const buffer
      sequencer: use logmsg_reencode in get_message
      t7700: drop explicit --no-pack-kept-objects from .keep test
      provide a helper to free commit buffer
      provide a helper to set the commit buffer
      provide helpers to access the commit buffer
      use get_cached_commit_buffer where appropriate
      use get_commit_buffer to avoid duplicate code
      convert logmsg_reencode to get_commit_buffer
      use get_commit_buffer everywhere
      commit-slab: provide a static initializer
      commit: convert commit->buffer to a slab
      commit: record buffer length in cache
      reuse cached commit buffer when parsing signatures
      t7510: stop referring to master in later tests
      t7510: test a commit signed by an unknown key
      t7510: check %G* pretty-format output
      pretty: avoid reading past end-of-string with "%G"
      parse_diff_color_slot: drop ofs parameter
      daemon: mark some strings as const
      avoid using skip_prefix as a boolean
      strbuf: add xstrfmt helper
      use xstrfmt in favor of manual size calculations
      use xstrdup instead of xmalloc + strcpy
      use xstrfmt to replace xmalloc + sprintf
      use xstrfmt to replace xmalloc + strcpy/strcat
      setup_git_env: use git_pathdup instead of xmalloc + sprintf
      sequencer: use argv_array_pushf
      merge: use argv_array when spawning merge strategy
      walker_fetch: fix minor memory leak
      unique_path: fix unlikely heap overflow
      refactor skip_prefix to return a boolean
      apply: use skip_prefix instead of raw addition
      fast-import: fix read of uninitialized argv memory
      transport-helper: avoid reading past end-of-string
      use skip_prefix to avoid magic numbers
      use skip_prefix to avoid repeating strings
      fast-import: use skip_prefix for parsing input
      daemon: use skip_prefix to avoid magic numbers
      stat_opt: check extra strlen call
      fast-import: refactor parsing of spaces
      fetch-pack: refactor parsing in get_ack
      git: avoid magic number with skip_prefix
      use skip_prefix to avoid repeated calculations
      http-push: refactor parsing of remote object names
      setup_git_env(): introduce git_path_from_env() helper
      move "%G" format test from t7510 to t6006
      replace: replace spaces with tabs in indentation
      avoid double close of descriptors handed to run_command
      replace: use argv_array in export_object
      replace: add a --raw mode for --edit
      add strip_suffix function
      implement ends_with via strip_suffix
      replace has_extension with ends_with
      use strip_suffix instead of ends_with in simple cases
      index-pack: use strip_suffix to avoid magic numbers
      strbuf: implement strbuf_strip_suffix
      verify-pack: use strbuf_strip_suffix
      prepare_packed_git_one: refactor duplicate-pack check
      t7300: repair filesystem permissions with test_when_finished
      remote-curl: do not complain on EOF from parent git
      remote-curl: use error instead of fprintf(stderr)
      remote-curl: mark helper-protocol errors more clearly
      tag: use skip_prefix instead of magic numbers
      alloc: write out allocator definitions
      move setting of object->type to alloc_* functions
      parse_object_buffer: do not set object type
      add object_as_type helper for casting objects
      alloc: factor out commit index
      object_as_type: set commit index
      diff-tree: avoid lookup_unknown_object
      prio-queue: factor out compare and swap operations
      prio-queue: make output stable with respect to insertion
      paint_down_to_common: use prio_queue
      t5539: update a flaky test

Jens Lehmann (21):
      status/commit: show staged submodules regardless of ignore config
      commit -m: commit staged submodules regardless of ignore config
      git-gui: show staged submodules regardless of ignore config
      git-gui: tolerate major version changes when comparing the git version
      gitk: Show staged submodules regardless of ignore config
      test-lib: add test_dir_is_empty()
      t/Makefile: check helper scripts for non-portable shell commands too
      t/Makefile: always test all lint targets when running tests
      submodules: add the lib-submodule-update.sh test library
      checkout: call the new submodule update test framework
      apply: add t4137 for submodule updates
      read-tree: add t1013 for submodule updates
      reset: add t7112 for submodule updates
      bisect: add t6041 for submodule updates
      merge: add t7613 for submodule updates
      rebase: add t3426 for submodule updates
      pull: add t5572 for submodule updates
      cherry-pick: add t3512 for submodule updates
      am: add t4255 for submodule updates
      stash: add t3906 for submodule updates
      revert: add t3513 for submodule updates

Jens Lindström (3):
      remote rm: delete remote configuration as the last
      remote: repack packed-refs once when deleting multiple refs
      remote prune: optimize "dangling symref" check/warning

Jeremiah Mahler (7):
      format-patch: add "--signature-file=<file>" option
      t9138-git-svn-authors-prog.sh fixups
      Documentation: wording fixes in the user manual and glossary
      t/t7810-grep.sh: remove duplicate test_config()
      api-strbuf.txt minor typos
      name-hash.c: replace cache_name_compare() with memcmp(3)
      cleanup duplicate name_compare() functions

Jiang Xin (2):
      blame: fix broken time_buf paddings in relative timestamp
      blame: dynamic blame_date_width for different locales

Johannes Schindelin (2):
      git grep -O -i: if the pager is 'less', pass the '-I' option
      Win32: let mingw_execve() return an int

Johannes Sixt (1):
      fix brown paper bag breakage in t5150-request-pull.sh

John Keeping (4):
      completion: add a note that merge options are shared
      completion: add missing options for git-merge
      rebase--am: use --cherry-pick instead of --ignore-if-in-upstream
      rebase: omit patch-identical commits with --fork-point

Jonathan McCrohan (1):
      git-instaweb: add support for Apache 2.4

Jonathan Nieder (4):
      contrib: remove vim support instructions
      contrib: remove git-diffall
      test-lint: find unportable sed, echo, test, and export usage after &&
      test doc: test_write_lines does not split its arguments

Junio C Hamano (49):
      apply --ignore-space-change: lines with and without leading whitespaces do not match
      send-email: windows drive prefix (e.g. C:) appears only at the beginning
      mergetool: document the default for --[no-]prompt
      compat/bswap.h: restore preference __BIG_ENDIAN over BIG_ENDIAN
      CodingGuidelines: once it is in, it is not worth the code churn
      CodingGuidelines: give an example for case/esac statement
      CodingGuidelines: give an example for redirection
      CodingGuidelines: give an example for control statements
      CodingGuidelines: give an example for shell function preamble
      CodingGuidelines: do not call the conditional statement "if()"
      CodingGuidelines: on comparison
      CodingGuidelines: on splitting a long line
      CodingGuidelines: avoid "test <cond> -a/-o <cond>"
      scripts: more "export VAR=VALUE" fixes
      Git 1.9.4
      fetch doc: update introductory part for clarity
      fetch doc: update note on '+' in front of the refspec
      fetch doc: remove notes on outdated "mixed layout"
      First batch for 2.1
      shortlog: allow --exclude=<glob> to be passed
      fetch doc: on pulling multiple refspecs
      fetch doc: update refspec format description
      fetch doc: remove "short-cut" section
      fetch doc: add a section on configured remote-tracking branches
      fetch: allow explicit --refmap to override configuration
      Second batch for 2.1
      Update draft release notes to 2.1
      test: turn EXPENSIVE into a lazy prerequisite
      test: turn USR_BIN_TIME into a lazy prerequisite
      t3302: coding style updates
      t3302: do not chdir around in the primary test process
      t3302: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      t3419: drop unnecessary NOT_EXPENSIVE pseudo-prerequisite
      revision: parse "git log -<count>" more carefully
      t0008: do not depend on 'echo' handling backslashes specially
      Third batch for 2.1
      git-submodule.sh: avoid "echo" path-like values
      Fourth batch for 2.1
      builtin/clone.c: detect a clone starting at a tag correctly
      Git 2.0.1
      Fifth batch for 2.1
      Sixth batch for 2.1
      Start preparing for 2.0.2
      Seventh batch for 2.1
      Git 2.0.2
      Eighth batch for 2.1
      Ninth batch for 2.1
      Git 2.0.3
      Git 2.1.0-rc0

Jörn Engel (1):
      pager: do allow spawning pager recursively

Karsten Blees (46):
      MSVC: link dynamically to the CRT
      Win32 dirent: remove unused dirent.d_ino member
      Win32 dirent: remove unused dirent.d_reclen member
      Win32 dirent: change FILENAME_MAX to MAX_PATH
      Win32 dirent: clarify #include directives
      Win32 dirent: improve dirent implementation
      Win32: move main macro to a function
      Win32: support Unicode console output
      Win32: detect console streams more reliably
      Win32: warn if the console font doesn't support Unicode
      Win32: add Unicode conversion functions
      Win32: Thread-safe windows console output
      Win32: fix broken pipe detection
      Win32: reliably detect console pipe handles
      Win32: simplify internal mingw_spawn* APIs
      Win32: fix potential multi-threading issue
      MinGW: disable CRT command line globbing
      Win32: Unicode arguments (outgoing)
      Win32: Unicode arguments (incoming)
      trace: move trace declarations from cache.h to new trace.h
      trace: consistently name the format parameter
      trace: remove redundant printf format attribute
      symlinks: remove PATH_MAX limitation
      hashmap: factor out getting a hash code from a SHA1
      hashmap: improve struct hashmap member documentation
      hashmap: add simplified hashmap_get_from_hash() API
      hashmap: add string interning API
      cache.h: rename cache_def_free to cache_def_clear
      trace: improve trace performance
      Documentation/git.txt: improve documentation of 'GIT_TRACE*' variables
      sha1_file: change GIT_TRACE_PACK_ACCESS logging to use trace API
      trace: add infrastructure to augment trace output with additional info
      trace: disable additional trace output for unit tests
      trace: add current timestamp to all trace output
      trace: move code around, in preparation to file:line output
      trace: add 'file:line' to all trace output
      trace: add high resolution timer function to debug performance issues
      trace: add trace_performance facility to debug performance issues
      git: add performance tracing for git's main() function to debug scripts
      wt-status: simplify performance measurement by using getnanotime()
      progress: simplify performance measurement by using getnanotime()
      api-trace.txt: add trace API documentation
      Win32: Unicode file name support (except dirent)
      Win32: Unicode file name support (dirent)
      MinGW: fix compile error due to missing ELOOP
      config: use chmod() instead of fchmod()

Kirill Smelkov (20):
      combine-diff: move show_log_first logic/action out of paths scanning
      combine-diff: move changed-paths scanning logic into its own function
      tree-diff: no need to manually verify that there is no mode change for a path
      tree-diff: no need to pass match to skip_uninteresting()
      tree-diff: show_tree() is not needed
      tree-diff: consolidate code for emitting diffs and recursion in one place
      tree-diff: don't assume compare_tree_entry() returns -1,0,1
      tree-diff: move all action-taking code out of compare_tree_entry()
      tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
      tree-diff: show_path prototype is not needed anymore
      tree-diff: simplify tree_entry_pathcmp
      tree-diff: remove special-case diff-emitting code for empty-tree cases
      tree-diff: diff_tree() should now be static
      tree-diff: rework diff_tree interface to be sha1 based
      tree-diff: no need to call "full" diff_tree_sha1 from show_path()
      tree-diff: reuse base str(buf) memory on sub-tree recursion
      Portable alloca for Git
      tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
      combine-diff: speed it up, by using multiparent diff tree-walker directly
      mingw: activate alloca

Linus Torvalds (1):
      git log: support "auto" decorations

Luis R. Rodriguez (1):
      git.c: treat RUN_SETUP_GENTLY and RUN_SETUP as mutually exclusive

Marc Branchaud (2):
      fetch doc: move FETCH_HEAD material lower and add an example
      docs: Explain the purpose of fetch's and pull's <refspec> parameter.

Matthew Chen (1):
      submodule: document "sync --recursive"

Matthieu Moy (4):
      git-remote-mediawiki: allow stop/start-ing the test server
      git-remote-mediawiki: fix encoding issue for UTF-8 media files
      pager: remove 'S' from $LESS by default
      rebase -i: test "Nothing to do" case with autostash

Max Kirillov (5):
      git-show: fix 'git show -s' to not add extra terminator after merge commit
      gitk: Switch to patch mode when searching for line origin
      gitk: Add visiblerefs option, which lists always-shown branches
      t6023-merge-file.sh: fix and mark as broken invalid tests
      git-merge-file: do not add LF at EOF while applying unrelated change

Maxime Coste (2):
      git-p4: Do not include diff in spec file when just preparing p4
      git-p4: fix submit in non --prepare-p4-only mode

Michael Barabanov (1):
      use local cloning if insteadOf makes a local URL

Michael Haggerty (27):
      t1400: fix name and expected result of one test
      t1400: provide more usual input to the command
      parse_arg(): really test that argument is properly terminated
      t1400: add some more tests involving quoted arguments
      refs.h: rename the action_on_err constants
      update_refs(): fix constness
      update-ref --stdin: read the whole input at once
      parse_cmd_verify(): copy old_sha1 instead of evaluating <oldvalue> twice
      update-ref.c: extract a new function, parse_refname()
      update-ref --stdin: improve error messages for invalid values
      update-ref --stdin: make error messages more consistent
      update-ref --stdin: simplify error messages for missing oldvalues
      t1400: test that stdin -z update treats empty <newvalue> as zeros
      update-ref.c: extract a new function, parse_next_sha1()
      update-ref --stdin -z: deprecate interpreting the empty string as zeros
      t1400: test one mistake at a time
      update-ref --stdin: improve the error message for unexpected EOF
      update-ref --stdin: harmonize error messages
      refs: add a concept of a reference transaction
      update-ref --stdin: reimplement using reference transactions
      refs: remove API function update_refs()
      struct ref_update: rename field "ref_name" to "refname"
      struct ref_update: store refname as a FLEX_ARRAY
      ref_transaction_commit(): simplify code using temporary variables
      struct ref_update: add a lock field
      struct ref_update: add a type field
      ref_transaction_commit(): work with transaction->updates in place

Michael J Gruber (7):
      t7510: use consistent &&-chains in loop
      gpg-interface: provide clear helper for struct signature_check
      gpg-interface: provide access to the payload
      verify-commit: scriptable commit signature verification
      t7510: exit for loop with test result
      t7510: test verify-commit
      log: correctly identify mergetag signature verification status

Michael Naumov (1):
      sideband.c: do not use ANSI control sequence on non-terminal

Michael S. Tsirkin (6):
      git-send-email: two new options: to-cover, cc-cover
      test/send-email: to-cover, cc-cover tests
      rebase --keep-empty -i: add test
      test: add test_write_lines helper
      patch-id: make it stable against hunk reordering
      patch-id-test: test stable and unstable behaviour

Nguyễn Thái Ngọc Duy (40):
      index-pack: work around thread-unsafe pread()
      ewah: fix constness of ewah_read_mmap
      ewah: delete unused ewah_read_mmap_native declaration
      sequencer: do not update/refresh index if the lock cannot be held
      config: be strict on core.commentChar
      commit: allow core.commentChar=auto for character auto selection
      gc --auto: do not lock refs in the background
      git potty: restore environments after alias expansion
      read-cache: new API write_locked_index instead of write_index/write_cache
      read-cache: relocate and unexport commit_locked_index()
      read-cache: store in-memory flags in the first 12 bits of ce_flags
      read-cache: be strict about "changed" in remove_marked_cache_entries()
      read-cache: be specific what part of the index has changed
      update-index: be specific what part of the index has changed
      resolve-undo: be specific what part of the index has changed
      unpack-trees: be specific what part of the index has changed
      cache-tree: mark istate->cache_changed on cache tree invalidation
      cache-tree: mark istate->cache_changed on cache tree update
      cache-tree: mark istate->cache_changed on prime_cache_tree()
      entry.c: update cache_changed if refresh_cache is set in checkout_entry()
      read-cache: save index SHA-1 after reading
      read-cache: split-index mode
      read-cache: mark new entries for split index
      read-cache: save deleted entries in split index
      read-cache: mark updated entries for split index
      split-index: the writing part
      split-index: the reading part
      split-index: do not invalidate cache-tree at read time
      split-index: strip pathname of on-disk replaced entries
      update-index: new options to enable/disable split index mode
      update-index --split-index: do not split if $GIT_DIR is read only
      rev-parse: add --shared-index-path to get shared index path
      read-tree: force split-index mode off on --index-output
      read-tree: note about dropping split-index mode or index version
      read-cache: force split index mode with GIT_TEST_SPLIT_INDEX
      t2104: make sure split index mode is off for the version test
      t1700: new tests for split-index mode
      dir.c: coding style fix
      dir.h: move struct exclude declaration to top level
      prep_exclude: remove the artificial PATH_MAX limit

Nick Alcock (1):
      t5538: move http push tests out to t5542

Pasha Bolokhov (1):
      dir.c:trim_trailing_spaces(): fix for " \ " sequence

Pat Thoyts (2):
      wincred: add install target
      wincred: avoid overwriting configured variables

Philip Oakley (1):
      doc: give some guidelines for error messages

Ramkumar Ramachandra (1):
      rebase -i: handle "Nothing to do" case with autostash

Ramsay Allan Jones (2):
      t0000-*.sh: fix the GIT_SKIP_TESTS sub-tests
      alloc.c: remove the alloc_raw_commit_node() function

René Scharfe (28):
      mailinfo: use strcmp() for string comparison
      pack-objects: use free()+xcalloc() instead of xrealloc()+memset()
      Use starts_with() for C strings instead of memcmp()
      blame: factor out get_next_line()
      blame: simplify prepare_lines()
      wt-status: use argv_array for environment
      wt-status: simplify building of summary limit argument
      sha1_file: replace PATH_MAX buffer with strbuf in prepare_packed_git_one()
      sha1_file: avoid overrunning alternate object base string
      t5000, t5003: simplify commit
      diff-tree: call free_commit_list() instead of duplicating its code
      line-log: use commit_list_append() instead of duplicating its code
      use strbuf_addbuf for adding strbufs
      use strbuf_addch for adding single characters
      merge: simplify merge_trivial() by using commit_list_append()
      commit: use commit_list_append() instead of duplicating its code
      fsck: simplify fsck_commit_buffer() by using commit_list_count()
      annotate: use argv_array
      strbuf: use strbuf_addstr() for adding C strings
      use commit_list_count() to count the members of commit_lists
      run-command: use internal argv_array of struct child_process in run_hook_ve()
      transport: simplify fetch_objs_via_rsync() using argv_array
      fast-import: use hashcmp() for SHA1 hash comparison
      bundle: use internal argv_array of struct child_process in create_bundle()
      remote-testsvn: use internal argv_array of struct child_process in cmd_import()
      unix-socket: remove stale socket before calling chdir()
      use xcalloc() to allocate zero-initialized memory
      use xmemdupz() to allocate copies of strings given by start and length

RomanBelinsky (1):
      SVN.pm::parse_svn_date: allow timestamps with a single-digit hour

Ronnie Sahlberg (27):
      sequencer.c: check for lock failure and bail early in fast_forward_to
      commit.c: check for lock error and return early
      refs.c: add new functions reflog_exists and delete_reflog
      checkout.c: use ref_exists instead of file_exist
      refs.c: change read_ref_at to use the reflog iterators
      enums: remove trailing ',' after last item in enum
      enums: remove trailing ',' after last item in enum
      refs.c: remove ref_transaction_rollback
      refs.c: ref_transaction_commit should not free the transaction
      refs.c: constify the sha arguments for ref_transaction_create|delete|update
      refs.c: allow passing NULL to ref_transaction_free
      refs.c: add a strbuf argument to ref_transaction_commit for error logging
      lockfile.c: add a new public function unable_to_lock_message
      lockfile.c: make lock_file return a meaningful errno on failurei
      refs.c: add an err argument to repack_without_refs
      refs.c: make sure log_ref_setup returns a meaningful errno
      refs.c: verify_lock should set errno to something meaningful
      refs.c: make remove_empty_directories always set errno to something sane
      refs.c: commit_packed_refs to return a meaningful errno on failure
      refs.c: make resolve_ref_unsafe set errno to something meaningful on error
      refs.c: log_ref_write should try to return meaningful errno
      refs.c: make ref_update_reject_duplicates take a strbuf argument for errors
      refs.c: make update_ref_write update a strbuf on failure
      update-ref: use err argument to get error from ref_transaction_commit
      refs.c: remove the onerr argument to ref_transaction_commit
      refs.c: change ref_transaction_update() to do error checking and return status
      refs.c: add a public is_branch function

Stefan Beller (3):
      .mailmap: map different names with the same email address together
      git.1: switch homepage for stats
      .mailmap: combine Stefan Beller's emails

Steffen Prohaska (1):
      completion: handle '!f() { ... }; f' and "!sh -c '...' -" aliases

Stepan Kasal (3):
      Revert "submodules: fix ambiguous absolute paths under Windows"
      t5000, t5003: do not use test_cmp to compare binary files
      mingw: avoid const warning

Stephen P. Smith (1):
      How to keep a project's canonical history correct.

Steve Hoelzer (1):
      environment.c: enable core.preloadindex by default

Tanay Abhra (4):
      string-list: spell all values out that are given to a string_list initializer
      imap-send: use skip_prefix instead of using magic numbers
      string-list: add string_list initializer helper function
      replace memset with string-list initializers

Theodore Leblond (1):
      compat/poll: sleep 1 millisecond to avoid busy wait

Thorsten Glaser (1):
      builtin/tag.c: show tag name to hint in the message editor

Torsten Bögershausen (7):
      utf8.c: use a table for double_width
      utf8: make it easier to auto-update git_wcwidth()
      t5551: fix the 50,000 tag test
      t9001: avoid non-portable '\n' with sed
      Update of unicode_width.h to Unicode Version 7.0
      t0025: rename the test files
      t0027: combinations of core.autocrlf, core.eol and text

Trần Ngọc Quân (1):
      l10n: Init Vietnamese translation

W. Trevor King (1):
      Documentation: mention config sources for @{upstream}

William Giokas (1):
      svn-fe: conform to pep8

Yi EungJun (2):
      http-protocol.txt: Basic Auth is defined in RFC 2617, not RFC 2616
      http: fix charset detection of extract_content_type()

Yiannis Marangos (2):
      wrapper.c: add xpread() similar to xread()
      read-cache.c: verify index file before we opportunistically update it

Zoltan Klinger (1):
      log: fix indentation for --graph --show-signature

brian m. carlson (3):
      blame: correctly handle files regardless of autocrlf
      rebase--merge: fix --skip with two conflicts in a row
      Documentation: fix missing text for rev-parse --verify

Øystein Walle (1):
      config: respect '~' and '~user' in mailmap.file

Øyvind A. Holm (1):
      .gitignore: "git-verify-commit" is a generated file

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2021, #02; Wed, 12)
@ 2021-05-12  7:46  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-12  7:46 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

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']

* ab/doc-lint (2021-04-10) 7 commits
  (merged to 'next' on 2021-04-30 at 285b9c4d64)
 + docs: fix linting issues due to incorrect relative section order
 + doc lint: lint relative section order
 + doc lint: lint and fix missing "GIT" end sections
 + doc lint: fix bugs in, simplify and improve lint script
 + doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
 + Documentation/Makefile: make doc.dep dependencies a variable again
 + Documentation/Makefile: make $(wildcard howto/*.txt) a var

 Dev support.


* ab/pretty-date-format-tests (2021-04-27) 2 commits
  (merged to 'next' on 2021-04-30 at bd2d680c23)
 + pretty tests: give --date/format tests a better description
 + pretty tests: simplify %aI/%cI date format test
 (this branch is used by zh/pretty-date-human.)

 Tweak a few tests for "log --format=..." that show timestamps in
 various formats.


* ab/rebase-no-reschedule-failed-exec (2021-04-10) 2 commits
  (merged to 'next' on 2021-04-30 at 97d56cc674)
 + rebase: don't override --no-reschedule-failed-exec with config
 + rebase tests: camel-case rebase.rescheduleFailedExec consistently

 "git rebase --[no-]reschedule-failed-exec" did not work well with
 its configuration variable, which has been corrected.


* ab/svn-tests-set-e-fix (2021-04-12) 2 commits
  (merged to 'next' on 2021-04-30 at 41f7907187)
 + svn tests: refactor away a "set -e" in test body
 + svn tests: remove legacy re-setup from init-clone test

 Test clean-up.


* ad/cygwin-no-backslashes-in-paths (2021-04-30) 1 commit
  (merged to 'next' on 2021-04-30 at e2cf03a8aa)
 + cygwin: disallow backslashes in file names

 Cygwin pathname handling fix.


* ah/plugleaks (2021-04-28) 12 commits
  (merged to 'next' on 2021-04-30 at ccb3984029)
 + builtin/rm: avoid leaking pathspec and seen
 + builtin/rebase: release git_format_patch_opt too
 + builtin/for-each-ref: free filter and UNLEAK sorting.
 + mailinfo: also free strbuf lists when clearing mailinfo
 + builtin/checkout: clear pending objects after diffing
 + builtin/check-ignore: clear_pathspec before returning
 + builtin/bugreport: don't leak prefixed filename
 + branch: FREE_AND_NULL instead of NULL'ing real_ref
 + bloom: clear each bloom_key after use
 + ls-files: free max_prefix when done
 + wt-status: fix multiple small leaks
 + revision: free remainder of old commit list in limit_list

 Plug various leans reported by LSAN.


* bc/hash-transition-interop-part-1 (2021-04-27) 13 commits
  (merged to 'next' on 2021-05-03 at 19dba33d17)
 + hex: print objects using the hash algorithm member
 + hex: default to the_hash_algo on zero algorithm value
 + builtin/pack-objects: avoid using struct object_id for pack hash
 + commit-graph: don't store file hashes as struct object_id
 + builtin/show-index: set the algorithm for object IDs
 + hash: provide per-algorithm null OIDs
 + hash: set, copy, and use algo field in struct object_id
 + builtin/pack-redundant: avoid casting buffers to struct object_id
 + Use the final_oid_fn to finalize hashing of object IDs
 + hash: add a function to finalize object IDs
 + http-push: set algorithm when reading object ID
 + Always use oidread to read into struct object_id
 + hash: add an algo member to struct object_id

 SHA-256 transition.


* dl/complete-stash (2021-03-24) 3 commits
  (merged to 'next' on 2021-03-24 at ce573a99cc)
 + git-completion.bash: use __gitcomp_builtin() in _git_stash()
 + git-completion.bash: extract from else in _git_stash()
 + git-completion.bash: pass $__git_subcommand_idx from __git_main()
 (this branch is used by dl/complete-stash-updates.)

 The command line completion (in contrib/) for "git stash" has been
 updated.


* dl/complete-stash-updates (2021-04-27) 4 commits
  (merged to 'next' on 2021-05-03 at 8901a9c431)
 + git-completion.bash: consolidate cases in _git_stash()
 + git-completion.bash: use $__git_cmd_idx in more places
 + git-completion.bash: rename to $__git_cmd_idx
 + git-completion.bash: separate some commands onto their own line
 (this branch uses dl/complete-stash.)

 Further update the command line completion (in contrib/) for "git
 stash".


* hn/trace-reflog-expiry (2021-04-27) 1 commit
  (merged to 'next' on 2021-04-30 at 6bc9a79b61)
 + refs/debug: trace into reflog expiry too

 The reflog expiry machinery has been taught to emit trace events.


* jc/test-allows-local (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at 768071c554)
 + CodingGuidelines: explicitly allow "local" for test scripts

 Document that our test can use "local" keyword.


* jk/doc-format-patch-skips-merges (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at cac68f7193)
 + docs/format-patch: mention handling of merges

 Document that "format-patch" skips merges.


* jk/pack-objects-negative-options-fix (2021-05-03) 5 commits
  (merged to 'next' on 2021-05-04 at 4a61f68cf0)
 + pack-objects: clamp negative depth to 0
 + t5316: check behavior of pack-objects --depth=0
 + pack-objects: clamp negative window size to 0
 + t5300: check that we produced expected number of deltas
 + t5300: modernize basic tests

 Options to "git pack-objects" that take numeric values like
 --window and --depth should not accept negative values; the input
 validation has been tightened.


* jk/prune-with-bitmap-fix (2021-04-29) 2 commits
  (merged to 'next' on 2021-04-30 at bede558f31)
 + prune: save reachable-from-recent objects with bitmaps
 + pack-bitmap: clean up include_check after use

 When the reachability bitmap is in effect, the "do not lose
 recently created objects and those that are reachable from them"
 safety to protect us from races were disabled by mistake, which has
 been corrected.


* jk/symlinked-dotgitx-cleanup (2021-05-04) 9 commits
  (merged to 'next' on 2021-05-04 at deca6ca662)
 + docs: document symlink restrictions for dot-files
 + fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
 + t0060: test ntfs/hfs-obscured dotfiles
 + t7450: test .gitmodules symlink matching against obscured names
 + t7450: test verify_path() handling of gitmodules
 + t7415: rename to expand scope
 + fsck_tree(): wrap some long lines
 + fsck_tree(): fix shadowed variable
 + t7415: remove out-dated comment about translation

 Various test and documentation updates about .gitsomething paths
 that are symlinks.


* js/merge-already-up-to-date-message-reword (2021-05-03) 2 commits
  (merged to 'next' on 2021-05-04 at b2e696ecd7)
 + merge: fix swapped "up to date" message components
 + merge(s): apply consistent punctuation to "up to date" messages

 A few variants of informational message "Already up-to-date" has
 been rephrased.


* jz/apply-3way-first-message-fix (2021-04-29) 1 commit
  (merged to 'next' on 2021-04-30 at 829167e135)
 + apply: adjust messages to account for --3way changes

 When we swapped the order of --3way fallback, we forgot to adjust
 the message we give when the first method fails and the second
 method is attempted (which used to be "direct application failed
 hence we try 3way", now it is the other way around).


* ll/clone-reject-shallow (2021-05-05) 1 commit
  (merged to 'next' on 2021-05-06 at 4a165ffc96)
 + t5601: mark protocol v2-only test

 Fix tests when forced to use v0 protocol.


* ls/subtree (2021-04-28) 30 commits
  (merged to 'next' on 2021-05-03 at 12c5fe8677)
 + subtree: be stricter about validating flags
 + subtree: push: allow specifying a local rev other than HEAD
 + subtree: allow 'split' flags to be passed to 'push'
 + subtree: allow --squash to be used with --rejoin
 + subtree: give the docs a once-over
 + subtree: have $indent actually affect indentation
 + subtree: don't let debug and progress output clash
 + subtree: add comments and sanity checks
 + subtree: remove duplicate check
 + subtree: parse revs in individual cmd_ functions
 + subtree: use "^{commit}" instead of "^0"
 + subtree: don't fuss with PATH
 + subtree: use "$*" instead of "$@" as appropriate
 + subtree: use more explicit variable names for cmdline args
 + subtree: use git-sh-setup's `say`
 + subtree: use `git merge-base --is-ancestor`
 + subtree: drop support for git < 1.7
 + subtree: more consistent error propagation
 + subtree: don't have loose code outside of a function
 + subtree: t7900: add porcelain tests for 'pull' and 'push'
 + subtree: t7900: add a test for the -h flag
 + subtree: t7900: rename last_commit_message to last_commit_subject
 + subtree: t7900: fix 'verify one file change per commit'
 + subtree: t7900: delete some dead code
 + subtree: t7900: use 'test' for string equality
 + subtree: t7900: comment subtree_test_create_repo
 + subtree: t7900: use consistent formatting
 + subtree: t7900: use test-lib.sh's test_count
 + subtree: t7900: update for having the default branch name be 'main'
 + .gitignore: ignore 'git-subtree' as a build artifact

 "git subtree" updates.


* mt/add-rm-in-sparse-checkout (2021-04-08) 7 commits
  (merged to 'next' on 2021-04-30 at ddead90eaf)
 + rm: honor sparse checkout patterns
 + add: warn when asked to update SKIP_WORKTREE entries
 + refresh_index(): add flag to ignore SKIP_WORKTREE entries
 + pathspec: allow to ignore SKIP_WORKTREE entries on index matching
 + add: make --chmod and --renormalize honor sparse checkouts
 + t3705: add tests for `git add` in sparse checkouts
 + add: include magic part of pathspec on --refresh error
 (this branch is used by ds/status-with-sparse-index.)

 "git add" and "git rm" learned not to touch those paths that are
 outside of sparse checkout.


* nc/submodule-update-quiet (2021-05-03) 1 commit
  (merged to 'next' on 2021-05-04 at 09bed89b60)
 + submodule update: silence underlying fetch with "--quiet"

 "git submodule update --quiet" did not propagate the quiet option
 down to underlying "git fetch", which has been corrected.


* po/diff-patch-doc (2021-04-28) 1 commit
  (merged to 'next' on 2021-04-30 at 58af0f4b5e)
 + doc: point to diff attribute in patch format docs

 Doc update.


* ps/config-env-option-with-separate-value (2021-04-30) 2 commits
  (merged to 'next' on 2021-04-30 at 46fbcd08c1)
 + git: support separate arg for `--config-env`'s value
 + git.txt: fix synopsis of `--config-env` missing the equals sign

 "git --config-env var=val cmd" weren't accepted (only
 --config-env=var=val was).


* ps/config-global-override (2021-04-27) 4 commits
  (merged to 'next' on 2021-04-30 at 5ce435d98f)
 + t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
  (merged to 'next' on 2021-04-20 at 82578c696d)
 + config: allow overriding of global and system configuration
 + config: unify code paths to get global config paths
 + config: rename `git_etc_config()`

 Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
 system-wide configuration file with GIT_CONFIG_SYSTEM that lets
 users specify from which file to read the system-wide configuration
 (setting it to an empty file would essentially be the same as
 setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
 per-user configuration in $HOME/.gitconfig.


* ps/rev-list-object-type-filter (2021-04-19) 8 commits
  (merged to 'next' on 2021-04-30 at fa0ceacde4)
 + rev-list: allow filtering of provided items
 + pack-bitmap: implement combined filter
 + pack-bitmap: implement object type filter
 + list-objects: implement object type filter
 + list-objects: support filtering by tag and commit
 + list-objects: move tag processing into its own function
 + revision: mark commit parents as NOT_USER_GIVEN
 + uploadpack.txt: document implication of `uploadpackfilter.allow`

 "git rev-list" learns the "--filter=object:type=<type>" option,
 which can be used to exclude objects of the given kind from the
 packfile generated by pack-objects.


* rj/bisect-skip-honor-terms (2021-04-30) 1 commit
  (merged to 'next' on 2021-05-04 at f7c11bba06)
 + bisect--helper: use BISECT_TERMS in 'bisect skip' command

 "git bisect skip" when custom words are used for new/old did not
 work, which has been corrected.


* rs/repack-without-loosening-promised-objects (2021-04-28) 1 commit
  (merged to 'next' on 2021-05-03 at 6681b49209)
 + repack: avoid loosening promisor objects in partial clones

 "git repack -A -d" in a partial clone unnecessarily loosened
 objects in promisor pack.


* si/zsh-complete-comment-fix (2021-05-04) 1 commit
  (merged to 'next' on 2021-05-04 at a15c1ea590)
 + work around zsh comment in __git_complete_worktree_paths

 Portability fix for command line completion script (in contrib/).


* zh/format-ref-array-optim (2021-04-20) 2 commits
  (merged to 'next' on 2021-04-30 at b6c835cc51)
 + ref-filter: reuse output buffer
 + ref-filter: get rid of show_ref_array_item

 "git (branch|tag) --format=..." has been micro-optimized.


* zh/pretty-date-human (2021-04-27) 1 commit
  (merged to 'next' on 2021-04-30 at 2320ad8fb0)
 + pretty: provide human date format
 (this branch uses ab/pretty-date-format-tests.)

 "git log --format=..." placeholders learned %ah/%ch placeholders to
 request the --date=human output.


* zh/trailer-cmd (2021-05-04) 2 commits
  (merged to 'next' on 2021-05-04 at fb677877f7)
 + trailer: add new .cmd config option
 + docs: correct descript of trailer.<token>.command

 The way the command line specified by the trailer.<token>.command
 configuration variable receives the end-user supplied value was
 both error prone and misleading.  An alternative to achieve the
 same goal in a safer and more intuitive way has been added, as
 the trailer.<token>.cmd configuration variable, to replace it.

--------------------------------------------------
[New Topics]

* mt/clean-clean (2021-05-07) 1 commit
  (merged to 'next' on 2021-05-07 at 51e40b7ddd)
 + clean: remove unnecessary variable

 Code clean-up.

 Will merge to 'master'.


* ah/merge-ort-i18n (2021-05-11) 1 commit
  (merged to 'next' on 2021-05-12 at bda497af01)
 + merge-ort: split "distinct types" message into two translatable messages

 An i18n fix.

 Will merge to 'master'.


* en/dir-traversal (2021-05-12) 8 commits
 - dir: update stale description of treat_directory()
 - dir: traverse into untracked directories if they may have ignored subfiles
 - dir: avoid unnecessary traversal into ignored directory
 - t3001, t7300: add testcase showcasing missed directory traversal
 - t7300: add testcase showing unnecessary traversal into ignored directory
 - ls-files: error out on -i unless -o or -c are specified
 - dir: report number of visited directories and paths with trace2
 - dir: convert trace calls to trace2 equivalents

 "git clean" and "git ls-files -i" had confusion around working on
 or showing ignored paths inside an ignored directory, which has
 been corrected.

 Will merge to 'next'?


* ma/typofixes (2021-05-10) 2 commits
  (merged to 'next' on 2021-05-12 at 99cc0d265e)
 + pretty-formats.txt: add missing space
 + git-repack.txt: remove spurious ")"

 A couple of trivial typofixes.

 Will merge to 'master'.


* zh/ref-filter-push-remote-fix (2021-05-12) 1 commit
 - ref-filter: fix read invalid union member bug

 The handling of "%(push)" formatting element of "for-each-ref" and
 friends was broken when the same codepath started handling
 "%(push:<what>)", which has been corrected.

 Will merge to 'next'?


* lh/maintenance-leakfix (2021-05-12) 1 commit
 - maintenance: fix two memory leaks

 Will merge to 'next'.


* so/log-m-implies-p (2021-05-11) 7 commits
 - diff-merges: let -m imply -p
 - diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
 - stash list: stop passing "-m" to "git list"
 - git-svn: stop passing "-m" to "git rev-list"
 - t4062: diff-index -S can take its string as a separate arg
 - diff-merges: move specific diff-index "-m" handling to diff-index
 - t4013: add test for "git diff-index -m"

 The "-m" option in "git log -m" that does not specify which format,
 if any, of diff is desired did not have any visible effect; it now
 implies some form of diff (by default "--patch") is produced.

 Expecting a reroll.
 cf. <871radwfl7.fsf@osv.gnss.ru>


* wc/packed-ref-removal-cleanup (2021-05-11) 1 commit
 - refs: cleanup directories when deleting packed ref

 When "git update-ref -d" removes a ref that is packed, it left
 empty directories under $GIT_DIR/refs/ for 

 Will merge to 'next'.


* ew/sha256-clone-remote-curl-fix (2021-05-12) 1 commit
 - remote-curl: fix clone on sha256 repos

 "git clone" from SHA256 repository by Git built with SHA-1 as the
 default hash algorithm over the dumb HTTP protocol did not
 correctly set up the resulting repository, which has been corrected.

 Will merge to 'next'.


* bc/doc-asciidoctor-to-man-wo-xmlto (2021-05-12) 2 commits
 - doc: remove GNU_ROFF option
 - doc: add an option to have Asciidoctor build man pages directly

 An option to render the manual pages via AsciiDoctor bypassing
 xmlto has been introduced.

 Will merge to 'next'?

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2021-03-17) 15 commits
 - sequencer: use the "octopus" merge strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index
 - t6407: modernise tests

 The resolve and octopus merge strategy backends have been rewritten
 in C.

 Expecting a (hopefully final) reroll.
 cf. <nycvar.QRO.7.76.6.2103241142220.50@tvgsbejvaqbjf.bet>


* tv/p4-fallback-encoding (2021-04-30) 1 commit
 - git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset

 "git p4" learns the fallbackEncoding configuration variable to
 safely accept changeset descriptions that aren't written in UTF-8.


* ds/status-with-sparse-index (2021-04-28) 10 commits
 - fsmonitor: test with sparse index
 - status: use sparse-index throughout
 - status: skip sparse-checkout percentage with sparse-index
 - dir.c: accept a directory as part of cone-mode patterns
 - unpack-trees: stop recursing into sparse directories
 - unpack-trees: compare sparse directories correctly
 - unpack-trees: preserve cache_bottom
 - t1092: add tests for status/add and sparse files
 - Merge branch 'mt/add-rm-in-sparse-checkout' into ds/status-with-sparse-index
 - Merge branch 'ds/sparse-index-protections' into ds/status-with-sparse-index

 "git status" codepath learned to work with sparsely populated index
 without hydrating it fully.

 What's the status of this thing?


* jh/rfc-builtin-fsmonitor (2021-05-04) 24 commits
 - fsmonitor: only enable it in non-bare repositories
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - p7519: add fsmonitor--daemon
 - t7527: create test for fsmonitor--daemon
 - fsmonitor: force update index when fsmonitor token advances
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon:: introduce client delay for testing
 - fsmonitor--daemon: periodically truncate list of modified files
 - fsmonitor--daemon: implement handle_client callback
 - fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
 - fsmonitor-fs-listen-macos: add macos header files for FSEvent
 - fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement daemon command options
 - fsmonitor-fs-listen-macos: stub in backend for MacOS
 - fsmonitor-fs-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement client command options
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC
 - config: FSMonitor is repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - Merge branch 'jh/simple-ipc' into jh/rfc-builtin-fsmonitor

 An attempt to write and ship with a watchman equivalent tailored
 for our use.


* ab/describe-tests-fix (2021-05-11) 5 commits
 - describe tests: support -C in "check_describe"
 - describe tests: fix nested "test_expect_success" call
 - describe tests: don't rely on err.actual from "check_describe"
 - describe tests: refactor away from glob matching
 - describe tests: improve test for --work-tree & --dirty
 (this branch uses ab/test-lib-updates.)

 Various updates to tests around "git describe"

 Waiting for the base topic to solidify.


* ab/pickaxe-pcre2 (2021-05-11) 22 commits
 - xdiff-interface: replace discard_hunk_line() with a flag
 - xdiff users: use designated initializers for out_line
 - pickaxe -G: don't special-case create/delete
 - pickaxe -G: terminate early on matching lines
 - xdiff-interface: allow early return from xdiff_emit_line_fn
 - xdiff-interface: prepare for allowing early return
 - pickaxe -S: slightly optimize contains()
 - pickaxe: rename variables in has_changes() for brevity
 - pickaxe -S: support content with NULs under --pickaxe-regex
 - pickaxe: assert that we must have a needle under -G or -S
 - pickaxe: refactor function selection in diffcore-pickaxe()
 - perf: add performance test for pickaxe
 - pickaxe/style: consolidate declarations and assignments
 - diff.h: move pickaxe fields together again
 - pickaxe: die when --find-object and --pickaxe-all are combined
 - pickaxe: die when -G and --pickaxe-regex are combined
 - pickaxe tests: add missing test for --no-pickaxe-regex being an error
 - pickaxe tests: test for -G, -S and --find-object incompatibility
 - pickaxe tests: add test for "log -S" not being a regex
 - pickaxe tests: add test for diffgrep_consume() internals
 - pickaxe tests: refactor to use test_commit --append --printf
 - grep/pcre2 tests: reword comments referring to kwset
 (this branch uses ab/test-lib-updates.)

 Rewrite the backend for "diff -G/-S" to use pcre2 engine when
 available.

 Waiting for the base topic to solidify.


* es/config-hooks (2021-03-10) 36 commits
 . run-command: stop thinking about hooks
 . git-send-email: use 'git hook run' for 'sendemail-validate'
 . bugreport: use hook_exists instead of find_hook
 . receive-pack: convert receive hooks to hook.h
 . post-update: use hook.h library
 . proc-receive: acquire hook list from hook.h
 . receive-pack: convert 'update' hook to hook.h
 . reference-transaction: look for hooks in config
 . transport: convert pre-push hook to use config
 . hook: convert 'post-rewrite' hook to config
 . hooks: convert 'post-checkout' hook to hook library
 . git-p4: use 'git hook' to run hooks
 . receive-pack: convert push-to-checkout hook to hook.h
 . read-cache: convert post-index-change hook to use config
 . rebase: teach pre-rebase to use hook.h
 . gc: use hook library for pre-auto-gc hook
 . merge: use config-based hooks for post-merge hook
 . am: convert applypatch hooks to use config
 . commit: use config-based hooks
 . hooks: allow callers to capture output
 . run-command: allow capturing of collated output
 . hook: provide stdin by string_list or callback
 . run-command: add stdin callback for parallelization
 . hook: allow specifying working directory for hooks
 . hook: allow parallel hook execution
 . run-command: allow stdin for run_processes_parallel
 . hook: support passing stdin to hooks
 . hook: introduce hook_exists()
 . hook: add 'run' subcommand
 . parse-options: parse into strvec
 . hook: implement hookcmd.<name>.skip
 . hook: teach hook.runHookDir
 . hook: include hookdir hook in list
 . hook: add list command
 . hook: scaffolding for git-hook subcommand
 . doc: propose hooks managed by the config

 The "hooks defined in config" topic.

--------------------------------------------------
[Cooking]

* ab/trace2-squelch-gcc-warning (2021-05-11) 1 commit
 - trace2: refactor to avoid gcc warning under -O3

 Workaround compiler warnings.

 cf. <YJrIMbr6VkYGQMfs@coredump.intra.peff.net>


* hn/refs-errno-cleanup (2021-04-30) 8 commits
 - refs: explicitly propagate errno from refs_read_raw_ref
 - refs: stop setting EINVAL and ELOOP in symref resolution
 - refs: clear errno return in refs_resolve_ref_unsafe()
 - refs: add failure_errno to refs_read_raw_ref() signature
 - refs: make errno output explicit for refs_resolve_ref_unsafe
 - refs: make errno output explicit for read_raw_ref_fn
 - refs/files-backend: stop setting errno from lock_ref_oid_basic
 - refs: remove EINVAL specification from the errno sideband in read_raw_ref_fn

 Futz with the way 'errno' is relied on in the refs API to carry the
 failure modes up the callchain.

 Waiting for reviews.


* en/ort-perf-batch-11 (2021-05-04) 13 commits
 - merge-ort, diffcore-rename: employ cached renames when possible
 - merge-ort: handle interactions of caching and rename/rename(1to1) cases
 - merge-ort: add helper functions for using cached renames
 - merge-ort: preserve cached renames for the appropriate side
 - merge-ort: avoid accidental API mis-use
 - merge-ort: add code to check for whether cached renames can be reused
 - merge-ort: populate caches of rename detection results
 - merge-ort: add data structures for in-memory caching of rename detection
 - t6429: testcases for remembering renames
 - fast-rebase: write conflict state to working tree, index, and HEAD
 - fast-rebase: change assert() to BUG()
 - Documentation/technical: describe remembering renames optimization
 - t6423: rename file within directory that other side renamed

 Optimize out repeated rename detection in a sequence of mergy
 operations.

 Waiting for reviews.


* dd/mailinfo-quoted-cr (2021-05-10) 6 commits
  (merged to 'next' on 2021-05-12 at a4bcfd18b9)
 + am: learn to process quoted lines that ends with CRLF
 + mailinfo: allow stripping quoted CR without warning
 + mailinfo: allow squelching quoted CRLF warning
 + mailinfo: warn if CRLF found in decoded base64/QP email
 + mailinfo: stop parsing options manually
 + mailinfo: load default metainfo_charset lazily

 "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
 control how lines ending with CRLF wrapped in base64 or qp are
 handled.

 Will merge to 'master'.


* ab/perl-makefile-cleanup (2021-05-06) 4 commits
  (merged to 'next' on 2021-05-10 at 23b48398e6)
 + perl: use mock i18n functions under NO_GETTEXT=Y
 + Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
 + Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
 + Makefile: don't re-define PERL_DEFINES

 Build procedure clean-up.

 Will merge to 'master'.


* ab/sparse-index-cleanup (2021-05-06) 1 commit
  (merged to 'next' on 2021-05-10 at bbb0239571)
 + sparse-index.c: remove set_index_sparse_config()

 Code clean-up.

 Will merge to 'master'.


* ab/streaming-simplify (2021-05-06) 5 commits
  (merged to 'next' on 2021-05-07 at 0992a78c75)
 + streaming.c: move {open,close,read} from vtable to "struct git_istream"
 + streaming.c: stop passing around "object_info *" to open()
 + streaming.c: remove {open,close,read}_method_decl() macros
 + streaming.c: remove enum/function/vtbl indirection
 + streaming.c: avoid forward declarations

 Code clean-up.

 Will merge to 'master'.


* jk/p4-locate-branch-point-optim (2021-05-06) 2 commits
  (merged to 'next' on 2021-05-07 at 0fa60c3af3)
 + git-p4: speed up search for branch parent
 + git-p4: ensure complex branches are cloned correctly

 "git p4" learned to find branch points more efficiently.

 Will merge to 'master'.


* ow/no-dryrun-in-add-i (2021-05-07) 1 commit
  (merged to 'next' on 2021-05-07 at e822750e3a)
 + add: die if both --dry-run and --interactive are given

 "git add -i --dry-run" does not dry-run, which was surprising.  The
 combination of options has taught to error out.

 Will merge to 'master'.


* pw/patience-diff-clean-up (2021-05-05) 2 commits
  (merged to 'next' on 2021-05-06 at 1ce651569c)
 + patience diff: remove unused variable
 + patience diff: remove unnecessary string comparisons

 Code clean-up.

 Will merge to 'master'.


* pw/word-diff-zero-width-matches (2021-05-05) 1 commit
  (merged to 'next' on 2021-05-06 at e5653da568)
 + word diff: handle zero length matches

 The word-diff mode has been taught to work better with a word
 regexp that can match an empty string.

 Will merge to 'master'.


* ls/fast-export-signed (2021-05-03) 5 commits
 - fast-export, fast-import: add support for signed-commits
 - fast-export: do not modify memory from get_commit_buffer
 - git-fast-export.txt: clarify why 'verbatim' may not be a good idea
 - fast-export: rename --signed-tags='warn' to 'warn-verbatim'
 - git-fast-import.txt: add missing LF in the BNF

 "git fast-export" offers a way to control how signed tags are
 handled; the mechanism has been extended to allow specifying how
 signed commits are handled as well.

 Expecting a reroll.
 cf. <xmqqa6pca0pv.fsf@gitster.g>, <xmqq1rao9zev.fsf@gitster.g>


* mt/parallel-checkout-part-3 (2021-05-05) 8 commits
  (merged to 'next' on 2021-05-07 at 0393d61c0c)
 + ci: run test round with parallel-checkout enabled
 + parallel-checkout: add tests related to .gitattributes
 + t0028: extract encoding helpers to lib-encoding.sh
 + parallel-checkout: add tests related to path collisions
 + parallel-checkout: add tests for basic operations
 + checkout-index: add parallel checkout support
 + builtin/checkout.c: complete parallel checkout support
 + make_transient_cache_entry(): optionally alloc from mem_pool

 The final part of "parallel checkout".

 Will merge to 'master'.


* ba/object-info (2021-04-20) 1 commit
  (merged to 'next' on 2021-05-07 at e2cb0e4ef1)
 + object-info: support for retrieving object info

 Over-the-wire protocol learns a new request type to ask for object
 sizes given a list of object names.

 Will merge to 'master'.


* hn/prep-tests-for-reftable (2021-04-28) 21 commits
 - t1415: set REFFILES for test specific to storage format
 - t4202: mark bogus head hash test with REFFILES
 - t7003: check reflog existence only for REFFILES
 - t7900: mark pack-refs tests as REFFILES
 - t1404: mark tests that muck with .git directly as REFFILES.
 - t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
 - t1414: mark corruption test with REFFILES
 - t1407: require REFFILES for for_each_reflog test
 - test-lib: provide test prereq REFFILES
 - t5304: use "reflog expire --all" to clear the reflog
 - t5304: restyle: trim empty lines, drop ':' before >
 - t7003: use rev-parse rather than FS inspection
 - t5000: inspect HEAD using git-rev-parse
 - t5000: reformat indentation to the latest fashion
 - t1301: fix typo in error message
 - t1413: use tar to save and restore entire .git directory
 - t1401-symbolic-ref: avoid direct filesystem access
 - t5601: read HEAD using rev-parse
 - t9300: check ref existence using test-helper rather than a file system check
 - t/helper/ref-store: initialize oid in resolve-ref
 - t4202: split testcase for invalid HEAD symref and HEAD hash

 Preliminary clean-up of tests before the main reftable changes
 hits the codebase.

 Waiting for reviews.


* jt/push-negotiation (2021-05-05) 6 commits
  (merged to 'next' on 2021-05-06 at 644a1bc4ee)
 + send-pack: support push negotiation
 + fetch: teach independent negotiation (no packfile)
 + fetch-pack: refactor command and capability write
 + fetch-pack: refactor add_haves()
 + fetch-pack: refactor process_acks()
 + Merge branch 'jt/fetch-pack-request-fix' into jt/push-negotiation

 "git push" learns to discover common ancestor with the receiving
 end over protocol v2.

 Will merge to 'master'.


* tb/multi-pack-bitmaps (2021-04-10) 23 commits
 - p5326: perf tests for MIDX bitmaps
 - p5310: extract full and partial bitmap tests
 - midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
 - t7700: update to work with MIDX bitmap test knob
 - t5319: don't write MIDX bitmaps in t5319
 - t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
 - t5326: test multi-pack bitmap behavior
 - t/helper/test-read-midx.c: add --checksum mode
 - t5310: move some tests to lib-bitmap.sh
 - pack-bitmap: write multi-pack bitmaps
 - pack-bitmap: read multi-pack bitmaps
 - pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
 - pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
 - pack-bitmap.c: introduce 'bitmap_num_objects()'
 - midx: respect 'core.multiPackIndex' when writing
 - midx: clear auxiliary .rev after replacing the MIDX
 - midx: make a number of functions non-static
 - Documentation: describe MIDX-based bitmaps
 - Documentation: build 'technical/bitmap-format' by default
 - pack-bitmap-write.c: free existing bitmaps
 - pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
 - pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
 - Merge branch 'tb/pack-preferred-tips-to-give-bitmap' into tb/multi-pack-bitmaps

 The reachability bitmap file used to be generated only for a single
 pack, but now we've learned to generate bitmaps for history that
 span across multiple packfiles.

 Waiting for reviews.
 cf. <cover.1617991824.git.me@ttaylorr.com>


* ab/test-lib-updates (2021-05-11) 11 commits
 - test-lib: split up and deprecate test_create_repo()
 - test-lib: do not show advice about init.defaultBranch under --verbose
 - test-lib: reformat argument list in test_create_repo()
 - submodule tests: use symbolic-ref --short to discover branch name
 - test-lib functions: add --printf option to test_commit
 - describe tests: convert setup to use test_commit
 - test-lib functions: add an --annotated option to "test_commit"
 - test-lib-functions: document test_commit --no-tag
 - test-lib-functions: reword "test_commit --append" docs
 - test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
 - test-lib: bring $remove_trash out of retirement
 (this branch is used by ab/describe-tests-fix and ab/pickaxe-pcre2.)

 Test clean-up.


* ao/p4-avoid-decoding (2021-04-12) 2 commits
 - git-p4: do not decode data from perforce by default
 - git-p4: avoid decoding more data from perforce

 "git p4" in Python-2 days used to accept a lot more kinds of data
 from Perforce server as uninterrupted byte sequence, but after
 switching to Python-3, too many things are expected to be in UTF-8,
 which broke traditional use cases.

 Waiting for reviews.


* ma/t0091-bugreport-fix (2021-04-12) 1 commit
 - t0091-bugreport.sh: actually verify some content of report

 Test fix.

 Expecting a reroll.
 cf. <YHYZTLl90rkWWVOr@google.com>, <87a6q22dei.fsf@evledraar.gmail.com>


* mr/bisect-in-c-4 (2021-04-11) 4 commits
 - bisect--helper: retire `--bisect-next-check` subcommand
 - bisect--helper: reimplement `bisect_run` shell function in C
 - bisect--helper: reimplement `bisect_visualize()`shell function in C
 - run-command: make `exists_in_PATH()` non-static

 The codepaths involved in running "git bisect visualize" and "git
 bisect run" has been rewritten in C.

 Expecting a reroll.
 cf. <xmqq35vwh8qk.fsf@gitster.g>, <xmqqy2doftrj.fsf@gitster.g>,
 <CAP8UFD3X24F3qgefHpi00PM-KUk+vcqxwy2Dbngbyj7ciavCVQ@mail.gmail.com>
 May want to boost the test coverage.


* hn/reftable (2021-04-20) 28 commits
 - t1404: annotate test cases with REFFILES
 - t1401,t2011: parameterize HEAD.lock for REFTABLE
 - t1301: document what needs to be done for REFTABLE
 - Add "test-tool dump-reftable" command.
 - git-prompt: prepare for reftable refs backend
 - Reftable support for git-core
 - reftable: add dump utility
 - reftable: implement stack, a mutable database of reftable files.
 - reftable: implement refname validation
 - reftable: add merged table view
 - reftable: add a heap-based priority queue for reftable records
 - reftable: reftable file level tests
 - reftable: read reftable files
 - reftable: generic interface to tables
 - reftable: write reftable files
 - reftable: a generic binary tree implementation
 - reftable: reading/writing blocks
 - Provide zlib's uncompress2 from compat/zlib-compat.c
 - reftable: (de)serialization for the polymorphic record type.
 - reftable: add blocksource, an abstraction for random access reads
 - reftable: utility functions
 - reftable: add error related functionality
 - reftable: add LICENSE
 - init-db: set the_repository->hash_algo early on
 - hash.h: provide constants for the hash IDs
 - refs/debug: trace into reflog expiry too
 - refs: document reflog_expire_fn's flag argument
 - refs: ref_iterator_peel returns boolean, rather than peel_status

 The "reftable" backend for the refs API.

 Waiting for reviews.

--------------------------------------------------
[Discarded]

* ab/fsck-unexpected-type (2021-04-13) 6 commits
 . fsck: report invalid object type-path combinations
 . fsck: report invalid types recorded in objects
 . object-store.h: move read_loose_object() below 'struct object_info'
 . fsck: don't hard die on invalid object types
 . fsck tests: refactor one test to use a sub-repo
 . cache.h: move object functions to object-store.h

 "git fsck" has been taught to report mismatch between expected and
 actual types of an object better.

 Retracted for now.
 cf. <cover-0.5-00000000000-20210505T122816Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2016, #05; Fri, 13)
@ 2016-05-13 22:11  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-13 22:11 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the eleventh batch of topics of this
cycle.  On the 'maint' front, 2.8.2 is out and fixes that have been
in 'master' accumulates on it for 2.8.3.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* jc/commit-tree-ignore-commit-gpgsign (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 08eccb2)
 + commit-tree: do not pay attention to commit.gpgsign

 "git commit-tree" plumbing command required the user to always sign
 its result when the user sets the commit.gpgsign configuration
 variable, which was an ancient mistake.  Rework "git rebase" that
 relied on this mistake so that it reads commit.gpgsign and pass (or
 not pass) the -S option to "git commit-tree" to keep the end-user
 expectation the same, while teaching "git commit-tree" to ignore
 the configuration variable.  This will stop requiring the users to
 sign commit objects used internally as an implementation detail of
 "git stash".


* sb/submodule-module-list-pathspec-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at ab6dac3)
 + submodule deinit test: fix broken && chain in subshell

--------------------------------------------------
[New Topics]

* jc/rerere-multi (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-13 at f4d1d82)
 + rerere: plug memory leaks upon "rerere forget" failure

 Will merge to 'master'.


* cc/apply-introduce-state (2016-05-12) 48 commits
 - builtin/apply: rename 'prefix_' parameter to 'prefix'
 - builtin/apply: move applying patches into apply_all_patches()
 - builtin/apply: move 'state' check into check_apply_state()
 - builtin/apply: move 'symlink_changes' global into 'struct apply_state'
 - builtin/apply: move 'fn_table' global into 'struct apply_state'
 - builtin/apply: move 'state_linenr' global into 'struct apply_state'
 - builtin/apply: move 'max_change' and 'max_len' into 'struct apply_state'
 - builtin/apply: move 'ws_ignore_action' into 'struct apply_state'
 - builtin/apply: move 'ws_error_action' into 'struct apply_state'
 - builtin/apply: move 'applied_after_fixing_ws' into 'struct apply_state'
 - builtin/apply: move 'squelch_whitespace_errors' into 'struct apply_state'
 - builtin/apply: remove whitespace_option arg from set_default_whitespace_mode()
 - builtin/apply: move 'whitespace_option' into 'struct apply_state'
 - builtin/apply: move 'whitespace_error' global into 'struct apply_state'
 - builtin/apply: move 'root' global into 'struct apply_state'
 - builtin/apply: move 'p_value_known' global into 'struct apply_state'
 - builtin/apply: move 'p_value' global into 'struct apply_state'
 - builtin/apply: move 'has_include' global into 'struct apply_state'
 - builtin/apply: move 'limit_by_name' global into 'struct apply_state'
 - builtin/apply: move 'patch_input_file' global into 'struct apply_state'
 - builtin/apply: move 'apply' global into 'struct apply_state'
 - builtin/apply: move 'p_context' global into 'struct apply_state'
 - builtin/apply: move 'fake_ancestor' global into 'struct apply_state'
 - builtin/apply: move 'line_termination' global into 'struct apply_state'
 - builtin/apply: move 'unsafe_paths' global into 'struct apply_state'
 - builtin/apply: move 'no_add' global into 'struct apply_state'
 - builtin/apply: move 'threeway' global into 'struct apply_state'
 - builtin/apply: move 'summary' global into 'struct apply_state'
 - builtin/apply: move 'numstat' global into 'struct apply_state'
 - builtin/apply: move 'diffstat' global into 'struct apply_state'
 - builtin/apply: move 'cached' global into 'struct apply_state'
 - builtin/apply: move 'allow_overlap' global into 'struct apply_state'
 - builtin/apply: move 'update_index' global into 'struct apply_state'
 - builtin/apply: move 'apply_verbosely' global into 'struct apply_state'
 - builtin/apply: move 'apply_with_reject' global into 'struct apply_state'
 - builtin/apply: move 'apply_in_reverse' global into 'struct apply_state'
 - builtin/apply: move 'check_index' global into 'struct apply_state'
 - builtin/apply: move 'check' global into 'struct apply_state'
 - builtin/apply: move 'unidiff_zero' global into 'struct apply_state'
 - builtin/apply: move 'state' init into init_apply_state()
 - builtin/apply: introduce 'struct apply_state' to start libifying
 - builtin/apply: move 'read_stdin' global into cmd_apply()
 - builtin/apply: move 'options' variable into cmd_apply()
 - builtin/apply: extract line_by_line_fuzzy_match() from match_fragment()
 - builtin/apply: avoid local variable shadowing 'len' parameter
 - builtin/apply: avoid parameter shadowing 'linenr' global
 - builtin/apply: avoid parameter shadowing 'p_value' global
 - builtin/apply: make gitdiff_verify_name() return void

 The "git apply" standalone program is being libified; this is the
 first step to move many state variables into a structure that can
 be explicitly (re)initialized to make the machinery callable more
 than once.

 The next step that moves some remaining state variables into the
 structure and turns die()s into an error return that propagates up
 to the caller is not queued yet but in flight.  It would be good to
 review the above first and give the remainder of the series a solid
 base to build on.


* jk/test-z-n-unquoted (2016-05-13) 6 commits
 - always quote shell arguments to test -z/-n
 - t9103: modernize test style
 - t9107: switch inverted single/double quotes in test
 - t9107: use "return 1" instead of "exit 1"
 - t9100,t3419: enclose all test code in single-quotes
 - t/lib-git-svn: drop $remote_git_svn and $git_svn_id

 t9xxx series has been updated primarily for readability, while
 fixing small bugs in it.  A few scripted Porcelains have also been
 updated to fix possible bugs around their use of "test -z" and
 "test -n".

 Will merge to 'next'.


* kf/gpg-sig-verification-doc (2016-05-13) 1 commit
  (merged to 'next' on 2016-05-13 at 2cec353)
 + Documentation: clarify signature verification

 Documentation for "git merge --verify-signatures" has been updated
 to clarify that the signature of only the commit at the tip is
 verified.  Also the phrasing used for signature and key validity is
 adjusted to align with that used by OpenPGP.

 Will merge to 'master'.


* pb/bisect (2016-05-13) 4 commits
 - t6030: explicitly test for bisection cleanup
 - bisect--helper: `write_terms` shell function in C
 - bisect: rewrite `check_term_format` shell function in C
 - bisect--helper: use OPT_CMDMODE instead of OPT_BOOL

 Beginning of GSoC "git bisect" project.


* sb/pathspec-label (2016-05-12) 5 commits
 - pathspec: record labels
 - pathspec: move prefix check out of the inner loop
 - pathspec: move long magic parsing out of prefix_pathspec
 - Documentation: correct typo in example for querying attributes
 - Documentation: fix a typo

 The pathspec mechanism learned ":(label=X)$pattern" pathspec magic
 to limit paths that match $pattern further by labels defined by the
 attributes mechanism for the paths.

 (RFC/WIP)

--------------------------------------------------
[Stalled]

* es/t1500-modernize (2016-05-10) 7 commits
 - t1500: finish preparation upfront
 - t1500: be considerate to future potential tests
 - t1500: avoid setting environment variables outside of tests
 - t1500: avoid setting configuration options outside of tests
 - t1500: avoid changing working directory outside of tests
 - t1500: reduce dependence upon global state
 - t1500: test_rev_parse: facilitate future test enhancements

 test updates to make it more readable and maintainable.

 Will be rerolled.
 ($gmane/294181)


* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Expecting a reroll.
 ($gmane/292074, 293236)


* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 . completion: cache the path to the repository
 . completion: extract repository discovery from __gitdir()
 . completion: don't guard git executions with __gitdir()
 . completion: consolidate silencing errors from git commands
 . completion: don't use __gitdir() for git commands
 . completion: respect 'git -C <path>'
 . completion: fix completion after 'git -C <path>'
 . completion: don't offer commands when 'git --opt' needs an argument
 . rev-parse: add '--absolute-git-dir' option
 . completion: list short refs from a remote given as a URL
 . completion: don't list 'HEAD' when trying refs completion outside of a repo
 . completion: list refs from remote when remote's name matches a directory
 . completion: respect 'git --git-dir=<path>' when listing remote refs
 . completion: fix most spots not respecting 'git --git-dir=<path>'
 . completion: ensure that the repository path given on the command line exists
 . completion tests: add tests for the __git_refs() helper function
 . completion tests: check __gitdir()'s output in the error cases
 . completion tests: consolidate getting path of current working directory
 . completion tests: make the $cur variable local to the test helper functions
 . completion tests: don't add test cruft to the test repository
 . completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.

 Will discard.

--------------------------------------------------
[Cooking]

* ar/diff-args-osx-precompose (2016-05-13) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will merge to 'next'.


* ls/travis-build-doc (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at 7f63497)
 + travis-ci: build documentation

 CI test was taught to build documentation pages.

 Will merge to 'master'.


* js/t3404-typofix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at cbeabc0)
 + t3404: fix typo

 Will merge to 'master'.


* jk/rebase-interative-eval-fix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-11 at 4fdf387)
 + rebase--interactive: avoid empty list in shell for-loop

 Portability enhancement for "rebase -i" to help platforms whose
 shell does not like "for i in <empty>" (which is not POSIX-kosher).

 Will merge to 'master'.


* jk/test-send-sh-x-trace-elsewhere (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 273a137)
 + test-lib: set BASH_XTRACEFD automatically

 Running tests with '-x' option to trace the individual command
 executions is a useful way to debug test scripts, but some tests
 that capture the standard error stream and check what the command
 said can be broken with the trace output mixed in.  When running
 our tests under "bash", however, we can redirect the trace output
 to another file descriptor to keep the standard error of programs
 being tested intact.

 Will merge to 'master'.


* js/perf-rebase-i (2016-05-13) 3 commits
  (merged to 'next' on 2016-05-13 at eb51ddd)
 + perf: run "rebase -i" under perf
 + perf: make the tests work in worktrees
 + perf: let's disable symlinks when they are not available

 Add perf test for "rebase -i"

 Will merge to 'master'.


* nd/worktree-cleanup-post-head-protection (2016-05-10) 7 commits
 - worktree: simplify prefixing paths
 - worktree: avoid 0{40}, too many zeroes, hard to read
 - worktree.c: add clear_worktree()
 - worktree.c: use is_dot_or_dotdot()
 - git-worktree.txt: keep subcommand listing in alphabetical order
 - worktree.c: rewrite mark_current_worktree() to avoid strbuf
 - completion: support git-worktree
 (this branch uses nd/worktree-various-heads.)

 Further preparatory clean-up for "worktree" feature.

 Expecting a reroll.
 ($gmane/294136, etc.)


* va/mailinfo-doc-typofix (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 7180176)
 + Documentation/git-mailinfo: fix typo

 Typofix.

 Will merge to 'master'.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
  (merged to 'next' on 2016-05-10 at 2ada404)
 + wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).  This is a stop-gap
 measure in that "commit --short --dry-run" still gives an incorrect
 result.

 Will merge to 'master'.


* ak/t4151-ls-files-could-be-empty (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 36ae38c)
 + t4151: make sure argument to 'test -z' is given

 Test fix.

 Will merge to 'master'.


* es/test-gpg-tags (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 9fcb98b)
 + t6302: simplify non-gpg cases

 Test fix.

 Will merge to 'master'.


* jc/test-seq (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-10 at 1512890)
 + test-lib-functions.sh: rewrite test_seq without Perl
 + test-lib-functions.sh: remove misleading comment on test_seq

 Test fix.

 Will merge to 'master'.


* js/windows-dotgit (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at d10caa2)
 + mingw: remove unnecessary definition
 + mingw: introduce the 'core.hideDotFiles' setting

 On Windows, .git and optionally any files whose name starts with a
 dot are now marked as hidden, with a core.hideDotFiles knob to
 customize this behaviour.

 Will merge to 'master'.


* nd/error-errno (2016-05-09) 41 commits
  (merged to 'next' on 2016-05-10 at 1cdeda8)
 + wrapper.c: use warning_errno()
 + vcs-svn: use error_errno()
 + upload-pack.c: use error_errno()
 + unpack-trees.c: use error_errno()
 + transport-helper.c: use error_errno()
 + sha1_file.c: use {error,die,warning}_errno()
 + server-info.c: use error_errno()
 + sequencer.c: use error_errno()
 + run-command.c: use error_errno()
 + rerere.c: use error_errno() and warning_errno()
 + reachable.c: use error_errno()
 + mailmap.c: use error_errno()
 + ident.c: use warning_errno()
 + http.c: use error_errno() and warning_errno()
 + grep.c: use error_errno()
 + gpg-interface.c: use error_errno()
 + fast-import.c: use error_errno()
 + entry.c: use error_errno()
 + editor.c: use error_errno()
 + diff-no-index.c: use error_errno()
 + credential-cache--daemon.c: use warning_errno()
 + copy.c: use error_errno()
 + connected.c: use error_errno()
 + config.c: use error_errno()
 + compat/win32/syslog.c: use warning_errno()
 + combine-diff.c: use error_errno()
 + check-racy.c: use error_errno()
 + builtin/worktree.c: use error_errno()
 + builtin/upload-archive.c: use error_errno()
 + builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
 + builtin/rm.c: use warning_errno()
 + builtin/pack-objects.c: use die_errno() and warning_errno()
 + builtin/merge-file.c: use error_errno()
 + builtin/mailsplit.c: use error_errno()
 + builtin/help.c: use warning_errno()
 + builtin/fetch.c: use error_errno()
 + builtin/branch.c: use error_errno()
 + builtin/am.c: use error_errno()
 + bisect.c: use die_errno() and warning_errno()
 + usage.c: add warning_errno() and error_errno()
 + usage.c: move format processing out of die_errno()

 The code for warning_errno/die_errno has been refactored and a new
 error_errno() reporting helper is introduced.

 Will merge to 'master'.


* nd/remote-plural-ours-plus-theirs (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-10 at aea08dc)
 + remote.c: specify correct plural form in "commit diverge" message

 Message fix.

 Will merge to 'master'.


* nd/test-helpers (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at e8ad58d)
 + wrap-for-bin.sh: regenerate bin-wrappers when switching branches

 Switching between 'master' and 'next', between which the paths to
 test helper binaries have changed, did not update bin-wrappers/*
 scripts used in tests, causing false test failures.

 Will merge to 'master'.


* tb/core-eol-fix (2016-04-25) 4 commits
  (merged to 'next' on 2016-05-10 at fa8a200)
 + convert.c: ident + core.autocrlf didn't work
 + t0027: test cases for combined attributes
 + convert: allow core.autocrlf=input and core.eol=crlf
 + t0027: make commit_chk_wrnNNO() reliable

 A couple of bugs around core.autocrlf have been fixed.

 Will merge to 'master'.


* tb/t5601-sed-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at d3e54e8)
 + t5601: Remove trailing space in sed expression

 Test fix.

 Will merge to 'master'.


* va/i18n-remote-comment-to-align (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at edbacbb)
 + i18n: remote: add comment for translators

 Message fix.

 Will merge to 'master'.


* jc/linkgit-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 0e5ba60)
 + Documentation: fix linkgit references

 Many 'linkgit:<git documentation page>' references were broken,
 which are all fixed with this.

 Will merge to 'master'.


* js/http-custom-headers (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 7cf5cca)
 + submodule: ensure that -c http.extraheader is heeded
 + Merge branch 'jk/submodule-c-credential' into js/http-custom-headers
 + t5551: make the test for extra HTTP headers more robust
 + tests: adjust the configuration for Apache 2.2
 (this branch uses jk/submodule-c-credential.)

 Update tests for "http.extraHeaders=<header>" to be portable back
 to Apache 2.2 (the original depended on <RequireAll/> which is a
 more recent feature).

 Will merge to 'master'.


* sb/submodule-deinit-all (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-09 at 0fd4518)
 + submodule deinit: require '--all' instead of '.' for all submodules

 Correct faulty recommendation to use "git submodule deinit ." when
 de-initialising all submodules, which would result in a strange
 error message in a pathological corner case.

 Will merge to 'master'.


* bn/config-doc-tt-varnames (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-10 at aa7b834)
 + config: consistently format $variables in monospaced font
 (this branch uses jc/config-pathname-type.)

 Doc formatting fixes.

 Will merge to 'master'.


* lp/typofixes (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-09 at 59683be)
 + typofix: assorted typofixes in comments, documentation and messages

 Will merge to 'master'.


* sb/z-is-gnutar-ism (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-09 at 51d527d)
 + t6041: do not compress backup tar file
 + t3513: do not compress backup tar file

 Will merge to 'master'.


* jc/test-parse-options-expect (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 3ca5783)
 + t0040: convert a few tests to use test-parse-options --expect
 + t0040: remove unused test helpers
 + test-parse-options: --expect=<string> option to simplify tests
 + test-parse-options: fix output when callback option fails
 (this branch uses pb/commit-verbose-config.)

 t0040 had too many unnecessary repetitions in its test data.  Teach
 test-parse-options program so that a caller can tell what it
 expects in its output, so that these repetitions can be cleaned up.

 Will merge to 'master'.


* jc/doc-lint (2016-05-10) 1 commit
 - ci: validate "linkgit:" in documentation

 Find common mistakes when writing gitlink: in our documentation and
 drive the check from "make check-docs".

 I am not entirely happy with the way the script chooses what input
 file to validate, but it is not worse than not having anything, so
 let's move it forward and have the logic improved later when people
 care about it deeply.

 Will merge to 'next'.


* jk/push-client-deadlock-fix (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at 8f4abf9)
 + Windows: only add a no-op pthread_sigmask() when needed
  (merged to 'next' on 2016-05-06 at e91626c)
 + Windows: add pthread_sigmask() that does nothing

 Some Windows SDK lacks pthread_sigmask() implementation and fails
 to compile the recently updated "git push" codepath that uses it.

 Will merge to 'master'.


* ab/hooks (2016-05-04) 4 commits
  (merged to 'next' on 2016-05-09 at 23cf808)
 + hooks: allow customizing where the hook directory is
 + githooks.txt: minor improvements to the grammar & phrasing
 + githooks.txt: amend dangerous advice about 'update' hook ACL
 + githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Will merge to 'master'.


* mh/split-under-lock (2016-05-13) 33 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): move docstring to header file
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring
 - read_raw_ref(): don't get confused by an empty directory
 - commit_ref(): if there is an empty dir in the way, delete it
 - t1404: demonstrate a bug resolving references

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Updated (again).  Will wait for comments for the last time, and
 then merge to 'next'.


* bn/http-cookiefile-config (2016-05-04) 2 commits
  (merged to 'next' on 2016-05-09 at d519b13)
 + http: expand http.cookieFile as a path
 + Documentation: config: improve word ordering for http.cookieFile

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Will merge to 'master'.


* jc/config-pathname-type (2016-05-04) 1 commit
  (merged to 'next' on 2016-05-09 at 0876e55)
 + config: describe 'pathname' value type
 (this branch is used by bn/config-doc-tt-varnames.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'master'.


* jk/submodule-c-credential (2016-05-06) 6 commits
  (merged to 'next' on 2016-05-10 at 4abe871)
 + submodule: stop sanitizing config options
 + submodule: use prepare_submodule_repo_env consistently
 + submodule--helper: move config-sanitizing to submodule.c
 + submodule: export sanitized GIT_CONFIG_PARAMETERS
 + t5550: break submodule config test into multiple sub-tests
 + t5550: fix typo in $HTTPD_URL
 (this branch is used by js/http-custom-headers.)

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly, and stop filtering settings given via "git -c var=val".

 Will merge to 'master'.


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* ew/fast-import-unpack-limit (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at ffd4efb)
 + fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Will merge to 'master'.


* nd/worktree-various-heads (2016-04-22) 13 commits
  (merged to 'next' on 2016-05-10 at 61d3415)
 + branch: do not rename a branch under bisect or rebase
 + worktree.c: check whether branch is bisected in another worktree
 + wt-status.c: split bisect detection out of wt_status_get_state()
 + worktree.c: check whether branch is rebased in another worktree
 + worktree.c: avoid referencing to worktrees[i] multiple times
 + wt-status.c: make wt_status_check_rebase() work on any worktree
 + wt-status.c: split rebase detection out of wt_status_get_state()
 + path.c: refactor and add worktree_git_path()
 + worktree.c: mark current worktree
 + worktree.c: make find_shared_symref() return struct worktree *
 + worktree.c: store "id" instead of "git_dir"
 + path.c: add git_common_path() and strbuf_git_common_path()
 + dir.c: rename str(n)cmp_icase to fspath(n)cmp
 (this branch is used by nd/worktree-cleanup-post-head-protection.)

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-05-10) 7 commits
 + commit: add a commit.verbose config variable
 + t7507-commit-verbose: improve test coverage by testing number of diffs
 + parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 + t/t7507: improve test coverage
 + t0040-parse-options: improve test coverage
 + test-parse-options: print quiet as integer
 + t0040-test-parse-options.sh: fix style issues
 (this branch is used by jc/test-parse-options-expect.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'master'.


* jc/fsck-nul-in-commit (2016-05-10) 2 commits
  (merged to 'next' on 2016-05-10 at 3bc3ca3)
 + fsck: detect and warn a commit with embedded NUL
 + fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.

 Will merge to 'master'.


* jc/ll-merge-internal (2016-05-09) 3 commits
  (merged to 'next' on 2016-05-10 at a6bf1d0)
 + t6036: remove pointless test that expects failure
 + ll-merge: use a longer conflict marker for internal merge
 + ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.

 Will merge to 'master'.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* va/i18n-misc-updates (2016-05-12) 10 commits
  (merged to 'next' on 2016-05-13 at 0361b16)
 + i18n: unpack-trees: avoid substituting only a verb in sentences
  (merged to 'next' on 2016-05-10 at b5dbd0d)
 + i18n: builtin/pull.c: split strings marked for translation
 + i18n: builtin/pull.c: mark placeholders for translation
 + i18n: git-parse-remote.sh: mark strings for translation
 + i18n: branch: move comment for translators
 + i18n: branch: unmark string for translation
 + i18n: builtin/rm.c: remove a comma ',' from string
 + i18n: unpack-trees: mark strings for translation
 + i18n: builtin/branch.c: mark option for translation
 + i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
  (merged to 'next' on 2016-05-10 at dd19e0a)
 + format-patch: introduce format.useAutoBase configuration
 + format-patch: introduce --base=auto option
 + format-patch: add '--base' option to record base tree info
 + patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will merge to 'master'.


* dt/index-helper (2016-05-13) 20 commits
 - untracked-cache: config option
 - trace: measure where the time is spent in the index-heavy operations
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - watchman: add a config option to enable the extension
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - watchman: support watchman to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: log warnings
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - pkt-line: add gentle version of packet_write
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 A new "index-helper" daemon has been introduced to give newly
 spawned Git process a quicker access to the data in the index, and
 optionally interface with the watchman daemon to further reduce the
 refresh cost.

 Under review.
 ($gmane/294470).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)


--------------------------------------------------
[Discarded]

* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 1 commit
 . diff: enable "compaction heuristics" and lose experimentation knob

 Superseded by the tip commit on the jk/diff-compact-heuristic topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Apr 2016, #05; Mon, 18)
@ 2016-04-18 22:48  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-04-18 22:48 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the fifth batch of topics of this cycle.

There are a handful of topics that are stuck; they are marked as
"Needs review", "Needs an Ack", etc. in the following list.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ak/use-hashmap-iter-first-in-submodule-config (2016-03-23) 1 commit
  (merged to 'next' on 2016-04-06 at 2aab890)
 + submodule-config: use hashmap_iter_first()

 Minor code cleanup.


* cc/apply (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 2e23c44)
 + builtin/apply: free patch when parse_chunk() fails
 + builtin/apply: handle parse_binary() failure
 + apply: remove unused call to free() in gitdiff_{old,new}name()
 + builtin/apply: get rid of useless 'name' variable

 Minor code clean-up.


* ep/trace-doc-sample-fix (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 0df7357)
 + api-trace.txt: fix typo

 Fix a typo in an example in the trace API documentation.


* es/format-patch-doc-hide-no-patch (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 25d79bb)
 + git-format-patch.txt: don't show -s as shorthand for multiple options

 "git format-patch --help" showed `-s` and `--no-patch` as if these
 are valid options to the command.  We already hide `--patch` option
 from the documentation, because format-patch is about showing the
 diff, and the documentation now hides these options as well.


* jc/makefile-redirection-stderr (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at e3f2ded)
 + Makefile: fix misdirected redirections

 A minor fix in the Makefile.


* jk/branch-shortening-funny-symrefs (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at 1a3f8be)
 + branch: fix shortening of non-remote symrefs

 A change back in version 2.7 to "git branch" broke display of a
 symbolic ref in a non-standard place in the refs/ hierarchy (we
 expect symbolic refs to appear in refs/remotes/*/HEAD to point at
 the primary branch the remote has, and as .git/HEAD to point at the
 branch we locally checked out).

 Will merge down to maint-2.7.


* jk/check-repository-format (2016-03-11) 10 commits
  (merged to 'next' on 2016-04-06 at a0dada0)
 + verify_repository_format: mark messages for translation
 + setup: drop repository_format_version global
 + setup: unify repository version callbacks
 + init: use setup.c's repo version verification
 + setup: refactor repo format reading and verification
 + config: drop git_config_early
 + check_repository_format_gently: stop using git_config_early
 + lazily load core.sharedrepository
 + wrap shared_repository global in get/set accessors
 + setup: document check_repository_format()
 (this branch is used by dt/pre-refs-backend.)

 The repository set-up sequence has been streamlined (the biggest
 change is that there is no longer git_config_early()), so that we
 do not attempt to look into refs/* when we know we do not have a
 Git repository.


* jn/mergetools-examdiff (2016-04-04) 2 commits
  (merged to 'next' on 2016-04-06 at 819e858)
 + mergetools: add support for ExamDiff
 + mergetools: create mergetool_find_win32_cmd() helper function for winmerge

 "git mergetools" learned to drive ExamDiff.


* js/mingw-tests-2.8 (2016-04-04) 1 commit
  (merged to 'next' on 2016-04-06 at f85a013)
 + Windows: shorten code by re-using convert_slashes()

 Code clean-up.


* kn/for-each-tag-branch (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at 4595ad3)
 + for-each-ref: fix description of '--contains' in manpage

 A minor documentation update.


* ky/branch-d-worktree (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at 00f9bff)
 + branch -d: refuse deleting a branch which is currently checked out

 When "git worktree" feature is in use, "git branch -d" allowed
 deletion of a branch that is checked out in another worktree


* ky/branch-m-worktree (2016-04-08) 3 commits
  (merged to 'next' on 2016-04-08 at b673b5e)
 + set_worktree_head_symref(): fix error message
  (merged to 'next' on 2016-04-06 at e7b285c)
 + branch -m: update all per-worktree HEADs
 + refs: add a new function set_worktree_head_symref

 When "git worktree" feature is in use, "git branch -m" renamed a
 branch that is checked out in another worktree without adjusting
 the HEAD symbolic ref for the worktree.


* lt/pretty-expand-tabs (2016-04-04) 4 commits
  (merged to 'next' on 2016-04-06 at 186ac2a)
 + pretty: test --expand-tabs
 + pretty: allow tweaking tabwidth in --expand-tabs
 + pretty: enable --expand-tabs by default for selected pretty formats
 + pretty: expand tabs in indented logs to make things line up properly

 When "git log" shows the log message indented by 4-spaces, the
 remainder of a line after a HT does not align in the way the author
 originally intended.  The command now expands tabs by default in
 such a case, and allows the users to override it with a new option,
 '--no-expand-tabs'.


* mg/complete-cherry-mark-to-log (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 3002be6)
 + completion: complete --cherry-mark for git log

 The completion scripts (in contrib/) did not include the
 "--cherry-mark" option when completing "git log <HT>".


* mj/pull-rebase-autostash (2016-04-04) 9 commits
  (merged to 'next' on 2016-04-06 at b4e4f31)
 + t5520: test --[no-]autostash with pull.rebase=true
 + t5520: reduce commom lines of code
 + t5520: factor out common "failing autostash" code
 + t5520: factor out common "successful autostash" code
 + t5520: use better test to check stderr output
 + t5520: ensure consistent test conditions
 + t5520: use consistent capitalization in test titles
 + pull --rebase: add --[no-]autostash flag
 + git-pull.c: introduce git_pull_config()

 "git pull --rebase" learned "--[no-]autostash" option, so that
 the rebase.autostash configuration variable set to true can be
 overridden from the command line.


* rt/completion-help (2016-03-24) 2 commits
  (merged to 'next' on 2016-04-06 at 8c3ee08)
 + completion: add 'revisions' and 'everyday' to 'git help'
 + completion: add option '--guides' to 'git help'

 Shell completion (in contrib/) updates.


* rt/rebase-i-shorten-stop-report (2016-03-28) 1 commit
  (merged to 'next' on 2016-04-06 at 7a766b7)
 + rebase-i: print an abbreviated hash when stop for editing

 The commit object name reported when "rebase -i" stops has been
 shortened.


* rz/worktree-no-checkout (2016-03-29) 1 commit
  (merged to 'next' on 2016-04-06 at e725216)
 + worktree: add: introduce --checkout option

 "git worktree add" can be given "--no-checkout" option to only
 create an empty worktree without checking out the files.


* sb/misc-cleanups (2016-04-01) 4 commits
  (merged to 'next' on 2016-04-06 at 4e63691)
 + credential-cache, send_request: close fd when done
 + bundle: don't leak an fd in case of early return
 + abbrev_sha1_in_line: don't leak memory
 + notes: don't leak memory in git_config_get_notes_strategy

 Assorted minor clean-ups.


* sg/diff-multiple-identical-renames (2016-03-30) 1 commit
  (merged to 'next' on 2016-04-06 at ac19e48)
 + diffcore: fix iteration order of identical files during rename detection

 "git diff -M" used to work better when two originally identical
 files A and B got renamed to X/A and X/B by pairing A to X/A and B
 to X/B, but this was broken in the 2.0 timeframe.


* sk/send-pack-all-fix (2016-03-31) 1 commit
  (merged to 'next' on 2016-04-06 at 31e1e1b)
 + git-send-pack: fix --all option when used with directory

 "git send-pack --all <there>" was broken when its command line
 option parsing was written in the 2.6 timeframe.


* tb/blame-force-read-cache-to-workaround-safe-crlf (2016-04-05) 1 commit
  (merged to 'next' on 2016-04-06 at 263bba8)
 + correct blame for files commited with CRLF

 When running "git blame $path" with unnormalized data in the index
 for the path, the data in the working tree was blamed, even though
 "git add" would not have changed what is already in the index, due
 to "safe crlf" that disables the line-end conversion.  It has been
 corrected.

--------------------------------------------------
[New Topics]

* en/merge-fixes (2016-04-12) 2 commits
 - merge-recursive: do not check working copy when creating a virtual merge base
 - merge-recursive: remove duplicate code

 "merge-recursive" strategy incorrectly checked if a path that is
 involved in its internal merge exists in the working tree.

 Will merge to 'next'.


* en/merge-octopus-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at 600b479)
 + merge-octopus: abort if index does not match HEAD
 + t6044: new merge testcases for when index doesn't match HEAD

 "merge-octopus" strategy did not ensure that the index is clean
 when merge begins.

 Will merge to 'master'.


* en/merge-trivial-fix (2016-04-12) 2 commits
  (merged to 'next' on 2016-04-13 at fb3ea86)
 + builtin/merge.c: fix a bug with trivial merges
 + t7605: add a testcase demonstrating a bug with trivial merges

 When "git merge" notices that the merge can be resolved purely at
 the tree level (without having to merge blobs) and the resulting
 tree happens to already exist in the object store, it forgot to
 update the index, which lead to an inconsistent state for later
 operations.

 Will merge to 'master'.


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.


* jc/ll-merge-internal (2016-04-14) 2 commits
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 RFC.


* jk/diff-compact-heuristic (2016-04-18) 2 commits
 - xdiff: implement empty line chunk heuristic
 - xdiff: add recs_match helper function


* nd/test-helpers (2016-04-15) 2 commits
 - test helpers: move test-* to t/helper/ subdirectory
 - Makefile: clean *.o files we create

 Sources to many test helper binaries (and the generated helpers)
 have been moved to t/helper/ subdirectory to reduce clutter at the
 top level of the tree.

--------------------------------------------------
[Stalled]

* tb/safe-crlf-output-fix (2016-04-01) 7 commits
 . convert.c: more safer crlf handling with text attribute
 . correct blame for files commited with CRLF
 . convert: unify the "auto" handling of CRLF
 . t0027: test cases for combined attributes
 . convert: allow core.autocrlf=input and core.eol=crlf
 . convert.c: stream and early out
 . read-cache: factor out get_sha1_from_index() helper

 The "safe CRLF" facility disables line-end conversion from CRLF to
 LF when checking in if the blob registered to the index already
 contains CR, but some codepaths like "git blame" did not know this,
 and instead assumed that only the configuration and attribute
 settings determined how the data from the working tree is converted.

 Will be rerolled.
 ($gmane/290637)


* da/user-useconfigonly (2016-04-01) 2 commits
 - ident: give "please tell me" message upon useConfigOnly error
 - ident: check for useConfigOnly before auto-detection of name/email

 The "user.useConfigOnly" configuration variable makes it an error
 if users do not explicitly set user.name and user.email.  However,
 its check was not done early enough and allowed another error to
 trigger, reporting that the default value we guessed from the
 system setting was unusable.  This was a suboptimal end-user
 experience as we want the users to set user.name/user.email without
 relying on the auto-detection at all.

 Waiting for Acks.
 ($gmane/290340)


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 Needs review.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* sb/submodule-init (2016-04-16) 4 commits
 - submodule: port init from shell to C
 - submodule: port resolve_relative_url from shell to C
 - Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 - Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init
 (this branch uses sb/submodule-helper-clone-regression-fix and sb/submodule-path-misc-bugs.)

 Update of "git submodule" to move pieces of logic to C continues.


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sb/clone-shallow-passthru (2016-04-13) 3 commits
 - clone: add t5614 to test cloning submodules with shallowness involved
 - clone: add `--shallow-submodules` flag
 - submodule clone: pass along `local` option

 "git clone" learned "--shallow-submodules" option.

 Needs review.


* ad/commit-have-m-option (2016-04-07) 2 commits
  (merged to 'next' on 2016-04-13 at 74088c2)
 + commit: do not ignore an empty message given by -m ''
 + commit: --amend -m '' silently fails to wipe message

 "git commit" misbehaved in a few minor ways when an empty message
 is given via -m '', all of which has been corrected.

 Will merge to 'master'.


* jc/xstrfmt-null-with-prec-0 (2016-04-07) 1 commit
  (merged to 'next' on 2016-04-13 at 2457462)
 + setup.c: do not feed NULL to "%.*s" even with precision 0

 Will merge to 'master'.


* dt/pre-refs-backend (2016-04-10) 24 commits
  (merged to 'next' on 2016-04-13 at 0a8f9dd)
 + refs: on symref reflog expire, lock symref not referrent
 + refs: move resolve_ref_unsafe into common code
 + show_head_ref(): check the result of resolve_ref_namespace()
 + check_aliased_update(): check that dst_name is non-NULL
 + checkout_paths(): remove unneeded flag variable
 + cmd_merge(): remove unneeded flag variable
 + fsck_head_link(): remove unneeded flag variable
 + read_raw_ref(): change flags parameter to unsigned int
 + files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
 + read_raw_ref(): manage own scratch space
 + files-backend: break out ref reading
 + resolve_ref_1(): eliminate local variable "bad_name"
 + resolve_ref_1(): reorder code
 + resolve_ref_1(): eliminate local variable
 + resolve_ref_unsafe(): ensure flags is always set
 + resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
 + resolve_missing_loose_ref(): simplify semantics
 + t1430: improve test coverage of deletion of badly-named refs
 + t1430: test for-each-ref in the presence of badly-named refs
 + t1430: don't rely on symbolic-ref for creating broken symrefs
 + t1430: clean up broken refs/tags/shadow
 + t1430: test the output and error of some commands more carefully
 + refs: move for_each_*ref* functions into common code
 + refs: move head_ref{,_submodule} to the common code

 Code restructuring around the "refs" area to prepare for pluggable
 refs backends.

 Will merge to 'master'.


* ky/imap-send (2016-04-13) 2 commits
  (merged to 'next' on 2016-04-13 at 52cf493)
 + imap-send: fix CRAM-MD5 response calculation
 + imap-send: check for NOLOGIN capability only when using LOGIN command

 Support for CRAM-MD5 authentication method in "git imap-send" did
 not work well.

 Will merge to 'master'.


* ky/imap-send-openssl-1.1.0 (2016-04-08) 4 commits
  (merged to 'next' on 2016-04-13 at 49d2643)
 + configure: remove checking for HMAC_CTX_cleanup
 + imap-send: avoid deprecated TLSv1_method()
 + imap-send: check NULL return of SSL_CTX_new()
 + imap-send: use HMAC() function provided by OpenSSL

 Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
 we use in imap-send, which has been adjusted for the change.

 Will merge to 'master'.


* jc/http-socks5h (2016-04-10) 1 commit
  (merged to 'next' on 2016-04-13 at eb27afc)
 + http: differentiate socks5:// and socks5h://

 The socks5:// proxy support added back in 2.6.4 days was not aware
 that socks5h:// proxies behave differently.

 Will merge to 'master'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* jk/do-not-printf-NULL (2016-04-10) 3 commits
  (merged to 'next' on 2016-04-13 at 60912e3)
 + git_config_set_multivar_in_file: handle "unset" errors
 + git_config_set_multivar_in_file: all non-zero returns are errors
 + config: lower-case first word of error strings

 "git config" had a codepath that tried to pass a NULL to
 printf("%s"), which nobody seems to have noticed.

 Will merge to 'master'.


* jk/use-write-script-more (2016-04-12) 3 commits
  (merged to 'next' on 2016-04-13 at d6718bf)
 + t3404: use write_script
 + t1020: do not overuse printf and use write_script
 + t5532: use write_script

 Code clean-up.

 Will merge to 'master'.


* nf/mergetool-prompt (2016-04-12) 2 commits
 - SQUASH???
 - difftool/mergetool: make the form of yes/no questions consistent

 UI consistency improvements.


* va/i18n-misc-updates (2016-04-13) 6 commits
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.


* jc/drop-git-spec-in (2016-04-06) 1 commit
 - Makefile: stop pretending to support rpmbuild

 As nobody maintains our in-tree git.spec.in and distros use their
 own spec file, we stopped pretending that we support "make rpm".

 Comments?


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will be rerolled?
 ($gmane/290724)


* ew/send-email-readable-message-id (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 422959a)
 + send-email: more meaningful Message-ID

 "git send-email" now uses a more readable timestamps when
 formulating a message ID.

 Will merge to 'master'.


* st/verify-tag (2016-04-18) 6 commits
 - tag -v: verfy directly rather than exec-ing verify-tag
 - verify-tag: move verification code to tag.c
 - verify-tag: add sha1 argument to verify_tag()
 - verify-tag: change variable name for readability
 - t7030: test verifying multiple tags
 - builtin/verify-tag.c: ignore SIGPIPE in gpg-interface

 Saw review comments on this v6.
 Expecting a reroll.


* ew/send-email-drop-data-dumper (2016-04-06) 1 commit
  (merged to 'next' on 2016-04-13 at 180266c)
 + send-email: do not load Data::Dumper

 Code clean-up.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-12) 16 commits
 . branch: implement '--format' option
 . branch: use ref-filter printing APIs
 . branch, tag: use porcelain output
 . ref-filter: allow porcelain to translate messages in the output
 . ref-filter: add support for %(refname:dir) and %(refname:base)
 . ref-filter: introduce refname_atom_parser()
 . ref-filter: introduce symref_atom_parser()
 . ref-filter: make "%(symref)" atom work with the ':short' modifier
 . ref-filter: add support for %(upstream:track,nobracket)
 . ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 . ref-filter: introduce format_ref_array_item()
 . ref-filter: move get_head_description() from branch.c
 . ref-filter: modify "%(objectname:short)" to take length
 . ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 . ref-filter: include reference to 'used_atom' within 'atom_value'
 . ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Rerolled but seems to lack jk/branch-shortening-funny-symrefs aka
 $gmane/291295 yet.


* sb/submodule-helper-clone-regression-fix (2016-04-01) 6 commits
  (merged to 'next' on 2016-04-13 at c6584bb)
 + submodule--helper, module_clone: catch fprintf failure
 + submodule--helper: do not borrow absolute_path() result for too long
 + submodule--helper, module_clone: always operate on absolute paths
 + submodule--helper clone: create the submodule path just once
 + submodule--helper: fix potential NULL-dereference
 + recursive submodules: test for relative paths
 (this branch is used by sb/submodule-init.)

 A partial rewrite of "git submodule" in the 2.7 timeframe changed
 the way the gitdir: pointer in the submodules point at the real
 repository location to use absolute paths by accident.  This has
 been corrected.

 Will merge to 'master'.


* sb/submodule-path-misc-bugs (2016-03-30) 6 commits
  (merged to 'next' on 2016-04-18 at 9daa5ce)
 + t7407: make expectation as clear as possible
 + submodule update: test recursive path reporting from subdirectory
 + submodule update: align reporting path for custom command execution
 + submodule status: correct path handling in recursive submodules
 + submodule update --init: correct path handling in recursive submodules
 + submodule foreach: correct path display in recursive submodules
 (this branch is used by sb/submodule-init.)

 "git submodule" reports the paths of submodules the command
 recurses into, but this was incorrect when the command was not run
 from the root level of the superproject.

 Will merge to 'master'.


* xy/format-patch-base (2016-04-12) 4 commits
 - format-patch: introduce format.base configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Review comments sent.
 ($gmane/291198)


* pb/commit-verbose-config (2016-04-12) 6 commits
 . commit: add a commit.verbose config variable
 . t7507-commit-verbose: improve test coverage by testing number of diffs
 . parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 . t0040-parse-options: improve test coverage
 . test-parse-options: print quiet as integer
 . t0040-test-parse-options.sh: fix style issues

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.
 


* dt/index-helper (2016-04-14) 16 commits
 - read-cache: config for waiting for index-helper
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - index-helper: add watchman support to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* ad/cygwin-wants-rename (2015-08-07) 1 commit
 - config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES

 Will hold.
 ($gmane/275680).


* jc/rerere-multi (2016-04-06) 11 commits
  (merged to 'next' on 2016-04-13 at 3db2753)
 + rerere: adjust 'forget' to multi-variant world order
 + rerere: split code to call ll_merge() further
 + rerere: move code related to "forget" together
 + rerere: gc and clear
 + rerere: do use multiple variants
 + t4200: rerere a merge with two identical conflicts
 + rerere: allow multiple variants to exist
 + rerere: delay the recording of preimage
 + rerere: handle leftover rr-cache/$ID directory and postimage files
 + rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
 + rerere: split conflict ID further

 "git rerere" can encounter two or more files with the same conflict
 signature that have to be resolved in different ways, but there was
 no way to record these separate resolutions.

 Will merge to 'master'.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  2013-04-24  5:48  3%       ` Premerging topics Junio C Hamano
@ 2013-04-24  6:22  3%         ` Johan Herland
    0 siblings, 1 reply; 200+ results
From: Johan Herland @ 2013-04-24  6:22 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

On Wed, Apr 24, 2013 at 7:48 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>>> But P is a commit(/merge with two parents), not a blob. Can we have trees
>>> pointing to commits instead of blobs ?
>>
>> Sort of. We do so when recording submodules in regular git trees.
>
> You are using notes to maintain reachability, aren't you?  Because
> commit objects that appears in trees are not treated as reachable
> from the trees, that won't fly.
>
> I think you guys are making it unnecessarily complex by using notes.
> To record a prepared evil merge for merging branch that contains A
> with another branch that contains B (assuming that the interation
> between A and B is what makes the evil merge necessary, e.g. A
> renames a function foo() to bar(), while B adds new callsite that
> calls foo()), we can store a single commit that records the prepared
> evil merge under "refs/merge-fix/$A-$B" where A and B are their
> object names.
>
> Then when merging a branch Y that contains B into our history X that
> already contains A (or vice versa),
>
>   ---o---o---A---o---X... ???
>       \                  .
>        \                .
>         \              .
>          o---B----o---Y
>
> we can enumerate the commits that appear in "log --left-right X...Y"
> on the left/right side and notice there is refs/merge-fix/$A-$B.
>
> So the simplest implementation of "an efficient data store to record
> a commit for <A,B> pair" turns out to be just a ref namespace ;-)
>
> There may be other <C,D> pairs in X...Y history, and it probably is
> the sane thing to do to replay prepackaged evil merges from older to
> newer in the topological sense, but that loop would be trivial, once
> we understand how to replay a single such evil merge.

This raises the same question I recently asked Antoine: For a given
prepackaged merge <X,Y>, do we assume that it only resolves conflicts
between the changes introduced in commit X vs. changes introduced in
commit Y, or do we assume that it resolves conflicts between the
histories leading up to X and Y, respectively? In other words, does
<X,Y> _supercede_ earlier pre-merges between the histories leading up
to X and Y?

I think the latter makes more sense, since we can then reduce the
number of pre-merges to consider in the final merge. There might still
be more than one pre-merge to consider, though, e.g. in criss-cross
cases like this:

  ---o---o---o---o---o---o---o---o
      \             /     \       \
       \           /       \       \
        \         /         \       \
         o---o---o           P2      \
          \       \         /         \
           \       \       /           M
            \       \     /           /
             o---o---+---o           /
              \       \   \         /
               \       P1  \       /
                \     /     \     /
                 o---o---o---o---o

(there is no commit at the "+")

> The actual merge-fix data should be just a commit with a single
> parent. The easiest way to prepare it would be like this:
>
>   ---o---o---A
>       \       \
>        \       M---F
>         \     /
>          o---B
>
> where M is the result of mechanical merge between A and B (there
> could be textual conflicts and you could choose to leave them in, or
> you could choose to have rerere resolve it.  As long as you do the
> same when replaying this prepackaged evil merge, this choice does
> not matter, but using rerere will make your life easier), and F is
> the final result you would want, with semantics conflicts resolved.
> In other words, in the ideal world, you would have resolved a merge
> between A and B to record the tree of F.
>
> Point "F" with refs/merge-fix/$A-$B and you are done.
>
> When you replay this prepackaged evil merge, first you mechanically
> merge X and Y without worrying about M or F to produce N.  If you
> allowed rerere to resolve textual conflicts between A and B when you
> recorded M, allow rerere to resolve this merge.  Otherwise leave the
> textual conflict in.
>
>   ---o---o---A---o---X
>       \               \
>        \               N
>         \             /
>          o---B---o---Y
>
> Then on top of N, you cherry-pick F, which will bring the semantic
> conflict resolution between M and F on top of N.
>
>   ---o---o---A---o---X
>       \               \
>        \               N---F'
>         \             /
>          o---B---o---Y
>
> Once you know the tree shape of F', then you no longer need N.  Just
> amend it away and make the tree recorded in F' the result of the
> merge between X and Y.
>
>   ---o---o---A---o---X---.
>       \                   \
>        \                  F''
>         \                /
>          o---B---o---Y--.

This is obviously a much better way to solve it. It might already be
obvious, but I would suggest when making "refs/merge-fix/$A-$B" that you
canonicalize the name by always choosing A and B such that A precedes B
alphabetically. That way you won't have problems with both recording
"refs/merge-fix/$A-$B" and "refs/merge-fix/$B-$A".


...Johan

--
Johan Herland, <johan@herland.net>
www.herland.net

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.9.0-rc0
@ 2016-05-23 23:23  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-23 23:23 UTC (permalink / raw)
  To: git

An early preview release Git v2.9.0-rc0 is now available for
testing at the usual places.  It is comprised of 443 non-merge
commits since v2.8.0, contributed by 60 people, 24 of which are
new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.9.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.8.0 are as follows.
Welcome to the Git development community!

  Alexander Rinass, Armin Kunaschik, Ben Woosley, Gabriel Souza
  Franco, Jacob Nisnevich, Jan Durovec, Jean-Noël Avila, Kazuki
  Yamaguchi, Keller Fuchs, Laurent Arnoud, Li Peng, Marios Titas,
  Mehul Jain, Michael Procter, Nikola Forró, Pranit Bauva, Ray
  Zhang, René Nyffenegger, Santiago Torres, Saurav Sachidanand,
  Shin Kojima, Sidhant Sharma [:tk], Stanislav Kolotinskiy,
  and Xiaolong Ye.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Kuleshov,
  brian m. carlson, Brian Norris, Christian Couder, David Aguilar,
  David Turner, Dennis Kaarsemaker, Elia Pinto, Elijah Newren,
  Eric Sunshine, Eric Wong, Jacob Keller, Jeff King, Jiang Xin,
  Johannes Schindelin, Johannes Sixt, John Keeping, Junio C Hamano,
  Lars Schneider, Linus Torvalds, Luke Diamand, Matthieu Moy,
  Michael Haggerty, Michael J Gruber, Nguyễn Thái Ngọc Duy,
  Ori Avtalion, Ralf Thielow, Ramsay Jones, Stefan Beller, Stephen
  P. Smith, Sven Strickroth, SZEDER Gábor, Torsten Bögershausen,
  and Vasco Almeida.

----------------------------------------------------------------

Git 2.9 Release Notes (draft)
=============================

Backward compatibility note
---------------------------

The end-user facing Porcelain level commands in the "git diff" and
"git log" by default enables the rename detection; you can still use
"diff.renames" configuration variable to disable this.

Merging two branches that have no common ancestor with "git merge" is
by default forbidden now to prevent creating such an unusual merge by
mistake.

The output formats of "git log" that indents the commit log message by
4 spaces now expands HT in the log message by default.  You can use
the "--no-expand-tabs" option to disable this.

"git commit-tree" plumbing command required the user to always sign
its result when the user sets the commit.gpgsign configuration
variable, which was an ancient mistake, which this release corrects.
A script that drives commit-tree, if it relies on this mistake, now
needs to read commit.gpgsign and pass the -S option as necessary.


Updates since v2.8
------------------

UI, Workflows & Features

 * Comes with git-multimail 1.3.1 (in contrib/).

 * The end-user facing Porcelain level commands like "diff" and "log"
   now enables the rename detection by default.

 * The credential.helper configuration variable is cumulative and
   there is no good way to override it from the command line.  As
   a special case, giving an empty string as its value now serves
   as the signal to clear the values specified in various files.

 * A new "interactive.diffFilter" configuration can be used to
   customize the diff shown in "git add -i" session.

 * "git p4" now allows P4 author names to be mapped to Git author
   names.

 * "git rebase -x" can be used without passing "-i" option.

 * "git -c credential.<var>=<value> submodule" can now be used to
   propagate configuration variables related to credential helper
   down to the submodules.

 * "git tag" can create an annotated tag without explicitly given an
   "-a" (or "-s") option (i.e. when a tag message is given).  A new
   configuration variable, tag.forceSignAnnotated, can be used to tell
   the command to create signed tag in such a situation.

 * "git merge" used to allow merging two branches that have no common
   base by default, which led to a brand new history of an existing
   project created and then get pulled by an unsuspecting maintainer,
   which allowed an unnecessary parallel history merged into the
   existing project.  The command has been taught not to allow this by
   default, with an escape hatch "--allow-unrelated-histories" option
   to be used in a rare event that merges histories of two projects
   that started their lives independently.

 * "git pull" has been taught to pass --allow-unrelated-histories
   option to underlying "git merge".

 * "git apply -v" learned to report paths in the patch that were
   skipped via --include/--exclude mechanism or being outside the
   current working directory.

 * Shell completion (in contrib/) updates.

 * The commit object name reported when "rebase -i" stops has been
   shortened.

 * "git worktree add" can be given "--no-checkout" option to only
   create an empty worktree without checking out the files.

 * "git mergetools" learned to drive ExamDiff.

 * "git pull --rebase" learned "--[no-]autostash" option, so that
   the rebase.autostash configuration variable set to true can be
   overridden from the command line.

 * When "git log" shows the log message indented by 4-spaces, the
   remainder of a line after a HT does not align in the way the author
   originally intended.  The command now expands tabs by default in
   such a case, and allows the users to override it with a new option,
   "--no-expand-tabs".

 * "git send-email" now uses a more readable timestamps when
   formulating a message ID.

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.
   (merge d9d501b068 jc/rerere-multi later to maint).

 * "git p4" learned to record P4 jobs in Git commit that imports from
   the history in Perforce.

 * "git describe --contains" often made a hard-to-justify choice of
   tag to give name to a given commit, because it tried to come up
   with a name with smallest number of hops from a tag, causing an old
   commit whose close descendant that is recently tagged were not
   described with respect to an old tag but with a newer tag.  It did
   not help that its computation of "hop" count was further tweaked to
   penalize being on a side branch of a merge.  The logic has been
   updated to favor using the tag with the oldest tagger date, which
   is a lot easier to explain to the end users: "We describe a commit
   in terms of the (chronologically) oldest tag that contains the
   commit."
   (merge 7550424 js/name-rev-use-oldest-ref later to maint).

 * "git clone" learned "--shallow-submodules" option.

 * HTTP transport clients learned to throw extra HTTP headers at the
   server, specified via http.extraHeader configuration variable.

 * Patch output from "git diff" and friends has been tweaked to be
   more readable by using a blank line as a strong hint that the
   contents before and after it belong to a logically separate unit.

 * A new configuration variable core.hooksPath allows customizing
   where the hook directory is.

 * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
   submodule honor -c credential.* from command line, 2016-02-29)
   turned out to be a convoluted no-op; implement what it wanted to do
   correctly, and stop filtering settings given via "git -c var=val".

 * "git commit --dry-run" reported "No, no, you cannot commit." in one
   case where "git commit" would have allowed you to commit, and this
   improves it a little bit ("git commit --dry-run --short" still does
   not give you the correct answer, for example).  This is a stop-gap
   measure in that "commit --short --dry-run" still gives an incorrect
   result.

 * The experimental "multiple worktree" feature gains more safety to
   forbid operations on a branch that is checked out or being actively
   worked on elsewhere, by noticing that e.g. it is being rebased.

 * "git format-patch" learned a new "--base" option to record what
   (public, well-known) commit the original series was built on in
   its output.

 * "git commit" learned to pay attention to "commit.verbose"
   configuration variable and act as if "--verbose" option was
   given from the command line.


Performance, Internal Implementation, Development Support etc.

 * The embedded args argv-array in the child process is used to build
   the command line to run pack-objects instead of using a separate
   array of strings.

 * A test for tags has been restructured so that more parts of it can
   easily be run on a platform without a working GnuPG.

 * The startup_info data, which records if we are working inside a
   repository (among other things), are now uniformly available to Git
   subcommand implementations, and Git avoids attempting to touch
   references when we are not in a repository.

 * The command line argument parser for "receive-pack" has been
   rewritten to use parse-options.

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.

 * Rename bunch of tests on "git clone" for better organization.

 * The tests that involve running httpd leaked the system-wide
   configuration in /etc/gitconfig to the tested environment.

 * Build updates for MSVC.

 * The repository set-up sequence has been streamlined (the biggest
   change is that there is no longer git_config_early()), so that we
   do not attempt to look into refs/* when we know we do not have a
   Git repository.

 * Code restructuring around the "refs" area to prepare for pluggable
   refs backends.

 * Sources to many test helper binaries (and the generated helpers)
   have been moved to t/helper/ subdirectory to reduce clutter at the
   top level of the tree.

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.
   (merge bef234b st/verify-tag later to maint).

 * "merge-recursive" strategy incorrectly checked if a path that is
   involved in its internal merge exists in the working tree.

 * The test scripts for "git p4" (but not "git p4" implementation
   itself) has been updated so that they would work even on a system
   where the installed version of Python is python 3.

 * As nobody maintains our in-tree git.spec.in and distros use their
   own spec file, we stopped pretending that we support "make rpm".

 * Move from unsigned char[20] to struct object_id continues.

 * Update of "git submodule" to move pieces of logic to C continues.

 * The code for warning_errno/die_errno has been refactored and a new
   error_errno() reporting helper is introduced.
   (merge 1da045f nd/error-errno later to maint).

 * Running tests with '-x' option to trace the individual command
   executions is a useful way to debug test scripts, but some tests
   that capture the standard error stream and check what the command
   said can be broken with the trace output mixed in.  When running
   our tests under "bash", however, we can redirect the trace output
   to another file descriptor to keep the standard error of programs
   being tested intact.
   (merge d88785e jk/test-send-sh-x-trace-elsewhere later to maint).

 * t0040 had too many unnecessary repetitions in its test data.  Teach
   test-parse-options program so that a caller can tell what it
   expects in its output, so that these repetitions can be cleaned up.

 * Add perf test for "rebase -i"

 * Common mistakes when writing gitlink: in our documentation are
   found by "make check-docs".

 * t9xxx series has been updated primarily for readability, while
   fixing small bugs in it.  A few scripted Porcelains have also been
   updated to fix possible bugs around their use of "test -z" and
   "test -n".

 * CI test was taught to run git-svn tests.


Also contains various documentation updates and code clean-ups.


Fixes since v2.8
----------------

Unless otherwise noted, all the fixes since v2.8 in the maintenance
track are contained in this release (see the maintenance releases'
notes for details).

 * "git config --get-urlmatch", unlike other variants of the "git
   config --get" family, did not signal error with its exit status
   when there was no matching configuration.

 * The "--local-env-vars" and "--resolve-git-dir" options of "git
   rev-parse" failed to work outside a repository when the command's
   option parsing was rewritten in 1.8.5 era.

 * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.

 * Fetching of history by naming a commit object name directly didn't
   work across remote-curl transport.

 * A small memory leak in an error codepath has been plugged in xdiff
   code.

 * strbuf_getwholeline() did not NUL-terminate the buffer on certain
   corner cases in its error codepath.

 * "git mergetool" did not work well with conflicts that both sides
   deleted.

 * "git send-email" had trouble parsing alias file in mailrc format
   when lines in it had trailing whitespaces on them.

 * When "git merge --squash" stopped due to conflict, the concluding
   "git commit" failed to read in the SQUASH_MSG that shows the log
   messages from all the squashed commits.

 * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
   nothing into an unborn history (which is arguably unusual usage,
   which perhaps was the reason why nobody noticed it).

 * When "git worktree" feature is in use, "git branch -d" allowed
   deletion of a branch that is checked out in another worktree,
   which was wrong.

 * When "git worktree" feature is in use, "git branch -m" renamed a
   branch that is checked out in another worktree without adjusting
   the HEAD symbolic ref for the worktree.

 * "git diff -M" used to work better when two originally identical
   files A and B got renamed to X/A and X/B by pairing A to X/A and B
   to X/B, but this was broken in the 2.0 timeframe.

 * "git send-pack --all <there>" was broken when its command line
   option parsing was written in the 2.6 timeframe.

 * "git format-patch --help" showed `-s` and `--no-patch` as if these
   are valid options to the command.  We already hide `--patch` option
   from the documentation, because format-patch is about showing the
   diff, and the documentation now hides these options as well.

 * When running "git blame $path" with unnormalized data in the index
   for the path, the data in the working tree was blamed, even though
   "git add" would not have changed what is already in the index, due
   to "safe crlf" that disables the line-end conversion.  It has been
   corrected.

 * A change back in version 2.7 to "git branch" broke display of a
   symbolic ref in a non-standard place in the refs/ hierarchy (we
   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
   the primary branch the remote has, and as .git/HEAD to point at the
   branch we locally checked out).

 * A partial rewrite of "git submodule" in the 2.7 timeframe changed
   the way the gitdir: pointer in the submodules point at the real
   repository location to use absolute paths by accident.  This has
   been corrected.

 * "git commit" misbehaved in a few minor ways when an empty message
   is given via -m '', all of which has been corrected.

 * Support for CRAM-MD5 authentication method in "git imap-send" did
   not work well.

 * Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
   we use in imap-send, which has been adjusted for the change.

 * The socks5:// proxy support added back in 2.6.4 days was not aware
   that socks5h:// proxies behave differently.

 * "git config" had a codepath that tried to pass a NULL to
   printf("%s"), which nobody seems to have noticed.

 * On Cygwin, object creation uses the "create a temporary and then
   rename it to the final name" pattern, not "create a temporary,
   hardlink it to the final name and then unlink the temporary"
   pattern.

   This is necessary to use Git on Windows shared directories, and is
   already enabled for the MinGW and plain Windows builds.  It also
   has been used in Cygwin packaged versions of Git for quite a while.
   See http://thread.gmane.org/gmane.comp.version-control.git/291853

 * "merge-octopus" strategy did not ensure that the index is clean
   when merge begins.

 * When "git merge" notices that the merge can be resolved purely at
   the tree level (without having to merge blobs) and the resulting
   tree happens to already exist in the object store, it forgot to
   update the index, which lead to an inconsistent state for later
   operations.

 * "git submodule" reports the paths of submodules the command
   recurses into, but this was incorrect when the command was not run
   from the root level of the superproject.

 * The "user.useConfigOnly" configuration variable makes it an error
   if users do not explicitly set user.name and user.email.  However,
   its check was not done early enough and allowed another error to
   trigger, reporting that the default value we guessed from the
   system setting was unusable.  This was a suboptimal end-user
   experience as we want the users to set user.name/user.email without
   relying on the auto-detection at all.

 * "git mv old new" did not adjust the path for a submodule that lives
   as a subdirectory inside old/ directory correctly.

 * "git replace -e" did not honour "core.editor" configuration.

 * "git push" from a corrupt repository that attempts to push a large
   number of refs deadlocked; the thread to relay rejection notices
   for these ref updates blocked on writing them to the main thread,
   after the main thread at the receiving end notices that the push
   failed and decides not to read these notices and return a failure.

 * mmap emulation on Windows has been optimized and work better without
   consuming paging store when not needed.

 * A question by "git send-email" to ask the identity of the sender
   has been updated.

 * UI consistency improvements for "git mergetool".

 * "git rebase -m" could be asked to rebase an entire branch starting
   from the root, but failed by assuming that there always is a parent
   commit to the first commit on the branch.
   (merge 79f4344 bw/rebase-merge-entire-branch later to maint).

 * Fix a broken "p4 lfs" test.

 * Recent update to Git LFS broke "git p4" by changing the output from
   its "lfs pointer" subcommand.

 * "git fetch" test t5510 was flaky while running a (forced) automagic
   garbage collection.

 * Documentation updates to help contributors setting up Travis CI
   test for their patches.

 * Some multi-byte encoding can have a backslash byte as a later part
   of one letter, which would confuse "highlight" filter used in
   gitweb.

 * "git commit-tree" plumbing command required the user to always sign
   its result when the user sets the commit.gpgsign configuration
   variable, which was an ancient mistake.  Rework "git rebase" that
   relied on this mistake so that it reads commit.gpgsign and pass (or
   not pass) the -S option to "git commit-tree" to keep the end-user
   expectation the same, while teaching "git commit-tree" to ignore
   the configuration variable.  This will stop requiring the users to
   sign commit objects used internally as an implementation detail of
   "git stash".
   (merge 6694856 jc/commit-tree-ignore-commit-gpgsign later to maint).

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.
   (merge e5a39ad bn/http-cookiefile-config later to maint).

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.
   (merge dca83ab jc/config-pathname-type later to maint).

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.
   (merge f6a5279 sb/submodule-deinit-all later to maint).

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.
   (merge 1cca17d jc/linkgit-fix later to maint).

 * "git rerere" can get confused by conflict markers deliberately left
   by the inner merge step, because they are indistinguishable from
   the real conflict markers left by the outermost merge which are
   what the end user and "rerere" need to look at.  This was fixed by
   making the conflict markers left by the inner merges a bit longer.
   (merge 0f9fd5c jc/ll-merge-internal later to maint).

 * CI test was taught to build documentation pages.
   (merge b98712b ls/travis-build-doc later to maint).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.
   (merge 6d2d780 jc/fsck-nul-in-commit later to maint).

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).
   (merge 8e98b35 jk/rebase-interative-eval-fix later to maint).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.
   (merge ebf31e7 js/windows-dotgit later to maint).

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.
   (merge 05a5869 kf/gpg-sig-verification-doc later to maint).

 * A couple of bugs around core.autocrlf have been fixed.
   (merge caa47ad tb/core-eol-fix later to maint).

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.
   (merge 90a78b8 ar/diff-args-osx-precompose later to maint).

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.
   (merge 366f9ce da/difftool later to maint).

 * Other minor clean-ups and documentation updates
   (merge 832c0e5 lp/typofixes later to maint).
   (merge f5ee54a sb/z-is-gnutar-ism later to maint).
   (merge 2e3926b va/i18n-misc-updates later to maint).
   (merge f212dcc bn/config-doc-tt-varnames later to maint).
   (merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
   (merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
   (merge 4df4313 jc/test-seq later to maint).
   (merge a75a308 tb/t5601-sed-fix later to maint).
   (merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
   (merge dee2303 va/mailinfo-doc-typofix later to maint).

----------------------------------------------------------------

Changes since v2.8.0 are as follows:

Adam Dinwoodie (2):
      config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
      commit: --amend -m '' silently fails to wipe message

Alexander Kuleshov (1):
      submodule-config: use hashmap_iter_first()

Alexander Rinass (1):
      diff: run arguments through precompose_argv

Armin Kunaschik (1):
      t4151: make sure argument to 'test -z' is given

Ben Woosley (1):
      git-rebase--merge: don't include absent parent as a base

Brian Norris (3):
      Documentation: config: improve word ordering for http.cookieFile
      http: expand http.cookieFile as a path
      config: consistently format $variables in monospaced font

Christian Couder (5):
      Documentation: talk about pager in api-trace.txt
      builtin/apply: get rid of useless 'name' variable
      builtin/apply: handle parse_binary() failure
      builtin/apply: free patch when parse_chunk() fails
      Git/SVN: die when there is no commit metadata

David Aguilar (4):
      mergetool: support delete/delete conflicts
      mergetool: honor tempfile configuration when resolving delete conflicts
      difftool: initialize variables for readability
      difftool: handle unmerged files in dir-diff mode

David Turner (5):
      refs: move head_ref{,_submodule} to the common code
      refs: move for_each_*ref* functions into common code
      files-backend: break out ref reading
      refs: move resolve_ref_unsafe into common code
      refs: on symref reflog expire, lock symref not referrent

Dennis Kaarsemaker (1):
      Makefile: remove dependency on git.spec

Elia Pinto (1):
      api-trace.txt: fix typo

Elijah Newren (6):
      merge-recursive: remove duplicate code
      merge-recursive: do not check working copy when creating a virtual merge base
      t7605: add a testcase demonstrating a bug with trivial merges
      builtin/merge.c: fix a bug with trivial merges
      t6044: new merge testcases for when index doesn't match HEAD
      merge-octopus: abort if index does not match HEAD

Eric Sunshine (5):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing
      git-format-patch.txt: don't show -s as shorthand for multiple options

Eric Wong (4):
      send-email: more meaningful Message-ID
      send-email: do not load Data::Dumper
      pack-objects: warn on split packs disabling bitmaps
      .mailmap: update to my shorter email address

Gabriel Souza Franco (2):
      fetch-pack: fix object_id of exact sha1
      fetch-pack: update the documentation for "<refs>..." arguments

Jacob Keller (7):
      submodule: don't pass empty string arguments to submodule--helper clone
      submodule: check argc count for git submodule--helper clone
      submodule: fix submodule--helper clone usage
      submodule: fix segmentation fault in submodule--helper clone
      quote: implement sq_quotef()
      git: submodule honor -c credential.* from command line
      xdiff: add recs_match helper function

Jacob Nisnevich (2):
      mergetools: create mergetool_find_win32_cmd() helper function for winmerge
      mergetools: add support for ExamDiff

Jan Durovec (2):
      git-p4: clean-up code style in tests
      git-p4: add P4 jobs to git commit message

Jeff King (52):
      credential: let empty credential specs reset helper list
      t1515: add tests for rev-parse out-of-repo helpers
      add--interactive: allow custom diff highlighting programs
      rev-parse: let some options run outside repository
      strbuf_getwholeline: NUL-terminate getdelim buffer on error
      setup: make startup_info available everywhere
      setup: set startup_info->have_repository more reliably
      remote: don't resolve HEAD in non-repository
      mailmap: do not resolve blobs in a non-repository
      grep: turn off gitlink detection for --no-index
      use setup_git_directory() in test-* programs
      setup: document check_repository_format()
      wrap shared_repository global in get/set accessors
      lazily load core.sharedrepository
      check_repository_format_gently: stop using git_config_early
      config: drop git_config_early
      setup: refactor repo format reading and verification
      init: use setup.c's repo version verification
      setup: unify repository version callbacks
      setup: drop repository_format_version global
      verify_repository_format: mark messages for translation
      send-email: ignore trailing whitespace in mailrc alias file
      credential-cache--daemon: clarify "exit" action semantics
      t/lib-httpd: pass through GIT_CONFIG_NOSYSTEM env
      git_config_push_parameter: handle empty GIT_CONFIG_PARAMETERS
      branch: fix shortening of non-remote symrefs
      commit: do not ignore an empty message given by -m ''
      config: lower-case first word of error strings
      git_config_set_multivar_in_file: all non-zero returns are errors
      git_config_set_multivar_in_file: handle "unset" errors
      t5532: use write_script
      send-pack: close demux pipe before finishing async process
      run-command: teach async threads to ignore SIGPIPE
      send-pack: isolate sigpipe in demuxer thread
      fetch-pack: isolate sigpipe in demuxer thread
      t5504: drop sigpipe=ok from push tests
      remote.c: spell __attribute__ correctly
      t5550: fix typo in $HTTPD_URL
      t5550: break submodule config test into multiple sub-tests
      submodule: export sanitized GIT_CONFIG_PARAMETERS
      submodule--helper: move config-sanitizing to submodule.c
      submodule: use prepare_submodule_repo_env consistently
      submodule: stop sanitizing config options
      t6302: simplify non-gpg cases
      rebase--interactive: avoid empty list in shell for-loop
      test-lib: set BASH_XTRACEFD automatically
      t/lib-git-svn: drop $remote_git_svn and $git_svn_id
      t9100,t3419: enclose all test code in single-quotes
      t9107: use "return 1" instead of "exit 1"
      t9107: switch inverted single/double quotes in test
      t9103: modernize test style
      always quote shell arguments to test -z/-n

Johannes Schindelin (16):
      replace --edit: respect core.editor
      name-rev: include taggerdate in considering the best name
      win32mmap: set errno appropriately
      mmap(win32): avoid copy-on-write when it is unnecessary
      mmap(win32): avoid expensive fstat() call
      http: support sending custom HTTP headers
      tests: adjust the configuration for Apache 2.2
      t5551: make the test for extra HTTP headers more robust
      t3404: fix typo
      submodule: ensure that -c http.extraheader is heeded
      mingw: introduce the 'core.hideDotFiles' setting
      mingw: remove unnecessary definition
      Windows: only add a no-op pthread_sigmask() when needed
      perf: let's disable symlinks when they are not available
      perf: make the tests work in worktrees
      perf: run "rebase -i" under perf

Johannes Sixt (2):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing

John Keeping (3):
      config: fail if --get-urlmatch finds no value
      Documentation/git-config: use bulleted list for exit codes
      Documentation/git-config: fix --get-all description

Junio C Hamano (69):
      rerere: split conflict ID further
      rerere: scan $GIT_DIR/rr-cache/$ID when instantiating a rerere_id
      index-pack: correct --keep[=<msg>]
      index-pack: add a helper function to derive .idx/.keep filename
      rerere: handle leftover rr-cache/$ID directory and postimage files
      rerere: delay the recording of preimage
      rerere: allow multiple variants to exist
      t4200: rerere a merge with two identical conflicts
      rerere: do use multiple variants
      apply: remove unused call to free() in gitdiff_{old,new}name()
      merge: fix NULL pointer dereference when merging nothing into void
      merge: refuse to create too cool a merge by default
      pretty: enable --expand-tabs by default for selected pretty formats
      pretty: allow tweaking tabwidth in --expand-tabs
      submodule--helper: do not borrow absolute_path() result for too long
      Git 2.8.1
      First batch for post 2.8 cycle
      pretty: test --expand-tabs
      Makefile: fix misdirected redirections
      Second batch for post 2.8 cycle
      Makefile: stop pretending to support rpmbuild
      rerere: gc and clear
      rerere: move code related to "forget" together
      rerere: split code to call ll_merge() further
      rerere: adjust 'forget' to multi-variant world order
      setup.c: do not feed NULL to "%.*s" even with precision 0
      Third batch for post 2.8 cycle
      http: differentiate socks5:// and socks5h://
      t1020: do not overuse printf and use write_script
      t3404: use write_script
      Fourth batch for post 2.8 cycle
      Start preparing for 2.8.2
      fsck_commit_buffer(): do not special case the last validation
      ll-merge: fix typo in comment
      Prepare for 2.8.2
      Makefile: clean *.o files we create
      Fifth batch for post 2.8 cycle
      t3033: avoid 'ambiguous refs' warning
      pull: pass --allow-unrelated-histories to "git merge"
      Sixth batch for post 2.8 cycle
      send-email: fix grammo in the prompt that asks e-mail recipients
      Seventh batch for post 2.8 cycle
      Git 2.8.2
      Eighth batch for 2.9
      diff: undocument the compaction heuristic knobs for experimentation
      Start preparing for 2.8.3
      commit-tree: do not pay attention to commit.gpgsign
      Ninth batch for 2.9
      config: describe 'pathname' value type
      Tenth batch for 2.9
      Almost ready for 2.8.3
      test-lib-functions.sh: remove misleading comment on test_seq
      test-lib-functions.sh: rewrite test_seq without Perl
      ll-merge: use a longer conflict marker for internal merge
      t6036: remove pointless test that expects failure
      Documentation: fix linkgit references
      fsck: detect and warn a commit with embedded NUL
      ci: validate "linkgit:" in documentation
      test-parse-options: fix output when callback option fails
      test-parse-options: --expect=<string> option to simplify tests
      t0040: remove unused test helpers
      t0040: convert a few tests to use test-parse-options --expect
      Eleventh batch for 2.9
      rerere: plug memory leaks upon "rerere forget" failure
      Twelfth batch for 2.9
      Thirteenth batch for 2.9
      Git 2.8.3
      rerere: remove an null statement
      Git 2.9-rc0

Kazuki Yamaguchi (10):
      branch -d: refuse deleting a branch which is currently checked out
      refs: add a new function set_worktree_head_symref
      branch -m: update all per-worktree HEADs
      set_worktree_head_symref(): fix error message
      imap-send: use HMAC() function provided by OpenSSL
      imap-send: check NULL return of SSL_CTX_new()
      imap-send: avoid deprecated TLSv1_method()
      configure: remove checking for HMAC_CTX_cleanup
      imap-send: check for NOLOGIN capability only when using LOGIN command
      imap-send: fix CRAM-MD5 response calculation

Keller Fuchs (1):
      Documentation: clarify signature verification

Lars Schneider (8):
      git-p4: map a P4 user to Git author name and email address
      travis-ci: update Git-LFS and P4 to the latest version
      travis-ci: express Linux/OS X dependency versions more clearly
      git-p4: fix Git LFS pointer parsing
      t9824: fix wrong reference value
      Documentation: add setup instructions for Travis CI
      travis-ci: build documentation
      travis-ci: enable Git SVN tests t91xx on Linux

Laurent Arnoud (1):
      tag: add the option to force signing of annotated tags

Li Peng (1):
      typofix: assorted typofixes in comments, documentation and messages

Linus Torvalds (1):
      pretty: expand tabs in indented logs to make things line up properly

Luke Diamand (3):
      git-p4 tests: cd to / before running python
      git-p4 tests: work with python3 as well as python2
      git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
      ident: check for useConfigOnly before auto-detection of name/email
      ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (11):
      Documentation/diff-config: fix description of diff.renames
      t4001-diff-rename: wrap file creations in a test
      t: add tests for diff.renames (true/false/unset)
      log: introduce init_log_defaults()
      diff: activate diff.renames by default
      lockfile: mark strings for translation
      lockfile: improve error message when lockfile exists
      git.spec.in: use README.md, not README
      README.md: don't take 'commandname' literally
      git-multimail: update to release 1.3.0
      git-multimail: update to release 1.3.1

Mehul Jain (9):
      git-pull.c: introduce git_pull_config()
      pull --rebase: add --[no-]autostash flag
      t5520: use consistent capitalization in test titles
      t5520: ensure consistent test conditions
      t5520: use better test to check stderr output
      t5520: factor out common "successful autostash" code
      t5520: factor out common "failing autostash" code
      t5520: reduce commom lines of code
      t5520: test --[no-]autostash with pull.rebase=true

Michael Haggerty (19):
      t1430: test the output and error of some commands more carefully
      t1430: clean up broken refs/tags/shadow
      t1430: don't rely on symbolic-ref for creating broken symrefs
      t1430: test for-each-ref in the presence of badly-named refs
      t1430: improve test coverage of deletion of badly-named refs
      resolve_missing_loose_ref(): simplify semantics
      resolve_ref_unsafe(): use for loop to count up to MAXDEPTH
      resolve_ref_unsafe(): ensure flags is always set
      resolve_ref_1(): eliminate local variable
      resolve_ref_1(): reorder code
      resolve_ref_1(): eliminate local variable "bad_name"
      read_raw_ref(): manage own scratch space
      files-backend: inline resolve_ref_1() into resolve_ref_unsafe()
      read_raw_ref(): change flags parameter to unsigned int
      fsck_head_link(): remove unneeded flag variable
      cmd_merge(): remove unneeded flag variable
      checkout_paths(): remove unneeded flag variable
      check_aliased_update(): check that dst_name is non-NULL
      show_head_ref(): check the result of resolve_ref_namespace()

Michael J Gruber (1):
      completion: complete --cherry-mark for git log

Michael Procter (1):
      upload-pack: use argv_array for pack_objects

Nguyễn Thái Ngọc Duy (62):
      git-apply.txt: remove a space
      git-apply.txt: mention the behavior inside a subdir
      apply: report patch skipping in verbose mode
      test helpers: move test-* to t/helper/ subdirectory
      dir.c: remove dead function fnmatch_icase()
      wrapper.c: delete dead function git_mkstemps()
      dir.c: rename str(n)cmp_icase to fspath(n)cmp
      path.c: add git_common_path() and strbuf_git_common_path()
      worktree.c: store "id" instead of "git_dir"
      worktree.c: make find_shared_symref() return struct worktree *
      worktree.c: mark current worktree
      path.c: refactor and add worktree_git_path()
      wt-status.c: split rebase detection out of wt_status_get_state()
      wt-status.c: make wt_status_check_rebase() work on any worktree
      worktree.c: avoid referencing to worktrees[i] multiple times
      worktree.c: check whether branch is rebased in another worktree
      wt-status.c: split bisect detection out of wt_status_get_state()
      worktree.c: check whether branch is bisected in another worktree
      branch: do not rename a branch under bisect or rebase
      remote.c: specify correct plural form in "commit diverge" message
      usage.c: move format processing out of die_errno()
      usage.c: add warning_errno() and error_errno()
      bisect.c: use die_errno() and warning_errno()
      builtin/am.c: use error_errno()
      builtin/branch.c: use error_errno()
      builtin/fetch.c: use error_errno()
      builtin/help.c: use warning_errno()
      builtin/mailsplit.c: use error_errno()
      builtin/merge-file.c: use error_errno()
      builtin/pack-objects.c: use die_errno() and warning_errno()
      builtin/rm.c: use warning_errno()
      builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
      builtin/upload-archive.c: use error_errno()
      builtin/worktree.c: use error_errno()
      check-racy.c: use error_errno()
      combine-diff.c: use error_errno()
      compat/win32/syslog.c: use warning_errno()
      config.c: use error_errno()
      connected.c: use error_errno()
      copy.c: use error_errno()
      credential-cache--daemon.c: use warning_errno()
      diff-no-index.c: use error_errno()
      editor.c: use error_errno()
      entry.c: use error_errno()
      fast-import.c: use error_errno()
      gpg-interface.c: use error_errno()
      grep.c: use error_errno()
      http.c: use error_errno() and warning_errno()
      ident.c: use warning_errno()
      mailmap.c: use error_errno()
      reachable.c: use error_errno()
      rerere.c: use error_errno() and warning_errno()
      run-command.c: use error_errno()
      sequencer.c: use error_errno()
      server-info.c: use error_errno()
      sha1_file.c: use {error,die,warning}_errno()
      transport-helper.c: use error_errno()
      unpack-trees.c: use error_errno()
      upload-pack.c: use error_errno()
      vcs-svn: use error_errno()
      wrapper.c: use warning_errno()
      wrap-for-bin.sh: regenerate bin-wrappers when switching branches

Nikola Forró (1):
      difftool/mergetool: make the form of yes/no questions consistent

Ori Avtalion (1):
      Documentation: git diff --check detects conflict markers

Pranit Bauva (9):
      t/t7502 : drop duplicate test
      api-parse-options.txt: document OPT_CMDMODE()
      t0040-test-parse-options.sh: fix style issues
      test-parse-options: print quiet as integer
      t0040-parse-options: improve test coverage
      t/t7507: improve test coverage
      parse-options.c: make OPTION_COUNTUP respect "unspecified" values
      t7507-commit-verbose: improve test coverage by testing number of diffs
      commit: add a commit.verbose config variable

Ralf Thielow (4):
      completion: add option '--guides' to 'git help'
      completion: add 'revisions' and 'everyday' to 'git help'
      rebase-i: print an abbreviated hash when stop for editing
      string_list: use string-list API in unsorted_string_list_lookup()

Ramsay Jones (2):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak

Ray Zhang (1):
      worktree: add: introduce --checkout option

René Nyffenegger (1):
      Documentation: fix typo 'In such these cases'

SZEDER Gábor (5):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground

Santiago Torres (6):
      builtin/verify-tag.c: ignore SIGPIPE in gpg-interface
      t7030: test verifying multiple tags
      verify-tag: update variable name and type
      verify-tag: prepare verify_tag for libification
      verify-tag: move tag verification code to tag.c
      tag -v: verify directly rather than exec-ing verify-tag

Saurav Sachidanand (1):
      dir: store EXC_FLAG_* values in unsigned integers

Shin Kojima (1):
      gitweb: apply fallback encoding before highlight

Sidhant Sharma [:tk] (1):
      builtin/receive-pack.c: use parse_options API

Stanislav Kolotinskiy (1):
      git-send-pack: fix --all option when used with directory

Stefan Beller (44):
      submodule-config: keep update strategy around
      submodule-config: drop check against NULL
      fetching submodules: respect `submodule.fetchJobs` config option
      submodule update: direct error message to stderr
      run_processes_parallel: treat output of children as byte array
      run_processes_parallel: rename parameters for the callbacks
      git submodule update: have a dedicated helper for cloning
      submodule helper: remove double 'fatal: ' prefix
      submodule update: expose parallelism to the user
      clone: allow an explicit argument for parallel submodule clones
      clone tests: rename t57* => t56*
      rebase: decouple --exec from --interactive
      t3404: cleanup double empty lines between tests
      submodule foreach: correct path display in recursive submodules
      submodule update --init: correct path handling in recursive submodules
      submodule status: correct path handling in recursive submodules
      submodule update: align reporting path for custom command execution
      submodule update: test recursive path reporting from subdirectory
      t7407: make expectation as clear as possible
      recursive submodules: test for relative paths
      submodule--helper: fix potential NULL-dereference
      submodule--helper clone: create the submodule path just once
      notes: don't leak memory in git_config_get_notes_strategy
      abbrev_sha1_in_line: don't leak memory
      bundle: don't leak an fd in case of early return
      credential-cache, send_request: close fd when done
      submodule--helper, module_clone: always operate on absolute paths
      submodule--helper, module_clone: catch fprintf failure
      submodule: port resolve_relative_url from shell to C
      submodule: port init from shell to C
      xdiff: implement empty line chunk heuristic
      mv: allow moving nested submodules
      clone: add `--shallow-submodules` flag
      config doc: improve exit code listing
      config.c: drop local variable
      submodule-config: don't shadow `cache`
      submodule init: fail gracefully with a missing .gitmodules file
      submodule--helper update-clone: abort gracefully on missing .gitmodules
      submodule deinit test: fix broken && chain in subshell
      submodule init: redirect stdout to stderr
      t7300: mark test with SANITY
      submodule deinit: require '--all' instead of '.' for all submodules
      t3513: do not compress backup tar file
      t6041: do not compress backup tar file

Stephen P. Smith (1):
      wt-status.c: set commitable bit if there is a meaningful merge.

Sven Strickroth (3):
      commit: do not lose SQUASH_MSG contents
      MSVC: vsnprintf in Visual Studio 2015 doesn't need SNPRINTF_SIZE_CORR any more
      MSVC: use shipped headers instead of fallback definitions

Torsten Bögershausen (6):
      correct blame for files commited with CRLF
      t0027: make commit_chk_wrnNNO() reliable
      convert: allow core.autocrlf=input and core.eol=crlf
      t0027: test cases for combined attributes
      convert.c: ident + core.autocrlf didn't work
      t5601: Remove trailing space in sed expression

Vasco Almeida (16):
      l10n: fr: fix transcation of "dir"
      l10n: fr: fix wrongly translated option name
      l10n: fr: change "id de clé" to match "id-clé"
      l10n: fr: don't translate "merge" as a parameter
      i18n: index-pack: use plural string instead of normal one
      i18n: builtin/branch.c: mark option for translation
      i18n: unpack-trees: mark strings for translation
      i18n: builtin/rm.c: remove a comma ',' from string
      i18n: branch: unmark string for translation
      i18n: branch: move comment for translators
      i18n: git-parse-remote.sh: mark strings for translation
      i18n: builtin/pull.c: mark placeholders for translation
      i18n: builtin/pull.c: split strings marked for translation
      i18n: remote: add comment for translators
      Documentation/git-mailinfo: fix typo
      i18n: unpack-trees: avoid substituting only a verb in sentences

Xiaolong Ye (4):
      patch-ids: make commit_patch_id() a public helper function
      format-patch: add '--base' option to record base tree info
      format-patch: introduce --base=auto option
      format-patch: introduce format.useAutoBase configuration

brian m. carlson (6):
      sha1-name: introduce a get_oid() function
      test-match-trees: convert to use struct object_id
      match-trees: convert shift_tree() and shift_tree_by() to use object_id
      struct name_entry: use struct object_id instead of unsigned char sha1[20]
      tree-walk: convert tree_entry_extract() to use struct object_id
      match-trees: convert several leaf functions to use struct object_id

Ævar Arnfjörð Bjarmason (4):
      githooks.txt: improve the intro section
      githooks.txt: amend dangerous advice about 'update' hook ACL
      githooks.txt: minor improvements to the grammar & phrasing
      hooks: allow customizing where the hook directory is

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #07; Wed, 26)
@ 2022-10-26 18:43  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-26 18:43 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.  A topic without enough support may be
discarded after a long period of no activity.

The security releases are over, and we have enough accumulated fixes
on the 'master' front, I've merged a handful of them to 'maint'.  We
may or may not have a 2.38.2 release before we conclude this cycle.
We'll see what happens.

Starting from next week (week #4---see https://tinyurl.com/gitCal),
we'll try a mini "bus factor" exercise, where I will disappear from
the list for a few weeks.  Taylor agreed to volunteer as an interim
maintainer and will take over the daily integration of the project
in the meantime.  The branches at https://github.com/git/git/
repository will be updated to reflect the result of daily
integration cycles by the interim maintainer during the exercise.

Other repositories would not be (see below). Most importantly, the
kernel.org one will be likely left stale.  But the interim
maintainer may choose to publish to other repositories and announce
them on this list.  One that may be handy to have is a repository as
a replacement for https://github.com/gitster/git/ repository that
hosts "broken out" topics.

Around week #7, I'll come back and we will conclude the exercise.
Note that the interim maintainer will really make decisions on what
topics to accept and advance to 'next' and 'master' in these weeks,
and I will accept these decisions when I come back and continue from
there.

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']

* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
  (merged to 'next' on 2022-10-13 at 07993f09bc)
 + grep.c: remove "extended" in favor of "pattern_expression", fix segfault

 Giving "--invert-grep" and "--all-match" without "--grep" to the
 "git log" command resulted in an attempt to access grep pattern
 expression structure that has not been allocated, which has been
 corrected.
 source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>


* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 408ce79f33)
 + fsmonitor OSX: compile with DC_SHA1=YesPlease

 Enable macOS build with sha1dc hash function.
 source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>


* ds/cmd-main-reorder (2022-10-08) 1 commit
  (merged to 'next' on 2022-10-14 at d7f07dbecf)
 + git.c: improve code readability in cmd_main()

 Code clean-up.
 source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-10-13) 1 commit
  (merged to 'next' on 2022-10-17 at 3de2be7c14)
 + config: respect includes in protected config

 Allow configuration files in "protected" scopes to include other
 configuration files.
 source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>


* jc/ci-osx-with-sha1dc (2022-10-20) 1 commit
  (merged to 'next' on 2022-10-21 at 2d3312dfb9)
 + ci: use DC_SHA1=YesPlease on osx-clang job for CI

 Give a bit more diversity to macOS CI by using sha1dc in one of the
 jobs (the other one tests Apple Common Crypto).
 source: <xmqq35bitooc.fsf@gitster.g>


* jc/more-sanitizer-at-ci (2022-10-20) 1 commit
  (merged to 'next' on 2022-10-21 at 91ec913532)
 + ci: add address and undefined sanitizer tasks

 Enable address and undefined sanitizer tasks at GitHub Actions CI.
 source: <xmqqpmezxl9p.fsf@gitster.g>


* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
  (merged to 'next' on 2022-10-13 at 532a3f6a5f)
 + symbolic-ref: teach "--[no-]recurse" option

 After checking out a "branch" that is a symbolic-ref that points at
 another branch, "git symbolic-ref HEAD" reports the underlying
 branch, not the symbolic-ref the user gave checkout as argument.
 The command learned the "--no-recurse" option to stop after
 dereferencing a symbolic-ref only once.
 source: <xmqqleprcn08.fsf@gitster.g>


* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
  (merged to 'next' on 2022-10-19 at 27c2546b98)
 + Makefile: force -O0 when compiling with SANITIZE=leak

 Avoid false-positive from LSan whose assumption may be broken with
 higher optimization levels.
 source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>


* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
  (merged to 'next' on 2022-10-14 at 90850a2211)
 + branch: support for shortcuts like @{-1}, completed

 "git branch --edit-description @{-1}" is now a way to edit branch
 description of the branch you were on before switching to the
 current branch.
 source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>


* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
  (merged to 'next' on 2022-10-17 at 24609eb777)
 + diff: support ^! for merges
 + revisions.txt: unspecify order of resolved parts of ^!
 + revision: use strtol_i() for exclude_parent

 "git diff rev^!" did not show combined diff to go to the rev from
 its parents.
 source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>

--------------------------------------------------
[New Topics]

* tb/shortlog-group (2022-10-24) 7 commits
  (merged to 'next' on 2022-10-25 at 0d1b797119)
 + shortlog: implement `--group=committer` in terms of `--group=<format>`
 + shortlog: implement `--group=author` in terms of `--group=<format>`
 + shortlog: extract `shortlog_finish_setup()`
 + shortlog: support arbitrary commit format `--group`s
 + shortlog: extract `--group` fragment for translation
 + shortlog: make trailer insertion a noop when appropriate
 + shortlog: accept `--date`-related options

 "git shortlog" learned to group by the "format" string.

 Will merge to 'master'.
 source: <cover.1666637725.git.me@ttaylorr.com>


* pw/config-int-parse-fixes (2022-10-22) 3 commits
 - git_parse_signed(): avoid integer overflow
 - config: require at least one digit when parsing numbers
 - git_parse_unsigned: reject negative values

 Assorted fixes of parsing end-user input as integers.

 Expecting a reroll to add test coverage.
 cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
 source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-10-21) 1 commit
 - doc/cat-file: allow --use-mailmap for --batch options

 Doc updates.

 Waiting for review response.
 source: <20221021103442.202759-1-siddharthasthana31@gmail.com>


* sg/stable-docdep (2022-10-21) 1 commit
  (merged to 'next' on 2022-10-25 at 83ecf487f3)
 + Documentation/build-docdep.perl: generate sorted output

 Make sure generated dependency file is stably sorted to help
 developers debugging their build issues.

 Will merge to 'master'.
 source: <20221021102950.539148-1-szeder.dev@gmail.com>


* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
 - subtree: fix split after annotated tag was squashed merged
 - subtree: fix squash merging after annotated tag was squashed merged
 - subtree: process 'git-subtree-split' trailer in separate function
 - subtree: use named variables instead of "$@" in cmd_pull
 - subtree: define a variable before its first use in 'find_latest_squash'
 - subtree: prefix die messages with 'fatal'
 - subtree: add 'die_incompatible_opt' function to reduce duplication
 - subtree: use 'git rev-parse --verify [--quiet]' for better error messages
 - test-lib-functions: mark 'test_commit' variables as 'local'

 A bugfix to "git subtree" in its split and merge features.

 Will merge to 'next'.
 source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>


* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
  (merged to 'next' on 2022-10-25 at 7e2d2f45d3)
 + t7700: annotate cruft-pack failure with ok=sigpipe
 + repack: drop remove_temporary_files()
 + repack: use tempfiles for signal cleanup
 + repack: expand error message for missing pack files
 + repack: populate extension bits incrementally
 + repack: convert "names" util bitfield to array

 The way "git repack" creared temporary files when it received a
 signal was prone to deadlocking, which has been corrected.

 Will merge to 'master'.
 source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>


* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
 - merge-ort: fix bug with dir rename vs change dir to symlink

 Merging a branch with directory renames into a branch that changes
 the directory to a symlink was mishandled by the ort merge
 strategy, which has been corrected.

 Will merge to 'next'.
 source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>


* en/merge-tree-sequence (2022-10-22) 2 commits
 - merge-tree: support multiple batched merges with --stdin
 - merge-tree: update documentation for differences in -z output

 "git merge-tree --stdin" is a new way to request a series of merges
 and report the merge results.

 Will merge to 'next'?
 source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>


* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
  (merged to 'next' on 2022-10-25 at a5d6bc6667)
 + submodule: use strvec_pushf() for --super-prefix

 Code simplification by using strvec_pushf() instead of building an
 argument in a separate strbuf.

 Will merge to 'master'.
 source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>


* jc/doc-fsck-msgids (2022-10-25) 4 commits
 - Documentation: add lint-fsck-msgids
 - fsck: document msg-id
 - fsck: remove the unused MISSING_TREE_OBJECT
 - fsck: remove the unused BAD_TAG_OBJECT

 Add documentation for message IDs in fsck error messages.

 Will merge to 'next'?
 source: <20221025224224.2352979-1-gitster@pobox.com>


* tb/repack-expire-to (2022-10-24) 4 commits
 - builtin/repack.c: implement `--expire-to` for storing pruned objects
 - builtin/repack.c: write cruft packs to arbitrary locations
 - builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
 - builtin/repack.c: pass "out" to `prepare_pack_objects`

 "git repack" learns to send cruft objects out of the way into
 packfiles outside the repository.

 Will merge to 'next'?
 source: <cover.1666636974.git.me@ttaylorr.com>


* cc/filtered-repack (2022-10-25) 2 commits
 - repack: add --filter=<filter-spec> option
 - pack-objects: allow --filter without --stdout

 "git repack" learns to discard objects that ought to be retrievable
 again from the promissor remote.

 Needs review.
 source: <20221025122856.20204-1-christian.couder@gmail.com>


* tb/cap-patch-at-1gb (2022-10-25) 1 commit
 - apply: reject patches larger than ~1 GiB

 "git apply" limits its input to a bit less than 1 GiB.

 Will merge to 'next'.
 source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>


* tb/midx-cleanup-fix (2022-10-25) 1 commit
 - midx.c: clear auxiliary MIDX files first

 The order in which multi-pack-index and its associated files are
 dropped has been tweaked to make it safer for concurrent users.

 Under discussion, but leaning to negative..
 cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
 source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>


* al/trace2-clearing-skip-worktree (2022-10-25) 1 commit
 - index: add trace2 region for clear skip worktree

 Add trace2 counters to the region to clear skip worktree bits in a
 sparse checkout.

 Needs review.
 source: <pull.1368.git.git.1666742722502.gitgitgadget@gmail.com>


* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
 - negotiator/skipping: avoid stack overflow

 Rewrite a deep recursion in the skipping negotiator to use a loop
 with on-heap prio queue to avoid stack wastage.

 Will merge to 'next'?
 source: <20221025232934.1504445-1-jonathantanmy@google.com>


* rj/branch-copy-rename-error-codepath-cleanup (2022-10-25) 1 commit
 - branch: error copying or renaming a detached HEAD

 Code simplification.

 Will merge to 'next'.
 source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>


* rj/branch-do-not-exit-with-minus-one-status (2022-10-25) 1 commit
 - branch: error code with --edit-description

 "git branch --edit-description" can exit with status -1 which is
 not a good practice; it learned to use 1 as everybody else instead.

 Will merge to 'next'.
 source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>

--------------------------------------------------
[Stalled]

* ag/merge-strategies-in-c (2022-08-10) 14 commits
 - sequencer: use the "octopus" strategy without forking
 - sequencer: use the "resolve" strategy without forking
 - merge: use the "octopus" strategy without forking
 - merge: use the "resolve" strategy without forking
 - merge-octopus: rewrite in C
 - merge-recursive: move better_branch_name() to merge.c
 - merge-resolve: rewrite in C
 - merge-one-file: rewrite in C
 - update-index: move add_cacheinfo() to read-cache.c
 - merge-index: add a new way to invoke `git-merge-one-file'
 - merge-index: drop the index
 - merge-index: libify merge_one_path() and merge_all()
 - t6060: add tests for removed files
 - t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* gc/submodule-clone-update-with-branches (2022-10-20) 7 commits
 - clone, submodule update: create and check out branches
 - submodule update: refactor update targets
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - submodule--helper clone: create named branch
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.
 source: <pull.1321.v2.git.git.1666297238.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-10-21) 2 commits
  (merged to 'next' on 2022-10-23 at 43a17bfeac)
 + diff: leave NEEDWORK notes in show_stats() function
 + diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.

 Will merge to 'master'.
 source: <20220914151333.3309-1-tboegi@web.de>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* po/glossary-around-traversal (2022-10-22) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add "commit graph" description
 - doc: use 'object database' not ODB or abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a (hopefully final) reroll.
 cf. <746491f4-fb41-92fe-7360-20a845dc21fc@iee.email>
 source: <20221022222539.2333-1-philipoakley@iee.email>


* mc/credential-helper-auth-headers (2022-10-21) 6 commits
 - t5556-http-auth: add test for HTTP auth hdr logic
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers

 Extending credential helper protocol.

 Needs review.
 source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>


* cw/submodule-status-in-parallel (2022-10-20) 7 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor match_stat_with_submodule
 . submodule: move status parsing into function
 . submodule: strbuf variable rename
 . run-command: add hide_output to run_processes_parallel_opts
 . run-command: add pipe_output_fn to run_processes_parallel_opts
 . Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel
 (this branch uses ab/run-hook-api-cleanup.)

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks winVS test?
 cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
 source: <20221011232604.839941-1-calvinwan@google.com>


* jk/unused-anno-more (2022-10-17) 12 commits
  (merged to 'next' on 2022-10-20 at 0e52ab6cf9)
 + ll-merge: mark unused parameters in callbacks
 + diffcore-pickaxe: mark unused parameters in pickaxe functions
 + convert: mark unused parameter in null stream filter
 + apply: mark unused parameters in noop error/warning routine
 + apply: mark unused parameters in handlers
 + date: mark unused parameters in handler functions
 + string-list: mark unused callback parameters
 + object-file: mark unused parameters in hash_unknown functions
 + mark unused parameters in trivial compat functions
 + update-index: drop unused argc from do_reupdate()
 + submodule--helper: drop unused argc from module_list_compute()
 + diffstat_consume(): assert non-zero length

 More UNUSED annotation to help using -Wunused option with the
 compiler.

 Will merge to 'master'.
 source: <Y036whEorZV0rOgB@coredump.intra.peff.net>


* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
  (merged to 'next' on 2022-10-20 at c88c17eb52)
 + repack: don't remove .keep packs with `--pack-kept-objects`

 When geometric repacking feature is in use together with the
 --pack-kept-objects option, we lost packs marked with .keep files.

 Will merge to 'master'.
 source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>


* mm/git-pm-try-catch-syntax-fix (2022-10-22) 2 commits
  (merged to 'next' on 2022-10-23 at 011a23710f)
 + Git.pm: trust rev-parse to find bare repositories
  (merged to 'next' on 2022-10-21 at 7896738c3b)
 + Git.pm: add semicolon after catch statement

 Fix a longstanding syntax error in Git.pm error codepath.

 Will merge to 'master'.
 source: <20221016212236.12453-1-michael@mcclimon.org>
 source: <Y1Rdtog/XQV0YLj0@coredump.intra.peff.net>


* jr/embargoed-releases-doc (2022-10-24) 1 commit
 - embargoed releases: also describe the git-security list and the process

 The role the security mailing list plays in an embargoed release
 has been documented.

 Will merge to 'next'.
 source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>


* js/cmake-updates (2022-10-19) 5 commits
  (merged to 'next' on 2022-10-21 at 012ec675ba)
 + cmake: increase time-out for a long-running test
 + cmake: avoid editing t/test-lib.sh
 + add -p: avoid ambiguous signed/unsigned comparison
 + cmake: copy the merge tools for testing
 + cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.

 Will merge to 'master'.
 source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>


* jh/trace2-timers-and-counters (2022-10-24) 8 commits
  (merged to 'next' on 2022-10-25 at f8848f3e44)
 + trace2: add global counter mechanism
 + trace2: add stopwatch timers
 + trace2: convert ctx.thread_name from strbuf to pointer
 + trace2: improve thread-name documentation in the thread-context
 + trace2: rename the thread_name argument to trace2_thread_start
 + api-trace2.txt: elminate section describing the public trace2 API
 + tr2tls: clarify TLS terminology
 + trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.

 Will merge to 'master'.
 source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>


* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
  (merged to 'next' on 2022-10-20 at b4d98bb5e4)
 + pack-bitmap-write.c: instrument number of reused bitmaps
 + midx.c: instrument MIDX and bitmap generation with trace2 regions
 + midx.c: consider annotated tags during bitmap selection
 + midx.c: fix whitespace typo

 A bugfix with tracing support in midx codepath

 Will merge to 'master'.
 source: <cover.1665612094.git.me@ttaylorr.com>


* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
  (merged to 'next' on 2022-10-21 at ebb68add44)
 + builtin/repack.c: remove redundant pack-based bitmaps

 When creating a multi-pack bitmap, remove per-pack bitmap files
 unconditionally as they will never be consulted.

 Will merge to 'master'.
 source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>


* nw/t1002-cleanup (2022-10-14) 1 commit
  (merged to 'next' on 2022-10-20 at e6ae742fef)
 + t1002: modernize outdated conditional

 Code clean-up in test.

 Will merge to 'master'.
 source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>


* jz/patch-id (2022-10-24) 6 commits
  (merged to 'next' on 2022-10-24 at 1ac3b46fbe)
 + builtin: patch-id: remove unused diff-tree prefix
 + builtin: patch-id: add --verbatim as a command mode
 + patch-id: fix patch-id for mode changes
 + builtin: patch-id: fix patch-id with binary diffs
 + patch-id: use stable patch-id for rebases
 + patch-id: fix stable patch id for binary / header-only

 A new "--include-whitespace" option is added to "git patch-id", and
 existing bugs in the internal patch-id logic that did not match
 what "git patch-id" produces have been corrected.

 Will merge to 'master'.
 source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-19) 10 commits
 . fixup! archive: add tests for git archive --recurse-submodules
 . archive: add tests for git archive --recurse-submodules
 . archive: add --recurse-submodules to git-archive command
 . archive: remove global repository from archive_args
 . archive: pass repo objects to write_archive handlers
 . tree: add repository parameter to read_tree_fn_t
 . tree: handle submodule case for read_tree_at properly
 . tree: increase test coverage for tree.c
 . tree: update cases to use repo_ tree methods
 . tree: do not use the_repository for tree traversal methods.

 "git archive" has been taught "--recurse-submodules" option to
 create a tarball that includes contents from submodules.

 Expecting a reroll.
 Seems to break win+VS test(8).
 cf. https://github.com/git/git/actions/runs/3293333066 whose only
 difference from https://github.com/git/git/actions/runs/3293553109
 is the inclusion of this topic.
 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
 - rebase --keep-base: imply --no-fork-point
 - rebase --keep-base: imply --reapply-cherry-picks
 - rebase: factor out branch_base calculation
 - rebase: rename merge_base to branch_base
 - rebase: store orig_head as a commit
 - rebase: be stricter when reading state files containing oids
 - t3416: set $EDITOR in subshell
 - t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Will merge to 'next'.
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
 - rebase: cleanup action handling
 - rebase --abort: improve reflog message
 - rebase --apply: make reflog messages match rebase --merge
 - rebase --apply: respect GIT_REFLOG_ACTION
 - rebase --merge: fix reflog message after skipping
 - rebase --merge: fix reflog when continuing
 - t3406: rework rebase reflog tests
 - rebase --apply: remove duplicated code
 - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.

 Will merge to 'next'.
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
  (merged to 'next' on 2022-10-25 at d122052431)
 + docs: git-send-email: difference between ssl and tls smtp-encryption

 Will merge to 'master'.
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 . Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.
 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ab/run-hook-api-cleanup (2022-10-12) 15 commits
  (merged to 'next' on 2022-10-20 at 29ca8c34dc)
 + run-command.c: remove "max_processes", add "const" to signal() handler
 + run-command.c: pass "opts" further down, and use "opts->processes"
 + run-command.c: use "opts->processes", not "pp->max_processes"
 + run-command.c: don't copy "data" to "struct parallel_processes"
 + run-command.c: don't copy "ungroup" to "struct parallel_processes"
 + run-command.c: don't copy *_fn to "struct parallel_processes"
 + run-command.c: make "struct parallel_processes" const if possible
 + run-command API: move *_tr2() users to "run_processes_parallel()"
 + run-command API: have run_process_parallel() take an "opts" struct
 + run-command.c: use designated init for pp_init(), add "const"
 + run-command API: don't fall back on online_cpus()
 + run-command API: make "n" parameter a "size_t"
 + run-command tests: use "return", not "exit"
 + run-command API: have "run_processes_parallel{,_tr2}()" return void
 + run-command test helper: use "else if" pattern
 (this branch is used by cw/submodule-status-in-parallel.)

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.

 Will merge to 'master'.
 source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
  (merged to 'next' on 2022-10-21 at c6d632ac1a)
 + tests: assert consistent whitespace in -h output
 + tests: start asserting that *.txt SYNOPSIS matches -h output
 + doc txt & -h consistency: make "worktree" consistent
 + worktree: define subcommand -h in terms of command -h
 + reflog doc: list real subcommands up-front
 + doc txt & -h consistency: make "commit" consistent
 + doc txt & -h consistency: make "diff-tree" consistent
 + doc txt & -h consistency: use "[<label>...]" for "zero or more"
 + doc txt & -h consistency: make "annotate" consistent
 + doc txt & -h consistency: make "stash" consistent
 + doc txt & -h consistency: add missing options
 + doc txt & -h consistency: use "git foo" form, not "git-foo"
 + doc txt & -h consistency: make "bundle" consistent
 + doc txt & -h consistency: make "read-tree" consistent
 + doc txt & -h consistency: make "rerere" consistent
 + doc txt & -h consistency: add missing options and labels
 + doc txt & -h consistency: make output order consistent
 + doc txt & -h consistency: add or fix optional "--" syntax
 + doc txt & -h consistency: fix mismatching labels
 + doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 + doc txt & -h consistency: use "<options>", not "<options>..."
 + stash doc SYNOPSIS & -h: correct padding around "[]()"
 + doc txt & -h consistency: correct padding around "[]()"
 + doc txt & -h consistency: balance unbalanced "[" and "]"
 + doc txt & -h consistency: add "-z" to cat-file "-h"
 + doc txt & -h consistency: fix incorrect alternates syntax
 + doc txt & -h consistency: word-wrap
 + built-ins: consistently add "\n" between "usage" and options
 + doc SYNOPSIS: consistently use ' for commands
 + doc SYNOPSIS: don't use ' for subcommands
 + bundle: define subcommand -h in terms of command -h
 + builtin/bundle.c: indent with tabs
 + CodingGuidelines: update and clarify command-line conventions
 + tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.

 Will merge to 'master'.
 source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>


* ab/coccicheck-incremental (2022-10-26) 12 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci rules: remove <id>'s from rules that don't need them
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Will merge to 'next'?
 source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
 - bundle-uri: suppress stderr from remote-https
 - bundle-uri: quiet failed unbundlings
 - bundle: add flags to verify_bundle()
 - bundle-uri: fetch a list of bundles
 - bundle: properly clear all revision flags
 - bundle-uri: limit recursion depth for bundle lists
 - bundle-uri: parse bundle list in config format
 - bundle-uri: unit test "key=value" parsing
 - bundle-uri: create "key=value" line parsing
 - bundle-uri: create base key-value pair parsing
 - bundle-uri: create bundle_list struct and helpers
 - bundle-uri: use plain string in find_temp_filename()
 - Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.

 Will merge to 'next'?
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-08-30) 17 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: make `state` optional
 - bisect--helper: calling `bisect_state()` without an argument is a bug
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection
 - bisect--helper: migrate to OPT_SUBCOMMAND()
 - bisect--helper: make the order consistently `argc, argv`
 - bisect--helper: make `terms` an explicit singleton
 - bisect--helper: simplify exit code computation
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jun 2022, #07; Wed, 22)
@ 2022-06-22 19:32  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-06-22 19:32 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.

Git 2.37-rc2 has been tagged.  Due to summer vacation season in the
northern hemisphere, this cycle is shorter than usual.  We expect to
tag the final 2.37 release early next week.  Hopefully we fixed all
the known regressions in 2.36 without adding too many new ones.

Some new topics are still marked for 'next', but the merges of them
obviously will happen in the next cycle---they will not be in the
upcoming release.

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/

--------------------------------------------------
[New Topics]

* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
 - i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: that is shown in front of
 these messages.

 Will merge to 'next'?
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
 - t5510: replace 'origin' with URL more carefully

 Test fix.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
 - combine-diff: abort if --output is given
 - combine-diff: abort if --ignore-matching-lines is given

 Certain diff options are currently ignored when combined-diff is
 shown; mark them as incompatible with the feature.

 Will merge to 'next'?
 source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-06-21) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Needs review.
 source: <pull.1262.v3.git.1655777140231.gitgitgadget@gmail.com>


* ab/test-quoting-fix (2022-06-21) 3 commits
 - config tests: fix harmless but broken "rm -r" cleanup
 - test-lib.sh: fix prepend_var() quoting issue
 - tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.

 Expecting a reroll.
 source: <cover-0.3-00000000000-20220621T221928Z-avarab@gmail.com>


* en/merge-dual-dir-renames-fix (2022-06-21) 3 commits
 - merge-ort: fix issue with dual rename and add/add conflict
 - merge-ort: shuffle the computation and cleanup of potential collisions
 - t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Needs review.
 source: <pull.1268.git.1655871651.gitgitgadget@gmail.com>

--------------------------------------------------
[Graduated to 'master']

* jp/prompt-clear-before-upstream-mark (2022-06-10) 2 commits
  (merged to 'next' on 2022-06-15 at e580db03e9)
 + git-prompt: fix expansion of branch colour codes
  (merged to 'next' on 2022-06-08 at 201a84ad63)
 + git-prompt: make colourization consistent

 Bash command line prompt (in contrib/) update.
 source: <20220607115024.64724-1-joak-pet@online.no>


* tb/cruft-packs (2022-06-21) 1 commit
  (merged to 'next' on 2022-06-21 at 0703251124)
 + gc: simplify --cruft description

 Docfix.
 source: <157741e2-cd06-9304-bb21-c67c2cbd923e@web.de>

--------------------------------------------------
[Stalled]

* en/merge-tree (2022-02-23) 13 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: split out a separate display_update_messages() function
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()
 - Merge branch 'en/remerge-diff' into en/merge-trees

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 On hold.
 cf. <CABPp-BGZ7OAYRR5YKRsxJSo-C=ho+qcNAkqwkim8CkhCfCeHsA@mail.gmail.com>
 source: <pull.1122.v6.git.1645602413.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* cr/setup-bug-typo (2022-06-17) 1 commit
  (merged to 'next' on 2022-06-17 at 8834ffe0ab)
 + setup: fix function name in a BUG() message

 Typofix in a BUG() message.

 Will cook in 'next'.
 source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
 - send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".

 Will merge to 'next'?
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
 - remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspecs.

 Will merge to 'next'?
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
  (merged to 'next' on 2022-06-16 at ce0712a74c)
 + is_promisor_object(): walk promisor packs in pack-order

 Collection of what is referenced by objects in promisor packs have
 been optimized to inspect these objects in the in-pack order.

 Will cook in 'next'.
 source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
 - mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary.

 Will merge to 'next'?
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* ll/curl-accept-language (2022-06-13) 2 commits
 - PREP??? give initializer to rpc_state
 - remote-curl: send Accept-Language header to server

 source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>


* pb/diff-doc-raw-format (2022-06-13) 3 commits
 - diff-index.txt: update raw output format in examples
 - diff-format.txt: correct misleading wording
 - diff-format.txt: dst can be 0* SHA-1 when path is deleted, too

 source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>


* rs/archive-with-internal-gzip (2022-06-15) 6 commits
  (merged to 'next' on 2022-06-17 at ab5af6acd1)
 + archive-tar: use internal gzip by default
 + archive-tar: use OS_CODE 3 (Unix) for internal gzip
 + archive-tar: add internal gzip implementation
 + archive-tar: factor out write_block()
 + archive: rename archiver data field to filter_command
 + archive: update format documentation

 Teach "git archive" to (optionally and then by default) avoid
 spawning an external "gzip" process when creating ".tar.gz" (and
 ".tgz") archives.

 Will cook in 'next'.
 source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>


* ds/branch-checked-out (2022-06-21) 7 commits
  (merged to 'next' on 2022-06-21 at e42bc4566f)
 + branch: drop unused worktrees variable
 + fetch: stop passing around unused worktrees variable
  (merged to 'next' on 2022-06-17 at c881874257)
 + branch: fix branch_checked_out() leaks
 + branch: use branch_checked_out() when deleting refs
 + fetch: use new branch_checked_out() and add tests
 + branch: check for bisects and rebases
 + branch: add branch_checked_out() helper

 Introduce a helper to see if a branch is already being worked on
 (hence should not be newly checked out in a working tree), which
 performs much better than the existing find_shared_symref() to
 replace many uses of the latter.

 Will cook in 'next'.
 source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* gc/submodule-update (2022-06-15) 12 commits
 - git-sh-setup.sh: remove "say" function, change last users
 - git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 - submodule--helper: eliminate internal "--update" option
 - submodule--helper: understand --checkout, --merge and --rebase synonyms
 - submodule--helper: report "submodule" as our name in "-h" output
 - submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 - submodule update: remove "-v" option
 - submodule--helper: have --require-init imply --init
 - git-submodule.sh: remove unused top-level "--branch" argument
 - git-submodule.sh: make "$cached" variable a boolean
 - git-submodule.sh: remove unused $prefix var and --super-prefix
 - git-submodule.sh: remove unused sanitize_submodule_env()

 More work on "git submodule update".

 Needs review.
 source: <cover-v2-00.12-00000000000-20220613T220150Z-avarab@gmail.com>


* jc/resolve-undo (2022-06-09) 1 commit
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will cook in 'next'.
 source: <xmqqfskdieqz.fsf@gitster.g>


* ab/build-gitweb (2022-06-02) 7 commits
 - Makefile: build 'gitweb' in the default target
 - gitweb/Makefile: include in top-level Makefile
 - gitweb: remove "test" and "test-installed" targets
 - gitweb/Makefile: prepare to merge into top-level Makefile
 - gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 - gitweb/Makefile: add a $(GITWEB_ALL) variable
 - gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Needs review.
 source: <cover-v2-0.7-00000000000-20220531T173805Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
 - tests: don't assume a .git/info for .git/info/sparse-checkout
 - tests: don't assume a .git/info for .git/info/exclude
 - tests: don't assume a .git/info for .git/info/refs
 - tests: don't assume a .git/info for .git/info/attributes
 - tests: don't assume a .git/info for .git/info/grafts
 - tests: don't depend on template-created .git/branches
 - t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'next'?
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* ac/bitmap-format-doc (2022-06-16) 3 commits
  (merged to 'next' on 2022-06-16 at 5591d11601)
 + bitmap-format.txt: add information for trailing checksum
 + bitmap-format.txt: fix some formatting issues
 + bitmap-format.txt: feed the file to asciidoc to generate html

 Adjust technical/bitmap-format to be formatted by AsciiDoc, and
 add some missing information to the documentation.

 Will cook in 'next'.
 source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
 - unpack-objects: use stream_loose_object() to unpack large objects
 - core doc: modernize core.bigFileThreshold documentation
 - object-file.c: add "stream_loose_object()" to handle large object
 - object-file.c: factor out deflate part of write_loose_object()
 - object-file.c: refactor write_loose_object() to several steps
 - unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'next'?
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-05-21) 15 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message

 Final bits of "git bisect.sh" have been rewritten in C.

 The command line parsing is reported to be still broken.
 cf. <220521.86zgjazuy4.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v3.git.1653144546.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-06-07) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: read protected config with `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Expecting a reroll.
 cf. <xmqqbkv4t7gp.fsf@gitster.g>
 source: <29053d029f8ec61095a2ad557be38b1d485a158f.1654635432.git.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
 - dir: minor refactoring / clean-up
 - dir: traverse into repository

 With a non-bare repository, with core.worktree pointing at a
 directory that has the repository as its subdirectory, regressed in
 Git 2.27 days.

 Will merge to 'next'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>


* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 - send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Will discard.

 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.

 Thoughts?
 source: <20220422083629.1404989-1-hi@alyssa.is>

--------------------------------------------------
[Discarded]

* jc/apply-icase-tests (2022-06-13) 1 commit
 . t4141: test "git apply" with core.ignorecase

 Now a part of tk/apply-case-insensitive topic.
 source: <xmqqo7yw77qo.fsf@gitster.g>


* tl/pack-bitmap-trace (2022-06-21) 5 commits
 . bitmap: add trace2 outputs during open "bitmap" file
 . pack-bitmap.c: using error() instead of silently returning -1
 . pack-bitmap.c: make warnings support i18N when opening bitmap
 . pack-bitmap.c: rename "idx_name" to "bitmap_name"
 . pack-bitmap.c: continue looping when first MIDX bitmap is found

 Add trace2 traces in code paths involving the pack bitmaps.

 source: <cover.1655817253.git.dyroneteng@gmail.com>



^ permalink raw reply	[relevance 3%]

* [PATCH v5 0/8] Fix merge restore state
  2022-07-22  5:15  3%     ` [PATCH v4 " Elijah Newren via GitGitGadget
@ 2022-07-23  1:53  3%       ` Elijah Newren via GitGitGadget
  0 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-23  1:53 UTC (permalink / raw)
  To: git
  Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
	Ævar Arnfjörð Bjarmason, Elijah Newren

This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It now fixes several bugs and has
grown so much it's hard to call it simple. Anyway...

Changes since v4:

 * Made use of the error() function in another place to simplify code
   (should have caught this in v3)
 * Split the fixes for 'resolve' and the trivial merge into separate
   patches, and make sure one doesn't mask the other but both codepaths are
   exercises in the testsuite
 * better test descriptions
 * use strvec to simplify some code

[1]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/

Elijah Newren (8):
  merge-ort-wrappers: make printed message match the one from recursive
  merge-resolve: abort if index does not match HEAD
  merge: abort if index does not match HEAD for trivial merges
  merge: do not abort early if one strategy fails to handle the merge
  merge: fix save_state() to work when there are stat-dirty files
  merge: make restore_state() restore staged state too
  merge: ensure we can actually restore pre-merge state
  merge: do not exit restore_state() prematurely

 builtin/merge.c                          | 57 ++++++++++++++++-----
 git-merge-resolve.sh                     | 10 ++++
 merge-ort-wrappers.c                     |  4 +-
 t/t6402-merge-rename.sh                  |  2 +-
 t/t6424-merge-unrelated-index-changes.sh | 65 ++++++++++++++++++++++++
 t/t6439-merge-co-error-msgs.sh           |  1 +
 t/t7607-merge-state.sh                   | 32 ++++++++++++
 7 files changed, 154 insertions(+), 17 deletions(-)
 create mode 100755 t/t7607-merge-state.sh


base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v5
Pull-Request: https://github.com/gitgitgadget/git/pull/1231

Range-diff vs v4:

 1:  bd36d16c8d9 = 1:  bd36d16c8d9 merge-ort-wrappers: make printed message match the one from recursive
 2:  b79f44e54b9 ! 2:  b656756fd37 merge-resolve: abort if index does not match HEAD
     @@ Commit message
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     - ## builtin/merge.c ##
     -@@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
     - 		 */
     - 		refresh_cache(REFRESH_QUIET);
     - 		if (allow_trivial && fast_forward != FF_ONLY) {
     -+			/*
     -+			 * Must first ensure that index matches HEAD before
     -+			 * attempting a trivial merge.
     -+			 */
     -+			struct tree *head_tree = get_commit_tree(head_commit);
     -+			struct strbuf sb = STRBUF_INIT;
     -+
     -+			if (repo_index_has_changes(the_repository, head_tree,
     -+						   &sb)) {
     -+				struct strbuf err = STRBUF_INIT;
     -+				strbuf_addstr(&err, "error: ");
     -+				strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     -+					    sb.buf);
     -+				strbuf_addch(&err, '\n');
     -+				fputs(err.buf, stderr);
     -+				strbuf_release(&err);
     -+				strbuf_release(&sb);
     -+				return -1;
     -+			}
     -+
     - 			/* See if it is really trivial. */
     - 			git_committer_info(IDENT_STRICT);
     - 			printf(_("Trying really trivial in-index merge...\n"));
     -
       ## git-merge-resolve.sh ##
      @@
       #
     @@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve, non-triv
       	test_path_is_missing .git/MERGE_HEAD
       '
       
     -+test_expect_success 'resolve, trivial, related file removed' '
     -+	git reset --hard &&
     -+	git checkout B^0 &&
     -+
     -+	git rm a &&
     -+	test_path_is_missing a &&
     -+
     -+	test_must_fail git merge -s resolve C^0 &&
     -+
     -+	test_path_is_missing a &&
     -+	test_path_is_missing .git/MERGE_HEAD
     -+'
     -+
      +test_expect_success 'resolve, non-trivial, related file removed' '
      +	git reset --hard &&
      +	git checkout B^0 &&
 -:  ----------- > 3:  3adfd921995 merge: abort if index does not match HEAD for trivial merges
 3:  02930448ea1 ! 4:  c5755271cf1 merge: do not abort early if one strategy fails to handle the merge
     @@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
       	test_path_is_missing .git/MERGE_HEAD
       '
       
     -+test_expect_success 'resolve && recursive && ort' '
     ++test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
      +	git reset --hard &&
      +	git checkout B^0 &&
      +
     @@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
      +	git add a &&
      +
      +	sane_unset GIT_TEST_MERGE_ALGORITHM &&
     -+	test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
     ++	test_must_fail git merge -s recursive -s ort -s octopus C^0 >output 2>&1 &&
      +
     -+	grep "Trying merge strategy resolve..." output &&
      +	grep "Trying merge strategy recursive..." output &&
      +	grep "Trying merge strategy ort..." output &&
     ++	grep "Trying merge strategy octopus..." output &&
      +	grep "No merge strategy handled the merge." output
      +'
      +
 4:  daf8d224160 ! 5:  e7c6de9e0c1 merge: fix save_state() to work when there are stat-dirty files
     @@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
      +	git merge -s resolve -s recursive D^0
      +'
      +
     - test_expect_success 'resolve && recursive && ort' '
     + test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
       	git reset --hard &&
       	git checkout B^0 &&
 5:  f401bd5ad0d ! 6:  d39d6472455 merge: make restore_state() restore staged state too
     @@ Commit message
          changes.  Fix this by adding the "--index" option to "git stash apply".
          While at it, also squelch the stash apply output; we already report
          "Rewinding the tree to pristine..." and don't need a detailed `git
     -    status` report afterwards.
     +    status` report afterwards.  Also while at it, switch to using strvec
     +    so folks don't have to count the arguments to ensure we avoided an
     +    off-by-one error, and so it's easier to add additional arguments to
     +    the command.
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     @@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
       			  const struct object_id *stash)
       {
      -	const char *args[] = { "stash", "apply", NULL, NULL };
     -+	const char *args[] = { "stash", "apply", "--index", "--quiet",
     -+			       NULL, NULL };
     ++	struct strvec args = STRVEC_INIT;
       
       	if (is_null_oid(stash))
       		return;
     @@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
       	reset_hard(head, 1);
       
      -	args[2] = oid_to_hex(stash);
     -+	args[4] = oid_to_hex(stash);
     ++	strvec_pushl(&args, "stash", "apply", "--index", "--quiet", NULL);
     ++	strvec_push(&args, oid_to_hex(stash));
       
       	/*
       	 * It is OK to ignore error here, for example when there was
     + 	 * nothing to restore.
     + 	 */
     +-	run_command_v_opt(args, RUN_GIT_CMD);
     ++	run_command_v_opt(args.v, RUN_GIT_CMD);
     ++	strvec_clear(&args);
     + 
     + 	refresh_cache(REFRESH_QUIET);
     + }
      
       ## t/t6424-merge-unrelated-index-changes.sh ##
     -@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
     +@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'with multiple strategies, recursive or ort failure do not e
       
       	test_seq 0 10 >a &&
       	git add a &&
      +	git rev-parse :a >expect &&
       
       	sane_unset GIT_TEST_MERGE_ALGORITHM &&
     - 	test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
     -@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
     - 	grep "Trying merge strategy resolve..." output &&
     + 	test_must_fail git merge -s recursive -s ort -s octopus C^0 >output 2>&1 &&
     +@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'with multiple strategies, recursive or ort failure do not e
       	grep "Trying merge strategy recursive..." output &&
       	grep "Trying merge strategy ort..." output &&
     + 	grep "Trying merge strategy octopus..." output &&
      -	grep "No merge strategy handled the merge." output
      +	grep "No merge strategy handled the merge." output &&
      +
 6:  ad5354c219c = 7:  7f5c6884d68 merge: ensure we can actually restore pre-merge state
 7:  6212d572604 ! 8:  954dec526a2 merge: do not exit restore_state() prematurely
     @@ Commit message
      
       ## builtin/merge.c ##
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,
     - 	const char *args[] = { "stash", "apply", "--index", "--quiet",
     - 			       NULL, NULL };
     + {
     + 	struct strvec args = STRVEC_INIT;
       
      -	if (is_null_oid(stash))
      -		return;
     @@ builtin/merge.c: static void restore_state(const struct object_id *head,
      +	if (is_null_oid(stash))
      +		goto refresh_cache;
      +
     - 	args[4] = oid_to_hex(stash);
     + 	strvec_pushl(&args, "stash", "apply", "--index", "--quiet", NULL);
     + 	strvec_push(&args, oid_to_hex(stash));
       
     - 	/*
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,
     - 	 */
     - 	run_command_v_opt(args, RUN_GIT_CMD);
     + 	run_command_v_opt(args.v, RUN_GIT_CMD);
     + 	strvec_clear(&args);
       
      -	refresh_cache(REFRESH_QUIET);
      +refresh_cache:
     @@ t/t7607-merge-state.sh (new)
      +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
      +. ./test-lib.sh
      +
     -+test_expect_success 'set up custom strategy' '
     ++test_expect_success 'Ensure we restore original state if no merge strategy handles it' '
      +	test_commit --no-tag "Initial" base base &&
      +
      +	for b in branch1 branch2 branch3

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Oct 2022, #08; Fri, 28)
@ 2022-10-28 22:51  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-28 22:51 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.  A topic without enough support may be
discarded after a long period of no activity.

Starting from next week (week #4---see https://tinyurl.com/gitCal),
we'll try a mini "bus factor" exercise, where I will disappear from
the list for a few weeks.  See the previous issue of this report
for details: https://lore.kernel.org/git/xmqqwn8mh1di.fsf@gitster.g/

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']

* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
  (merged to 'next' on 2022-10-21 at c6d632ac1a)
 + tests: assert consistent whitespace in -h output
 + tests: start asserting that *.txt SYNOPSIS matches -h output
 + doc txt & -h consistency: make "worktree" consistent
 + worktree: define subcommand -h in terms of command -h
 + reflog doc: list real subcommands up-front
 + doc txt & -h consistency: make "commit" consistent
 + doc txt & -h consistency: make "diff-tree" consistent
 + doc txt & -h consistency: use "[<label>...]" for "zero or more"
 + doc txt & -h consistency: make "annotate" consistent
 + doc txt & -h consistency: make "stash" consistent
 + doc txt & -h consistency: add missing options
 + doc txt & -h consistency: use "git foo" form, not "git-foo"
 + doc txt & -h consistency: make "bundle" consistent
 + doc txt & -h consistency: make "read-tree" consistent
 + doc txt & -h consistency: make "rerere" consistent
 + doc txt & -h consistency: add missing options and labels
 + doc txt & -h consistency: make output order consistent
 + doc txt & -h consistency: add or fix optional "--" syntax
 + doc txt & -h consistency: fix mismatching labels
 + doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
 + doc txt & -h consistency: use "<options>", not "<options>..."
 + stash doc SYNOPSIS & -h: correct padding around "[]()"
 + doc txt & -h consistency: correct padding around "[]()"
 + doc txt & -h consistency: balance unbalanced "[" and "]"
 + doc txt & -h consistency: add "-z" to cat-file "-h"
 + doc txt & -h consistency: fix incorrect alternates syntax
 + doc txt & -h consistency: word-wrap
 + built-ins: consistently add "\n" between "usage" and options
 + doc SYNOPSIS: consistently use ' for commands
 + doc SYNOPSIS: don't use ' for subcommands
 + bundle: define subcommand -h in terms of command -h
 + builtin/bundle.c: indent with tabs
 + CodingGuidelines: update and clarify command-line conventions
 + tests: assert *.txt SYNOPSIS and -h output

 The short-help text shown by "git cmd -h" and the synopsis text
 shown at the beginning of "git help cmd" have been made more
 consistent.
 source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>


* ab/run-hook-api-cleanup (2022-10-12) 15 commits
  (merged to 'next' on 2022-10-20 at 29ca8c34dc)
 + run-command.c: remove "max_processes", add "const" to signal() handler
 + run-command.c: pass "opts" further down, and use "opts->processes"
 + run-command.c: use "opts->processes", not "pp->max_processes"
 + run-command.c: don't copy "data" to "struct parallel_processes"
 + run-command.c: don't copy "ungroup" to "struct parallel_processes"
 + run-command.c: don't copy *_fn to "struct parallel_processes"
 + run-command.c: make "struct parallel_processes" const if possible
 + run-command API: move *_tr2() users to "run_processes_parallel()"
 + run-command API: have run_process_parallel() take an "opts" struct
 + run-command.c: use designated init for pp_init(), add "const"
 + run-command API: don't fall back on online_cpus()
 + run-command API: make "n" parameter a "size_t"
 + run-command tests: use "return", not "exit"
 + run-command API: have "run_processes_parallel{,_tr2}()" return void
 + run-command test helper: use "else if" pattern
 (this branch is used by cw/submodule-status-in-parallel.)

 Move a global variable added as a hack during regression fixes to
 its proper place in the API.
 source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>


* jk/unused-anno-more (2022-10-17) 12 commits
  (merged to 'next' on 2022-10-20 at 0e52ab6cf9)
 + ll-merge: mark unused parameters in callbacks
 + diffcore-pickaxe: mark unused parameters in pickaxe functions
 + convert: mark unused parameter in null stream filter
 + apply: mark unused parameters in noop error/warning routine
 + apply: mark unused parameters in handlers
 + date: mark unused parameters in handler functions
 + string-list: mark unused callback parameters
 + object-file: mark unused parameters in hash_unknown functions
 + mark unused parameters in trivial compat functions
 + update-index: drop unused argc from do_reupdate()
 + submodule--helper: drop unused argc from module_list_compute()
 + diffstat_consume(): assert non-zero length

 More UNUSED annotation to help using -Wunused option with the
 compiler.
 source: <Y036whEorZV0rOgB@coredump.intra.peff.net>


* js/cmake-updates (2022-10-19) 5 commits
  (merged to 'next' on 2022-10-21 at 012ec675ba)
 + cmake: increase time-out for a long-running test
 + cmake: avoid editing t/test-lib.sh
 + add -p: avoid ambiguous signed/unsigned comparison
 + cmake: copy the merge tools for testing
 + cmake: make it easier to diagnose regressions in CTest runs

 Update to build procedure with VS using CMake/CTest.
 source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>


* mm/git-pm-try-catch-syntax-fix (2022-10-22) 2 commits
  (merged to 'next' on 2022-10-23 at 011a23710f)
 + Git.pm: trust rev-parse to find bare repositories
  (merged to 'next' on 2022-10-21 at 7896738c3b)
 + Git.pm: add semicolon after catch statement

 Fix a longstanding syntax error in Git.pm error codepath.
 source: <20221016212236.12453-1-michael@mcclimon.org>
 source: <Y1Rdtog/XQV0YLj0@coredump.intra.peff.net>


* nw/t1002-cleanup (2022-10-14) 1 commit
  (merged to 'next' on 2022-10-20 at e6ae742fef)
 + t1002: modernize outdated conditional

 Code clean-up in test.
 source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>


* tb/diffstat-with-utf8-strwidth (2022-10-21) 2 commits
  (merged to 'next' on 2022-10-23 at 43a17bfeac)
 + diff: leave NEEDWORK notes in show_stats() function
 + diff.c: use utf8_strwidth() to count display width

 "git diff --stat" etc. were invented back when everything was ASCII
 and strlen() was a way to measure the display width of a string;
 adjust them to compute the display width assuming UTF-8 pathnames.
 source: <20220914151333.3309-1-tboegi@web.de>


* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
  (merged to 'next' on 2022-10-20 at b4d98bb5e4)
 + pack-bitmap-write.c: instrument number of reused bitmaps
 + midx.c: instrument MIDX and bitmap generation with trace2 regions
 + midx.c: consider annotated tags during bitmap selection
 + midx.c: fix whitespace typo

 A bugfix with tracing support in midx codepath
 source: <cover.1665612094.git.me@ttaylorr.com>


* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
  (merged to 'next' on 2022-10-21 at ebb68add44)
 + builtin/repack.c: remove redundant pack-based bitmaps

 When creating a multi-pack bitmap, remove per-pack bitmap files
 unconditionally as they will never be consulted.
 source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>


* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
  (merged to 'next' on 2022-10-20 at c88c17eb52)
 + repack: don't remove .keep packs with `--pack-kept-objects`

 When geometric repacking feature is in use together with the
 --pack-kept-objects option, we lost packs marked with .keep files.
 source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>

--------------------------------------------------
[New Topics]

* ab/config-multi-and-nonbool (2022-10-27) 10 commits
 - for-each-repo: with bad config, don't conflate <path> and <cmd>
 - config API: add "string" version of *_value_multi(), fix segfaults
 - config tests: add "NULL" tests for *_get_value_multi()
 - config API: add and use "lookup_value" functions
 - builtin/gc.c: use "unsorted_string_list_has_string()" where appropriate
 - string-list API: make has_string() and list_lookup() "const"
 - string-list API: mark "struct_string_list" to "for_each_string_list" const
 - config API: mark *_multi() with RESULT_MUST_BE_USED
 - for-each-repo: error on bad --config
 - config API: have *_multi() return an "int" and take a "dest"

 A mixed bag of config API updates.

 Expecting a reroll.
 cf. <221026.86pmeebcj9.gmgdl@evledraar.gmail.com>
 source: <cover-00.10-00000000000-20221026T151328Z-avarab@gmail.com>


* ab/sha-makefile-doc (2022-10-26) 9 commits
 - Makefile: discuss SHAttered in *_SHA{1,256} discussion
 - Makefile: document default SHA-1 backend on OSX
 - Makefile: document SHA-1 and SHA-256 default and selection order
 - Makefile: document default SHA-256 backend
 - Makefile: rephrase the discussion of *_SHA1 knobs
 - Makefile: create and use sections for "define" flag listing
 - Makefile: correct DC_SHA1 documentation
 - INSTALL: remove discussion of SHA-1 backends
 - Makefile: always (re)set DC_SHA1 on fallback

 Makefile comments updates and reordering to clarify knobs used to
 choose SHA implementations.

 Will merge to 'next'?
 source: <cover-v4-0.9-00000000000-20221026T145255Z-avarab@gmail.com>


* rs/no-more-run-command-v (2022-10-28) 9 commits
 - run-command: fix return value comment
 - replace and remove run_command_v_opt()
 - replace and remove run_command_v_opt_cd_env_tr2()
 - replace and remove run_command_v_opt_tr2()
 - replace and remove run_command_v_opt_cd_env()
 - use child_process member "args" instead of string array variable
 - use child_process members "args" and "env" directly
 - bisect--helper: factor out do_bisect_run()
 - merge: remove always-the-same "verbose" arguments

 Simplify the run-command API.

 Will merge to 'next'?
 source: <7407e074-4bd8-b351-7fa4-baf59b41880c@web.de>
 source: <8428e83f-9deb-e928-8699-b5b13e8b7577@web.de>


* tb/howto-using-redo-script (2022-10-26) 1 commit
 - Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation

 Doc update.

 Will merge to 'next'.
 source: <4ba057094ae6b1bd5c18583f23f7f99232034c72.1666815325.git.me@ttaylorr.com>


* ps/receive-use-only-advertised (2022-10-28) 3 commits
 - SQUASH - leakfix
 - receive-pack: use advertised reference tips to inform connectivity check
 - connected: allow supplying different view of reachable objects

 "git receive-pack" used to use all the local refs as the boundary
 for checking connectivity of the data "git push" sent, but now it
 uses only the refs that it advertised to the pusher.  In a
 repository with the .hideRefs configuration, this reduces the
 resource needed to perform the check, and also forces the pusher to
 prove they have all objects that are necessary to complete the
 history on top of only the history available to them.

 Expecting a reroll.
 cf. <221028.86bkpw805n.gmgdl@evledraar.gmail.com>
 cf. <xmqqr0yrizqm.fsf@gitster.g>
 source: <cover.1666967670.git.ps@pks.im>


* jc/set-gid-bit-less-aggressively (2022-10-28) 1 commit
 - adjust_shared_perm(): leave g+s alone when the group does not matter

 The adjust_shared_perm() helper function learned to refrain from
 setting the "g+s" bit on directories when it is not necessary.

 Will merge to 'next'??
 source: <xmqqr0yrhco6.fsf@gitster.g>

--------------------------------------------------
[Stalled]

* cw/submodule-status-in-parallel (2022-10-20) 7 commits
 . diff-lib: parallelize run_diff_files for submodules
 . diff-lib: refactor match_stat_with_submodule
 . submodule: move status parsing into function
 . submodule: strbuf variable rename
 . run-command: add hide_output to run_processes_parallel_opts
 . run-command: add pipe_output_fn to run_processes_parallel_opts
 . Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel

 Allow the internal "diff-files" engine to run "how has this
 submodule changed?" in parallel to speed up "git status".

 Breaks winVS test?
 cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
 source: <20221011232604.839941-1-calvinwan@google.com>


* js/bisect-in-c (2022-08-30) 17 commits
 . bisect: no longer try to clean up left-over `.git/head-name` files
 . bisect: remove Cogito-related code
 . Turn `git bisect` into a full built-in
 . bisect: move even the command-line parsing to `bisect--helper`
 . bisect--helper: make `state` optional
 . bisect--helper: calling `bisect_state()` without an argument is a bug
 . bisect: avoid double-quoting when printing the failed command
 . bisect run: fix the error message
 . bisect: verify that a bogus option won't try to start a bisection
 . bisect--helper: migrate to OPT_SUBCOMMAND()
 . bisect--helper: make the order consistently `argc, argv`
 . bisect--helper: make `terms` an explicit singleton
 . bisect--helper: simplify exit code computation
 . bisect--helper: really retire `--bisect-autostart`
 . bisect--helper: really retire --bisect-next-check
 . bisect--helper: retire the --no-log option
 . Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c

 Final bits of "git bisect.sh" have been rewritten in C.

 Needs review.
 cf. <xmqqv8pr8903.fsf@gitster.g>
 source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>


* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
 . ci(main): linux32 uses actions/checkout@v2
 . ci(main): upgrade actions/checkout to v3

 Attempt to update GitHub CI to use actions/checkout@v3

 Expecting a reroll.
 Seems to break the CI completely.
 source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>


* ed/fsmonitor-inotify (2022-10-14) 7 commits
 . fsmonitor: update doc for Linux
 . fsmonitor: test updates
 . fsmonitor: enable fsmonitor for Linux
 . fsmonitor: implement filesystem change listener for Linux
 . fsmonitor: determine if filesystem is local or remote
 . fsmonitor: prepare to share code between Mac OS and Linux
 . Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify

 Bundled fsmonitor for Linux using inotify API.

 Needs review.
 Occasional breakages of t7527.16?
 source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>


* ag/merge-strategies-in-c (2022-08-10) 14 commits
 . sequencer: use the "octopus" strategy without forking
 . sequencer: use the "resolve" strategy without forking
 . merge: use the "octopus" strategy without forking
 . merge: use the "resolve" strategy without forking
 . merge-octopus: rewrite in C
 . merge-recursive: move better_branch_name() to merge.c
 . merge-resolve: rewrite in C
 . merge-one-file: rewrite in C
 . update-index: move add_cacheinfo() to read-cache.c
 . merge-index: add a new way to invoke `git-merge-one-file'
 . merge-index: drop the index
 . merge-index: libify merge_one_path() and merge_all()
 . t6060: add tests for removed files
 . t6060: modify multiple files to expose a possible issue with merge-index

 An attempt to rewrite remaining merge strategies from shell to C.

 Needs more work.
 At the minimum, we should lose 11/14 and possibly 08/14.
 cf. <xmqq7d36vfur.fsf@gitster.g>
 source: <20220809185429.20098-1-alban.gruin@gmail.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 . range-diff: clarify --creation-factor=<factor>
 . format-patch: clarify --creation-factor=<factor>

 Expecting a reroll by somebody more familiar with the logic
 cf. <xmqqo7wfix7p.fsf@gitster.g>
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* cw/remote-object-info (2022-08-13) 7 commits
 . SQUASH???
 . cat-file: add remote-object-info to batch-command
 . transport: add client support for object-info
 . serve: advertise object-info feature
 . protocol-caps: initialization bug fix
 . fetch-pack: move fetch initialization
 . fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
 cf. <20220728230210.2952731-1-calvinwan@google.com>
 cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
 source: <20220728230210.2952731-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* gc/submodule-clone-update-with-branches (2022-10-28) 8 commits
 - clone, submodule update: create and check out branches
 - submodule--helper: remove update_data.suboid
 - submodule update: refactor update targets
 - submodule: return target of submodule symref
 - t5617: drop references to remote-tracking branches
 - submodule--helper clone: create named branch
 - repo-settings: add submodule_propagate_branches
 - clone: teach --detach option

 "git clone --recurse-submodules" and "git submodule update" learns
 to honor the "propagete branches" option.
 source: <pull.1321.v3.git.git.1666988096.gitgitgadget@gmail.com>


* es/mark-gc-cruft-as-experimental (2022-10-26) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Will merge to 'next'.
 source: <cover.1666819953.git.me@ttaylorr.com>


* tb/shortlog-group (2022-10-24) 7 commits
  (merged to 'next' on 2022-10-26 at 76e64a6036)
 + shortlog: implement `--group=committer` in terms of `--group=<format>`
 + shortlog: implement `--group=author` in terms of `--group=<format>`
 + shortlog: extract `shortlog_finish_setup()`
 + shortlog: support arbitrary commit format `--group`s
 + shortlog: extract `--group` fragment for translation
 + shortlog: make trailer insertion a noop when appropriate
 + shortlog: accept `--date`-related options

 "git shortlog" learned to group by the "format" string.

 Will merge to 'master'.
 source: <cover.1666637725.git.me@ttaylorr.com>


* pw/config-int-parse-fixes (2022-10-22) 3 commits
 - git_parse_signed(): avoid integer overflow
 - config: require at least one digit when parsing numbers
 - git_parse_unsigned: reject negative values

 Assorted fixes of parsing end-user input as integers.

 Expecting a reroll to add test coverage.
 cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
 source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-10-21) 1 commit
 - doc/cat-file: allow --use-mailmap for --batch options

 Doc updates.

 Waiting for review response.
 source: <20221021103442.202759-1-siddharthasthana31@gmail.com>


* sg/stable-docdep (2022-10-21) 1 commit
  (merged to 'next' on 2022-10-26 at 68432e1b2c)
 + Documentation/build-docdep.perl: generate sorted output

 Make sure generated dependency file is stably sorted to help
 developers debugging their build issues.

 Will merge to 'master'.
 source: <20221021102950.539148-1-szeder.dev@gmail.com>


* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
  (merged to 'next' on 2022-10-27 at 4f2134dd87)
 + subtree: fix split after annotated tag was squashed merged
 + subtree: fix squash merging after annotated tag was squashed merged
 + subtree: process 'git-subtree-split' trailer in separate function
 + subtree: use named variables instead of "$@" in cmd_pull
 + subtree: define a variable before its first use in 'find_latest_squash'
 + subtree: prefix die messages with 'fatal'
 + subtree: add 'die_incompatible_opt' function to reduce duplication
 + subtree: use 'git rev-parse --verify [--quiet]' for better error messages
 + test-lib-functions: mark 'test_commit' variables as 'local'

 A bugfix to "git subtree" in its split and merge features.

 Will merge to 'master'.
 source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>


* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
  (merged to 'next' on 2022-10-26 at e706eb120c)
 + t7700: annotate cruft-pack failure with ok=sigpipe
 + repack: drop remove_temporary_files()
 + repack: use tempfiles for signal cleanup
 + repack: expand error message for missing pack files
 + repack: populate extension bits incrementally
 + repack: convert "names" util bitfield to array

 The way "git repack" creared temporary files when it received a
 signal was prone to deadlocking, which has been corrected.

 Will merge to 'master'.
 source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>


* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
  (merged to 'next' on 2022-10-27 at 56f1e5222d)
 + merge-ort: fix bug with dir rename vs change dir to symlink

 Merging a branch with directory renames into a branch that changes
 the directory to a symlink was mishandled by the ort merge
 strategy, which has been corrected.

 Will merge to 'master'.
 source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>


* en/merge-tree-sequence (2022-10-22) 2 commits
  (merged to 'next' on 2022-10-28 at 31459cd5a8)
 + merge-tree: support multiple batched merges with --stdin
 + merge-tree: update documentation for differences in -z output

 "git merge-tree --stdin" is a new way to request a series of merges
 and report the merge results.

 Will merge to 'master'.
 source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>


* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
  (merged to 'next' on 2022-10-26 at 3d23cfd399)
 + submodule: use strvec_pushf() for --super-prefix

 Code simplification by using strvec_pushf() instead of building an
 argument in a separate strbuf.

 Will merge to 'master'.
 source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>


* jc/doc-fsck-msgids (2022-10-25) 4 commits
  (merged to 'next' on 2022-10-28 at 3c00edabf8)
 + Documentation: add lint-fsck-msgids
 + fsck: document msg-id
 + fsck: remove the unused MISSING_TREE_OBJECT
 + fsck: remove the unused BAD_TAG_OBJECT

 Add documentation for message IDs in fsck error messages.

 Will merge to 'master'.
 source: <20221025224224.2352979-1-gitster@pobox.com>


* tb/repack-expire-to (2022-10-24) 4 commits
 - builtin/repack.c: implement `--expire-to` for storing pruned objects
 - builtin/repack.c: write cruft packs to arbitrary locations
 - builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
 - builtin/repack.c: pass "out" to `prepare_pack_objects`

 "git repack" learns to send cruft objects out of the way into
 packfiles outside the repository.

 Will merge to 'next'?
 source: <cover.1666636974.git.me@ttaylorr.com>


* cc/filtered-repack (2022-10-25) 2 commits
 - repack: add --filter=<filter-spec> option
 - pack-objects: allow --filter without --stdout

 "git repack" learns to discard objects that ought to be retrievable
 again from the promissor remote.

 Needs review.
 source: <20221025122856.20204-1-christian.couder@gmail.com>


* tb/cap-patch-at-1gb (2022-10-25) 1 commit
  (merged to 'next' on 2022-10-27 at f0b4f9c12a)
 + apply: reject patches larger than ~1 GiB

 "git apply" limits its input to a bit less than 1 GiB.

 Will merge to 'master'.
 source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>


* tb/midx-cleanup-fix (2022-10-25) 1 commit
 - midx.c: clear auxiliary MIDX files first

 The order in which multi-pack-index and its associated files are
 dropped has been tweaked to make it safer for concurrent users.

 Under discussion, but leaning to negative..
 cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
 source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>


* al/trace2-clearing-skip-worktree (2022-10-28) 2 commits
 - SQUASH???
 - index: add trace2 region for clear skip worktree

 Add trace2 counters to the region to clear skip worktree bits in a
 sparse checkout.

 Expecting a reroll?
 source: <pull.1368.v2.git.git.1666917961644.gitgitgadget@gmail.com>


* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
  (merged to 'next' on 2022-10-28 at 4a2588ab9e)
 + negotiator/skipping: avoid stack overflow

 Rewrite a deep recursion in the skipping negotiator to use a loop
 with on-heap prio queue to avoid stack wastage.

 Will merge to 'master'.
 source: <20221025232934.1504445-1-jonathantanmy@google.com>


* rj/branch-copy-rename-error-codepath-cleanup (2022-10-26) 1 commit
  (merged to 'next' on 2022-10-27 at f01a4ff619)
 + branch: error copying or renaming a detached HEAD

 Code simplification.

 Will merge to 'master'.
 source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>


* rj/branch-do-not-exit-with-minus-one-status (2022-10-26) 1 commit
  (merged to 'next' on 2022-10-27 at 061f63d4e2)
 + branch: error code with --edit-description

 "git branch --edit-description" can exit with status -1 which is
 not a good practice; it learned to use 1 as everybody else instead.

 Will merge to 'master'.
 source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>


* po/glossary-around-traversal (2022-10-22) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add "commit graph" description
 - doc: use 'object database' not ODB or abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a (hopefully final) reroll.
 cf. <746491f4-fb41-92fe-7360-20a845dc21fc@iee.email>
 source: <20221022222539.2333-1-philipoakley@iee.email>


* mc/credential-helper-auth-headers (2022-10-21) 6 commits
 - t5556-http-auth: add test for HTTP auth hdr logic
 - http: set specific auth scheme depending on credential
 - http: move proactive auth to first slot creation
 - http: store all request headers on active_request_slot
 - credential: add WWW-Authenticate header to cred requests
 - http: read HTTP WWW-Authenticate response headers

 Extending credential helper protocol.

 Needs review.
 source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>


* jr/embargoed-releases-doc (2022-10-24) 1 commit
  (merged to 'next' on 2022-10-27 at c000502eaa)
 + embargoed releases: also describe the git-security list and the process

 The role the security mailing list plays in an embargoed release
 has been documented.

 Will merge to 'master'.
 source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>


* jh/trace2-timers-and-counters (2022-10-24) 8 commits
  (merged to 'next' on 2022-10-26 at e4933e2658)
 + trace2: add global counter mechanism
 + trace2: add stopwatch timers
 + trace2: convert ctx.thread_name from strbuf to pointer
 + trace2: improve thread-name documentation in the thread-context
 + trace2: rename the thread_name argument to trace2_thread_start
 + api-trace2.txt: elminate section describing the public trace2 API
 + tr2tls: clarify TLS terminology
 + trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx

 Two new facilities, "timer" and "counter", are introduced to the
 trace2 API.

 Will merge to 'master'.
 source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>


* jz/patch-id (2022-10-24) 6 commits
  (merged to 'next' on 2022-10-24 at 1ac3b46fbe)
 + builtin: patch-id: remove unused diff-tree prefix
 + builtin: patch-id: add --verbatim as a command mode
 + patch-id: fix patch-id for mode changes
 + builtin: patch-id: fix patch-id with binary diffs
 + patch-id: use stable patch-id for rebases
 + patch-id: fix stable patch id for binary / header-only

 A new "--include-whitespace" option is added to "git patch-id", and
 existing bugs in the internal patch-id logic that did not match
 what "git patch-id" produces have been corrected.

 Will merge to 'master'.
 source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>


* hl/archive-recursive (2022-10-19) 10 commits
 . fixup! archive: add tests for git archive --recurse-submodules
 . archive: add tests for git archive --recurse-submodules
 . archive: add --recurse-submodules to git-archive command
 . archive: remove global repository from archive_args
 . archive: pass repo objects to write_archive handlers
 . tree: add repository parameter to read_tree_fn_t
 . tree: handle submodule case for read_tree_at properly
 . tree: increase test coverage for tree.c
 . tree: update cases to use repo_ tree methods
 . tree: do not use the_repository for tree traversal methods.

 "git archive" has been taught "--recurse-submodules" option to
 create a tarball that includes contents from submodules.

 Expecting a reroll.
 Seems to break win+VS test(8).
 cf. https://github.com/git/git/actions/runs/3293333066 whose only
 difference from https://github.com/git/git/actions/runs/3293553109
 is the inclusion of this topic.
 source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>


* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
  (merged to 'next' on 2022-10-27 at 802359afac)
 + rebase --keep-base: imply --no-fork-point
 + rebase --keep-base: imply --reapply-cherry-picks
 + rebase: factor out branch_base calculation
 + rebase: rename merge_base to branch_base
 + rebase: store orig_head as a commit
 + rebase: be stricter when reading state files containing oids
 + t3416: set $EDITOR in subshell
 + t3416: tighten two tests
 (this branch is used by pw/rebase-reflog-fixes.)

 "git rebase --keep-base" used to discard the commits that are
 already cherry-picked to the upstream, even when "keep-base" meant
 that the base, on top of which the history is being rebuilt, does
 not yet include these cherry-picked commits.  The --keep-base
 option now implies --reapply-cherry-picks and --no-fork-point
 options.

 Will merge to 'master'.
 source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>


* pw/rebase-reflog-fixes (2022-10-17) 9 commits
  (merged to 'next' on 2022-10-27 at 60738821ef)
 + rebase: cleanup action handling
 + rebase --abort: improve reflog message
 + rebase --apply: make reflog messages match rebase --merge
 + rebase --apply: respect GIT_REFLOG_ACTION
 + rebase --merge: fix reflog message after skipping
 + rebase --merge: fix reflog when continuing
 + t3406: rework rebase reflog tests
 + rebase --apply: remove duplicated code
 + Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
 (this branch uses pw/rebase-keep-base-fixes.)

 Fix some bugs in the reflog messages when rebasing and changes the
 reflog messages of "rebase --apply" to match "rebase --merge" with
 the aim of making the reflog easier to parse.

 Will merge to 'master'.
 source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>


* sd/doc-smtp-encryption (2022-10-12) 1 commit
  (merged to 'next' on 2022-10-26 at b984763a1b)
 + docs: git-send-email: difference between ssl and tls smtp-encryption

 Will merge to 'master'.
 source: <20221012150619.12877-1-sndanailov@wired4ever.net>


* en/sparse-checkout-design (2022-10-08) 1 commit
 - sparse-checkout.txt: new document with sparse-checkout directions

 Design doc.

 Needs review.
 source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>


* pw/test-todo (2022-10-06) 3 commits
 - test_todo: allow [verbose] test as the command
 - test_todo: allow [!] grep as the command
 - tests: add test_todo() to mark known breakages

 RFC for test framework improvement.

 Needs review.
 source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>


* ab/coccicheck-incremental (2022-10-26) 12 commits
 - spatchcache: add a ccache-alike for "spatch"
 - cocci: run against a generated ALL.cocci
 - cocci rules: remove <id>'s from rules that don't need them
 - cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
 - cocci: make "coccicheck" rule incremental
 - cocci: split off "--all-includes" from SPATCH_FLAGS
 - cocci: split off include-less "tests" from SPATCH_FLAGS
 - Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
 - Makefile: have "coccicheck" re-run if flags change
 - Makefile: add ability to TAB-complete cocci *.patch rules
 - cocci rules: remove unused "F" metavariable from pending rule
 - Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)

 "make coccicheck" is time consuming. It has been made to run more
 incrementally.

 Will merge to 'next'?
 source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>


* ds/bundle-uri-3 (2022-10-12) 13 commits
  (merged to 'next' on 2022-10-28 at 9d9092b4cc)
 + bundle-uri: suppress stderr from remote-https
 + bundle-uri: quiet failed unbundlings
 + bundle: add flags to verify_bundle()
 + bundle-uri: fetch a list of bundles
 + bundle: properly clear all revision flags
 + bundle-uri: limit recursion depth for bundle lists
 + bundle-uri: parse bundle list in config format
 + bundle-uri: unit test "key=value" parsing
 + bundle-uri: create "key=value" line parsing
 + bundle-uri: create base key-value pair parsing
 + bundle-uri: create bundle_list struct and helpers
 + bundle-uri: use plain string in find_temp_filename()
 + Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3

 Define the logical elements of a "bundle list", data structure to
 store them in-core, format to transfer them, and code to parse
 them.

 Will merge to 'master'.
 source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #03; Fri, 14)
@ 2014-03-14 22:09  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-14 22:09 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ak/gitweb-fit-image (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at ba8cb50)
 + gitweb: Avoid overflowing page body frame with large images

 Instead of allowing an <img> to be shown in whatever size, force
 scaling it to fit on the page with max-height/max-width css style
 attributes.


* da/difftool-git-files (2014-03-05) 2 commits
  (merged to 'next' on 2014-03-06 at a563ec1)
 + t7800: add a difftool test for .git-files
 + difftool: support repositories with .git-files

 "git difftool" misbehaved when the repository is bound to the
 working tree with the ".git file" mechanism, where a textual
 file ".git" tells us where it is.


* jc/check-attr-honor-working-tree (2014-02-06) 2 commits
  (merged to 'next' on 2014-03-06 at 960d679)
 + check-attr: move to the top of working tree when in non-bare repository
 + t0003: do not chdir the whole test process

 "git check-attr" when (trying to) work on a repository with a
 working tree did not work well when the working tree was specified
 via --work-tree (and obviously with --git-dir).

 The command also works in a bare repository but it reads from the
 (possibly stale, irrelevant and/or nonexistent) index, which may
 need to be fixed to read from HEAD, but that is a completely
 separate issue.  As a related tangent to this separate issue, we
 may want to also fix "check-ignore", which refuses to work in a
 bare repository, to also operate in a bare one.


* jh/note-trees-record-blobs (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at f46852d)
 + notes: disallow reusing non-blob as a note object

 "git notes -C <blob>" should not take an object that is not a blob.


* jk/commit-dates-parsing-fix (2014-03-07) 6 commits
  (merged to 'next' on 2014-03-07 at 01e9d92)
 + show_ident_date: fix tz range check
  (merged to 'next' on 2014-03-06 at dd641e2)
 + log: do not segfault on gmtime errors
 + log: handle integer overflow in timestamps
 + date: check date overflow against time_t
 + fsck: report integer overflow in author timestamps
 + t4212: test bogus timestamps with git-log

 Codepaths that parse timestamps in commit objects have been
 tightened.


* jk/doc-coding-guideline (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at c33101d)
 + CodingGuidelines: mention C whitespace rules

 Elaborate on a style niggle that has been part of "mimic existing
 code".


* jk/http-no-curl-easy (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 56d3f6f)
 + http: never use curl_easy_perform

 Uses of curl's "multi" interface and "easy" interface do not mix
 well when we attempt to reuse outgoing connections.  Teach the RPC
 over http code, used in the smart HTTP transport, not to use the
 "easy" interface.


* jk/janitorial-fixes (2014-02-18) 5 commits
  (merged to 'next' on 2014-03-06 at dac2de6)
 + open_istream(): do not dereference NULL in the error case
 + builtin/mv: don't use memory after free
 + utf8: use correct type for values in interval table
 + utf8: fix iconv error detection
 + notes-utils: handle boolean notes.rewritemode correctly


* jk/remote-pushremote-config-reading (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 9e71ecb)
 + remote: handle pushremote config in any order

 "git push" did not pay attention to branch.*.pushremote if it is
 defined earlier than remote.pushdefault; the order of these two
 variables in the configuration file should not matter, but it did
 by mistake.


* jl/doc-submodule-update-checkout (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at 8cdf5cb)
 + submodule update: consistently document the '--checkout' option

 Add missing documentation for "submodule update --checkout".


* jm/stash-doc-k-for-keep (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at ddd8e48)
 + stash doc: mention short form -k in save description


* jn/am-doc-hooks (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 5c1c372)
 + am doc: add a pointer to relevant hooks


* jn/bisect-coding-style (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at e1de2a5)
 + git-bisect.sh: fix a few style issues


* ks/config-file-stdin (2014-02-18) 4 commits
  (merged to 'next' on 2014-03-06 at 3e77313)
 + config: teach "git config --file -" to read from the standard input
 + config: change git_config_with_options() interface
 + builtin/config.c: rename check_blob_write() -> check_write()
 + config: disallow relative include paths from blobs

 "git config" learned to read from the standard input when "-" is
 given as the value to its "--file" parameter (attempting an
 operation to update the configuration in the standard input of
 course is rejected).


* lb/contrib-contacts-looser-diff-parsing (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 1cc4ffe)
 + git-contacts: do not fail parsing of good diffs


* mh/object-code-cleanup (2014-02-24) 4 commits
  (merged to 'next' on 2014-03-06 at d6b3867)
 + sha1_file.c: document a bunch of functions defined in the file
 + sha1_file_name(): declare to return a const string
 + find_pack_entry(): document last_found_pack
 + replace_object: use struct members instead of an array


* mh/replace-refs-variable-rename (2014-02-28) 3 commits
  (merged to 'next' on 2014-03-06 at 70bf89b)
 + Document some functions defined in object.c
 + Add docstrings for lookup_replace_object() and do_lookup_replace_object()
 + rename read_replace_refs to check_replace_refs


* nd/gitignore-trailing-whitespace (2014-03-11) 3 commits
  (merged to 'next' on 2014-03-11 at ccdba51)
 + t0008: skip trailing space test on Windows
  (merged to 'next' on 2014-03-06 at f649a34)
 + dir: ignore trailing spaces in exclude patterns
 + dir: warn about trailing spaces in exclude patterns

 Trailing whitespaces in .gitignore files, unless they are quoted
 for fnmatch(3), e.g. "path\ ", are warned and ignored.  Strictly
 speaking, this is a backward incompatible change, but very unlikely
 to bite any sane user and adjusting should be obvious and easy.


* nd/i18n-progress (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 600fd3e)
 + i18n: mark all progress lines for translation

 The progress indicators from various time-consuming commands have
 been marked for i18n/l10n.


* nd/no-more-fnmatch (2014-02-20) 4 commits
  (merged to 'next' on 2014-03-06 at f0b8f12)
 + actually remove compat fnmatch source code
 + stop using fnmatch (either native or compat)
 + Revert "test-wildmatch: add "perf" command to compare wildmatch and fnmatch"
 + use wildmatch() directly without fnmatch() wrapper

 We started using wildmatch() in place of fnmatch(3); complete the
 process and stop using fnmatch(3).


* nd/reset-setup-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at d93f20a)
 + reset: optionally setup worktree and refresh index on --mixed

 "git reset" needs to refresh the index when working in a working
 tree (it can also be used to match the index to the HEAD in an
 otherwise bare repository), but it failed to set up the working
 tree properly, causing GIT_WORK_TREE to be ignored.


* nd/strbuf-inline-styles (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 70b5e56)
 + strbuf: style fix -- top opening bracket on a separate line


* rt/help-pretty-prints-cmd-names (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at fc607dc)
 + help.c: rename function "pretty_print_string_list"


* rt/links-for-asciidoctor (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at 547f13d)
 + Documentation: fix documentation AsciiDoc links for external urls


* sg/archive-restrict-remote (2014-02-28) 2 commits
  (merged to 'next' on 2014-03-06 at 5fe8998)
 + add uploadarchive.allowUnreachable option
 + docs: clarify remote restrictions for git-upload-archive

 Allow loosening remote "git archive" invocation security check that
 refuses to serve tree-ish not at the tip of any ref.


* sh/write-pack-file-warning-message-fix (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 1470b0a)
 + write_pack_file: use correct variable in diagnostic
 (this branch is used by sh/finish-tmp-packfile.)

 A warning from "git pack-objects" were generated by referring to an
 incorrect variable when forming the filename that we had trouble
 with.


* sr/add--interactive-term-readkey (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-06 at 9ca7af8)
 + git-add--interactive: warn if module for interactive.singlekey is missing
 + git-config: document interactive.singlekey requires Term::ReadKey


* ss/completion-rec-sub-fetch-push (2014-02-11) 1 commit
  (merged to 'next' on 2014-03-06 at b5bf463)
 + completion: teach --recurse-submodules to fetch, pull and push


* ta/parse-commit-with-skip-prefix (2014-03-04) 1 commit
  (merged to 'next' on 2014-03-06 at 0244988)
 + commit.c: use skip_prefix() instead of starts_with()


* tg/index-v4-format (2014-02-24) 3 commits
  (merged to 'next' on 2014-03-06 at d4ca5a8)
 + read-cache: add index.version config variable
 + test-lib: allow setting the index format version
 + introduce GIT_INDEX_VERSION environment variable


* tr/diff-submodule-no-reuse-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at ac8008f)
 + diff: do not reuse_worktree_file for submodules

 "git diff --external-diff" incorrectly fed the submodule directory
 in the working tree to the external diff driver when it knew it is
 the same as one of the versions being compared.

--------------------------------------------------
[New Topics]

* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.

 Will merge to 'master'.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()

 Will merge to 'master'.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
 - entry.c: fix possible buffer overflow in remove_subtree()
 - checkout_entry(): use the strbuf throughout the function

 Will merge to 'next'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
 - connect.c: SP after "}", not TAB

 Will merge to 'next'.


* pw/branch-config-message (2014-03-13) 1 commit
 - install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.


* ys/fsck-commit-parsing (2014-03-13) 2 commits
 - fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 - fsck.c:fsck_ident(): ident points at a const string


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
 - rev-list: disable object/refname ambiguity check with --stdin
 - cat-file: restore warn_on_object_refname_ambiguity flag
 - cat-file: fix a minor memory leak in batch_objects
 - cat-file: refactor error handling of batch_objects

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Reported to break tests ($gmane/240005)
 Expecting a reroll.


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* fc/completion (2013-12-09) 1 commit
 - completion: fix completion of certain aliases

 SZEDER Gábor noticed that this breaks "git -c var=val alias" and
 also suggested a better description of the change.

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* mo/subtree-split-updates (2013-12-10) 3 commits
 - subtree: add --edit option
 - subtree: allow --squash and --message with push
 - subtree: support split --rejoin --squash

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* jc/create-directories-microopt (2013-11-11) 1 commit
 - checkout: most of the time we have good leading directories

 Of unknown value until tested on non-Linux platforms (especially
 Windows).

 Will discard.


* jt/commit-fixes-footer (2013-10-30) 1 commit
 - commit: Add -f, --fixes <commit> option to add Fixes: line

 There is an ongoing discussion around this topic; in general I am
 fairly negative on a new feature that is too narrow and prefer a
 more generic solution that can be tailored for specific needs, as
 many people stated in the thread.

 cc/interpret-trailers could be such a generic solution (although
 there don't seem to be much concensus yet).

 Will discard.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* mf/graph-show-root (2013-10-25) 1 commit
 . graph.c: mark root commit differently

 In a repository with multiple-roots, "log --graph", especially with
 "--oneline", does not give the reader enough visual cue to see
 where one line of history ended and a separate history began.

 This is the version that marks the roots 'x' when they would have
 been marked as '*'; Keshav Kini suggested an alternative of giving
 an extra blank line after every root, which I tend to think is a
 better approach to the problem.

 Will discard.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* yt/shortened-rename (2013-10-18) 2 commits
 - SQUASH??? style fixes and s/omit/shorten/ where appropriate
 - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible

 Attempts to give more weight on the fact that a filepair represents
 a rename than showing substring of the actual path when diffstat
 lines are not wide enough.

 I am not sure if that is solving a right problem, though.

 Will discard.


* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub

 Will discard.


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Will discard, tired of waiting for clarification.
 $gmane/228294


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this ($gmane/226216)
 but nothing seems to have happened since then.

 Will discard.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* jk/detect-push-typo-early (2014-03-05) 3 commits
  (merged to 'next' on 2014-03-12 at da522e7)
 + push: detect local refspec errors early
 + match_explicit_lhs: allow a "verify only" mode
 + match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.

 Will merge to 'master'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 Has the discussion settled on this?


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at 8d34916)
 + docs: mark info/grafts as outdated

 Will merge to 'master'.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
  (merged to 'next' on 2014-03-12 at fad8f12)
 + use strchrnul() in place of strchr() and strlen()

 Will merge to 'master'.


* sh/use-hashcpy (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at cf2735a)
 + Use hashcpy() when copying object names

 Will merge to 'master'.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at dfd3234)
 + *.sh: drop useless use of "env"

 Will merge to 'master'.


* jc/tag-contains-with (2014-03-07) 1 commit
  (merged to 'next' on 2014-03-12 at e120644)
 + tag: grok "--with" as synonym to "--contains"

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-11) 8 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - SQUASH???
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test


* cp/am-patch-format-doc (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
 - configure.ac: link with -liconv for locale_charset()


* jk/clean-d-pathspec (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at aaae6ee)
 + clean: simplify dir/not-dir logic
 + clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use the given pathspec correctly
 and ended up cleaning too much.

 Will merge to 'master' and then later to 'maint'.


* jk/mv-submodules-fix (2014-03-11) 2 commits
 - mv: prevent mismatched data when ignoring errors.
 - builtin/mv: fix out of bounds write

 Needs tests.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'master'.


* rs/grep-h-c (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at 0341bd8)
 + grep: support -h (no header) with --count
 + t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".

 Will merge to 'master'.


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.

 Will merge to 'master'.


* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
  (merged to 'next' on 2014-03-12 at 9d04564)
 + branch: use skip_prefix() in install_branch_config()
 + t3200-branch: test setting branch as own upstream

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-12 at 0383d59)
 + commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.

 Will merge to 'master'.


* dd/use-alloc-grow (2014-03-03) 14 commits
  (merged to 'next' on 2014-03-12 at ed82259)
 + sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 + read-cache.c: use ALLOC_GROW() in add_index_entry()
 + builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 + attr.c: use ALLOC_GROW() in handle_attr_line()
 + dir.c: use ALLOC_GROW() in create_simplify()
 + reflog-walk.c: use ALLOC_GROW()
 + replace_object.c: use ALLOC_GROW() in register_replace_object()
 + patch-ids.c: use ALLOC_GROW() in add_commit()
 + diffcore-rename.c: use ALLOC_GROW()
 + diff.c: use ALLOC_GROW()
 + commit.c: use ALLOC_GROW() in register_commit_graft()
 + cache-tree.c: use ALLOC_GROW() in find_subtree()
 + bundle.c: use ALLOC_GROW() in add_to_ref_list()
 + builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.

 Will merge to 'master'.


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.

 Will merge to 'master'.


* jk/shallow-update-fix (2014-02-27) 2 commits
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'master'.


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at bd0fb0e)
 + branch.c: delete size check of newly tracked branch names

 Will merge to 'master'.


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
  (merged to 'next' on 2014-03-12 at c29aa24)
 + cache_tree_find(): use path variable when passing over slashes
 + cache_tree_find(): remove early return
 + cache_tree_find(): remove redundant check
 + cache_tree_find(): fix comment formatting
 + cache_tree_find(): find the end of path component using strchrnul()
 + cache_tree_find(): remove redundant checks

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'master'.


* sh/finish-tmp-packfile (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-12 at 410d45d)
 + finish_tmp_packfile():use strbuf for pathname construction
 + Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile

 Will merge to 'master'.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 184c2aa)
 + diffcore.h: be explicit about the signedness of is_binary

 Portability fix to a topic already in v1.9

 Will merge to 'master' and then later to 'maint'.


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-12 at 3fd2335)
 + repack: add `repack.packKeptObjects` config var

 Will merge to 'master'.


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 9d1a621)
 + sha1_file: fix delta_stack memory leak in unpack_entry

 Fix a small leak in the delta stack used when resolving a long
 delta chain at runtime.

 Will merge to 'master' and then later to 'maint'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour


* fc/transport-helper-fixes (2014-02-24) 7 commits
  (merged to 'next' on 2014-03-12 at 5d7c69a)
 + remote-bzr: support the new 'force' option
 + test-hg.sh: tests are now expected to pass
 + transport-helper.c: do not overwrite forced bit
 + transport-helper: check for 'forced update' message
 + transport-helper: add 'force' to 'export' helpers
 + transport-helper: don't update refs in dry-run
 + transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.

 Will merge to 'master'.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
 - commit: add --cleanup=scissors
 - wt-status.c: move cut-line print code out to wt_status_add_cut_line
 - wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'next'.


* po/git-help-user-manual (2014-02-18) 1 commit
 - Provide a 'git help user-manual' route to the docbook

 I am not sure if this is even needed.

 Will discard.


* nd/multiple-work-trees (2014-03-06) 28 commits
 - FIXUP: minimum compilation fix
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - Add new environment variable $GIT_COMMON_DIR
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - Make git_path() aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - Convert git_snpath() to strbuf_git_path()
 - path.c: make get_pathname() return strbuf instead of static buffer

 The series needs a serious review.


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-02-10) 1 commit
 - log: add --show-linear-break to help see non-linear history

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-03-13) 6 commits
 - request-pull: documentation updates
 - request-pull: resurrect "pretty refname" feature
 - request-pull: test updates
 - request-pull: pick up tag message as before
 - request-pull: allow "local:remote" to specify names on both ends
 - request-pull: more strictly match local/remote branches

 Will merge to 'next'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* bl/blame-full-history (2014-01-14) 1 commit
 - blame: new option --prefer-first to better handle merged cherry-picks

 By disabling the tree-same optimization (which is consistent with
 the default behaviour of "git log"-family of commands), make "git
 blame" sometimes produce different result from the original code.

 Because the "git blame" output can give result for each line from
 only one lineage of the history, however, this can be only useful
 when you are lucky---unlike "--full-history" of "git log"-family,
 where we can show commits from both lineages of histories with an
 equal weight.  See $gmane/240392 for more detailed discussion.

 Will discard.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* tb/repack-fix-renames (2014-02-05) 1 commit
 . repack.c: rename a few variables

 Perhaps unneeded, as the longer-term plan is to drop the codeblock
 this change touches.


* ks/diff-c-with-diff-order (2014-02-03) 5 commits
 . combine-diff: simplify intersect_paths() further
 . combine-diff: combine_diff_path.len is not needed anymore
 . combine-diff: optimize combine_diff_path sets intersection
 . diff test: add tests for combine-diff with orderfile
 . diffcore-order: export generic ordering interface

 Now part of ks/combine-diff topic.


* ks/tree-diff-more (2014-02-24) 15 commits
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning
 (this branch is used by ks/tree-diff-nway; uses ks/combine-diff.)

 Code refactoring.

 Now part of ks/tree-diff-nway.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2023, #07; Mon, 31)
@ 2023-07-31 17:57  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2023-07-31 17:57 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).

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/

--------------------------------------------------
[New Topics]

* jc/checkout-merge-fix (2023-07-28) 2 commits
 - checkout/restore: add basic tests for --merge
 - checkout/restore: refuse unmerging paths unless checking out of the index

 "git checkout/restore --merge -- $path" improvements.

 Needs review.
 source: <xmqq7cqj4rme.fsf@gitster.g>


* ew/sha256-gcrypt-leak-fixes (2023-07-31) 3 commits
 - sha256/gcrypt: die on gcry_md_open failures
 - sha256/gcrypt: fix memory leak with SHA-256 repos
 - sha256/gcrypt: fix build with SANITIZE=leak

 Leakfixes.

 Will merge to 'next'.
 source: <20230731120808.1230210-1-e@80x24.org>


* rs/bundle-parseopt-cleanup (2023-07-31) 1 commit
 - bundle: use OPT_PASSTHRU_ARGV

 Code clean-up.

 Will merge to 'next'.
 source: <2dcb915f-b926-e024-6394-23aff200955c@web.de>

--------------------------------------------------
[Graduated to 'master']

* bb/trace2-comment-fix (2023-07-19) 1 commit
  (merged to 'next' on 2023-07-21 at f77aeba1b5)
 + trace2: fix a comment

 In-code comment fix.
 source: <20230719232444.555838-1-dev+git@drbeat.li>


* rs/describe-parseopt-fix (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-21 at e74749af0c)
 + describe: fix --no-exact-match

 Command line parser fix.
 source: <4eea7e15-6594-93e2-27b5-3d6e3c0baac6@web.de>


* rs/pack-objects-parseopt-fix (2023-07-21) 2 commits
  (merged to 'next' on 2023-07-21 at acdf84416c)
 + pack-objects: fix --no-quiet
 + pack-objects: fix --no-keep-true-parents

 Command line parser fix.
 source: <xmqqo7k9fa5x.fsf@gitster.g>

--------------------------------------------------
[Stalled]

* 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>


* ab/tag-object-type-errors (2023-05-10) 4 commits
 - tag: don't emit potentially incorrect "object is a X, not a Y"
 - tag: don't misreport type of tagged objects in errors
 - object tests: add test for unexpected objects in tags
 - Merge branch 'jk/parse-object-type-mismatch' into ab/tag-object-type-errors

 Hardening checks around mismatched object types when one of those
 objects is a tag.

 Will discard.
 Stalled for too long.
 source: <cover-v2-0.3-00000000000-20221230T011725Z-avarab@gmail.com>


* ob/revert-of-revert (2023-05-05) 1 commit
 - sequencer: beautify subject of reverts of reverts

 Instead of "Revert "Revert "original"", give "Reapply "original""
 as the title for a revert of a revert.

 Will discard.
 Have been expecting a hopefully final reroll for too long.
 Looking much better, except for minor cosmetic issues.
 cf. <xmqqmt21txid.fsf@gitster.g>
 source: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de>


* pw/rebase-i-after-failure (2023-04-21) 6 commits
 - rebase -i: fix adding failed command to the todo list
 - rebase: fix rewritten list for failed pick
 - rebase --continue: refuse to commit after failed command
 - sequencer: factor out part of pick_commits()
 - rebase -i: remove patch file after conflict resolution
 - rebase -i: move unlink() calls

 Various fixes to the behaviour of "rebase -i" when the command got
 interrupted by conflicting changes.

 Will discard.
 Have been expecting a reroll for too long.
 cf. <xmqqsfcthrpb.fsf@gitster.g>
 cf. <1fd54422-b66a-c2e4-7cd7-934ea01190ad@gmail.com>
 cf. <55dd6194-25e5-1a66-9c39-27cb19bfbb3c@gmail.com>
 source: <pull.1492.v2.git.1682089074.gitgitgadget@gmail.com>

--------------------------------------------------
[Cooking]

* pv/doc-submodule-update-settings (2023-07-25) 1 commit
  (merged to 'next' on 2023-07-27 at e27b5b7ba8)
 + doc: highlight that .gitmodules does not support !command

 Rewrite the description of giving a custom command to the
 submodule.<name>.update configuraiton variable.

 Will merge to 'master'.
 source: <20230725212218.711116-1-pvutov@imap.cc>


* la/doc-choose-starting-point-fixup (2023-07-27) 3 commits
  (merged to 'next' on 2023-07-28 at 047dcae31c)
 + SubmittingPatches: use of older maintenance tracks is an exception
 + SubmittingPatches: explain why 'next' and above are inappropriate base
 + SubmittingPatches: choice of base for fixing an older maintenance track
 (this branch uses la/doc-choose-starting-point.)

 Clarify how to pick a starting point for a new topic in the
 SubmittingPatches document.

 Will merge to 'master', together with the underlying topic.
 source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
 source: <pull.1556.v3.git.1690340701.gitgitgadget@gmail.com>


* jc/resolve-undo-fixes (2023-07-28) 4 commits
 - update-index: remove stale fallback code for "--unresolve"
 - update-index: use unmerge_index_entry() to support removal
 - resolve-undo: allow resurrecting conflicted state that resolved to deletion
 - update-index: do not read HEAD and MERGE_HEAD unconditionally

 Assorted fixes and clean-up around resolve-undo data.

 Needs review.
 source: <xmqqo7jv4y0t.fsf_-_@gitster.g>


* ah/sequencer-rewrite-todo-fix (2023-07-24) 1 commit
  (merged to 'next' on 2023-07-26 at 24e74d9eda)
 + sequencer: finish parsing the todo list despite an invalid first line

 When the user edits "rebase -i" todo file so that it starts with a
 "fixup", which would make it invalid, the command truncated the
 rest of the file before giving an error and returning the control
 back to the user.  Stop truncating to make it easier to correct
 such a malformed todo file.

 Will merge to 'master'.
 cf. <https://lore.kernel.org/git/0d1c5bfd-3ae5-83f0-a333-bbb8510a973a@gmail.com/>
 source: <20230722212830.132135-2-alexhenrie24@gmail.com>


* ks/ref-filter-describe (2023-07-24) 2 commits
  (merged to 'next' on 2023-07-26 at f4b3b3b7ef)
 + ref-filter: add new "describe" atom
 + ref-filter: add multiple-option parsing functions

 "git branch --list --format=<format>" and friends are taught
 a new "%(describe)" placeholder.

 Will merge to 'master'.
 source: <20230723162717.68123-1-five231003@gmail.com>


* bb/use-trace2-counters-for-fsync-stats (2023-07-20) 1 commit
  (merged to 'next' on 2023-07-26 at f2c2e3f2b9)
 + wrapper: use trace2 counters to collect fsync stats

 Instead of inventing a custom counter variables for debugging,
 use existing trace2 facility in the fsync customization codepath.

 Will merge to 'master'.
 source: <20230720164823.625815-1-dev+git@drbeat.li>


* am/doc-sha256 (2023-07-31) 1 commit
 - doc: sha256 is no longer experimental

 Tone down the warning on SHA-256 repositories being an experimental
 curiosity.  We do not have support for them to interoperate with
 traditional SHA-1 repositories, but at this point, we do not plan
 to make breaking changes to SHA-256 repositories and there is no
 longer need for such a strongly phrased warning.

 Will merge to 'next'.
 source: <ZMe6KmzZGVubYpvO@adams>


* hy/blame-in-bare-with-contents (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-31 at 39ac96d8d8)
 + blame: allow --contents to work with bare repo

 "git blame --contents=file" has been taught to work in a bare
 repository.

 Will merge to 'master'.
 source: <20230721035758.61956-1-hanyang.tony@bytedance.com>


* ja/worktree-orphan-fix (2023-07-26) 3 commits
  (merged to 'next' on 2023-07-27 at e475016065)
 + t2400: rewrite regex to avoid unintentional PCRE
 + builtin/worktree.c: convert tab in advice to space
 + t2400: drop no-op `--sq` from rev-parse call

 Fix tests with unportable regex patterns.

 Will merge to 'master'.
 source: <20230726214202.15775-1-jacobabel@nullpo.dev>


* jc/retire-get-sha1-hex (2023-07-24) 1 commit
  (merged to 'next' on 2023-07-27 at eeb9cc37f5)
 + hex: retire get_sha1_hex()

 The implementation of "get_sha1_hex()" that reads a hexadecimal
 string that spells a full object name has been extended to cope
 with any hash function used in the repository, but the "sha1" in
 its name survived.  Rename it to get_hash_hex(), a name that is
 more consistent within its friends like get_hash_hex_algop().

 Will merge to 'master'.
 source: <xmqq1qgwoqgo.fsf_-_@gitster.g>


* rs/parse-options-negation-help (2023-07-24) 5 commits
 - parse-options: show negatability of options in short help
 - t1502: test option negation
 - t1502: move optionspec help output to a file
 - t1502, docs: disallow --no-help
 - subtree: disallow --no-{help,quiet,debug,branch,message}

 "git cmd -h" learned to signal which options can be negated by
 listing such options like "--[no-]opt".

 Comments?
 Would showing "--[[no-]no-]opt" for "no-opt" be worth it?
 cf. <9e8225dd-1e8b-8af2-c3e1-0c5834694244@web.de>
 source: <4d01e971-07cb-4f11-3cc6-9d9f21e590c1@web.de>


* tb/commit-graph-tests (2023-07-24) 5 commits
  (merged to 'next' on 2023-07-31 at 740a260315)
 + t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
 + t5328: avoid top-level directory changes
 + t5318: avoid top-level directory changes
 + t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
 + t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories

 Test updates.

 Will merge to 'master'.
 source: <cover.1690216758.git.me@ttaylorr.com>


* la/doc-choose-starting-point (2023-07-14) 5 commits
  (merged to 'next' on 2023-07-19 at 5a807cae46)
 + SubmittingPatches: simplify guidance for choosing a starting point
 + SubmittingPatches: emphasize need to communicate non-default starting points
 + SubmittingPatches: de-emphasize branches as starting points
 + SubmittingPatches: discuss subsystems separately from git.git
 + SubmittingPatches: reword awkward phrasing
 (this branch is used by la/doc-choose-starting-point-fixup.)

 Clarify how to choose the starting point for a new topic in
 developer guidance document.

 Will merge to 'master' together with the follow-on topic.
 source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>


* jc/doc-sent-patch-now-what (2023-07-27) 1 commit
  (merged to 'next' on 2023-07-31 at 51f5d9d465)
 + MyFirstContribution: refrain from self-iterating too much

 Process document update.

 Will merge to 'master'.
 source: <xmqqmszg987u.fsf_-_@gitster.g>


* jc/parse-options-short-help (2023-07-19) 3 commits
  (merged to 'next' on 2023-07-31 at e076d1f497)
 + short help: allow a gap smaller than USAGE_GAP
 + remote: simplify "remote add --tags" help text
 + short help: allow multi-line opthelp

 Command line parser fix, and a small parse-options API update.

 Will merge to 'master'.
 source: <xmqq5y6gg8fn.fsf@gitster.g>


* sl/sparse-check-attr (2023-07-18) 3 commits
 - check-attr: integrate with sparse-index
 - attr.c: read attributes in a sparse directory
 - t1092: add tests for 'git check-attr'

 Teach "git check-attr" work better with sparse-index.

 Expecting a reroll.
 cf. <c3ebe3b4-88b9-8ca2-2ee3-39a3e0d82201@github.com>
 cf. <5e478d8b-9ef4-864b-41e4-e0a79877d278@github.com>
 source: <20230718232916.31660-1-cheskaqiqi@gmail.com>


* ah/autoconf-fixes (2023-07-19) 3 commits
  (merged to 'next' on 2023-07-25 at 35ff66e0cb)
 + configure.ac: always save NO_ICONV to config.status
 + configure.ac: don't overwrite NO_CURL option
 + configure.ac: don't overwrite NO_EXPAT option

 "./configure --with-expat=no" did not work as a way to refuse use
 of the expat library on a system with the library installed, which
 has been corrected.

 Will merge to 'master'.
 source: <20230719145211.17854-2-aherrmann@suse.de>


* jc/branch-in-use-error-message (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-31 at 22f17d131b)
 + branch: update the message to refuse touching a branch in-use

 "git branch -f X" to repoint the branch X seid that X was "checked
 out" in another worktree, even when branch X was not and instead
 being bisected or rebased.  The message was reworded to say the
 branch was "in use".

 Will merge to 'master'.
 source: <xmqqr0p1szhz.fsf_-_@gitster.g>


* jc/tree-walk-drop-base-offset (2023-07-07) 2 commits
  (merged to 'next' on 2023-07-25 at cc050c60a6)
 + tree-walk: drop unused base_offset from do_match()
 + tree-walk: lose base_offset that is never used in tree_entry_interesting

 Code simplification.

 Will merge to 'master'.
 source: <20230707222116.4129415-1-gitster@pobox.com>


* mh/credential-erase-improvements-more (2023-07-26) 2 commits
 - credential/wincred: erase matching creds only
 - credential/libsecret: erase matching creds only

 Update two credential helpers to correctly match which credential
 to erase; they dropped not the ones with stale password.

 Needs review.
 source: <pull.1527.v2.git.git.1690387585634.gitgitgadget@gmail.com>
 source: <pull.1529.git.git.1687596777147.gitgitgadget@gmail.com>


* cc/repack-sift-filtered-objects-to-separate-pack (2023-07-24) 8 commits
 . gc: add `gc.repackFilterTo` config option
 . repack: implement `--filter-to` for storing filtered out objects
 . gc: add `gc.repackFilter` config option
 . repack: add `--filter=<filter-spec>` option
 . repack: refactor finding pack prefix
 . repack: refactor finishing pack-objects command
 . t/helper: add 'find-pack' test-tool
 . pack-objects: allow `--filter` without `--stdout`

 "git repack" machinery learns to pay attention to the "--filter="
 option.

 Breaks CI with some environment variables configured.
 cf. <xmqqo7jzh9mh.fsf@gitster.g>
 source: <20230724085909.3831831-1-christian.couder@gmail.com>


* js/doc-unit-tests (2023-06-30) 1 commit
 - unit tests: Add a project plan document

 Process to add some form of low-level unit tests has started.

 Still filling in blanks.
 source: <0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com>


* jt/path-filter-fix (2023-07-25) 7 commits
 - 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

 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.

 Still under discussion.
 cf. <20230727205308.401364-1-jonathantanmy@google.com>
 source: <cover.1689889382.git.jonathantanmy@google.com>


* mh/credential-libsecret-attrs (2023-06-16) 1 commit
 - credential/libsecret: store new attributes

 The way authentication related data other than passwords (e.g.
 oath token and password expiration data) are stored in libsecret
 keyrings has been rethought.

 Needs review.
 source: <pull.1469.v5.git.git.1686945306242.gitgitgadget@gmail.com>


* cc/git-replay (2023-06-03) 15 commits
 - replay: stop assuming replayed branches do not diverge
 - replay: add --contained to rebase contained branches
 - replay: add --advance or 'cherry-pick' mode
 - replay: disallow revision specific options and pathspecs
 - 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: don't simplify history
 - 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

 What's the status of this thing?
 source: <20230602102533.876905-1-christian.couder@gmail.com>

--------------------------------------------------
[Discarded]

* jc/doc-submodule-update-settings (2023-07-13) 1 commit
 . submodule: clarify that "!custom command" is the only oddball

 Rewrite the description of giving a custom command to the
 submodule.<name>.update configuraiton variable.

 Superseded by pv/doc-submodule-update-settings topic.
 source: <xmqqwmz3oacg.fsf@gitster.g>


* jc/rerere-read-rr-fix (2023-07-21) 1 commit
 . rerere: match the hash algorithm with its length

 SHA-256 fix.

 Superseded by jc/retire-get-sha1-hex
 source: <xmqqa5vou9ar.fsf@gitster.g>


* cb/checkout-same-branch-twice (2023-03-22) 2 commits
 . SQUASH??? the test marked to expect failure passes from day one
 . checkout/switch: disallow checking out same branch in multiple worktrees

 "git checkout -B $branch" failed to protect against checking out
 a branch that is checked out elsewhere, unlike "git branch -f" did.

 Have been expecting a hopefully minor and final reroll for too long.
 cf. <CAPUEspj_Bh+LgYLnWfeBdcq_uV5Cbou-7H51GLFjzSa5Qzby9w@mail.gmail.com>
 source: <20230120113553.24655-1-carenas@gmail.com>


* ed/fsmonitor-windows-named-pipe (2023-03-24) 1 commit
 . fsmonitor: handle differences between Windows named pipe functions

 Fix fsmonitor on Windows when the filesystem path contains certain
 characters.

 Have been expecting a reroll for too long.
 cf. <b9cf67e4-22a7-2ff0-8310-9223bea10d6d@jeffhostetler.com>
 source: <pull.1503.git.1679678090412.gitgitgadget@gmail.com>


* rn/sparse-diff-index (2023-04-10) 1 commit
 . diff-index: enable sparse index

 "git diff-index" command has been taught to work better with the
 sparse index.

 Have been expecting a reroll for too long.
 cf. <62821012-4fc3-5ad8-695c-70f7ab14a8c9@github.com>
 source: <20230408112342.404318-1-nanth.raghul@gmail.com>


* es/recurse-submodules-option-is-a-bool (2023-04-10) 1 commit
 . usage: clarify --recurse-submodules as a boolean

 The "--[no-]recurse-submodules" option of "git checkout" and others
 supported an undocumented syntax --recurse-submodules=<value> where
 the value can spell a Boolean in various ways.  The support for the
 syntax is being dropped.

 Have been expecting a reroll for too long.
 cf. <ZDSTFwMFO7vbj/du@google.com>
 source: <ZDSTFwMFO7vbj/du@google.com>

^ permalink raw reply	[relevance 3%]

* Re: [RFC] Git rerere and non-conflicting changes during conflict resolution
    2017-07-26  7:14  3%       ` Junio C Hamano
@ 2017-07-26  8:06  3%       ` Junio C Hamano
  1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2017-07-26  8:06 UTC (permalink / raw)
  To: Jeff King; +Cc: Raman Gupta, git

Jeff King <peff@peff.net> writes:

> Hrm. That doesn't quite work, though. Because if your <A,B> are the
> merge, then merging a topic to next will get an "A" that is a merge
> commit from next. But that commit will never end up in master. What's
> causing the conflict is really some "A" that is in the history between
> the merge base and "A" (but we don't know which).

There may be a misunderstanding.  When I said the key <A,B> is a
pair of branch names, I didn't mean 'A' to be the name of an
integration branch (e.g. 'pu') and 'B' to be the name of a topic.
Rather, both 'A' and 'B' are the names of topic branches.  

IOW, instead of having refs/merge-fix/sd/branch-copy that says "I
know when I merge sd/branch-copy to pu or jch, there is a semantic
conflict with some unnamed topic that is likely to be already in
there", i.e. keying with only a single topic name, the ideal I
presented would say 'sd/branch-copy and mh/packed-ref-store topics
are both by themselves OK, but when merged together, the end result
of textual merge needs to be further fixed up by cherry-picking this
change', by keying a change with a pair of topic names,
sd/branch-copy (which introduces a new method in the ref backend
vtable) and mh/packed-ref-store (which adds a new ref backend).  The
latter does not know the need for the new method, and the former
does not know the need to implement its new method in a new backend,
so a merge needs a trivial implementation of the new method added to
the new backend, which is what refs/merge-fix/sd/branch-copy does.

And better yet, instead of A=sd/branch-copy B=mh/packed-ref-store,
we could point at the exact commit on each of these branches that
introduce the semantic conflict.  I would probably pick these two

  A=52d59cc6 ("branch: add a --copy (-c) option to go with --move (-m)", 2017-06-18)
  B=67be7c5a ("packed-backend: new module for handling packed references", 2017-06-23)

so when we are on commit X that has A but not B, and are trying to
merge branch Y that has B but not A, we want the merge-fix to kick
in.  Walking "rev-list --left-right X...Y" and noticing A and B in
the output would be a way to notice it.


[footnote]

*1* https://github.com/gitster/git/ should mirror these refs in the
    refs/merge-fix/ hierarchymentioned in the body of this article.



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0
@ 2022-12-12 13:43  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-12-12 13:43 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.39.0 is now available at the
usual places.  It is comprised of 483 non-merge commits since
v2.38.0, contributed by 86 people, 31 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.39.0'
tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Oscar Dominguez,
  Ronan Pigott, Rubén Justo, Sotir Danailov, srz_zumix, Stefano
  Rivera, Tim Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alexander Shopov, Alex Henrie, Bagas Sanjaya, Derrick Stolee,
  Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Emir
  SARI, Eric DeCosta, Eric Sunshine, Eric Wong, Fangyi Zhou,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
  Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
  Jordi Mas, Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin
  Ågren, Martin von Zweigbergk, Matheus Tavares, Matthew John
  Cheetham, Matthias Rüster, Michael J Gruber, Michael McClimon,
  Patrick Steinhardt, Paul Smith, Peter Krefting, Philip Oakley,
  Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
  René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER Gábor,
  Taylor Blau, Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan,
  and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.39 Release Notes
=======================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * The build procedure has been adjusted to GNUmake version 4.4, which
   made some changes to how pattern rule with multiple targets are
   handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborn branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" created temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5501t)

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Bagas Sanjaya (1):
      l10n: po-id for 2.39 (round 1)

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Emir SARI (1):
      l10n: tr: v2.39.0 updates

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Fangyi Zhou (1):
      l10n: zh_CN v2.39.0 round 1

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (2):
      i18n: fix command template placeholder format
      l10n: fr: v2.39 rnd 1

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (14):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some
      ci: avoid using deprecated {up,down}load-artifacts Action
      RelNotes: a couple of typofixes
      ci: use a newer `github-script` version

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Jordi Mas (1):
      l10n: Update Catalan translation

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (32):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1
      Git 2.39-rc2
      Git 2.38.2
      Git 2.39

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matheus Tavares (1):
      mailmap: update email address of Matheus Tavares

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Oscar Dominguez (1):
      ci(main): upgrade actions/checkout to v3

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5501t0f0)

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

Ralf Thielow (1):
      l10n: de.po: update German translation

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (8):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option
      rebase --update-refs: avoid unintended ref deletion

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.39-rc2

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (118):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
      cocci: avoid "should ... be a metavariable" warnings
      CI: upgrade to macos-12, and pin OSX version
      CI: don't explicitly pick "bash" shell outside of Windows, fix regression
      CI: migrate away from deprecated "set-output" syntax

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc2
@ 2022-12-06  4:00  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-12-06  4:00 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.39.0-rc2 is now available for testing at
the usual places.  It is comprised of 463 non-merge commits since
v2.38.0, contributed by 74 people, 30 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.39.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
  Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
  Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño, Alex Henrie, Derrick
  Stolee, Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Eric
  DeCosta, Eric Sunshine, Eric Wong, Glen Choo, Han-Wen Nienhuys,
  Jan Pokorný, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
  Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin, John
  Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Kyle Meyer,
  Martin Ågren, Martin von Zweigbergk, Matthew John Cheetham,
  Michael J Gruber, Michael McClimon, Patrick Steinhardt, Paul
  Smith, Philip Oakley, Philippe Blain, Phillip Wood, Randall
  S. Becker, René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER
  Gábor, Taylor Blau, Torsten Bögershausen, and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * The build procedure has been adjusted to GNUmake version 4.4, which
   made some changes to how pattern rule with multiple targets are
   handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (1):
      i18n: fix command template placeholder format

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (30):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1
      Git 2.39-rc2

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (115):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"
      Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
      cocci: avoid "should ... be a metavariable" warnings

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* Re: [PATCH 00/33] object id conversion (grep and diff)
  @ 2017-06-02 23:35  3%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2017-06-02 23:35 UTC (permalink / raw)
  To: Brandon Williams; +Cc: git, peff, sandals

Brandon Williams <bmwill@google.com> writes:

> On 06/02, Junio C Hamano wrote:
>> 
>> I lied.  This also conflicts somewhat with Peff's diff-blob topic.
>> I think I resolved them correctly (there needs evil merges applied
>> to two files when merging this topic), and hopefully can push out
>> the result by the end of the day.
>> 
>> Thanks.
>
> If it ends up being too much of a headache for you to deal with, let me
> know and I can rebase on top of those series.  That way you don't have to
> deal with the conflict resolutions.  Just let me know what you'd like me
> to do.

Sorry, I forgot to push the result out, even though I double checked
the conflict resolution I did last night.  Now it is in the public
repository.  I have one squash queued at the right place to update
SHA1s to OIDs in the comment Brian pointed out.

If you ever need to rebase this on top of future 'master' that
already has js/blame-lib topic, fetching from me and checking
the evil merge I did may turn out to be helpful:

 $ git fetch git://github.com/gitster/git refs/merge-fix/bw/object-id
 $ git show FETCH_HEAD

but I can take patches based on the same old 'master'; as long as
the evil merge above is correct, that would probably be preferrable,
as it makes it easier to compare the two iterations of your series.

Repeating some backstory of "merge-fix" might be beneficial, if a
reader is interested.  Otherwise the remainder of this message can
safely be skipped.

After a topic (i.e. js/blame-lib) moves a lot of code around (i.e. a
bulk of what used to be in builtin/blame.c is now in blame.c and
some in diff.c), merging a topic that touches places in the code
that was moved in-place (i.e. bw/object-id, which updates the code
in builtin/blame.c) will leave a conflict that looks like:

    <<<<<<< HEAD
    ... very little that is left after moving
    ... bunch of code out of this file
    ||||||| common
    ... a lot of
    ... stuff before
    ... your change from SHA1 to OID
    ... is here
    =======
    ... a lot of
    ... stuff after
    ... your change from SHA1 to OID
    ... is here
    >>>>>>> theirs

As far as builtin/blame.c is concerned, the resolution for this
set of conflicts is just to take the HEAD version, ignoring all of
your SHA1-to-OID changes.  Once it is resolved, "rerere" can help
us remember this resolution to builtin/blame.c

But the ignored changes need to go somewhere else.

What the user who is doing a merge does at this point is to compare
what is between ||||||| and ======= (i.e. common ancestor's version)
with what is between ======= and >>>>>>> (i.e. their version) to
figure out what the branch being merged did.  And the user needs to
know where the common code went in the version in HEAD.

 $ git log [--no-merges] -p MERGE_HEAD.. -- builtin/blame.c

is helpful to locate the commit that lost the common lines from the
file.  And "git show" on it will tell us that they mostly went to
blame.c while some migrating to diff.c; we found out what you did by
comparing "common" and "theirs" in the previous step and we apply
these changes to these "new" places.

And that is the diff you see in refs/merge-fix/bw/object-id.  The
script I use to re-build 'pu' every day (probably I use it three
times a day on average) knows about that ref.  The script starts
from the tip of 'master', and for each topic, (1) run "git merge"
into HEAD, (2) take resolution recorded by "rerere" and (3) if
merge/fix/$topic exists, cherry-pick it on top to squash into the
merge made in (2).

Once I have taught my rerere database and refs/merge-fix/ about this
merge, it is not too big a deal to redo the merge to adjust to an
updated 'master' or a new interation of your series because of the
above mechanism.  And that is why I say it is OK for an updated series
to be based on the same old 'master'.

Thanks.



^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2016, #04; Wed, 11)
@ 2016-05-11 22:13  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-11 22:13 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the eleventh batch of topics of this
cycle.  On the 'maint' front, 2.8.2 is out and fixes that have been
in 'master' accumulates on it for 2.8.3.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ew/doc-split-pack-disables-bitmap (2016-04-28) 1 commit
  (merged to 'next' on 2016-05-06 at 6343d1e)
 + pack-objects: warn on split packs disabling bitmaps

 Doc update.


* ew/normal-to-e (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 65a2c52)
 + .mailmap: update to my shorter email address


* js/close-packs-before-gc (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at bfd39bf)
 + t5510: run auto-gc in the foreground


* ls/p4-lfs (2016-04-28) 3 commits
  (merged to 'next' on 2016-05-06 at 3e1354d)
 + git-p4: fix Git LFS pointer parsing
 + travis-ci: express Linux/OS X dependency versions more clearly
 + travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.


* ls/travis-submitting-patches (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 467930e)
 + Documentation: add setup instructions for Travis CI


* rn/glossary-typofix (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 1e73e76)
 + Documentation: fix typo 'In such these cases'


* sb/clean-test-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at d80c9c6)
 + t7300: mark test with SANITY


* sb/misc-cleanups (2016-04-28) 2 commits
  (merged to 'next' on 2016-05-06 at 87bc8a5)
 + submodule-config: don't shadow `cache`
 + config.c: drop local variable


* sk/gitweb-highlight-encoding (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 441302c)
 + gitweb: apply fallback encoding before highlight

 Some multi-byte encoding can have a backslash byte as a later part
 of one letter, which would confuse "highlight" filter used in
 gitweb.

--------------------------------------------------
[New Topics]

* es/t1500-modernize (2016-05-10) 7 commits
 - t1500: finish preparation upfront
 - t1500: be considerate to future potential tests
 - t1500: avoid setting environment variables outside of tests
 - t1500: avoid setting configuration options outside of tests
 - t1500: avoid changing working directory outside of tests
 - t1500: reduce dependence upon global state
 - t1500: test_rev_parse: facilitate future test enhancements

 test updates to make it more readable and maintainable.

 Will be rerolled.


* ls/travis-build-doc (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at 7f63497)
 + travis-ci: build documentation

 CI test was taught to build documentation pages.

 Will merge to 'master'.


* js/t3404-typofix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at cbeabc0)
 + t3404: fix typo

 Will merge to 'master'.


* jk/rebase-interative-eval-fix (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-11 at 4fdf387)
 + rebase--interactive: avoid empty list in shell for-loop

 Portability enhancement for "rebase -i" to help platforms whose
 shell does not like "for i in <empty>" (which is not POSIX-kosher).

 Will merge to 'master'.


* jk/test-send-sh-x-trace-elsewhere (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 273a137)
 + test-lib: set BASH_XTRACEFD automatically

 Running tests with '-x' option to trace the individual command
 executions is a useful way to debug test scripts, but some tests
 that capture the standard error stream and check what the command
 said can be broken with the trace output mixed in.  When running
 our tests under "bash", however, we can redirect the trace output
 to another file descriptor to keep the standard error of programs
 being tested intact.

 Will merge to 'master'.


* js/perf-rebase-i (2016-05-11) 3 commits
 - Add a perf test for rebase -i
 - perf: make the tests work in worktrees
 - perf: let's disable symlinks when they are not available

 Add perf test for "rebase -i"


* nd/worktree-cleanup-post-head-protection (2016-05-10) 7 commits
 - worktree: simplify prefixing paths
 - worktree: avoid 0{40}, too many zeroes, hard to read
 - worktree.c: add clear_worktree()
 - worktree.c: use is_dot_or_dotdot()
 - git-worktree.txt: keep subcommand listing in alphabetical order
 - worktree.c: rewrite mark_current_worktree() to avoid strbuf
 - completion: support git-worktree
 (this branch uses nd/worktree-various-heads.)


* va/mailinfo-doc-typofix (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at 7180176)
 + Documentation/git-mailinfo: fix typo

 Typofix.

 Will merge to 'master'.

--------------------------------------------------
[Stalled]

* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Expecting a reroll.
 ($gmane/292074, 293236)


* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will this be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 . completion: cache the path to the repository
 . completion: extract repository discovery from __gitdir()
 . completion: don't guard git executions with __gitdir()
 . completion: consolidate silencing errors from git commands
 . completion: don't use __gitdir() for git commands
 . completion: respect 'git -C <path>'
 . completion: fix completion after 'git -C <path>'
 . completion: don't offer commands when 'git --opt' needs an argument
 . rev-parse: add '--absolute-git-dir' option
 . completion: list short refs from a remote given as a URL
 . completion: don't list 'HEAD' when trying refs completion outside of a repo
 . completion: list refs from remote when remote's name matches a directory
 . completion: respect 'git --git-dir=<path>' when listing remote refs
 . completion: fix most spots not respecting 'git --git-dir=<path>'
 . completion: ensure that the repository path given on the command line exists
 . completion tests: add tests for the __git_refs() helper function
 . completion tests: check __gitdir()'s output in the error cases
 . completion tests: consolidate getting path of current working directory
 . completion tests: make the $cur variable local to the test helper functions
 . completion tests: don't add test cruft to the test repository
 . completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
  (merged to 'next' on 2016-05-10 at 2ada404)
 + wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).  This is a stop-gap
 measure in that "commit --short --dry-run" still gives an incorrect
 result.

 Will merge to 'master'.


* ak/t4151-ls-files-could-be-empty (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 36ae38c)
 + t4151: make sure argument to 'test -z' is given

 Test fix.

 Will merge to 'master'.


* es/test-gpg-tags (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 9fcb98b)
 + t6302: simplify non-gpg cases

 Test fix.

 Will merge to 'master'.


* jc/test-seq (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-10 at 1512890)
 + test-lib-functions.sh: rewrite test_seq without Perl
 + test-lib-functions.sh: remove misleading comment on test_seq

 Test fix.

 Will merge to 'master'.


* js/windows-dotgit (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at d10caa2)
 + mingw: remove unnecessary definition
 + mingw: introduce the 'core.hideDotFiles' setting

 On Windows, .git and optionally any files whose name starts with a
 dot are now marked as hidden, with a core.hideDotFiles knob to
 customize this behaviour.

 Will merge to 'master'.


* nd/error-errno (2016-05-09) 41 commits
  (merged to 'next' on 2016-05-10 at 1cdeda8)
 + wrapper.c: use warning_errno()
 + vcs-svn: use error_errno()
 + upload-pack.c: use error_errno()
 + unpack-trees.c: use error_errno()
 + transport-helper.c: use error_errno()
 + sha1_file.c: use {error,die,warning}_errno()
 + server-info.c: use error_errno()
 + sequencer.c: use error_errno()
 + run-command.c: use error_errno()
 + rerere.c: use error_errno() and warning_errno()
 + reachable.c: use error_errno()
 + mailmap.c: use error_errno()
 + ident.c: use warning_errno()
 + http.c: use error_errno() and warning_errno()
 + grep.c: use error_errno()
 + gpg-interface.c: use error_errno()
 + fast-import.c: use error_errno()
 + entry.c: use error_errno()
 + editor.c: use error_errno()
 + diff-no-index.c: use error_errno()
 + credential-cache--daemon.c: use warning_errno()
 + copy.c: use error_errno()
 + connected.c: use error_errno()
 + config.c: use error_errno()
 + compat/win32/syslog.c: use warning_errno()
 + combine-diff.c: use error_errno()
 + check-racy.c: use error_errno()
 + builtin/worktree.c: use error_errno()
 + builtin/upload-archive.c: use error_errno()
 + builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
 + builtin/rm.c: use warning_errno()
 + builtin/pack-objects.c: use die_errno() and warning_errno()
 + builtin/merge-file.c: use error_errno()
 + builtin/mailsplit.c: use error_errno()
 + builtin/help.c: use warning_errno()
 + builtin/fetch.c: use error_errno()
 + builtin/branch.c: use error_errno()
 + builtin/am.c: use error_errno()
 + bisect.c: use die_errno() and warning_errno()
 + usage.c: add warning_errno() and error_errno()
 + usage.c: move format processing out of die_errno()

 The code for warning_errno/die_errno has been refactored and a new
 error_errno() reporting helper is introduced.

 Will merge to 'master'.


* nd/remote-plural-ours-plus-theirs (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-10 at aea08dc)
 + remote.c: specify correct plural form in "commit diverge" message

 Message fix.

 Will merge to 'master'.


* nd/test-helpers (2016-05-10) 1 commit
  (merged to 'next' on 2016-05-10 at e8ad58d)
 + wrap-for-bin.sh: regenerate bin-wrappers when switching branches

 Switching between 'master' and 'next', between which the paths to
 test helper binaries have changed, did not update bin-wrappers/*
 scripts used in tests, causing false test failures.

 Will merge to 'master'.


* tb/core-eol-fix (2016-04-25) 4 commits
  (merged to 'next' on 2016-05-10 at fa8a200)
 + convert.c: ident + core.autocrlf didn't work
 + t0027: test cases for combined attributes
 + convert: allow core.autocrlf=input and core.eol=crlf
 + t0027: make commit_chk_wrnNNO() reliable

 A couple of bugs around core.autocrlf have been fixed.

 Will merge to 'master'.


* tb/t5601-sed-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at d3e54e8)
 + t5601: Remove trailing space in sed expression

 Test fix.

 Will merge to 'master'.


* va/i18n-remote-comment-to-align (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at edbacbb)
 + i18n: remote: add comment for translators

 Message fix.

 Will merge to 'master'.


* jc/linkgit-fix (2016-05-09) 1 commit
  (merged to 'next' on 2016-05-10 at 0e5ba60)
 + Documentation: fix linkgit references

 Many 'linkgit:<git documentation page>' references were broken,
 which are all fixed with this.

 Will merge to 'master'.


* js/http-custom-headers (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 7cf5cca)
 + submodule: ensure that -c http.extraheader is heeded
 + Merge branch 'jk/submodule-c-credential' into js/http-custom-headers
 + t5551: make the test for extra HTTP headers more robust
 + tests: adjust the configuration for Apache 2.2
 (this branch uses jk/submodule-c-credential.)

 Update tests for "http.extraHeaders=<header>" to be portable back
 to Apache 2.2 (the original depended on <RequireAll/> which is a
 more recent feature).

 Will merge to 'master'.


* sb/submodule-deinit-all (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-09 at 0fd4518)
 + submodule deinit: require '--all' instead of '.' for all submodules

 Correct faulty recommendation to use "git submodule deinit ." when
 de-initialising all submodules, which would result in a strange
 error message in a pathological corner case.

 Will merge to 'master'.


* bn/config-doc-tt-varnames (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-10 at aa7b834)
 + config: consistently format $variables in monospaced font
 (this branch uses jc/config-pathname-type.)

 Doc formatting fixes.

 Will merge to 'master'.


* lp/typofixes (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-09 at 59683be)
 + typofix: assorted typofixes in comments, documentation and messages

 Will merge to 'master'.


* sb/z-is-gnutar-ism (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-09 at 51d527d)
 + t6041: do not compress backup tar file
 + t3513: do not compress backup tar file

 Will merge to 'master'.


* jc/test-parse-options-expect (2016-05-10) 4 commits
  (merged to 'next' on 2016-05-10 at 3ca5783)
 + t0040: convert a few tests to use test-parse-options --expect
 + t0040: remove unused test helpers
 + test-parse-options: --expect=<string> option to simplify tests
 + test-parse-options: fix output when callback option fails
 (this branch uses pb/commit-verbose-config.)

 t0040 had too many unnecessary repetitions in its test data.  Teach
 test-parse-options program so that a caller can tell what it
 expects in its output, so that these repetitions can be cleaned up.

 Will merge to 'master'.


* jc/doc-lint (2016-05-10) 1 commit
 - ci: validate "linkgit:" in documentation

 Find common mistakes when writing gitlink: in our documentation and
 drive the check from "make check-docs".


* jc/commit-tree-ignore-commit-gpgsign (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 08eccb2)
 + commit-tree: do not pay attention to commit.gpgsign

 "git commit-tree" plumbing command required the user to always sign
 its result when the user sets the commit.gpgsign configuration
 variable, which was an ancient mistake.  Rework "git rebase" that
 relied on this mistake so that it reads commit.gpgsign and pass (or
 not pass) the -S option to "git commit-tree" to keep the end-user
 expectation the same, while teaching "git commit-tree" to ignore
 the configuration variable.  This will stop requiring the users to
 sign commit objects used internally as an implementation detail of
 "git stash".

 Will merge to 'master'.


* jk/push-client-deadlock-fix (2016-05-11) 2 commits
  (merged to 'next' on 2016-05-11 at 8f4abf9)
 + Windows: only add a no-op pthread_sigmask() when needed
  (merged to 'next' on 2016-05-06 at e91626c)
 + Windows: add pthread_sigmask() that does nothing

 Some Windows SDK lacks pthread_sigmask() implementation and fails
 to compile the recently updated "git push" codepath that uses it.

 Will merge to 'master'.


* sb/submodule-module-list-pathspec-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at ab6dac3)
 + submodule deinit test: fix broken && chain in subshell

 Will merge to 'master'.


* ab/hooks (2016-05-04) 4 commits
  (merged to 'next' on 2016-05-09 at 23cf808)
 + hooks: allow customizing where the hook directory is
 + githooks.txt: minor improvements to the grammar & phrasing
 + githooks.txt: amend dangerous advice about 'update' hook ACL
 + githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Will merge to 'master'.


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.


* mh/split-under-lock (2016-05-06) 33 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): move docstring to header file
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring
 - read_raw_ref(): don't get confused by an empty directory
 - commit_ref(): if there is an empty dir in the way, delete it
 - t1404: demonstrate a bug resolving references

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Updated.  Will wait for comments for the last time, and then
 merge to 'next'.


* bn/http-cookiefile-config (2016-05-04) 2 commits
  (merged to 'next' on 2016-05-09 at d519b13)
 + http: expand http.cookieFile as a path
 + Documentation: config: improve word ordering for http.cookieFile

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Will merge to 'master'.


* jc/config-pathname-type (2016-05-04) 1 commit
  (merged to 'next' on 2016-05-09 at 0876e55)
 + config: describe 'pathname' value type
 (this branch is used by bn/config-doc-tt-varnames.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'master'.


* jk/submodule-c-credential (2016-05-06) 6 commits
  (merged to 'next' on 2016-05-10 at 4abe871)
 + submodule: stop sanitizing config options
 + submodule: use prepare_submodule_repo_env consistently
 + submodule--helper: move config-sanitizing to submodule.c
 + submodule: export sanitized GIT_CONFIG_PARAMETERS
 + t5550: break submodule config test into multiple sub-tests
 + t5550: fix typo in $HTTPD_URL
 (this branch is used by js/http-custom-headers.)

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly, and stop filtering settings given via "git -c var=val".

 Will merge to 'master'.


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* ew/fast-import-unpack-limit (2016-05-11) 1 commit
  (merged to 'next' on 2016-05-11 at ffd4efb)
 + fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Will merge to 'master'.


* nd/worktree-various-heads (2016-04-22) 13 commits
  (merged to 'next' on 2016-05-10 at 61d3415)
 + branch: do not rename a branch under bisect or rebase
 + worktree.c: check whether branch is bisected in another worktree
 + wt-status.c: split bisect detection out of wt_status_get_state()
 + worktree.c: check whether branch is rebased in another worktree
 + worktree.c: avoid referencing to worktrees[i] multiple times
 + wt-status.c: make wt_status_check_rebase() work on any worktree
 + wt-status.c: split rebase detection out of wt_status_get_state()
 + path.c: refactor and add worktree_git_path()
 + worktree.c: mark current worktree
 + worktree.c: make find_shared_symref() return struct worktree *
 + worktree.c: store "id" instead of "git_dir"
 + path.c: add git_common_path() and strbuf_git_common_path()
 + dir.c: rename str(n)cmp_icase to fspath(n)cmp
 (this branch is used by nd/worktree-cleanup-post-head-protection.)

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Will merge to 'master'.


* pb/commit-verbose-config (2016-05-10) 7 commits
 + commit: add a commit.verbose config variable
 + t7507-commit-verbose: improve test coverage by testing number of diffs
 + parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 + t/t7507: improve test coverage
 + t0040-parse-options: improve test coverage
 + test-parse-options: print quiet as integer
 + t0040-test-parse-options.sh: fix style issues
 (this branch is used by jc/test-parse-options-expect.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Will merge to 'master'.


* jc/fsck-nul-in-commit (2016-05-10) 2 commits
  (merged to 'next' on 2016-05-10 at 3bc3ca3)
 + fsck: detect and warn a commit with embedded NUL
 + fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.

 Will merge to 'master'.


* jc/ll-merge-internal (2016-05-09) 3 commits
  (merged to 'next' on 2016-05-10 at a6bf1d0)
 + t6036: remove pointless test that expects failure
 + ll-merge: use a longer conflict marker for internal merge
 + ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.

 Will merge to 'master'.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* va/i18n-misc-updates (2016-04-19) 9 commits
  (merged to 'next' on 2016-05-10 at b5dbd0d)
 + i18n: builtin/pull.c: split strings marked for translation
 + i18n: builtin/pull.c: mark placeholders for translation
 + i18n: git-parse-remote.sh: mark strings for translation
 + i18n: branch: move comment for translators
 + i18n: branch: unmark string for translation
 + i18n: builtin/rm.c: remove a comma ',' from string
 + i18n: unpack-trees: mark strings for translation
 + i18n: builtin/branch.c: mark option for translation
 + i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Will merge to 'master'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
  (merged to 'next' on 2016-05-10 at dd19e0a)
 + format-patch: introduce format.useAutoBase configuration
 + format-patch: introduce --base=auto option
 + format-patch: add '--base' option to record base tree info
 + patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will merge to 'master'.


* dt/index-helper (2016-05-09) 19 commits
 - untracked-cache: config option
 - trace: measure where the time is spent in the index-heavy operations
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - watchman: add a config option to enable the extension
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - watchman: support watchman to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: log warnings
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.
 ($gmane/294056).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

--------------------------------------------------
[Discarded]

* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 1 commit
 . diff: enable "compaction heuristics" and lose experimentation knob

 Superseded by the tip commit on the jk/diff-compact-heuristic topic.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.39.0-rc1
@ 2022-11-30  6:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-11-30  6:12 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.39.0-rc1 is now available for testing at
the usual places.  It is comprised of 460 non-merge commits since
v2.38.0, contributed by 74 people, 30 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.39.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.38.0 are as follows.
Welcome to the Git development community!

  Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
  Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
  Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
  A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
  Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
  Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
  Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
  Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
  Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
  Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
  Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
  Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
  Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin Ågren,
  Martin von Zweigbergk, Matthew John Cheetham, Michael J Gruber,
  Michael McClimon, Patrick Steinhardt, Paul Smith, Philip Oakley,
  Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe,
  Sergey Organov, Shaoxuan Yuan, SZEDER Gábor, Taylor Blau,
  Torsten Bögershausen, and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.39 Release Notes (draft)
===============================

UI, Workflows & Features
------------------------

 * "git grep" learned to expand the sparse-index more lazily and on
   demand in a sparse checkout.

 * By default, use of fsmonitor on a repository on networked
   filesystem is disabled. Add knobs to make it workable on macOS.

 * After checking out a "branch" that is a symbolic-ref that points at
   another branch, "git symbolic-ref HEAD" reports the underlying
   branch, not the symbolic-ref the user gave checkout as argument.
   The command learned the "--no-recurse" option to stop after
   dereferencing a symbolic-ref only once.

 * "git branch --edit-description @{-1}" is now a way to edit branch
   description of the branch you were on before switching to the
   current branch.

 * "git merge-tree --stdin" is a new way to request a series of merges
   and report the merge results.

 * "git shortlog" learned to group by the "format" string.

 * A new "--include-whitespace" option is added to "git patch-id", and
   existing bugs in the internal patch-id logic that did not match
   what "git patch-id" produces have been corrected.

 * Enable gc.cruftpacks by default for those who opt into
   feature.experimental setting.

 * "git repack" learns to send cruft objects out of the way into
   packfiles outside the repository.

 * 'scalar reconfigure -a' is taught to automatically remove
   scalar.repo entires which no longer exist.

 * Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
   others.

 * 'git maintenance register' is taught to write configuration to an
   arbitrary path, and 'git for-each-repo' is taught to expand tilde
   characters in paths.

 * When creating new notes, the template used to get a stray empty
   newline, which has been removed.

 * "git receive-pack" used to use all the local refs as the boundary for
   checking connectivity of the data "git push" sent, but now it uses
   only the refs that it advertised to the pusher. In a repository with
   the .hideRefs configuration, this reduces the resources needed to
   perform the check.

 * With '--recurse-submodules=on-demand', all submodules are
   recursively pushed.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * With a bit of header twiddling, use the native regexp library on
   macOS instead of the compat/ one.

 * Prepare for GNU [ef]grep that throw warning of their uses.

 * Sources related to fuzz testing have been moved down to their own
   directory.

 * Most credential helpers ignored unknown entries in a credential
   description, but a few died upon seeing them.  The latter were
   taught to ignore them, too

 * "scalar unregister" in a repository that is already been
   unregistered reported an error.

 * Remove error detection from a function that fetches from promisor
   remotes, and make it die when such a fetch fails to bring all the
   requested objects, to give an early failure to various operations.

 * Update CodingGuidelines to clarify what features to use and avoid
   in C99.

 * Avoid false-positive from LSan whose assumption may be broken with
   higher optimization levels.

 * Enable address and undefined sanitizer tasks at GitHub Actions CI.

 * More UNUSED annotation to help using -Wunused option with the
   compiler.
   (merge 4b992f0a24 jk/unused-anno-more later to maint).

 * Rewrite a deep recursion in the skipping negotiator to use a loop
   with on-heap prio queue to avoid stack wastage.

 * Add documentation for message IDs in fsck error messages.

 * Define the logical elements of a "bundle list", data structure to
   store them in-core, format to transfer them, and code to parse
   them.

 * The role the security mailing list plays in an embargoed release
   has been documented.

 * Two new facilities, "timer" and "counter", are introduced to the
   trace2 API.

 * Code simplification by using strvec_pushf() instead of building an
   argument in a separate strbuf.

 * Make sure generated dependency file is stably sorted to help
   developers debugging their build issues.

 * The glossary entries for "commit-graph file" and "reachability
   bitmap" have been added.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * A redundant diagnostic message is dropped from test_path_is_missing().

 * Simplify the run-command API.

 * Update the actions/github-script dependency in CI to avoid a
   deprecation warning.

 * Progress on being able to initialize a rev_info struct with a
   macro.

 * Add trace2 counters to the region to clear skip worktree bits in a
   sparse checkout.

 * Modernize test script to avoid "test -f" and friends.

 * Avoid calling 'cache_tree_update()' when doing so would be
   redundant.

 * Update the credential-cache documentation to provide a more
   realistic example.

 * Makefile comments updates and reordering to clarify knobs used to
   choose SHA implementations.

 * A design document for sparse-checkout's future directions has been
   added.

 * Teach chainlint.pl to annotate the original test definition instead
   of the token stream.

 * "make coccicheck" is time consuming. It has been made to run more
   incrementally.

 * `parse_object()` has been hardened to check for the existence of a
   suspected blob object.

 * Adjust the documentation build procedure to GNUmake version 4.4,
   which made some changes to how pattern rule with multiple targets
   are handled.


Fixes since v2.38
-----------------

 * The codepath that reads from the index v4 had unaligned memory
   accesses, which has been corrected.

 * Fix messages incorrectly marked for translation.

 * "git fsck" failed to release contents of tree objects already used
   from the memory, which has been fixed.

 * "git clone" did not like to see the "--bare" and the "--origin"
   options used together without a good reason.

 * "git remote rename" failed to rename a remote without fetch
   refspec, which has been corrected.

 * Documentation on various Boolean GIT_* environment variables have
   been clarified.

 * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
   itself, which has been corrected.

 * "git multi-pack-index repack/expire" used to repack unreachable
   cruft into a new pack, which have been corrected.

 * In read-only repositories, "git merge-tree" tried to come up with a
   merge result tree object, which it failed (which is not wrong) and
   led to a segfault (which is bad), which has been corrected.

 * Force C locale while running tests around httpd to make sure we can
   find expected error messages in the log.

 * Fix a logic in "mailinfo -b" that miscomputed the length of a
   substring, which lead to an out-of-bounds access.

 * The codepath to sign learned to report errors when it fails to read
   from "ssh-keygen".

 * Code clean-up that results in plugging a leak.

 * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
   which has been corrected.

 * The code to clean temporary object directories (used for
   quarantine) tried to remove them inside its signal handler, which
   was a no-no.

 * Update comment in the Makefile about the RUNTIME_PREFIX config knob.

 * Clarify that "the sentence after <area>: prefix does not begin with
   a capital letter" rule applies only to the commit title.

 * "git branch --edit-description" on an unborh branch misleadingly
   said that no such branch exists, which has been corrected.

 * Work around older clang that warns against C99 zero initialization
   syntax for struct.

 * Giving "--invert-grep" and "--all-match" without "--grep" to the
   "git log" command resulted in an attempt to access grep pattern
   expression structure that has not been allocated, which has been
   corrected.
   (merge db84376f98 ab/grep-simplify-extended-expression later to maint).

 * "git diff rev^!" did not show combined diff to go to the rev from
   its parents.
   (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).

 * Allow configuration files in "protected" scopes to include other
   configuration files.
   (merge ecec57b3c9 gc/bare-repo-discovery later to maint).

 * Give a bit more diversity to macOS CI by using sha1dc in one of the
   jobs (the other one tests Apple Common Crypto).
   (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).

 * A bugfix with tracing support in midx codepath
   (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).

 * When geometric repacking feature is in use together with the
   --pack-kept-objects option, we lost packs marked with .keep files.
   (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).

 * Move a global variable added as a hack during regression fixes to
   its proper place in the API.
   (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).

 * Update to build procedure with VS using CMake/CTest.
   (merge c858750b41 js/cmake-updates later to maint).

 * The short-help text shown by "git cmd -h" and the synopsis text
   shown at the beginning of "git help cmd" have been made more
   consistent.

 * When creating a multi-pack bitmap, remove per-pack bitmap files
   unconditionally as they will never be consulted.
   (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).

 * Fix a longstanding syntax error in Git.pm error codepath.

 * "git diff --stat" etc. were invented back when everything was ASCII
   and strlen() was a way to measure the display width of a string;
   adjust them to compute the display width assuming UTF-8 pathnames.
   (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).

 * "git branch --edit-description" can exit with status -1 which is
   not a good practice; it learned to use 1 as everybody else instead.

 * "git apply" limits its input to a bit less than 1 GiB.

 * Merging a branch with directory renames into a branch that changes
   the directory to a symlink was mishandled by the ort merge
   strategy, which has been corrected.

 * A bugfix to "git subtree" in its split and merge features.

 * Fix some bugs in the reflog messages when rebasing and changes the
   reflog messages of "rebase --apply" to match "rebase --merge" with
   the aim of making the reflog easier to parse.

 * "git rebase --keep-base" used to discard the commits that are
   already cherry-picked to the upstream, even when "keep-base" meant
   that the base, on top of which the history is being rebuilt, does
   not yet include these cherry-picked commits.  The --keep-base
   option now implies --reapply-cherry-picks and --no-fork-point
   options.

 * The way "git repack" creared temporary files when it received a
   signal was prone to deadlocking, which has been corrected.

 * Various tests exercising the transfer.credentialsInUrl
   configuration are taught to avoid making requests which require
   resolving localhost to reduce CI-flakiness.

 * The adjust_shared_perm() helper function learned to refrain from
   setting the "g+s" bit on directories when it is not necessary.

 * "git archive" mistakenly complained twice about a missing
   executable, which has been corrected.

 * Fix a bug where `git branch -d` did not work on an orphaned HEAD.

 * `git rebase --update-refs` would delete references when all
   `update-ref` commands in the sequencer were removed, which has been
   corrected.

 * Fix a regression in the bisect-helper which mistakenly treats
   arguments to the command given to 'git bisect run' as arguments to
   the helper.

 * Correct an error where `git rebase` would mistakenly use a branch or
   tag named "refs/rewritten/xyz" when missing a rebase label.

 * Assorted fixes of parsing end-user input as integers.
   (merge 14770cf0de pw/config-int-parse-fixes later to maint).

 * "git prune" may try to iterate over .git/objects/pack for trash
   files to remove in it, and loudly fail when the directory is
   missing, which is not necessary.  The command has been taught to
   ignore such a failure.
   (merge 6974765352 ew/prune-with-missing-objects-pack later to maint).

 * Add one more candidate directory that may house httpd modules while
   running tests.
   (merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).

 * A handful of leaks in the line-log machinery have been plugged.

 * The format of a line in /proc/cpuinfo that describes a CPU on s390x
   looked different from everybody else, and the code in chainlint.pl
   failed to parse it.
   (merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).

 * Adjust the GitHub CI to newer ubuntu release.
   (merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 413bc6d20a ds/cmd-main-reorder later to maint).
   (merge 8d2863e4ed nw/t1002-cleanup later to maint).
   (merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
   (merge 288fcb1c94 zk/push-use-bitmaps later to maint).
   (merge 42db324c0f km/merge-recursive-typofix later to maint).

----------------------------------------------------------------

Changes since v2.38.0 are as follows:

Alejandro R. Sedeño (1):
      git-compat-util.h: GCC deprecated message arg only in GCC 4.5+

Alex Henrie (2):
      fsmonitor--daemon: don't translate literal commands
      push: improve grammar of branch.autoSetupMerge advice

Andreas Hasenack (1):
      chainlint.pl: fix /proc/cpuinfo regexp

Anh Le (2):
      index: add trace2 region for clear skip worktree
      index: raise a bug if the index is materialised more than once

Arthur Chan (1):
      fuzz: reorganise the path for existing oss-fuzz fuzzers

Daniel Sonbolian (1):
      git.c: improve code readability in cmd_main()

Debra Obondo (1):
      t7001-mv.sh: modernizing test script using functions

Derrick Stolee (15):
      maintenance: add 'unregister --force'
      scalar: make 'unregister' idempotent
      gc: replace config subprocesses with API calls
      string-list: document iterator behavior on NULL input
      bundle-uri: fix technical doc issues
      bundle-uri: use plain string in find_temp_filename()
      bundle-uri: create bundle_list struct and helpers
      bundle-uri: create base key-value pair parsing
      bundle-uri: parse bundle list in config format
      bundle-uri: limit recursion depth for bundle lists
      bundle: properly clear all revision flags
      bundle-uri: fetch a list of bundles
      bundle: add flags to verify_bundle()
      bundle-uri: quiet failed unbundlings
      bundle-uri: suppress stderr from remote-https

Diomidis Spinellis (1):
      grep: fix multibyte regex handling under macOS

Elijah Newren (4):
      merge-ort: fix bug with dir rename vs change dir to symlink
      merge-tree: update documentation for differences in -z output
      merge-tree: support multiple batched merges with --stdin
      sparse-checkout.txt: new document with sparse-checkout directions

Emily Shaffer (2):
      gc: add tests for --cruft and friends
      config: let feature.experimental imply gc.cruftPacks=true

Eric DeCosta (6):
      fsmonitor: refactor filesystem checks to common interface
      fsmonitor: relocate socket file if .git directory is remote
      fsmonitor: avoid socket location check if using hook
      fsmonitor: deal with synthetic firmlinks on macOS
      fsmonitor: check for compatability before communicating with fsmonitor
      fsmonitor: add documentation for allowRemote and socketDir options

Eric Sunshine (9):
      check-non-portable-shell: detect obsolescent egrep/fgrep
      chainlint: add explanatory comments
      chainlint: tighten accuracy when consuming input stream
      chainlint: latch start/end position of each token
      chainlint: annotate original test definition rather than token stream
      chainlint: sidestep impoverished macOS "terminfo"
      chainlint: latch line numbers at which each token starts and ends
      chainlint: prefix annotated test definition with line numbers
      lib-httpd: extend module location auto-detection

Eric Wong (2):
      delta-islands: free island-related data after use
      prune: quiet ENOENT on missing directories

Glen Choo (3):
      config: respect includes in protected config
      http: redact curl h2h3 headers in info
      object-file: use real paths when adding alternates

Han-Wen Nienhuys (1):
      refs: unify parse_worktree_ref() and ref_type()

Jean-Noël Avila (1):
      i18n: fix command template placeholder format

Jeff Hostetler (9):
      config.mak.dev: disable suggest braces error on old clang versions
      trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
      tr2tls: clarify TLS terminology
      api-trace2.txt: elminate section describing the public trace2 API
      trace2: rename the thread_name argument to trace2_thread_start
      trace2: improve thread-name documentation in the thread-context
      trace2: convert ctx.thread_name from strbuf to pointer
      trace2: add stopwatch timers
      trace2: add global counter mechanism

Jeff King (43):
      fsck: free tree buffers after walking unreachable objects
      fsck: turn off save_commit_buffer
      parse_object_buffer(): respect save_commit_buffer
      clone: allow "--bare" with "-o"
      remote: handle rename of remote without fetch refspec
      shell: add basic tests
      shell: limit size of interactive commands
      sequencer: detect author name errors in read_author_script()
      test-submodule: inline resolve_relative_url() function
      multi-pack-index: avoid writing to global in option callback
      commit: avoid writing to global in option callback
      attr: drop DEBUG_ATTR code
      dir: use fspathncmp() in pl_hashmap_cmp()
      fsmonitor: fix leak of warning message
      diffstat_consume(): assert non-zero length
      submodule--helper: drop unused argc from module_list_compute()
      update-index: drop unused argc from do_reupdate()
      mark unused parameters in trivial compat functions
      object-file: mark unused parameters in hash_unknown functions
      string-list: mark unused callback parameters
      date: mark unused parameters in handler functions
      apply: mark unused parameters in handlers
      apply: mark unused parameters in noop error/warning routine
      convert: mark unused parameter in null stream filter
      diffcore-pickaxe: mark unused parameters in pickaxe functions
      ll-merge: mark unused parameters in callbacks
      Makefile: force -O0 when compiling with SANITIZE=leak
      repack: convert "names" util bitfield to array
      repack: populate extension bits incrementally
      repack: expand error message for missing pack files
      repack: use tempfiles for signal cleanup
      repack: drop remove_temporary_files()
      Git.pm: trust rev-parse to find bare repositories
      t7700: annotate cruft-pack failure with ok=sigpipe
      shortlog: accept `--date`-related options
      Makefile: force -O0 when compiling with SANITIZE=leak
      t5516: move plaintext-password tests from t5601 and t5516
      ref-filter: fix parsing of signatures without blank lines
      ref-filter: fix parsing of signatures with CRLF and no body
      branch: gracefully handle '-d' on orphan HEAD
      t: run t5551 tests with both HTTP and HTTP/2
      parse_object(): drop extra "has" check before checking object type
      parse_object(): check on-disk type of suspected blob

Jerry Zhang (6):
      patch-id: fix stable patch id for binary / header-only
      patch-id: use stable patch-id for rebases
      builtin: patch-id: fix patch-id with binary diffs
      patch-id: fix patch-id for mode changes
      builtin: patch-id: add --verbatim as a command mode
      builtin: patch-id: remove unused diff-tree prefix

Jiang Xin (5):
      t5516: fail to run in verbose mode
      github-actions: run gcc-8 on ubuntu-20.04 image
      ci: remove the pipe after "p4 -V" to catch errors
      ci: use the same version of p4 on both Linux and macOS
      ci: install python on ubuntu

Johannes Altmanninger (1):
      sequencer: avoid dropping fixup commit that targets self via commit-ish

Johannes Schindelin (11):
      merge-ort: fix segmentation fault in read-only repositories
      merge-ort: return early when failing to write a blob
      cmake: make it easier to diagnose regressions in CTest runs
      cmake: copy the merge tools for testing
      add -p: avoid ambiguous signed/unsigned comparison
      cmake: avoid editing t/test-lib.sh
      cmake: increase time-out for a long-running test
      t5516/t5601: be less strict about the number of credential warnings
      scalar reconfigure -a: remove stale `scalar.repo` entries
      ci: use a newer `github-script` version
      tests(scalar): tighten the stale `scalar.repo` test some

John Cai (3):
      tmp-objdir: skip clean up when handling a signal
      fsck: remove the unused BAD_TAG_OBJECT
      fsck: document msg-id

Jonathan Tan (4):
      promisor-remote: remove a return value
      promisor-remote: die upon failing fetch
      negotiator/skipping: avoid stack overflow
      Doc: document push.recurseSubmodules=only

Julia Ramer (1):
      embargoed releases: also describe the git-security list and the process

Junio C Hamano (29):
      environ: document GIT_SSL_NO_VERIFY
      environ: explain Boolean environment variables
      environ: GIT_FLUSH should be made a usual Boolean
      environ: simplify description of GIT_INDEX_FILE
      environ: GIT_INDEX_VERSION affects not just a new repository
      branch: do not fail a no-op --edit-desc
      SubmittingPatches: use usual capitalization in the log message body
      Start 2.39 cycle
      symbolic-ref: teach "--[no-]recurse" option
      The (real) first batch for 2.39
      The second batch
      The third batch
      The fourth batch
      ci: add address and undefined sanitizer tasks
      ci: use DC_SHA1=YesPlease on osx-clang job for CI
      The fifth batch
      diff: leave NEEDWORK notes in show_stats() function
      fsck: remove the unused MISSING_TREE_OBJECT
      Documentation: add lint-fsck-msgids
      Downmerge a handful of topics for 2.38.2
      The sixth batch
      Downmerge a bit more for 2.38.2
      The seventh batch
      The eighth batch
      adjust_shared_perm(): leave g+s alone when the group does not matter
      Git 2.39-rc0
      Another batch before -rc1
      A bit more before -rc1
      Git 2.39-rc1

Kevin Backhouse (1):
      alias.c: reject too-long cmdline strings in split_cmdline()

Kousik Sanagavarapu (1):
      repository-version.txt: partialClone casing change

Kyle Meyer (1):
      merge-recursive: fix variable typo in error message

M Hickford (4):
      Documentation/gitcredentials.txt: mention password alternatives
      Documentation: increase example cache timeout to 1 hour
      docs: clarify that credential discards unrecognised attributes
      Docs: describe how a credential-generating helper works

Martin Ågren (1):
      test-lib-functions: drop redundant diagnostic print

Matthew John Cheetham (3):
      wincred: ignore unknown lines (do not die)
      netrc: ignore unknown lines (do not die)
      osxkeychain: clarify that we ignore unknown lines

Michael J Gruber (1):
      notes: avoid empty line in template

Michael McClimon (1):
      Git.pm: add semicolon after catch statement

Noah Betzen (1):
      mergetool.txt: typofix 'overwriten' -> 'overwritten'

Nsengiyumva Wilberforce (1):
      t1002: modernize outdated conditional

Patrick Steinhardt (7):
      refs: fix memory leak when parsing hideRefs config
      refs: get rid of global list of hidden refs
      revision: move together exclusion-related functions
      revision: introduce struct to handle exclusions
      revision: add new parameter to exclude hidden refs
      rev-parse: add `--exclude-hidden=` option
      receive-pack: only use visible refs for connectivity check

Paul Smith (1):
      Makefile: avoid multiple patterns when recipes generate one file

Philip Oakley (4):
      doc: use "commit-graph" hyphenation consistently
      doc: use 'object database' not ODB or abbreviation
      glossary: add "commit graph" description
      glossary: add reachability bitmap description

Philippe Blain (9):
      test-lib-functions: mark 'test_commit' variables as 'local'
      subtree: use 'git rev-parse --verify [--quiet]' for better error messages
      subtree: add 'die_incompatible_opt' function to reduce duplication
      subtree: prefix die messages with 'fatal'
      subtree: define a variable before its first use in 'find_latest_squash'
      subtree: use named variables instead of "$@" in cmd_pull
      subtree: process 'git-subtree-split' trailer in separate function
      subtree: fix squash merging after annotated tag was squashed merged
      subtree: fix split after annotated tag was squashed merged

Phillip Wood (26):
      mailinfo -b: fix an out of bounds access
      ssh signing: return an error when signature cannot be read
      t3435: remove redundant test case
      t3416: tighten two tests
      t3416: set $EDITOR in subshell
      rebase: be stricter when reading state files containing oids
      rebase: store orig_head as a commit
      rebase: rename merge_base to branch_base
      rebase: factor out branch_base calculation
      rebase --keep-base: imply --reapply-cherry-picks
      rebase --keep-base: imply --no-fork-point
      rebase --apply: remove duplicated code
      t3406: rework rebase reflog tests
      rebase --merge: fix reflog when continuing
      rebase --merge: fix reflog message after skipping
      rebase --apply: respect GIT_REFLOG_ACTION
      rebase --apply: make reflog messages match rebase --merge
      rebase --abort: improve reflog message
      rebase: cleanup action handling
      sequencer: stop exporting GIT_REFLOG_ACTION
      rebase: stop exporting GIT_REFLOG_ACTION
      git_parse_unsigned: reject negative values
      config: require at least one digit when parsing numbers
      git_parse_signed(): avoid integer overflow
      sequencer: unify label lookup
      sequencer: tighten label lookups

René Scharfe (21):
      revision: use strtol_i() for exclude_parent
      revisions.txt: unspecify order of resolved parts of ^!
      diff: support ^! for merges
      gc: simplify maintenance_task_pack_refs()
      t/lib-httpd: pass LANG and LC_ALL to Apache
      bisect--helper: plug strvec leak
      archive: deduplicate verbose printing
      submodule: use strvec_pushf() for --super-prefix
      run-command: fix return value comment
      am: simplify building "show" argument list
      bisect: simplify building "checkout" argument list
      bisect--helper: factor out do_bisect_run()
      sequencer: simplify building argument list in do_exec()
      use child_process member "args" instead of string array variable
      use child_process members "args" and "env" directly
      replace and remove run_command_v_opt_cd_env()
      replace and remove run_command_v_opt_tr2()
      replace and remove run_command_v_opt_cd_env_tr2()
      replace and remove run_command_v_opt()
      archive-tar: report filter start error only once
      list-objects-filter: plug combine_filter_data leak

Ronan Pigott (2):
      for-each-repo: interpolate repo path arguments
      maintenance: add option to register in a specific config

Rubén Justo (5):
      ref-filter.c: fix a leak in get_head_description
      branch: description for non-existent branch errors
      branch: support for shortcuts like @{-1}, completed
      branch: error copying or renaming a detached HEAD
      branch: error code with --edit-description

SZEDER Gábor (4):
      Documentation/build-docdep.perl: generate sorted output
      line-log: free diff queue when processing non-merge commits
      line-log: free the diff queues' arrays when processing merge commits
      diff.c: use diff_free_queue()

Sergey Organov (3):
      diff-merges: cleanup func_by_opt()
      diff-merges: cleanup set_diff_merges()
      diff-merges: clarify log.diffMerges documentation

Shaoxuan Yuan (1):
      builtin/grep.c: integrate with sparse index

Sotir Danailov (1):
      docs: git-send-email: difference between ssl and tls smtp-encryption

Taylor Blau (64):
      Documentation/git-multi-pack-index.txt: fix typo
      Documentation/git-multi-pack-index.txt: clarify expire behavior
      midx.c: prevent `expire` from removing the cruft pack
      midx.c: avoid cruft packs with `repack --batch-size=0`
      midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
      midx.c: remove unnecessary loop condition
      midx.c: avoid cruft packs with non-zero `repack --batch-size`
      builtin/clone.c: disallow `--local` clones with symlinks
      t/lib-submodule-update.sh: allow local submodules
      t/t1NNN: allow local submodules
      t/2NNNN: allow local submodules
      t/t3NNN: allow local submodules
      t/t4NNN: allow local submodules
      t/t5NNN: allow local submodules
      t/t6NNN: allow local submodules
      t/t7NNN: allow local submodules
      t/t9NNN: allow local submodules
      transport: make `protocol.file.allow` be "user" by default
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t1092: prepare for changing protocol.file.allow
      t2080: prepare for changing protocol.file.allow
      t3207: prepare for changing protocol.file.allow
      t5516: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      t7814: prepare for changing protocol.file.allow
      t3206: prepare for changing protocol.file.allow
      t5537: prepare for changing protocol.file.allow
      Git 2.30.6
      Git 2.31.5
      Git 2.32.4
      Git 2.33.5
      Git 2.34.5
      Git 2.35.5
      Git 2.36.3
      t7527: prepare for changing protocol.file.allow
      Git 2.37.4
      Git 2.38.1
      midx.c: fix whitespace typo
      midx.c: consider annotated tags during bitmap selection
      midx.c: instrument MIDX and bitmap generation with trace2 regions
      pack-bitmap-write.c: instrument number of reused bitmaps
      builtin/repack.c: remove redundant pack-based bitmaps
      repack: don't remove .keep packs with `--pack-kept-objects`
      builtin/repack.c: pass "out" to `prepare_pack_objects`
      builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
      builtin/repack.c: write cruft packs to arbitrary locations
      builtin/repack.c: implement `--expire-to` for storing pruned objects
      shortlog: make trailer insertion a noop when appropriate
      shortlog: extract `--group` fragment for translation
      shortlog: support arbitrary commit format `--group`s
      shortlog: extract `shortlog_finish_setup()`
      shortlog: implement `--group=author` in terms of `--group=<format>`
      shortlog: implement `--group=committer` in terms of `--group=<format>`
      apply: reject patches larger than ~1 GiB
      Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
      The ninth batch
      Documentation: build redo-jch.sh from master..jch
      Documentation: build redo-seen.sh from jch..seen
      The tenth batch
      The eleventh batch
      The twelfth batch
      builtin/gc.c: fix use-after-free in maintenance_unregister()
      The thirteenth batch

Torsten Bögershausen (1):
      diff.c: use utf8_strwidth() to count display width

Victoria Dye (7):
      read-cache: avoid misaligned reads in index v4
      rebase --update-refs: avoid unintended ref deletion
      cache-tree: add perf test comparing update and prime
      unpack-trees: add 'skip_cache_tree_update' option
      reset: use 'skip_cache_tree_update' option
      read-tree: use 'skip_cache_tree_update' option
      rebase: use 'skip_cache_tree_update' option

Vincent Bernat (1):
      ls-files: fix --ignored and --killed flags in synopsis

Vlad-Stefan Harbuz (1):
      Documentation: fix typo

srz_zumix (1):
      fsmonitor--daemon: on macOS support symlink

Ævar Arnfjörð Bjarmason (113):
      test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
      CodingGuidelines: update for C99
      CodingGuidelines: mention dynamic C99 initializer elements
      CodingGuidelines: allow declaring variables in for loops
      CodingGuidelines: mention C99 features we can't use
      grep.c: remove "extended" in favor of "pattern_expression", fix segfault
      CodingGuidelines: recommend against unportable C99 struct syntax
      bundle-uri: create "key=value" line parsing
      bundle-uri: unit test "key=value" parsing
      run-command test helper: use "else if" pattern
      run-command API: have "run_processes_parallel{,_tr2}()" return void
      run-command tests: use "return", not "exit"
      run-command API: make "n" parameter a "size_t"
      run-command API: don't fall back on online_cpus()
      run-command.c: use designated init for pp_init(), add "const"
      run-command API: have run_process_parallel() take an "opts" struct
      run-command API: move *_tr2() users to "run_processes_parallel()"
      run-command.c: make "struct parallel_processes" const if possible
      run-command.c: don't copy *_fn to "struct parallel_processes"
      run-command.c: don't copy "ungroup" to "struct parallel_processes"
      run-command.c: don't copy "data" to "struct parallel_processes"
      run-command.c: use "opts->processes", not "pp->max_processes"
      run-command.c: pass "opts" further down, and use "opts->processes"
      run-command.c: remove "max_processes", add "const" to signal() handler
      tests: assert *.txt SYNOPSIS and -h output
      CodingGuidelines: update and clarify command-line conventions
      builtin/bundle.c: indent with tabs
      bundle: define subcommand -h in terms of command -h
      doc SYNOPSIS: don't use ' for subcommands
      doc SYNOPSIS: consistently use ' for commands
      built-ins: consistently add "\n" between "usage" and options
      doc txt & -h consistency: word-wrap
      doc txt & -h consistency: fix incorrect alternates syntax
      doc txt & -h consistency: add "-z" to cat-file "-h"
      doc txt & -h consistency: balance unbalanced "[" and "]"
      doc txt & -h consistency: correct padding around "[]()"
      stash doc SYNOPSIS & -h: correct padding around "[]()"
      doc txt & -h consistency: use "<options>", not "<options>..."
      doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
      doc txt & -h consistency: fix mismatching labels
      doc txt & -h consistency: add or fix optional "--" syntax
      doc txt & -h consistency: make output order consistent
      doc txt & -h consistency: add missing options and labels
      doc txt & -h consistency: make "rerere" consistent
      doc txt & -h consistency: make "read-tree" consistent
      doc txt & -h consistency: make "bundle" consistent
      doc txt & -h consistency: use "git foo" form, not "git-foo"
      doc txt & -h consistency: add missing options
      doc txt & -h consistency: make "stash" consistent
      doc txt & -h consistency: make "annotate" consistent
      doc txt & -h consistency: use "[<label>...]" for "zero or more"
      doc txt & -h consistency: make "diff-tree" consistent
      doc txt & -h consistency: make "commit" consistent
      reflog doc: list real subcommands up-front
      worktree: define subcommand -h in terms of command -h
      doc txt & -h consistency: make "worktree" consistent
      tests: start asserting that *.txt SYNOPSIS matches -h output
      tests: assert consistent whitespace in -h output
      fsmonitor OSX: compile with DC_SHA1=YesPlease
      merge: remove always-the-same "verbose" arguments
      hook tests: fix redirection logic error in 96e7225b310
      submodule tests: reset "trace.out" between "grep" invocations
      run-command tests: test stdout of run_command_parallel()
      Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
      cocci rules: remove unused "F" metavariable from pending rule
      Makefile: add ability to TAB-complete cocci *.patch rules
      Makefile: have "coccicheck" re-run if flags change
      Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
      cocci: split off include-less "tests" from SPATCH_FLAGS
      cocci: split off "--all-includes" from SPATCH_FLAGS
      cocci: make "coccicheck" rule incremental
      cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
      Makefile: copy contrib/coccinelle/*.cocci to build/
      cocci rules: remove <id>'s from rules that don't need them
      cocci: run against a generated ALL.cocci
      spatchcache: add a ccache-alike for "spatch"
      Makefile: always (re)set DC_SHA1 on fallback
      INSTALL: remove discussion of SHA-1 backends
      Makefile: correct DC_SHA1 documentation
      Makefile: create and use sections for "define" flag listing
      Makefile: rephrase the discussion of *_SHA1 knobs
      Makefile: document default SHA-256 backend
      Makefile: document SHA-1 and SHA-256 default and selection order
      Makefile & test-tool: replace "DC_SHA1" variable with a "define"
      Makefile: document default SHA-1 backend on OSX
      Makefile: discuss SHAttered in *_SHA{1,256} discussion
      submodule--helper: move "config" to a test-tool
      submodule tests: add tests for top-level flag output
      submodule--helper: fix a memory leak in "status"
      submodule tests: test for a "foreach" blind-spot
      submodule.c: refactor recursive block out of absorb function
      submodule API & "absorbgitdirs": remove "----recursive" option
      submodule--helper: remove --prefix from "absorbgitdirs"
      submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
      submodule--helper: use OPT_SUBCOMMAND() API
      revisions API: extend the nascent REV_INFO_INIT macro
      t7610: fix flaky timeout issue, don't clone from example.com
      Makefile: don't create a ".build/.build/" for cocci, fix output
      maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
      t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
      cache.h: remove unused "the_index" compat macros
      builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
      cocci & cache.h: remove rarely used "the_index" compat macros
      read-cache API & users: make discard_index() return void
      cocci: add a index-compatibility.pending.cocci
      cocci & cache.h: apply a selection of "pending" index-compatibility
      cocci & cache.h: apply variable section of "pending" index-compatibility
      cocci: apply "pending" index-compatibility to "t/helper/*.c"
      {builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
      cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
      cocci: apply "pending" index-compatibility to some "builtin/*.c"
      parse_object(): simplify blob conditional
      trace2 tests: guard pthread test with "PTHREAD"

Đoàn Trần Công Danh (8):
      CodingGuidelines: allow grep -E
      t: remove \{m,n\} from BRE grep usage
      t: convert egrep usage to "grep -E"
      t: convert fgrep usage to "grep -F"
      Makefile: clarify runtime relative gitexecdir
      bisect--helper: remove unused options
      bisect--helper: move all subcommands into their own functions
      bisect--helper: parse subcommand with OPT_SUBCOMMAND


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #06; Tue, 25)
@ 2014-03-25 20:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-25 20:18 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

More topics merged to 'master', many of which are fallouts from GSoC
microprojects.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()


* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 "git mv" that moves a submodule forgot to adjust the array that
 uses to keep track of which submodules were to be moved to update
 its configuration.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Length limit for the pathname used when removing a path in a deep
 subdirectory has been removed to avoid buffer overflows.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 "git index-pack" used a wrong variable to name the keep-file in an
 error message when the file cannot be written or closed.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 There were a few instances of 'git-foo' remaining in the
 documentation that should have been spelled 'git foo'.


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 "rebase -i" produced a broken insn sheet when the title of a commit
 happened to contain '\n' (or ended with '\c') due to a careless use
 of 'echo'.

--------------------------------------------------
[New Topics]

* jk/tests-cleanup (2014-03-21) 12 commits
 - t0001: drop subshells just for "cd"
 - t0001: drop useless subshells
 - t0001: use test_must_fail
 - t0001: use test_config_global
 - t0001: use test_path_is_*
 - t0001: make symlink reinit test more careful
 - t: prefer "git config --file" to GIT_CONFIG
 - t: prefer "git config --file" to GIT_CONFIG with test_must_fail
 - t: stop using GIT_CONFIG to cross repo boundaries
 - t: drop useless sane_unset GIT_* calls
 - t/test-lib: drop redundant unset of GIT_CONFIG
 - t/Makefile: stop setting GIT_CONFIG
 (this branch uses dt/tests-with-env-not-subshell.)

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jc/show-branch (2014-03-24) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* ca/doc-config-third-party (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 731e011)
 + config.txt: third-party tools may and do use their own variables

 Will merge to 'master'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
  (merged to 'next' on 2014-03-25 at 2683eb6)
 + doc: status, remove leftover statement about '#' prefix

 Will merge to 'master'.


* js/userdiff-cc (2014-03-21) 10 commits
  (merged to 'next' on 2014-03-25 at 8c0e585)
 + userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 + t4018: test cases showing that the cpp pattern misses many anchor points
 + t4018: test cases for the built-in cpp pattern
 + t4018: reduce test files for pattern compilation tests
 + t4018: convert custom pattern test to the new infrastructure
 + t4018: convert java pattern test to the new infrastructure
 + t4018: convert perl pattern tests to the new infrastructure
 + t4018: an infrastructure to test hunk headers
 + userdiff: support unsigned and long long suffixes of integer constants
 + userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'master'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
  (merged to 'next' on 2014-03-25 at b32e3ad)
 + Makefile: describe CHARSET_LIB better

 Will merge to 'master'.


* ib/rev-parse-parseopt-argh (2014-03-24) 5 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
  (merged to 'next' on 2014-03-25 at d9083ed)
 + t1502: protect runs of SPs used in the indentation
 + rev-parse --parseopt: option argument name hints

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge the bottom part to 'master'.


* rs/pickaxe-i (2014-03-24) 10 commits
  (merged to 'next' on 2014-03-25 at 3b6f21f)
 + pickaxe: simplify kwset loop in contains()
 + pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 + pickaxe: move pickaxe() after pickaxe_match()
 + pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 + pickaxe: honor -i when used with -S and --pickaxe-regex
 + t4209: use helper functions to test --author
 + t4209: use helper functions to test --grep
 + t4209: factor out helper function test_log_icase()
 + t4209: factor out helper function test_log()
 + t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'master'.


* an/branch-config-message (2014-03-24) 1 commit
 - branch.c: install_branch_config: simplify if chain

 Will merge to 'next'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable

 Will merge to 'next'.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 Will merge to 'master'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-25 at 19fe25f)
 + tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'master'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-25 at 08efd68)
 + fsck: use bitwise-or assignment operator to set flag

 Will merge to 'master'.


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used

 Will merge to 'next' after squashing in the fixup.


* ap/remote-hg-skip-null-bookmarks (2014-03-25) 1 commit
  (merged to 'next' on 2014-03-25 at a8cd922)
 + remote-hg: do not fail on invalid bookmarks

 Will merge to 'master'.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-24) 3 commits
 - SQUASH??? style and leak fix
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak.

 Hoping to be able to merge a fix for this issue soonish.


* nd/multiple-work-trees (2014-03-25) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.


* ks/tree-diff-nway (2014-03-20) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
  (merged to 'next' on 2014-03-25 at cfcbdac)
 + tree-diff: simplify tree_entry_pathcmp
 + tree-diff: show_path prototype is not needed anymore
 + tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 + tree-diff: move all action-taking code out of compare_tree_entry()
 + tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.

 Will merge to 'next'.

--------------------------------------------------
[Discarded]

* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 . diff: simplify cpp funcname regex

 Superceded.


* pw/branch-config-message (2014-03-13) 1 commit
 . install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.

 an/branch-config-message supersedes this topic.

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  @ 2013-04-24  5:48  3%       ` Junio C Hamano
  2013-04-24  6:22  3%         ` Johan Herland
  0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2013-04-24  5:48 UTC (permalink / raw)
  To: Johan Herland; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

Johan Herland <johan@herland.net> writes:

>> But P is a commit(/merge with two parents), not a blob. Can we have trees
>> pointing to commits instead of blobs ?
>
> Sort of. We do so when recording submodules in regular git trees.

You are using notes to maintain reachability, aren't you?  Because
commit objects that appears in trees are not treated as reachable
from the trees, that won't fly.

I think you guys are making it unnecessarily complex by using notes.
To record a prepared evil merge for merging branch that contains A
with another branch that contains B (assuming that the interation
between A and B is what makes the evil merge necessary, e.g. A
renames a function foo() to bar(), while B adds new callsite that
calls foo()), we can store a single commit that records the prepared
evil merge under "refs/merge-fix/$A-$B" where A and B are their
object names.

Then when merging a branch Y that contains B into our history X that
already contains A (or vice versa),

  ---o---o---A---o---X... ???
      \                  .
       \                .
        \              .
         o---B----o---Y

we can enumerate the commits that appear in "log --left-right X...Y"
on the left/right side and notice there is refs/merge-fix/$A-$B.

So the simplest implementation of "an efficient data store to record
a commit for <A,B> pair" turns out to be just a ref namespace ;-)

There may be other <C,D> pairs in X...Y history, and it probably is
the sane thing to do to replay prepackaged evil merges from older to
newer in the topological sense, but that loop would be trivial, once
we understand how to replay a single such evil merge.

The actual merge-fix data should be just a commit with a single
parent. The easiest way to prepare it would be like this:

  ---o---o---A
      \       \
       \       M---F
        \     /
         o---B

where M is the result of mechanical merge between A and B (there
could be textual conflicts and you could choose to leave them in, or
you could choose to have rerere resolve it.  As long as you do the
same when replaying this prepackaged evil merge, this choice does
not matter, but using rerere will make your life easier), and F is
the final result you would want, with semantics conflicts resolved.
In other words, in the ideal world, you would have resolved a merge
between A and B to record the tree of F.

Point "F" with refs/merge-fix/$A-$B and you are done.

When you replay this prepackaged evil merge, first you mechanically
merge X and Y without worrying about M or F to produce N.  If you
allowed rerere to resolve textual conflicts between A and B when you
recorded M, allow rerere to resolve this merge.  Otherwise leave the
textual conflict in.

  ---o---o---A---o---X
      \               \
       \               N
        \             /
         o---B---o---Y

Then on top of N, you cherry-pick F, which will bring the semantic
conflict resolution between M and F on top of N.

  ---o---o---A---o---X
      \               \
       \               N---F'
        \             /
         o---B---o---Y

Once you know the tree shape of F', then you no longer need N.  Just
amend it away and make the tree recorded in F' the result of the
merge between X and Y.

  ---o---o---A---o---X---.
      \                   \
       \                  F''
        \                /
         o---B---o---Y--.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jun 2009, #01; Fri, 12)
@ 2009-06-12  9:11  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-06-12  9:11 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the branches, but I am still
holding onto them.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

Unfortunately I am unusually short of time these days, and some of the
topics unfortunately got less "final review before deciding to merge up"
than I would have liked to give them.  This message itself has more
"please comment/review" requests than usual.

----------------------------------------------------------------
[New Topics]

* tr/die_errno (Mon Jun 8 23:02:20 2009 +0200) 4 commits
 - Use die_errno() instead of die() when checking syscalls
 - Convert existing die(..., strerror(errno)) to die_errno()
 - die_errno(): double % in strerror() output just in case
 - Introduce die_errno() that appends strerror(errno) to die()

I didn't check the individual conversion from die() to die_errno()
in this latest round; comments?

* cb/maint-no-double-merge (Mon Jun 1 11:20:56 2009 +0200) 1 commit
 + refuse to merge during a merge

Will merge to 'master' soonish.

* sp/msysgit (Thu Jun 11 22:56:12 2009 +0200) 13 commits
 + compat/ has subdirectories: do not omit them in 'make clean'
 + Fix typo in nedmalloc warning fix
 + MinGW: Teach Makefile to detect msysgit and apply specific
   settings
 + Fix warnings in nedmalloc when compiling with GCC 4.4.0
 + Add custom memory allocator to MinGW and MacOS builds
 + MinGW readdir reimplementation to support d_type
 + connect.c: Support PuTTY plink and TortoisePlink as SSH on Windows
 + git: browsing paths with spaces when using the start command
 + MinGW: fix warning about implicit declaration of _getch()
 + test-chmtime: work around Windows limitation
 + Work around a regression in Windows 7, causing erase_in_line() to
   crash sometimes
 + Quiet make: do not leave Windows behind
 + MinGW: GCC >= 4 does not need SNPRINTF_SIZE_CORR anymore

A silly typo I failed to spot was fixed by J6t; should be ready for
'master' now.

* mh/master-send-email (Sun Jun 7 23:40:52 2009 +0200) 8 commits
 - send-email: fix a typo in a comment
 - Merge branch 'mh/maint-send-email' into mh/master-send-email
 - Merge branch 'mh/master-send-email-threaded-fix' into mh/master-
   send-email
 - add a test for git-send-email for threaded mails without chain-
   reply-to
 - send-email: fix threaded mails without chain-reply-to
 - doc/send-email: clarify the behavior of --in-reply-to with --no-
   thread
 - send-email: fix non-threaded mails
 - add a test for git-send-email for non-threaded mails

The author seems to have a better organization than the way I queued this
topic, so I am holding off merging it to 'next' yet.  My goal was to have
two topics, one eventually mergeable to 'maint', the other to 'master'.

* mn/maint-iconv-autoconf (Mon Jun 8 20:46:38 2009 -0700) 1 commit
 - fix handling of iconv configuration options

Will merge to 'next' soon.

* rc/maint-http-local-slot-fix (Sat Jun 6 16:43:26 2009 +0800) 1 commit
 + http*: cleanup slot->local after fclose

* sb/parse-options-integer (Thu Jun 4 16:43:57 2009 -0700) 2 commits
 + parse-options: simplify usage argh handling
 + parse-options: make OPT_INTEGER's argh explicit

* sb/pull-rebase (Fri Jun 12 00:39:21 2009 +0200) 3 commits
 - parse-remote: remove unused functions
 - parse-remote: support default reflist in get_remote_merge_branch
 - parse-remote: function to get the tracking branch to be merge

Will merge to 'next' soon, but it would be nice if we can fix the
"currently works only for the default mapping" before it goes to
'master'.

* ne/futz-upload-pack (Wed Jun 10 01:50:18 2009 +0200) 1 commit
 - Shift object enumeration out of upload-pack

* ml/http (Wed May 27 23:16:03 2009 -0400) 2 commits
 - http.c: add http.sslCertNoPass option
 - http.c: prompt for SSL client certificate password

I think "sslCertNoPass" is a mistake.  We should aim for the ideal (i.e.
detect when we do not need passphrase), and live with a configuration
kludge until the code achives the ideal (i.e. "needPass" to trigger the
new codepath to ask for passphrase), _if_ that ideal is achievable.  And
in this particular case, I think the ideal is not rocket science.

* mg/pushurl (Tue Jun 9 18:01:38 2009 +0200) 5 commits
 - builtin-remote: Make "remote -v" display push urls
 - builtin-remote: Show push urls as well
 - technical/api-remote: Describe new struct remote member pushurl
 - t5516: Check pushurl config setting
 - Allow push and fetch urls to be different

Will merge to 'next' soon.

----------------------------------------------------------------
[Graduated to "master"]

* tr/maint-doc-stash-pop (Thu May 28 11:40:15 2009 +0200) 1 commit
 + Documentation: teach stash/pop workflow instead of stash/apply

* da/pretty-tempname (Sun May 31 01:35:52 2009 -0700) 3 commits
 + diff: generate pretty filenames in prep_temp_blob()
 + compat: add a basename() compatibility function
 + compat: add a mkstemps() compatibility function

* cb/maint-1.6.0-xdl-merge-fix (Mon May 25 01:21:14 2009 +0100) 2 commits
 + Change xdl_merge to generate output even for null merges
 + t6023: merge-file fails to output anything for a degenerate merge

----------------------------------------------------------------
[Will merge to "master" soon]

* bc/solaris (Sun Jun 7 07:40:29 2009 +0200) 10 commits
 - configure: test whether -lresolv is needed
 + Makefile: insert SANE_TOOL_PATH to PATH before /bin or /usr/bin
 + git-compat-util.h: avoid using c99 flex array feature with Sun
   compiler 5.8
 + Makefile: add section for SunOS 5.7
 + Makefile: introduce SANE_TOOL_PATH for prepending required
   elements to PATH
 + Makefile: define __sun__ on SunOS
 + git-compat-util.h: tweak the way _XOPEN_SOURCE is set on Solaris
 + On Solaris choose the OLD_ICONV iconv() declaration based on the
   UNIX spec
 + Makefile: add NEEDS_RESOLV to optionally add -lresolv to compile
   arguments
 + Makefile: use /usr/ucb/install on SunOS platforms rather than
   ginstall

We saw some success report with Sun's c99 compiler, which would allow us
to include the last remaining patch from Brandon with updates.  I lost
track of the status of the tip patch for autoconf.  Is it ready to go?
Comments from Solaris folks are appreciated.

* cb/match_refs_internal_tail (Sun May 31 16:26:48 2009 +0200) 1 commit
 + match_refs: search ref list tail internally

* nw/maint-cvsexportcommit (Fri May 29 00:23:33 2009 +0100) 1 commit
 + git-cvsexportcommit can't commit files which have been removed
   from CVS

* ak/maint-for-each-ref-no-lookup (Wed May 27 15:23:12 2009 -0400) 1 commit
 + for-each-ref: Do not lookup objects when they will not be used

I think this makes sense, except that I have this nagging feeling that its
use of for_each_rawref() where the original used for_each_ref() may have
some unintended side effects in corner cases.

* ph/submodule-rebase (Wed Jun 3 00:59:12 2009 +0200) 3 commits
 - git-submodule: add support for --merge.
 + Rename submodule.<name>.rebase to submodule.<name>.update
 + git-submodule: add support for --rebase.

I think people do not have issues with the first two, even though some
might still argue that "update --merge" is not a good mode of
operation.

* da/araxis-mergetool (Sun May 24 00:24:41 2009 +0000) 1 commit
 + mergetool--lib: add support for araxis merge

* cc/bisect (Sat Jun 6 06:41:35 2009 +0200) 5 commits
 + t6030: test skipping away from an already skipped commit
 + bisect: when skipping, choose a commit away from a skipped commit
 + bisect: add parameters to "filter_skipped"
 + bisect: display first bad commit without forking a new process
 + bisect: drop unparse_commit() and use clear_commit_marks()

Regardless of metrics, this is an improvement from the current one.  Will
merge to 'master', and let the finer details taken care of later.

* rc/http-push (Sat Jun 6 16:44:02 2009 +0800) 24 commits
 + http*: add helper methods for fetching objects (loose)
 + http*: add helper methods for fetching packs
 + http: use new http API in fetch_index()
 + http*: add http_get_info_packs
 + http-push.c::fetch_symref(): use the new http API
 + http-push.c::remote_exists(): use the new http API
 + http.c::http_fetch_ref(): use the new http API
 + transport.c::get_refs_via_curl(): use the new http API
 + http.c: new functions for the http API
 + http: create function end_url_with_slash
 + http*: move common variables and macros to http.[ch]
 + transport.c::get_refs_via_curl(): do not leak refs_url
 + Don't expect verify_pack() callers to set pack_size
 + http-push: do not SEGV after fetching a bad pack idx file
 + http*: copy string returned by sha1_to_hex
 + http-walker: verify remote packs
 + http-push, http-walker: style fixes
 + t5550-http-fetch: test fetching of packed objects
 + http-push: fix missing "#ifdef USE_CURL_MULTI" around
   "is_running_queue"
 + http-push: send out fetch requests on queue
 + t5540-http-push: test fetching of packed objects
 + t5540-http-push: test fetching of loose objects
 + Merge branch 'rc/maint-http-local-slot-fix' into rc/http-push
 + http*: cleanup slot->local after fclose

I do not use http-push myself, and as I said, I have shortage of git time
in recent weeks, so these are not as carefully reviewed as usual; but
RCTay is proving to be a very reliable HTTP guy I can trust, so unless
there are regression reports from people who actually use http-push, this
will be in 'master' soon.

----------------------------------------------------------------
[Stalled and may need help and prodding to go forward]

* jh/notes (Sat May 16 13:44:17 2009 +0200) 5 commits
 - Teach "-m <msg>" and "-F <file>" to "git notes edit"
 - Add an expensive test for git-notes
 - Speed up git notes lookup
 - Add a script to edit/inspect notes
 - Introduce commit notes

Dscho asked about the performance implications of this; I do not think I
saw any progress on that yet...

* lt/read-directory (Fri May 15 12:01:29 2009 -0700) 3 commits
 - Add initial support for pathname conversion to UTF-8
 - read_directory(): infrastructure for pathname character set
   conversion
 - Add 'fill_directory()' helper function for directory traversal

Before adding the real "conversion", this needs a few real fixups, I
think.  For example there is one hardcoded array that is used without
bounds check.

* ar/maint-1.6.2-merge-recursive-d-f (Mon May 11 21:25:36 2009 +0200) 2 commits
 - Fix for a merge where a branch has an F->D transition
 - Add a reminder test case for a merge with F/D transition

Although the reported breakage is covered with the patch, Alex feels the
solution unsatisfactory. Cleaning up D/F conflict handling in merge-recursive
may be long overdue but seems to be a hard problem.

* ps/blame (Thu Mar 12 21:30:03 2009 +1100) 1 commit
 - blame.c: start libifying the blame infrastructure

A few minor point remains in this initial one.

* jc/log-tz (Tue Mar 3 00:45:37 2009 -0800) 1 commit
 - Allow --date=local --date=other-format to work as expected

The one I posted had a few corner-case bugs that was caught with the test
suite; this one has them fixed.  People did not like the UI so it is kept
out of 'next'

* jc/merge-convert (Mon Jan 26 16:45:01 2009 -0800) 1 commit
 - git-merge-file: allow converting the results for the work tree

This is a feature waiting for a user.

We did not give scripted Porcelains a way to say "this temporary file I am
using for merging is for this path, so use the core.autocrlf and attributes
rules for that final path".  Instead, merge-file simply wrote out the
data in the canonical repository representation.

rerere has the same issue, but it is a lot worse.  It reads the three
files (preimage, postimage and thisimage) from the work tree in the work
tree representation, merges them without converting them to the canonical
representation first but inserts the conflict markers with the canonical
representation and writes the resulting mess out.  It needs to be fixed to
read with convert_to_git(), merge them while they are still in the
canonical representation and possibly add conflict markers, and then write
the results out after convert_to_working_tree().  It also needs to write
in binary mode as well.

* db/foreign-scm (Tue Mar 24 23:04:12 2009 -0400) 3 commits
 - Add option for using a foreign VCS
 - Document details of transport function APIs
 - Allow late reporting of fetched hashes

* hv/cvsps-tests (Sun Apr 5 01:40:50 2009 -0700) 8 commits
 - t/t9600: remove exit after test_done
 - cvsimport: extend testcase about patchset order to contain
   branches
 - cvsimport: add test illustrating a bug in cvsps
 - Add a test of "git cvsimport"'s handling of tags and branches
 - Add some tests of git-cvsimport's handling of vendor branches
 - Test contents of entire cvsimported "master" tree contents
 - Use CVS's -f option if available (ignore user's ~/.cvsrc file)
 - Start a library for cvsimport-related tests

----------------------------------------------------------------
[Actively cooking]

* gb/am-foreign (Wed May 27 11:25:19 2009 +0200) 4 commits
 - git-am: refactor 'cleaning up and aborting'
 - git-am foreign patch support: StGIT support
 - git-am foreign patch support: autodetect some patch formats
 - git-am foreign patch support: introduce patch_format

Should re-review and merge to 'next' but I am short of time these days.

* jc/cache-tree (Fri May 22 23:14:25 2009 -0700) 5 commits
 + Avoid "diff-index --cached" optimization under --find-copies-
   harder
 + Optimize "diff-index --cached" using cache-tree
 + t4007: modernize the style
 + cache-tree.c::cache_tree_find(): simplify internal API
 + write-tree --ignore-cache-tree

I believe the code is right, but this touches a very low-level code with
high chance of subtle breakages unless you are really careful.  I'll let
it simmer a bit longer in 'next'.

* jc/diff-whitespace-only-status (Sat May 23 01:15:35 2009 -0700) 2 commits
 - diff: Rename QUIET internal option to QUICK
 - diff: change semantics of "ignore whitespace" options

I am not sure if it should wait for a major version bump but this is a
good semantics change.  Perhaps merge to 'next' soonish, but I am
undecided.  Comments?

* cc/replace (Wed May 27 07:14:09 2009 +0200) 14 commits
 - t6050: check pushing something based on a replaced commit
 - Documentation: add documentation for "git replace"
 - Add git-replace to .gitignore
 - builtin-replace: use "usage_msg_opt" to give better error messages
 - parse-options: add new function "usage_msg_opt"
 - builtin-replace: teach "git replace" to actually replace
 - Add new "git replace" command
 - environment: add global variable to disable replacement
 - mktag: call "check_sha1_signature" with the replacement sha1
 - replace_object: add a test case
 - object: call "check_sha1_signature" with the replacement sha1
 - sha1_file: add a "read_sha1_file_repl" function
 - replace_object: add mechanism to replace objects found in
   "refs/replace/"
 - refs: add a "for_each_replace_ref" function

----------------------------------------------------------------
[On Hold]

* jc/deny-delete-current-1.7.0 (Mon Feb 9 00:19:46 2009 -0800) 1 commit
 - receive-pack: default receive.denyDeleteCurrent to refuse

* jc/refuse-push-to-current-1.7.0 (Wed Feb 11 02:28:03 2009 -0800) 1 commit
 - Refuse updating the current branch in a non-bare repository via
   push

These are for 1.7.0, but the messages when they trigger together may need
to be rethought.

^ permalink raw reply	[relevance 3%]

* [PATCH v2 0/2] This fixes a minor memory leak (detected by LeakSanitizer) in git merge
  @ 2023-08-24 14:12  3% ` Kevin Backhouse via GitGitGadget
  0 siblings, 0 replies; 200+ results
From: Kevin Backhouse via GitGitGadget @ 2023-08-24 14:12 UTC (permalink / raw)
  To: git; +Cc: Kevin Backhouse

Hi Junio,

Thank you for your comments. As you suggested, I have added similar fixes in
merge-recursive.c and updated the commit message. I have also added a test.

Thanks,

Kev

Kevin Backhouse (2):
  Regression test for https://github.com/gitgitgadget/git/pull/1577
  Fix minor memory leak found by LeakSanitizer.

 merge-ort-wrappers.c  |  4 +++-
 merge-ort.c           |  4 +++-
 merge-recursive.c     | 32 ++++++++++++++++++++++----------
 t/t9904-merge-leak.sh | 40 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 68 insertions(+), 12 deletions(-)
 create mode 100755 t/t9904-merge-leak.sh


base-commit: f9972720e9a405e4f6924a7cde0ed5880687f4d0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1577%2Fkevinbackhouse%2Ffree-merge-bases-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1577/kevinbackhouse/free-merge-bases-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1577

Range-diff vs v1:

 -:  ----------- > 1:  f940104a781 Regression test for https://github.com/gitgitgadget/git/pull/1577
 1:  64b00e4448d ! 2:  353e1960b44 This fixes a minor memory leak (detected by LeakSanitizer) in git merge.
     @@ Metadata
      Author: Kevin Backhouse <kevinbackhouse@github.com>
      
       ## Commit message ##
     -    This fixes a minor memory leak (detected by LeakSanitizer) in git merge.
     +    Fix minor memory leak found by LeakSanitizer.
      
     -    To reproduce (with an ASAN build):
     +    The callers of merge_recursive() and merge_ort_recursive() expects the
     +    commit list passed in as the merge_bases parameter to be fully
     +    consumed by the function and does not free it when the function
     +    returns.  In normal cases, the commit list does get consumed, but when
     +    the function returns early upon encountering an error, it forgets to
     +    clean it up.
      
     -    ```
     -    mkdir test
     -    cd test
     -    git init
     -    echo x > x.txt
     -    git add .
     -    git commit -m "WIP"
     -    git checkout -b dev
     -    echo y > x.txt
     -    git add .
     -    git commit -m "WIP"
     -    git checkout main
     -    echo z > x.txt
     -    git add .
     -    git commit -m "WIP"
     -    echo a > x.txt
     -    git add .
     -    git merge dev
     -    ```
     -
     -    The fix is to call free_commit_list(merge_bases) when an error occurs.
     +    Fix this by freeing the list in the code paths for error returns.
      
          Signed-off-by: Kevin Backhouse <kevinbackhouse@github.com>
      
     @@ merge-ort.c: static void merge_ort_internal(struct merge_options *opt,
       		opt->branch1 = saved_b1;
       		opt->branch2 = saved_b2;
       		opt->priv->call_depth--;
     +
     + ## merge-recursive.c ##
     +@@ merge-recursive.c: static int merge_recursive_internal(struct merge_options *opt,
     + 		opt->branch1 = "Temporary merge branch 1";
     + 		opt->branch2 = "Temporary merge branch 2";
     + 		if (merge_recursive_internal(opt, merged_merge_bases, iter->item,
     +-					     NULL, &merged_merge_bases) < 0)
     +-			return -1;
     ++					     NULL, &merged_merge_bases) < 0) {
     ++			clean = -1;
     ++			goto out;
     ++		}
     + 		opt->branch1 = saved_b1;
     + 		opt->branch2 = saved_b2;
     + 		opt->priv->call_depth--;
     + 
     +-		if (!merged_merge_bases)
     +-			return err(opt, _("merge returned no commit"));
     ++		if (!merged_merge_bases) {
     ++			clean = err(opt, _("merge returned no commit"));
     ++			goto out;
     ++		}
     + 	}
     + 
     + 	/*
     +@@ merge-recursive.c: static int merge_recursive_internal(struct merge_options *opt,
     + 				     repo_get_commit_tree(opt->repo,
     + 							  merged_merge_bases),
     + 				     &result_tree);
     ++
     ++out:
     + 	strbuf_release(&merge_base_abbrev);
     + 	opt->ancestor = NULL;  /* avoid accidental re-use of opt->ancestor */
     ++	free_commit_list(merge_bases);
     + 	if (clean < 0) {
     + 		flush_output(opt);
     + 		return clean;
     +@@ merge-recursive.c: static int merge_start(struct merge_options *opt, struct tree *head)
     + 	assert(!opt->record_conflict_msgs_as_headers);
     + 	assert(!opt->msg_header_prefix);
     + 
     ++	CALLOC_ARRAY(opt->priv, 1);
     ++	string_list_init_dup(&opt->priv->df_conflict_file_set);
     ++
     + 	/* Sanity check on repo state; index must match head */
     + 	if (repo_index_has_changes(opt->repo, head, &sb)) {
     + 		err(opt, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     +@@ merge-recursive.c: static int merge_start(struct merge_options *opt, struct tree *head)
     + 		return -1;
     + 	}
     + 
     +-	CALLOC_ARRAY(opt->priv, 1);
     +-	string_list_init_dup(&opt->priv->df_conflict_file_set);
     + 	return 0;
     + }
     + 
     + static void merge_finalize(struct merge_options *opt)
     + {
     + 	flush_output(opt);
     +-	if (!opt->priv->call_depth && opt->buffer_output < 2)
     +-		strbuf_release(&opt->obuf);
     ++	strbuf_release(&opt->obuf);
     + 	if (show(opt, 2))
     + 		diff_warn_rename_limit("merge.renamelimit",
     + 				       opt->priv->needed_rename_limit, 0);
     +@@ merge-recursive.c: int merge_trees(struct merge_options *opt,
     + 
     + 	assert(opt->ancestor != NULL);
     + 
     +-	if (merge_start(opt, head))
     ++	if (merge_start(opt, head)) {
     ++		merge_finalize(opt);
     + 		return -1;
     ++	}
     + 	clean = merge_trees_internal(opt, head, merge, merge_base, &ignored);
     + 	merge_finalize(opt);
     + 
     +@@ merge-recursive.c: int merge_recursive(struct merge_options *opt,
     + 	prepare_repo_settings(opt->repo);
     + 	opt->repo->settings.command_requires_full_index = 1;
     + 
     +-	if (merge_start(opt, repo_get_commit_tree(opt->repo, h1)))
     ++	if (merge_start(opt, repo_get_commit_tree(opt->repo, h1))) {
     ++		free_commit_list(merge_bases);
     ++		merge_finalize(opt);
     + 		return -1;
     ++	}
     + 	clean = merge_recursive_internal(opt, h1, h2, merge_bases, result);
     + 	merge_finalize(opt);
     + 

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.32.0-rc0
@ 2021-05-17  7:06  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-17  7:06 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.32.0-rc0 is now available for
testing at the usual places.  It is comprised of 545 non-merge
commits since v2.31.0, contributed by 76 people, 29 of which are
new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.32.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.31.0 are as follows.
Welcome to the Git development community!

  Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
  Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
  Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
  Martin, Georgios Kontaxis, Jerry Zhang, Joachim Kuebart, Joseph
  Vusich, Josh Soref, Julien Richard, Li Linchao, Louis Sautier,
  Luke Shumaker, Nicholas Clark, Peter Oliver, Renato Botelho,
  Robert Foss, RyotaK, Sardorbek Imomaliev, Tom Saeger, Will
  Chandler, and Yiyuan guo.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
  Hunt, Bagas Sanjaya, brian m. carlson, Charvi Mendiratta,
  Christian Couder, Dennis Ameling, Denton Liu, Derrick Stolee,
  Đoàn Trần Công Danh, Elijah Newren, Eric Sunshine,
  Han-Wen Nienhuys, Han Xin, Jeff Hostetler, Jeff King, Johannes
  Schindelin, John Szakmeister, Jonathan Nieder, Jonathan Tan,
  Junio C Hamano, Kyle Meyer, Lénaïc Huard, Luke Diamand,
  Marc Branchaud, Martin Ågren, Matheus Tavares, Nguyễn Thái
  Ngọc Duy, Nipunn Koorapati, Øystein Walle, Patrick Steinhardt,
  Phillip Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones,
  René Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc,
  SZEDER Gábor, Taylor Blau, Torsten Bögershausen, Trygve
  Aaberge, Ville Skyttä, and ZheNing Hu.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.32 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * When accessing a server with a URL like https://user:pass@site/, we
   did not to fall back to the basic authentication with the
   credential material embedded in the URL after the "Negotiate"
   authentication failed.  Now we do.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer <key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).

----------------------------------------------------------------

Changes since v2.31.0 are as follows:

Adam Dinwoodie (1):
      cygwin: disallow backslashes in file names

Alex Henrie (1):
      merge-ort: split "distinct types" message into two translatable messages

Andrey Bienkowski (1):
      doc: clarify the filename encoding in git diff

Andrzej Hunt (24):
      Makefile: update 'make fuzz-all' docs to reflect modern clang
      symbolic-ref: don't leak shortened refname in check_symref()
      reset: free instead of leaking unneeded ref
      clone: free or UNLEAK further pointers when finished
      worktree: fix leak in dwim_branch()
      init: remove git_init_db_config() while fixing leaks
      init-db: silence template_dir leak when converting to absolute path
      fsmonitor: avoid global-buffer-overflow READ when checking trivial response
      parse-options: convert bitfield values to use binary shift
      parse-options: don't leak alias help messages
      transport: also free remote_refs in transport_disconnect()
      merge-ort: only do pointer arithmetic for non-empty lists
      revision: free remainder of old commit list in limit_list
      wt-status: fix multiple small leaks
      ls-files: free max_prefix when done
      bloom: clear each bloom_key after use
      branch: FREE_AND_NULL instead of NULL'ing real_ref
      builtin/bugreport: don't leak prefixed filename
      builtin/check-ignore: clear_pathspec before returning
      builtin/checkout: clear pending objects after diffing
      mailinfo: also free strbuf lists when clearing mailinfo
      builtin/for-each-ref: free filter and UNLEAK sorting.
      builtin/rebase: release git_format_patch_opt too
      builtin/rm: avoid leaking pathspec and seen

Atharva Raykar (1):
      userdiff: add support for Scheme

Bagas Sanjaya (1):
      INSTALL: note on using Asciidoctor to build doc

Bruno Albuquerque (1):
      object-info: support for retrieving object info

Charvi Mendiratta (23):
      sequencer: pass todo_item to do_pick_commit()
      sequencer: use const variable for commit message comments
      rebase -i: add fixup [-C | -c] command
      t3437: test script for fixup [-C|-c] options in interactive rebase
      rebase -i: teach --autosquash to work with amend!
      doc/git-rebase: add documentation for fixup [-C|-c] options
      sequencer: fixup the datatype of the 'flag' argument
      sequencer: rename a few functions
      rebase -i: clarify and fix 'fixup -c' rebase-todo help
      t/lib-rebase: update the documentation of FAKE_LINES
      t/t3437: fixup here-docs in the 'setup' test
      t/t3437: remove the dependency of 'expected-message' file from tests
      t/t3437: check the author date of fixed up commit
      t/t3437: simplify and document the test helpers
      t/t3437: use named commits in the tests
      t/t3437: fixup the test 'multiple fixup -c opens editor once'
      doc/rebase -i: fix typo in the documentation of 'fixup' command
      sequencer: export and rename subject_length()
      commit: add amend suboption to --fixup to create amend! commit
      commit: add a reword suboption to --fixup
      t7500: add tests for --fixup=[amend|reword] options
      t3437: use --fixup with options to create amend! commit
      doc/git-commit: add documentation for fixup=[amend|reword] options

Chinmoy Chakraborty (1):
      column, range-diff: downcase option description

Christian Couder (1):
      test-bloom: fix missing 'bloom' from usage string

Christopher Schenk (1):
      remote-curl: fall back to basic auth if Negotiate fails

Dennis Ameling (2):
      cmake(install): fix double .exe suffixes
      cmake(install): include vcpkg dlls

Denton Liu (13):
      git-cat-file.txt: monospace args, placeholders and filenames
      git-cat-file.txt: remove references to "sha1"
      stash show: teach --include-untracked and --only-untracked
      stash show: learn stash.showIncludeUntracked
      git-completion.bash: pass $__git_subcommand_idx from __git_main()
      git-completion.bash: extract from else in _git_stash()
      git-completion.bash: use __gitcomp_builtin() in _git_stash()
      git-completion.bash: separate some commands onto their own line
      git-completion.bash: rename to $__git_cmd_idx
      git-completion.bash: use $__git_cmd_idx in more places
      git-completion.bash: consolidate cases in _git_stash()
      t3905: correct test title
      stash show: fix segfault with --{include,only}-untracked

Derrick Stolee (54):
      commit-graph: create local repository pointer
      commit-graph: use config to specify generation type
      csum-file: make hashwrite() more readable
      sparse-index: design doc and format update
      t/perf: add performance test for sparse operations
      t1092: clean up script quoting
      sparse-index: add guard to ensure full index
      sparse-index: implement ensure_full_index()
      t1092: compare sparse-checkout to sparse-index
      test-read-cache: print cache entries with --table
      test-tool: don't force full index
      unpack-trees: ensure full index
      sparse-checkout: hold pattern list in index
      sparse-index: add 'sdir' index extension
      sparse-index: convert from full to sparse
      submodule: sparse-index should not collapse links
      unpack-trees: allow sparse directories
      sparse-index: check index conversion happens
      sparse-index: add index.sparse config option
      sparse-checkout: toggle sparse index from builtin
      sparse-checkout: disable sparse-index
      cache-tree: integrate with sparse directory entries
      sparse-index: loose integration with cache_tree_verify()
      p2000: add sparse-index repos
      maintenance: simplify prefetch logic
      sparse-index: API protection strategy
      *: remove 'const' qualifier for struct index_state
      read-cache: expand on query into sparse-directory entry
      cache: move ensure_full_index() to cache.h
      add: ensure full index
      checkout-index: ensure full index
      checkout: ensure full index
      commit: ensure full index
      difftool: ensure full index
      fsck: ensure full index
      grep: ensure full index
      ls-files: ensure full index
      merge-index: ensure full index
      rm: ensure full index
      stash: ensure full index
      update-index: ensure full index
      dir: ensure full index
      entry: ensure full index
      merge-recursive: ensure full index
      pathspec: ensure full index
      read-cache: ensure full index
      resolve-undo: ensure full index
      revision: ensure full index
      name-hash: don't add directories to name_hash
      sparse-index: expand_to_path()
      name-hash: use expand_to_path()
      fetch: add --prefetch option
      maintenance: use 'git fetch --prefetch'
      maintenance: respect remote.*.skipFetchAll

Elijah Newren (40):
      diffcore-rename: use directory rename guided basename comparisons
      diffcore-rename: provide basic implementation of idx_possible_rename()
      diffcore-rename: add a mapping of destination names to their indices
      Move computation of dir_rename_count from merge-ort to diffcore-rename
      diffcore-rename: add function for clearing dir_rename_count
      diffcore-rename: move dir_rename_counts into dir_rename_info struct
      diffcore-rename: extend cleanup_dir_rename_info()
      diffcore-rename: compute dir_rename_counts in stages
      diffcore-rename: limit dir_rename_counts computation to relevant dirs
      diffcore-rename: compute dir_rename_guess from dir_rename_counts
      diffcore-rename: enable filtering possible rename sources
      merge-ort: precompute subset of sources for which we need rename detection
      merge-ort: add data structures for an alternate tree traversal
      merge-ort: introduce wrappers for alternate tree traversal
      merge-ort: precompute whether directory rename detection is needed
      merge-ort: use relevant_sources to filter possible rename sources
      merge-ort: skip rename detection entirely if possible
      diffcore-rename: avoid doing basename comparisons for irrelevant sources
      diffcore-rename: take advantage of "majority rules" to skip more renames
      merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
      merge-ort: record the reason that we want a rename for a directory
      diffcore-rename: only compute dir_rename_count for relevant directories
      diffcore-rename: check if we have enough renames for directories early on
      diffcore-rename: add computation of number of unknown renames
      merge-ort: record the reason that we want a rename for a file
      diffcore-rename: determine which relevant_sources are no longer relevant
      merge-ort: use STABLE_QSORT instead of QSORT where required
      merge-ort: add a special minimal index just for renormalization
      merge-ort: have ll_merge() use a special attr_index for renormalization
      merge-ort: let renormalization change modify/delete into clean delete
      merge-ort: support subtree shifting
      t6428: new test for SKIP_WORKTREE handling and conflicts
      merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
      t: mark several submodule merging tests as fixed under merge-ort
      merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
      merge-recursive: add a bunch of FIXME comments documenting known bugs
      Revert "merge-ort: ignore the directory rename split conflict for now"
      t6423: mark remaining expected failure under merge-ort as such
      Add testing with merge-ort merge strategy
      sequencer: fix edit handling for cherry-pick and revert messages

Eric Sunshine (1):
      merge(s): apply consistent punctuation to "up to date" messages

Firmin Martin (1):
      user-manual.txt: assign preface an id and a title

Georgios Kontaxis (1):
      gitweb: add "e-mail privacy" feature to redact e-mail addresses

Han Xin (1):
      pack-objects: fix comment of reused_chunk.difference

Han-Wen Nienhuys (3):
      reftable: document an alternate cleanup method on Windows
      refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
      refs/debug: trace into reflog expiry too

Jeff Hostetler (13):
      pkt-line: eliminate the need for static buffer in packet_write_gently()
      simple-ipc: design documentation for new IPC mechanism
      simple-ipc: add win32 implementation
      unix-socket: eliminate static unix_stream_socket() helper function
      unix-socket: add backlog size option to unix_stream_listen()
      unix-socket: disallow chdir() when creating unix domain sockets
      unix-stream-server: create unix domain socket under lock
      convert: make convert_attrs() and convert structs public
      convert: add [async_]convert_to_working_tree_ca() variants
      convert: add get_stream_filter_ca() variant
      convert: add classification for conv_attrs struct
      simple-ipc: add Unix domain socket implementation
      t0052: add simple-ipc tests and t/helper/test-simple-ipc tool

Jeff King (40):
      add open_nofollow() helper
      attr: convert "macro_ok" into a flags field
      exclude: add flags parameter to add_patterns()
      attr: do not respect symlinks for in-tree .gitattributes
      exclude: do not respect symlinks for in-tree .gitignore
      mailmap: do not respect symlinks for in-tree .mailmap
      p5303: add missing &&-chains
      p5303: measure time to repack with keep
      builtin/pack-objects.c: rewrite honor-pack-keep logic
      packfile: add kept-pack cache for find_kept_pack_entry()
      t/perf: handle worktrees as test repos
      t/perf: avoid copying worktree files from test repo
      t7003: test ref rewriting explicitly
      filter-branch: drop multiple-ancestor warning
      filter-branch: drop $_x40 glob
      bisect: peel annotated tags to commits
      t: annotate !PTHREADS tests with !FAIL_PREREQS
      ref-filter: fix NULL check for parse object failure
      midx.c: improve cache locality in midx_pack_order_cmp()
      pack-objects: update "nr_seen" progress based on pack-reused count
      is_promisor_object(): free tree buffer after parsing
      lookup_unknown_object(): take a repository argument
      revision: avoid parsing with --exclude-promisor-objects
      pack-bitmap: clean up include_check after use
      prune: save reachable-from-recent objects with bitmaps
      t5300: modernize basic tests
      t5300: check that we produced expected number of deltas
      pack-objects: clamp negative window size to 0
      t5316: check behavior of pack-objects --depth=0
      pack-objects: clamp negative depth to 0
      docs/format-patch: mention handling of merges
      t7415: remove out-dated comment about translation
      fsck_tree(): fix shadowed variable
      fsck_tree(): wrap some long lines
      t7415: rename to expand scope
      t7450: test verify_path() handling of gitmodules
      t7450: test .gitmodules symlink matching against obscured names
      t0060: test ntfs/hfs-obscured dotfiles
      fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
      docs: document symlink restrictions for dot-files

Jerry Zhang (3):
      git-apply: try threeway first when "--3way" is used
      git-apply: allow simultaneous --cached and --3way options
      apply: adjust messages to account for --3way changes

Joachim Kuebart (2):
      git-p4: ensure complex branches are cloned correctly
      git-p4: speed up search for branch parent

Johannes Schindelin (10):
      pkt-line: do not issue flush packets in write_packetized_*()
      pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
      pkt-line: add options argument to read_packetized_to_strbuf()
      fsmonitor: fix memory corruption in some corner cases
      fsmonitor: do not forget to release the token in `discard_index()`
      SECURITY: describe how to report vulnerabilities
      Document how we do embargoed releases
      cmake: support SKIP_DASHED_BUILT_INS
      cmake: add a preparatory work-around to accommodate `vcpkg`
      msvc: avoid calling `access("NUL", flags)`

John Szakmeister (2):
      http: store credential when PKI auth is used
      http: drop the check for an empty proxy password before approving

Jonathan Tan (8):
      t5606: run clone branch name test with protocol v2
      fetch-pack: buffer object-format with other args
      fetch-pack: refactor process_acks()
      fetch-pack: refactor add_haves()
      fetch-pack: refactor command and capability write
      fetch: teach independent negotiation (no packfile)
      send-pack: support push negotiation
      t5601: mark protocol v2-only test

Josh Soref (1):
      merge: fix swapped "up to date" message components

Julien Richard (1):
      doc: .gitignore documentation typofix

Junio C Hamano (25):
      builtin/repack.c: reword comment around pack-objects flags
      xcalloc: use CALLOC_ARRAY() when applicable
      cocci: allow xcalloc(1, size)
      The first batch in 2.32 cycle
      The second batch
      format-patch: give an overview of what a "patch" message is
      The third patch
      Git 2.31.1
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      doc: clarify "do not capitalize the first word" rule
      The tenth batch
      The eleventh (aka "ort") batch
      The twelfth batch
      The thirteenth batch
      CodingGuidelines: explicitly allow "local" for test scripts
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      The seventeenth batch
      Git 2.32-rc0

Kyle Meyer (1):
      config.txt: add missing period

Li Linchao (1):
      builtin/clone.c: add --reject-shallow option

Louis Sautier (1):
      pretty: fix a typo in the documentation for %(trailers)

Luke Shumaker (30):
      .gitignore: ignore 'git-subtree' as a build artifact
      subtree: t7900: update for having the default branch name be 'main'
      subtree: t7900: use test-lib.sh's test_count
      subtree: t7900: use consistent formatting
      subtree: t7900: comment subtree_test_create_repo
      subtree: t7900: use 'test' for string equality
      subtree: t7900: delete some dead code
      subtree: t7900: fix 'verify one file change per commit'
      subtree: t7900: rename last_commit_message to last_commit_subject
      subtree: t7900: add a test for the -h flag
      subtree: t7900: add porcelain tests for 'pull' and 'push'
      subtree: don't have loose code outside of a function
      subtree: more consistent error propagation
      subtree: drop support for git < 1.7
      subtree: use `git merge-base --is-ancestor`
      subtree: use git-sh-setup's `say`
      subtree: use more explicit variable names for cmdline args
      subtree: use "$*" instead of "$@" as appropriate
      subtree: don't fuss with PATH
      subtree: use "^{commit}" instead of "^0"
      subtree: parse revs in individual cmd_ functions
      subtree: remove duplicate check
      subtree: add comments and sanity checks
      subtree: don't let debug and progress output clash
      subtree: have $indent actually affect indentation
      subtree: give the docs a once-over
      subtree: allow --squash to be used with --rejoin
      subtree: allow 'split' flags to be passed to 'push'
      subtree: push: allow specifying a local rev other than HEAD
      subtree: be stricter about validating flags

Lénaïc Huard (1):
      maintenance: fix two memory leaks

Martin Ågren (2):
      git-repack.txt: remove spurious ")"
      pretty-formats.txt: add missing space

Matheus Tavares (30):
      convert: fail gracefully upon missing clean cmd on required filter
      symlinks: update comment on threaded_check_leading_path()
      checkout: don't follow symlinks when removing entries
      entry: extract a header file for entry.c functions
      entry: make fstat_output() and read_blob_entry() public
      entry: extract update_ce_after_write() from write_entry()
      entry: move conv_attrs lookup up to checkout_entry()
      entry: add checkout_entry_ca() taking preloaded conv_attrs
      add: include magic part of pathspec on --refresh error
      t3705: add tests for `git add` in sparse checkouts
      add: make --chmod and --renormalize honor sparse checkouts
      pathspec: allow to ignore SKIP_WORKTREE entries on index matching
      refresh_index(): add flag to ignore SKIP_WORKTREE entries
      add: warn when asked to update SKIP_WORKTREE entries
      rm: honor sparse checkout patterns
      pkt-line: do not report packet write errors twice
      unpack-trees: add basic support for parallel checkout
      parallel-checkout: make it truly parallel
      parallel-checkout: add configuration options
      parallel-checkout: support progress displaying
      parallel-checkout: add design documentation
      make_transient_cache_entry(): optionally alloc from mem_pool
      builtin/checkout.c: complete parallel checkout support
      checkout-index: add parallel checkout support
      parallel-checkout: add tests for basic operations
      parallel-checkout: add tests related to path collisions
      t0028: extract encoding helpers to lib-encoding.sh
      parallel-checkout: add tests related to .gitattributes
      ci: run test round with parallel-checkout enabled
      clean: remove unnecessary variable

Nicholas Clark (1):
      submodule update: silence underlying fetch with "--quiet"

Nipunn Koorapati (3):
      fsmonitor: skip lstat deletion check during git diff-index
      fsmonitor: add assertion that fsmonitor is valid to check_removed
      fsmonitor: add perf test for git diff HEAD

Patrick Steinhardt (17):
      githooks.txt: replace mentions of SHA-1 specific properties
      githooks.txt: clarify documentation on reference-transaction hook
      pack-bitmap: avoid traversal of objects referenced by uninteresting tag
      uploadpack.txt: document implication of `uploadpackfilter.allow`
      revision: mark commit parents as NOT_USER_GIVEN
      list-objects: move tag processing into its own function
      list-objects: support filtering by tag and commit
      list-objects: implement object type filter
      pack-bitmap: implement object type filter
      pack-bitmap: implement combined filter
      rev-list: allow filtering of provided items
      config: rename `git_etc_config()`
      config: unify code paths to get global config paths
      config: allow overriding of global and system configuration
      t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
      git.txt: fix synopsis of `--config-env` missing the equals sign
      git: support separate arg for `--config-env`'s value

Peter Oliver (1):
      doc: point to diff attribute in patch format docs

Phillip Wood (6):
      rebase -i: only write fixup-message when it's needed
      sequencer: factor out code to append squash message
      rebase -i: comment out squash!/fixup! subjects from squash message
      word diff: handle zero length matches
      patience diff: remove unnecessary string comparisons
      patience diff: remove unused variable

Rafael Silva (1):
      repack: avoid loosening promisor objects in partial clones

Ramkumar Ramachandra (1):
      Add entry for Ramkumar Ramachandra

Ramsay Jones (1):
      bisect--helper: use BISECT_TERMS in 'bisect skip' command

René Scharfe (12):
      pretty: add %(describe)
      pretty: add merge and exclude options to %(describe)
      t4205: assert %(describe) test coverage
      pretty: document multiple %(describe) being inconsistent
      fix xcalloc() argument order
      archive: expand only a single %(describe) per archive
      git-compat-util.h: drop trailing semicolon from macro definition
      use CALLOC_ARRAY
      vcs-svn: remove header files as well
      block-sha1: drop trailing semicolon from macro definition
      mem-pool: drop trailing semicolon from macro definition
      daemon: sanitize all directory separators

Robert Foss (1):
      git-send-email: Respect core.hooksPath setting

SZEDER Gábor (1):
      Makefile: add missing dependencies of 'config-list.h'

Sardorbek Imomaliev (1):
      work around zsh comment in __git_complete_worktree_paths

Sergey Organov (5):
      diff-merges: introduce --diff-merges=on
      diff-merges: refactor set_diff_merges()
      diff-merges: adapt -m to enable default diff format
      diff-merges: introduce log.diffMerges config variable
      doc/diff-options: document new --diff-merges features

Shubham Verma (1):
      t9801: replace test -f with test_path_is_file

Taylor Blau (28):
      packfile: introduce 'find_kept_pack_entry()'
      revision: learn '--no-kept-objects'
      builtin/pack-objects.c: add '--stdin-packs' option
      builtin/repack.c: add '--geometric' option
      builtin/repack.c: do not repack single packs with --geometric
      t7703: test --geometric repack with loose objects
      builtin/repack.c: assign pack split later
      builtin/repack.c: be more conservative with unsigned overflows
      Documentation/git-push.txt: correct configuration typo
      builtin/pack-objects.c: ignore missing links with --stdin-packs
      builtin/multi-pack-index.c: inline 'flags' with options
      builtin/multi-pack-index.c: don't handle 'progress' separately
      builtin/multi-pack-index.c: define common usage with a macro
      builtin/multi-pack-index.c: split sub-commands
      builtin/multi-pack-index.c: don't enter bogus cmd_mode
      builtin/multi-pack-index.c: display usage on unrecognized command
      t/helper/test-read-midx.c: add '--show-objects'
      pack-bitmap: add 'test_bitmap_commits()' helper
      t/helper/test-bitmap.c: initial commit
      builtin/pack-objects.c: respect 'pack.preferBitmapTips'
      midx: allow marking a pack as preferred
      midx: don't free midx_name early
      midx: keep track of the checksum
      midx: make some functions non-static
      Documentation/technical: describe multi-pack reverse indexes
      pack-revindex: read multi-pack reverse indexes
      pack-write.c: extract 'write_rev_file_order'
      pack-revindex: write multi-pack reverse indexes

Torsten Bögershausen (3):
      git mv foo FOO ; git mv foo bar gave an assert
      precompose_utf8: make precompose_string_if_needed() public
      macOS: precompose startup_info->prefix

Ville Skyttä (2):
      completion: audit and guard $GIT_* against unset use
      completion: avoid aliased command lookup error in nounset mode

Will Chandler (1):
      refs: cleanup directories when deleting packed ref

ZheNing Hu (7):
      commit: add --trailer option
      format-patch: allow a non-integral version numbers
      ref-filter: get rid of show_ref_array_item
      ref-filter: reuse output buffer
      pretty: provide human date format
      docs: correct descript of trailer.<token>.command
      trailer: add new .cmd config option

brian m. carlson (14):
      builtin/init-db: handle bare clones when core.bare set to false
      hash: add an algo member to struct object_id
      Always use oidread to read into struct object_id
      http-push: set algorithm when reading object ID
      hash: add a function to finalize object IDs
      Use the final_oid_fn to finalize hashing of object IDs
      builtin/pack-redundant: avoid casting buffers to struct object_id
      hash: set, copy, and use algo field in struct object_id
      hash: provide per-algorithm null OIDs
      builtin/show-index: set the algorithm for object IDs
      commit-graph: don't store file hashes as struct object_id
      builtin/pack-objects: avoid using struct object_id for pack hash
      hex: default to the_hash_algo on zero algorithm value
      hex: print objects using the hash algorithm member

Ævar Arnfjörð Bjarmason (87):
      grep/pcre2: drop needless assignment + assert() on opt->pcre2
      grep/pcre2: drop needless assignment to NULL
      grep/pcre2: correct reference to grep_init() in comment
      grep/pcre2: prepare to add debugging to pcre2_malloc()
      grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
      grep/pcre2: use compile-time PCREv2 version test
      grep/pcre2: use pcre2_maketables_free() function
      grep/pcre2: actually make pcre2 use custom allocator
      grep/pcre2: move back to thread-only PCREv2 structures
      grep/pcre2: move definitions of pcre2_{malloc,free}
      Makefile: guard against TEST_OBJS in the environment
      Makefile: split up long OBJECTS line
      Makefile: sort OBJECTS assignment for subsequent change
      Makefile: split OBJECTS into OBJECTS and GIT_OBJS
      Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
      remote: add camel-cased *.tagOpt key, like clone
      remote: write camel-cased *.pushRemote on rename
      fsck.c: refactor and rename common config callback
      show tests: add test for "git show <tree>"
      ls-files tests: add meaningful --with-tree tests
      tree.c API: move read_tree() into builtin/ls-files.c
      ls-files: don't needlessly pass around stage variable
      ls-files: refactor away read_tree()
      archive: stop passing "stage" through read_tree_recursive()
      tree.h API: expose read_tree_1() as read_tree_at()
      tree.h API: simplify read_tree_recursive() signature
      diff --no-index tests: add test for --exit-code
      diff --no-index tests: test mode normalization
      rebase: remove transitory rebase.useBuiltin setting & env
      mktag tests: fix broken "&&" chain
      fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
      fsck.h: use "enum object_type" instead of "int"
      fsck.c: rename variables in fsck_set_msg_type() for less confusion
      fsck.c: remove (mostly) redundant append_msg_id() function
      fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
      fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
      fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
      fsck.h: re-order and re-assign "enum fsck_msg_type"
      fsck.c: call parse_msg_type() early in fsck_set_msg_type()
      fsck.c: undefine temporary STR macro after use
      fsck.c: give "FOREACH_MSG_ID" a more specific name
      fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
      fsck.c: pass along the fsck_msg_id in the fsck_error callback
      fsck.c: add an fsck_set_msg_type() API that takes enums
      fsck.c: move gitmodules_{found,done} into fsck_options
      fetch-pack: don't needlessly copy fsck_options
      fetch-pack: use file-scope static struct for fsck_options
      fetch-pack: use new fsck API to printing dangling submodules
      Makefile: add QUIET_GEN to "tags" and "TAGS" targets
      git-send-email: replace "map" in void context with "for"
      git-send-email: test full --validate output
      git-send-email: refactor duplicate $? checks into a function
      git-send-email: improve --validate error output
      bash completion: complete CHERRY_PICK_HEAD
      config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
      userdiff style: re-order drivers in alphabetical order
      userdiff style: declare patterns with consistent style
      userdiff style: normalize pascal regex declaration
      userdiff: add and use for_each_userdiff_driver()
      userdiff tests: explicitly test "default" pattern
      userdiff tests: list builtin drivers via test-tool
      userdiff: remove support for "broken" tests
      blame tests: don't rely on t/t4018/ directory
      blame tests: simplify userdiff driver test
      rebase tests: camel-case rebase.rescheduleFailedExec consistently
      rebase: don't override --no-reschedule-failed-exec with config
      Documentation/Makefile: make $(wildcard howto/*.txt) a var
      Documentation/Makefile: make doc.dep dependencies a variable again
      doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
      doc lint: fix bugs in, simplify and improve lint script
      doc lint: lint and fix missing "GIT" end sections
      doc lint: lint relative section order
      docs: fix linting issues due to incorrect relative section order
      svn tests: remove legacy re-setup from init-clone test
      svn tests: refactor away a "set -e" in test body
      tests: remove all uses of test_i18cmp
      usage.c: don't copy/paste the same comment three times
      api docs: document BUG() in api-error-handling.txt
      api docs: document that BUG() emits a trace2 error event
      pretty tests: simplify %aI/%cI date format test
      pretty tests: give --date/format tests a better description
      sparse-index.c: remove set_index_sparse_config()
      streaming.c: avoid forward declarations
      streaming.c: remove enum/function/vtbl indirection
      streaming.c: remove {open,close,read}_method_decl() macros
      streaming.c: stop passing around "object_info *" to open()
      streaming.c: move {open,close,read} from vtable to "struct git_istream"

Øystein Walle (2):
      transport: respect verbosity when setting upstream
      add: die if both --dry-run and --interactive are given

Đoàn Trần Công Danh (6):
      mailinfo: load default metainfo_charset lazily
      mailinfo: stop parsing options manually
      mailinfo: warn if CRLF found in decoded base64/QP email
      mailinfo: allow squelching quoted CRLF warning
      mailinfo: allow stripping quoted CR without warning
      am: learn to process quoted lines that ends with CRLF


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2016, #03; Mon, 9)
@ 2016-05-09 23:00  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2016-05-09 23:00 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The 'master' branch now has the tenth batch of topics of this cycle.
On the 'maint' front, 2.8.2 is out and fixes that have been in
'master' accumulates on it for 2.8.3.

Ones with questionable status has a '?' character in their comments.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* ak/t4151-ls-files-could-be-empty (2016-05-09) 1 commit
 - t4151: make sure argument to 'test -z' is given

 Test fix.

 Will merge to 'next'.


* es/test-gpg-tags (2016-05-09) 1 commit
 - t6302: simplify non-gpg cases

 Test fix.

 Will merge to 'next'.


* jc/test-seq (2016-05-09) 2 commits
 - test-lib-functions.sh: rewrite test_seq without Perl
 - test-lib-functions.sh: remove misleading comment on test_seq

 Test fix.

 Will merge to 'next'.


* js/windows-dotgit (2016-05-09) 2 commits
 - mingw: remove unnecessary definition
 - mingw: introduce the 'core.hideDotFiles' setting

 On Windows, .git and optionally any files whose name starts with a
 dot are now marked as hidden, with a core.hideDotFiles knob to
 customize this behaviour.


* nd/error-errno (2016-05-09) 41 commits
 - wrapper.c: use warning_errno()
 - vcs-svn: use error_errno()
 - upload-pack.c: use error_errno()
 - unpack-trees.c: use error_errno()
 - transport-helper.c: use error_errno()
 - sha1_file.c: use {error,die,warning}_errno()
 - server-info.c: use error_errno()
 - sequencer.c: use error_errno()
 - run-command.c: use error_errno()
 - rerere.c: use error_errno() and warning_errno()
 - reachable.c: use error_errno()
 - mailmap.c: use error_errno()
 - ident.c: use warning_errno()
 - http.c: use error_errno() and warning_errno()
 - grep.c: use error_errno()
 - gpg-interface.c: use error_errno()
 - fast-import.c: use error_errno()
 - entry.c: use error_errno()
 - editor.c: use error_errno()
 - diff-no-index.c: use error_errno()
 - credential-cache--daemon.c: use warning_errno()
 - copy.c: use error_errno()
 - connected.c: use error_errno()
 - config.c: use error_errno()
 - compat/win32/syslog.c: use warning_errno()
 - combine-diff.c: use error_errno()
 - check-racy.c: use error_errno()
 - builtin/worktree.c: use error_errno()
 - builtin/upload-archive.c: use error_errno()
 - builtin/update-index.c: prefer "err" to "errno" in process_lstat_error
 - builtin/rm.c: use warning_errno()
 - builtin/pack-objects.c: use die_errno() and warning_errno()
 - builtin/merge-file.c: use error_errno()
 - builtin/mailsplit.c: use error_errno()
 - builtin/help.c: use warning_errno()
 - builtin/fetch.c: use error_errno()
 - builtin/branch.c: use error_errno()
 - builtin/am.c: use error_errno()
 - bisect.c: use die_errno() and warning_errno()
 - usage.c: add warning_errno() and error_errno()
 - usage.c: move format processing out of die_errno()

 The code for warning_errno/die_errno has been refactored and a new
 error_errno() reporting helper is introduced.

 Will merge to 'next'.


* nd/remote-plural-ours-plus-theirs (2016-05-06) 1 commit
 - remote.c: specify correct plural form in "commit diverge" message

 Message fix.

 Will merge to 'next'.


* nd/test-helpers (2016-05-09) 1 commit
 - wrap-for-bin.sh: handle t/helper/ paths internally

 Switching between 'master' and 'next', between which the paths to
 test helper binaries have changed, did not update bin-wrappers/*
 scripts used in tests, causing false test failures.

 Will merge to 'next'.


* tb/core-eol-fix (2016-04-25) 4 commits
 - convert.c: ident + core.autocrlf didn't work
 - t0027: test cases for combined attributes
 - convert: allow core.autocrlf=input and core.eol=crlf
 - t0027: make commit_chk_wrnNNO() reliable

 A couple of bugs around core.autocrlf have been fixed.

 Will merge to 'next'.


* tb/t5601-sed-fix (2016-05-09) 1 commit
 - t5601: Remove trailing space in sed expression

 Test fix.

 Will merge to 'next'.


* va/i18n-remote-comment-to-align (2016-05-09) 1 commit
 - i18n: remote: add comment for translators

 Message fix.

 Will merge to 'next'.


* jc/linkgit-fix (2016-05-09) 1 commit
 - Documentation: fix linkgit references

 Many 'linkgit:<git documentation page>' references were broken,
 which are all fixed with this.

 Will merge to 'next'.


* js/http-custom-headers (2016-05-09) 2 commits
 - t5551: make the test for extra HTTP headers more robust
 - tests: adjust the configuration for Apache 2.2

 Update tests for "http.extraHeaders=<header>" to be portable back
 to Apache 2.2 (the original depended on <RequireAll/> which is a
 more recent feature).

 Will merge to 'next'.


--------------------------------------------------
[Stalled]

* sb/bisect (2016-04-15) 22 commits
 - SQUASH???
 - bisect: get back halfway shortcut
 - bisect: compute best bisection in compute_relevant_weights()
 - bisect: use a bottom-up traversal to find relevant weights
 - bisect: prepare for different algorithms based on find_all
 - bisect: rename count_distance() to compute_weight()
 - bisect: make total number of commits global
 - bisect: introduce distance_direction()
 - bisect: extract get_distance() function from code duplication
 - bisect: use commit instead of commit list as arguments when appropriate
 - bisect: replace clear_distance() by unique markers
 - bisect: use struct node_data array instead of int array
 - bisect: get rid of recursion in count_distance()
 - bisect: make algorithm behavior independent of DEBUG_BISECT
 - bisect: make bisect compile if DEBUG_BISECT is set
 - bisect: plug the biggest memory leak
 - bisect: add test for the bisect algorithm
 - t6030: generalize test to not rely on current implementation
 - t: use test_cmp_rev() where appropriate
 - t/test-lib-functions.sh: generalize test_cmp_rev
 - bisect: allow 'bisect run' if no good commit is known
 - bisect: write about `bisect next` in documentation

 The internal algorithm used in "git bisect" to find the next commit
 to check has been optimized greatly.

 Expecting a reroll.
 ($gmane/291163)


* ar/diff-args-osx-precompose (2016-04-05) 1 commit
 - diff: run arguments through precompose_argv

 Many commands normalize command line arguments from NFD to NFC
 variant of UTF-8 on OSX, but commands in the "diff" family did
 not, causing "git diff $path" to complain that no such path is
 known to Git.  They have been taught to do the normalization.

 Will this be rerolled?
 ($gmane/290724)


* nd/shallow-deepen (2016-04-13) 26 commits
 - fetch, upload-pack: --deepen=N extends shallow boundary by N commits
 - upload-pack: add get_reachable_list()
 - upload-pack: split check_unreachable() in two, prep for get_reachable_list()
 - t5500, t5539: tests for shallow depth excluding a ref
 - clone: define shallow clone boundary with --shallow-exclude
 - fetch: define shallow boundary with --shallow-exclude
 - upload-pack: support define shallow boundary by excluding revisions
 - refs: add expand_ref()
 - t5500, t5539: tests for shallow depth since a specific date
 - clone: define shallow clone boundary based on time with --shallow-since
 - fetch: define shallow boundary with --shallow-since
 - upload-pack: add deepen-since to cut shallow repos based on time
 - shallow.c: implement a generic shallow boundary finder based on rev-list
 - fetch-pack: use a separate flag for fetch in deepening mode
 - fetch-pack.c: mark strings for translating
 - fetch-pack: use a common function for verbose printing
 - fetch-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move rev-list code out of check_non_tip()
 - upload-pack: tighten number parsing at "deepen" lines
 - upload-pack: use skip_prefix() instead of starts_with()
 - upload-pack: move "unshallow" sending code out of deepen()
 - upload-pack: remove unused variable "backup"
 - upload-pack: move "shallow" sending code out of deepen()
 - upload-pack: move shallow deepen code out of receive_needs()
 - transport-helper.c: refactor set_helper_option()
 - remote-curl.c: convert fetch_git() to use argv_array

 The existing "git fetch --depth=<n>" option was hard to use
 correctly when making the history of an existing shallow clone
 deeper.  A new option, "--deepen=<n>", has been added to make this
 easier to use.  "git clone" also learned "--shallow-since=<date>"
 and "--shallow-exclude=<tag>" options to make it easier to specify
 "I am interested only in the recent N months worth of history" and
 "Give me only the history since that version".

 Needs review.


* sg/completion-updates (2016-02-28) 21 commits
 - completion: cache the path to the repository
 - completion: extract repository discovery from __gitdir()
 - completion: don't guard git executions with __gitdir()
 - completion: consolidate silencing errors from git commands
 - completion: don't use __gitdir() for git commands
 - completion: respect 'git -C <path>'
 - completion: fix completion after 'git -C <path>'
 - completion: don't offer commands when 'git --opt' needs an argument
 - rev-parse: add '--absolute-git-dir' option
 - completion: list short refs from a remote given as a URL
 - completion: don't list 'HEAD' when trying refs completion outside of a repo
 - completion: list refs from remote when remote's name matches a directory
 - completion: respect 'git --git-dir=<path>' when listing remote refs
 - completion: fix most spots not respecting 'git --git-dir=<path>'
 - completion: ensure that the repository path given on the command line exists
 - completion tests: add tests for the __git_refs() helper function
 - completion tests: check __gitdir()'s output in the error cases
 - completion tests: consolidate getting path of current working directory
 - completion tests: make the $cur variable local to the test helper functions
 - completion tests: don't add test cruft to the test repository
 - completion: improve __git_refs()'s in-code documentation

 Will be rerolled.
 ($gmane/287839)


* az/p4-bare-no-rebase (2016-02-19) 1 commit
 - git-p4.py: Don't try to rebase on submit from bare repository

 "git p4 submit" attempts to do a rebase, which would fail if done
 in a bare repository.  Not doing this rebase would paper over the
 failure, which is what this patch does, but it is unclear what the
 side effect of not rebasing is.

 Needs a better explanation.


* ss/commit-dry-run-resolve-merge-to-no-op (2016-02-17) 1 commit
 - wt-status.c: set commitable bit if there is a meaningful merge.

 "git commit --dry-run" reported "No, no, you cannot commit." in one
 case where "git commit" would have allowed you to commit, and this
 improves it a little bit ("git commit --dry-run --short" still does
 not give you the correct answer, for example).


* nd/icase (2016-02-15) 12 commits
 - grep.c: reuse "icase" variable
 - diffcore-pickaxe: support case insensitive match on non-ascii
 - diffcore-pickaxe: "share" regex error handling code
 - grep/pcre: support utf-8
 - gettext: add is_utf8_locale()
 - grep/pcre: prepare locale-dependent tables for icase matching
 - grep/icase: avoid kwsset when -F is specified
 - grep/icase: avoid kwsset on literal non-ascii strings
 - test-regex: expose full regcomp() to the command line
 - test-regex: isolate the bug test code
 - grep: break down an "if" stmt in preparation for next changes
 - grep: allow -F -i combination

 "git grep -i" has been taught to fold case in non-ascii locales.

 Needs review.
 ($gmane/286137)


* ec/annotate-deleted (2015-11-20) 1 commit
 - annotate: skip checking working tree if a revision is provided

 Usability fix for annotate-specific "<file> <rev>" syntax with deleted
 files.

 Waiting for review.


* dg/subtree-rebase-test (2016-01-19) 1 commit
 - contrib/subtree: Add a test for subtree rebase that loses commits

 Reviewed up to v5.
 Will be rerolled.
 ($gmane/284426)


* js/am-3-merge-recursive-direct (2015-10-12) 2 commits
 - am: make a direct call to merge_recursive
 - merge_recursive_options: introduce the "gently" flag

 The merge_recursive_generic() function has been made a bit safer to
 call from inside a process.  "git am -3" was taught to make a direct
 call to the function when falling back to three-way merge.

 Being able to make a direct call would be good in general, but as a
 performance thing, the change needs to be backed up by numbers.

 I haven't gone through the "gently" change with fine toothed comb;
 I can see that the change avoids calling die(), but I haven't made
 sure that the program states (e.g. what's in the in-core index) are
 adjusted sensibly when it returns to the caller instead of dying,
 or the codepaths that used to die() are free of resource leaks.
 The original code certainly did not care the program states at the
 point of dying exactly because it knew it is going to exit, but now
 they have to care, and they need to be audited.

 Will be rerolled.
 ($gmane/292205)


* dk/gc-more-wo-pack (2016-01-13) 4 commits
 - gc: clean garbage .bitmap files from pack dir
 - t5304: ensure non-garbage files are not deleted
 - t5304: test .bitmap garbage files
 - prepare_packed_git(): find more garbage

 Follow-on to dk/gc-idx-wo-pack topic, to clean up stale
 .bitmap and .keep files.

 Waiting for a reroll.
 ($gmane/284368).


* jc/diff-b-m (2015-02-23) 5 commits
 . WIPWIP
 . WIP: diff-b-m
 - diffcore-rename: allow easier debugging
 - diffcore-rename.c: add locate_rename_src()
 - diffcore-break: allow debugging

 "git diff -B -M" produced incorrect patch when the postimage of a
 completely rewritten file is similar to the preimage of a removed
 file; such a resulting file must not be expressed as a rename from
 other place.

 The fix in this patch is broken, unfortunately.
 Will discard.

--------------------------------------------------
[Cooking]

* sb/submodule-deinit-all (2016-05-05) 1 commit
  (merged to 'next' on 2016-05-09 at 0fd4518)
 + submodule deinit: require '--all' instead of '.' for all submodules

 Correct faulty recommendation to use "git submodule deinit ." when
 de-initialising all submodules, which would result in a strange
 error message in a pathological corner case.

 Will merge to 'master'.


* bn/config-doc-tt-varnames (2016-05-05) 1 commit
 - config: consistently format $variables in monospaced font
 (this branch uses jc/config-pathname-type.)

 Doc formatting fixes.

 Will merge to 'next'.


* lp/typofixes (2016-05-06) 1 commit
  (merged to 'next' on 2016-05-09 at 59683be)
 + typofix: assorted typofixes in comments, documentation and messages

 Will merge to 'master'.


* sb/z-is-gnutar-ism (2016-05-09) 2 commits
  (merged to 'next' on 2016-05-09 at 51d527d)
 + t6041: do not compress backup tar file
 + t3513: do not compress backup tar file

 Will merge to 'master'.


* jc/test-parse-options-expect (2016-05-06) 4 commits
 - t0040: convert a few tests to use test-parse-options --expect
 - t0040: remove unused test helpers
 - test-parse-options: --expect=<string> option to simplify tests
 - test-parse-options: fix output when callback option fails
 (this branch uses pb/commit-verbose-config.)

 t0040 had too many unnecessary repetitions in its test data.  Teach
 test-parse-options program so that a caller can tell what it
 expects in its output, so that these repetitions can be cleaned up.

 Will merge to 'next'.


* jc/doc-lint (2016-05-04) 1 commit
 - ci: validate "gitlink:" in documentation

 Find common mistakes when writing gitlink: in our documentation and
 drive the check from "make check-docs".



* ew/normal-to-e (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 65a2c52)
 + .mailmap: update to my shorter email address

 Will merge to 'master'.


* js/close-packs-before-gc (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at bfd39bf)
 + t5510: run auto-gc in the foreground

 Will merge to 'master'.


* ls/travis-submitting-patches (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 467930e)
 + Documentation: add setup instructions for Travis CI

 Will merge to 'master'.


* rn/glossary-typofix (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at 1e73e76)
 + Documentation: fix typo 'In such these cases'

 Will merge to 'master'.


* jc/commit-tree-ignore-commit-gpgsign (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 08eccb2)
 + commit-tree: do not pay attention to commit.gpgsign

 "git commit-tree" plumbing command required the user to always sign
 its result when the user sets the commit.gpgsign configuration
 variable, which was an ancient mistake.  Rework "git rebase" that
 relied on this mistake so that it reads commit.gpgsign and pass (or
 not pass) the -S option to "git commit-tree" to keep the end-user
 expectation the same, while teaching "git commit-tree" to ignore
 the configuration variable.  This will stop requiring the users to
 sign commit objects used internally as an implementation detail of
 "git stash".

 Will merge to 'master'.


* jk/push-client-deadlock-fix (2016-05-02) 1 commit
  (merged to 'next' on 2016-05-06 at e91626c)
 + Windows: add pthread_sigmask() that does nothing

 Will merge to 'master'.


* sb/clean-test-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at d80c9c6)
 + t7300: mark test with SANITY

 Will merge to 'master'.


* sb/submodule-module-list-pathspec-fix (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at ab6dac3)
 + submodule deinit test: fix broken && chain in subshell

 Will merge to 'master'.


* sk/gitweb-highlight-encoding (2016-05-03) 1 commit
  (merged to 'next' on 2016-05-06 at 441302c)
 + gitweb: apply fallback encoding before highlight

 Some multi-byte encoding can have a backslash byte as a later part
 of one letter, which would confuse "highlight" filter used in
 gitweb.

 Will merge to 'master'.


* ab/hooks (2016-05-04) 4 commits
  (merged to 'next' on 2016-05-09 at 23cf808)
 + hooks: allow customizing where the hook directory is
 + githooks.txt: minor improvements to the grammar & phrasing
 + githooks.txt: amend dangerous advice about 'update' hook ACL
 + githooks.txt: improve the intro section

 A new configuration variable core.hooksPath allows customizing
 where the hook directory is.

 Will merge to 'master'.


* jc/merge-impossible-no-commit (2016-04-26) 2 commits
 - merge: warn --no-commit merge when no new commit is created
 - merge: do not contaminate option_commit with --squash

 "git merge --no-commit" silently succeeded when there is no need to
 create any commit, either when you are more recent than the commit
 you tried to merge, or you can fast-forward to the commit you tried
 to merge.  The command gives a warning message in such cases.

 Just tying loose ends in a discussion.  Unless somebody else
 champions this topic, I'll drop it.


* mh/split-under-lock (2016-05-06) 33 commits
 - lock_ref_sha1_basic(): only handle REF_NODEREF mode
 - commit_ref_update(): remove the flags parameter
 - lock_ref_for_update(): don't resolve symrefs
 - lock_ref_for_update(): don't re-read non-symbolic references
 - refs: resolve symbolic refs first
 - ref_transaction_update(): check refname_is_safe() at a minimum
 - unlock_ref(): move definition higher in the file
 - lock_ref_for_update(): new function
 - add_update(): initialize the whole ref_update
 - verify_refname_available(): adjust constness in declaration
 - refs: don't dereference on rename
 - refs: allow log-only updates
 - delete_branches(): use resolve_refdup()
 - ref_transaction_commit(): correctly report close_ref() failure
 - ref_transaction_create(): disallow recursive pruning
 - refs: make error messages more consistent
 - lock_ref_sha1_basic(): remove unneeded local variable
 - read_raw_ref(): move docstring to header file
 - read_raw_ref(): improve docstring
 - read_raw_ref(): rename symref argument to referent
 - read_raw_ref(): clear *type at start of function
 - read_raw_ref(): rename flags argument to type
 - ref_transaction_commit(): remove local variable n
 - rename_ref(): remove unneeded local variable
 - commit_ref_update(): write error message to *err, not stderr
 - refname_is_safe(): insist that the refname already be normalized
 - refname_is_safe(): don't allow the empty string
 - refname_is_safe(): use skip_prefix()
 - remove_dir_recursively(): add docstring
 - safe_create_leading_directories(): improve docstring
 - read_raw_ref(): don't get confused by an empty directory
 - commit_ref(): if there is an empty dir in the way, delete it
 - t1404: demonstrate a bug resolving references

 Further preparatory work on the refs API before the pluggable
 backend series can land.

 Updated.  Will wait for comments for the last time, and then
 merge to 'next'.


* bn/http-cookiefile-config (2016-05-04) 2 commits
  (merged to 'next' on 2016-05-09 at d519b13)
 + http: expand http.cookieFile as a path
 + Documentation: config: improve word ordering for http.cookieFile

 "http.cookieFile" configuration variable clearly wants a pathname,
 but we forgot to treat it as such by e.g. applying tilde expansion.

 Will merge to 'master'.


* ew/doc-split-pack-disables-bitmap (2016-04-28) 1 commit
  (merged to 'next' on 2016-05-06 at 6343d1e)
 + pack-objects: warn on split packs disabling bitmaps

 Doc update.

 Will merge to 'master'.


* jc/config-pathname-type (2016-05-04) 1 commit
  (merged to 'next' on 2016-05-09 at 0876e55)
 + config: describe 'pathname' value type
 (this branch is used by bn/config-doc-tt-varnames.)

 Consolidate description of tilde-expansion that is done to
 configuration variables that take pathname to a single place.

 Will merge to 'master'.


* jk/submodule-c-credential (2016-05-06) 6 commits
 - submodule: stop sanitizing config options
 - submodule: use prepare_submodule_repo_env consistently
 - submodule--helper: move config-sanitizing to submodule.c
 - submodule: export sanitized GIT_CONFIG_PARAMETERS
 - t5550: break submodule config test into multiple sub-tests
 - t5550: fix typo in $HTTPD_URL

 An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
 submodule honor -c credential.* from command line, 2016-02-29)
 turned out to be a convoluted no-op; implement what it wanted to do
 correctly.

 Everybody happy?


* mh/connect-leak (2016-04-28) 1 commit
 - git_connect(): fix memory leak with CONNECT_DIAG_URL

 Is already made obsolete with a patch in flight under discussion.
 ($gmane/292962)

 Will discard.


* sb/misc-cleanups (2016-04-28) 2 commits
  (merged to 'next' on 2016-05-06 at 87bc8a5)
 + submodule-config: don't shadow `cache`
 + config.c: drop local variable

 Will merge to 'master'.


* ew/fast-import-unpack-limit (2016-04-24) 1 commit
 - fast-import: implement unpack limit

 "git fast-import" learned the same performance trick to avoid
 creating too small a packfile as "git fetch" and "git push" have,
 using *.unpackLimit configuration.

 Need to pick up the rerolled version.
 ($gmane/292562)


* ls/p4-lfs (2016-04-28) 3 commits
  (merged to 'next' on 2016-05-06 at 3e1354d)
 + git-p4: fix Git LFS pointer parsing
 + travis-ci: express Linux/OS X dependency versions more clearly
 + travis-ci: update Git-LFS and P4 to the latest version

 Recent update to Git LFS broke "git p4" by changing the output from
 its "lfs pointer" subcommand.

 Will merge to 'master'.


* ep/http-curl-trace (2016-05-02) 2 commits
 . imap-send.c: introduce the GIT_TRACE_CURL environment variable
 . http.c: implement the GIT_TRACE_CURL environment variable

 HTTP transport gained an option to produce more detailed debugging
 trace.

 Still under discussion.
 ($gmane/292074, 293236)


* nd/worktree-various-heads (2016-04-22) 13 commits
 - branch: do not rename a branch under bisect or rebase
 - worktree.c: check whether branch is bisected in another worktree
 - wt-status.c: split bisect detection out of wt_status_get_state()
 - worktree.c: check whether branch is rebased in another worktree
 - worktree.c: avoid referencing to worktrees[i] multiple times
 - wt-status.c: make wt_status_check_rebase() work on any worktree
 - wt-status.c: split rebase detection out of wt_status_get_state()
 - path.c: refactor and add worktree_git_path()
 - worktree.c: mark current worktree
 - worktree.c: make find_shared_symref() return struct worktree *
 - worktree.c: store "id" instead of "git_dir"
 - path.c: add git_common_path() and strbuf_git_common_path()
 - dir.c: rename str(n)cmp_icase to fspath(n)cmp

 The experimental "multiple worktree" feature gains more safety to
 forbid operations on a branch that is checked out or being actively
 worked on elsewhere, by noticing that e.g. it is being rebased.

 Will merge to 'next'.


* pb/commit-verbose-config (2016-05-05) 8 commits
 - SQUASH???
 - commit: add a commit.verbose config variable
 - t7507-commit-verbose: improve test coverage by testing number of diffs
 - parse-options.c: make OPTION_COUNTUP respect "unspecified" values
 - t/t7507: improve test coverage
 - t0040-parse-options: improve test coverage
 - test-parse-options: print quiet as integer
 - t0040-test-parse-options.sh: fix style issues
 (this branch is used by jc/test-parse-options-expect.)

 "git commit" learned to pay attention to "commit.verbose"
 configuration variable and act as if "--verbose" option was
 given from the command line.

 Almost there.
 ($gmane/293663).


* jc/fsck-nul-in-commit (2016-04-14) 2 commits
 - fsck: detect and warn a commit with embedded NUL
 - fsck_commit_buffer(): do not special case the last validation

 "git fsck" learned to catch NUL byte in a commit object as
 potential error and warn.

 What was the status of this one?  Ready to proceed?


* jc/ll-merge-internal (2016-05-09) 3 commits
 - t6036: remove pointless test that expects failure
 - ll-merge: use a longer conflict marker for internal merge
 - ll-merge: fix typo in comment

 "git rerere" can get confused by conflict markers deliberately left
 by the inner merge step, because they are indistinguishable from
 the real conflict markers left by the outermost merge which are
 what the end user and "rerere" need to look at.  This was fixed by
 making the conflict markers left by the inner merges a bit longer.

 Will merge to 'next'.


* sb/submodule-init (2016-05-03) 7 commits
  (merged to 'next' on 2016-05-03 at 8a5fce4)
 + submodule init: redirect stdout to stderr
  (merged to 'next' on 2016-04-29 at 3e81ee88)
 + submodule--helper update-clone: abort gracefully on missing .gitmodules
 + submodule init: fail gracefully with a missing .gitmodules file
  (merged to 'next' on 2016-04-27 at afaad81)
 + submodule: port init from shell to C
 + submodule: port resolve_relative_url from shell to C
 + Merge branch 'sb/submodule-path-misc-bugs' into sb/submodule-init
 + Merge branch 'sb/submodule-helper-clone-regression-fix' into sb/submodule-init

 Update of "git submodule" to move pieces of logic to C continues.

 Will cook for a bit more in 'next'.


* jc/send-email-skip-backup (2016-04-12) 1 commit
 - send-email: detect and offer to skip backup files

 A careless invocation of "git send-email directory/" after editing
 0001-change.patch with an editor often ends up sending both
 0001-change.patch and its backup file, 0001-change.patch~, causing
 embarrassment and a minor confusion.  Detect such an input and
 offer to skip the backup files when sending the patches out.

 Needs review.


* va/i18n-misc-updates (2016-04-19) 9 commits
 - i18n: builtin/pull.c: split strings marked for translation
 - i18n: builtin/pull.c: mark placeholders for translation
 - i18n: git-parse-remote.sh: mark strings for translation
 - i18n: branch: move comment for translators
 - i18n: branch: unmark string for translation
 - i18n: builtin/rm.c: remove a comma ',' from string
 - i18n: unpack-trees: mark strings for translation
 - i18n: builtin/branch.c: mark option for translation
 - i18n: index-pack: use plural string instead of normal one

 Mark several messages for translation.

 Will merge to 'next'.


* kn/ref-filter-branch-list (2016-04-25) 17 commits
 - branch: implement '--format' option
 - branch: use ref-filter printing APIs
 - branch, tag: use porcelain output
 - ref-filter: allow porcelain to translate messages in the output
 - ref-filter: add `:dir` and `:base` options for ref printing atoms
 - ref-filter: make remote_ref_atom_parser() use refname_atom_parser_internal()
 - ref-filter: introduce symref_atom_parser() and refname_atom_parser()
 - ref-filter: introduce refname_atom_parser_internal()
 - ref-filter: make "%(symref)" atom work with the ':short' modifier
 - ref-filter: add support for %(upstream:track,nobracket)
 - ref-filter: make %(upstream:track) prints "[gone]" for invalid upstreams
 - ref-filter: introduce format_ref_array_item()
 - ref-filter: move get_head_description() from branch.c
 - ref-filter: modify "%(objectname:short)" to take length
 - ref-filter: implement %(if:equals=<string>) and %(if:notequals=<string>)
 - ref-filter: include reference to 'used_atom' within 'atom_value'
 - ref-filter: implement %(if), %(then), and %(else) atoms

 The code to list branches in "git branch" has been consolidated
 with the more generic ref-filter API.

 Needs review.


* xy/format-patch-base (2016-04-26) 4 commits
 - format-patch: introduce format.useAutoBase configuration
 - format-patch: introduce --base=auto option
 - format-patch: add '--base' option to record base tree info
 - patch-ids: make commit_patch_id() a public helper function

 "git format-patch" learned a new "--base" option to record what
 (public, well-known) commit the original series was built on in
 its output.

 Will merge to 'next'.


* dt/index-helper (2016-05-09) 19 commits
 - untracked-cache: config option
 - trace: measure where the time is spent in the index-heavy operations
 - index-helper: optionally automatically run
 - index-helper: autorun mode
 - index-helper: don't run if already running
 - index-helper: kill mode
 - watchman: add a config option to enable the extension
 - unpack-trees: preserve index extensions
 - update-index: enable/disable watchman support
 - index-helper: use watchman to avoid refreshing index with lstat()
 - watchman: support watchman to reduce index refresh cost
 - read-cache: add watchman 'WAMA' extension
 - index-helper: add --detach
 - daemonize(): set a flag before exiting the main process
 - index-helper: log warnings
 - index-helper: add --strict
 - index-helper: new daemon for caching index and related stuff
 - read-cache: allow to keep mmap'd memory after reading
 - read-cache.c: fix constness of verify_hdr()

 Needs review.
 ($gmane/294056).


* jc/bundle (2016-03-03) 6 commits
 - index-pack: --clone-bundle option
 - Merge branch 'jc/index-pack' into jc/bundle
 - bundle v3: the beginning
 - bundle: keep a copy of bundle file name in the in-core bundle header
 - bundle: plug resource leak
 - bundle doc: 'verify' is not about verifying the bundle

 The beginning of "split bundle", which could be one of the
 ingredients to allow "git clone" traffic off of the core server
 network to CDN.


* jc/merge-drop-old-syntax (2015-04-29) 1 commit
 - merge: drop 'git merge <message> HEAD <commit>' syntax

 Stop supporting "git merge <message> HEAD <commit>" syntax that has
 been deprecated since October 2007, and issues a deprecation
 warning message since v2.5.0.

 It has been reported that git-gui still uses the deprecated syntax,
 which needs to be fixed before this final step can proceed.
 ($gmane/282594)

--------------------------------------------------
[Discarded]

* jc/diff-compact-always-use-blank-heuristics (2016-04-29) 1 commit
 . diff: enable "compaction heuristics" and lose experimentation knob

 Superseded by the tip commit on the jk/diff-compact-heuristic topic.

^ permalink raw reply	[relevance 3%]

* What's in git.git (Apr 2009, #02; Wed, 29)
@ 2009-04-30  5:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2009-04-30  5:33 UTC (permalink / raw)
  To: git

It's been a while since I sent the "What's in" report.  Hopefully we can
do an -rc4 this weekend and then 1.6.3 final next week.

* The 'maint' branch has these fixes since 1.6.2.3

Allan Caffee (2):
  builtin-merge: fix a typo in an error message
  Documentation: fix a grammatical error in api-builtin.txt

Björn Steinbrink (1):
  tree_entry_interesting: a pathspec only matches at directory boundary

Clemens Buchacher (3):
  add tests for merging with submodules
  update cache for conflicting submodule entries
  simplify output of conflicting merge

Erik Faye-Lund (4):
  test-suite: adding a test for fast-export with tag variants
  builtin-fast-export.c: turn error into warning
  builtin-fast-export.c: fix crash on tagged trees
  builtin-fast-export.c: handle nested tags

Frank Lichtenheld (2):
  init: Do not segfault on big GIT_TEMPLATE_DIR environment variable
  gitcvs-migration: Link to git-cvsimport documentation

Jeff King (2):
  doc/gitattributes: clarify location of config text
  add-interactive: refactor mode hunk handling

Johan Herland (1):
  Update docs on behaviour of 'core.sharedRepository' and 'git init
    --shared'

Johannes Schindelin (2):
  Fix 'git checkout <submodule>' to update the index
  Fix off-by-one in read_tree_recursive

Johannes Sixt (1):
  t1301-shared-repo: fix forced modes test

Junio C Hamano (4):
  match_tree_entry(): a pathspec only matches at directory boundaries
  Describe fixes since 1.6.2.3
  GIT 1.6.2.4
  diff -c -p: do not die on submodules

Junio Hamano (1):
  Speed up reflog pruning of unreachable commits

Linus Torvalds (2):
  Clean up reflog unreachability pruning decision
  grep: fix segfault when "git grep '('" is given

Markus Heidelberg (2):
  doc/git-daemon: add missing arguments to options
  doc/git-daemon: add missing arguments to max-connections option

Matthieu Moy (2):
  git add -p: new "quit" command at the prompt.
  Update git-add.txt according to the new possibilities of 'git add -p'.

Nguyễn Thái Ngọc Duy (1):
  Makefile: remove {fetch,send}-pack from PROGRAMS as they are builtins

Paul Bolle (1):
  imap-send: use correct configuration variable in documentation

Stephen Boyd (1):
  test-genrandom: Add newline to usage string

Thomas Jarosch (1):
  Fix buffer overflow in config parser

Ulrich Windl (1):
  git-apply: fix option description


* The 'master' branch has these since 1.6.3-rc0
  in addition to the above.

Alex Riesen (3):
  Wait for git diff to finish in git difftool
  Explain seemingly pointless use of system in difftool
  improve error message in config.c

Allan Caffee (4):
  graph API: Added logic for colored edges
  t4202-log: extend test coverage of graphing
  graph API: fix extra space during pre_commit_line state
  graph API: fix a bug in the rendering of octopus merges

Ben Jackson (1):
  Work around ash "alternate value" expansion bug

Benjamin Kramer (2):
  connect: replace inet_ntop with getnameinfo
  daemon.c: fix segfault on OS X

Bert Wesarg (3):
  shorten_unambiguous_ref(): add strict mode
  for-each-ref: utilize core.warnAmbiguousRefs for :short-format
  rev-parse: --abbrev-ref option to shorten ref name

Bill Pemberton (1):
  Add parsing of elm aliases to git-send-email

Brandon Casey (2):
  t9001: use older Getopt::Long boolean prefix '--no' rather than '--no-'
  t7700-repack: repack -a now works properly, expect success from test

Dan Loewenherz (1):
  Convert to use quiet option when available

David Aguilar (11):
  difftool: remove merge options for opendiff, tkdiff, kdiff3 and xxdiff
  difftool: remove the backup file feature
  difftool: use perl built-ins when testing for msys
  difftool: add a -y shortcut for --no-prompt
  difftool: move 'git-difftool' out of contrib
  difftool: add various git-difftool tests
  difftool: add support for a difftool.prompt config variable
  bash completion: add git-difftool
  mergetool: use $( ... ) instead of `backticks`
  difftool/mergetool: refactor commands to use git-mergetool--lib
  mergetool--lib: simplify API usage by removing more global variables

Eric Blake (2):
  Makefile: installing git in cygwin 1.7.0
  doc: consistently use ASCIIDOC_EXTRA

Erik Broes (1):
  git-shell: Add 'git-upload-archive' to allowed commands.

Felipe Contreras (1):
  git config: error when editing a repo config and not being in one

Ferry Huberts (1):
  Fix misspelled mergetool.keepBackup

Holger Weiß (1):
  gitweb: Fix snapshots requested via PATH_INFO

Jeff King (8):
  doc: clarify --no-track option
  doc: refer to tracking configuration as "upstream"
  doc/checkout: refer to git-branch(1) as appropriate
  doc/checkout: split checkout and branch creation in synopsis
  docs/checkout: clarify what "non-branch" means
  add-interactive: refactor mode hunk handling
  t7800: respect NO_PERL
  Makefile: fix NO_PERL bug with gitweb

Johannes Schindelin (3):
  Add an option not to use link(src, dest) && unlink(src) when that is
    unreliable
  t5701: do not get stuck in empty-push/
  Rename core.unreliableHardlinks to core.createObject

Johannes Sixt (5):
  Windows: Work around intermittent failures in mingw_rename
  Windows: Skip fstat/lstat optimization in write_entry()
  builtin-help: silently tolerate unknown keys
  remote.c: do not trigger remote.<name>.<var> codepath for two-level names
  prune-packed: advanced progress even for non-existing fan-out directories

Junio C Hamano (11):
  gitignore git-bisect--helper
  unpack-trees: do not muck with attributes when we are not checking out
  Update draft release notes to 1.6.3
  read-tree A B: do not corrupt cache-tree
  Move prime_cache_tree() to cache-tree.c
  read-tree -m A B: prime cache-tree from the switched-to tree
  checkout branch: prime cache-tree fully
  Revert "stat_tracking_info(): only count real commits"
  Makefile: ignore perl/ subdirectory under NO_PERL
  GIT 1.6.3-rc2
  merge-recursive: do not die on a conflicting submodule

Linus Torvalds (4):
  Allow users to un-configure rename detection
  process_{tree,blob}: show objects without buffering
  show_object(): push path_name() call further down
  t4202: fix typo

Mark Drago (1):
  Add semicolon to curly brace group in main Makefile

Markus Heidelberg (4):
  doc/merge-config: list ecmerge as a built-in merge tool
  git-mergetool/difftool: make (g)vimdiff workable under Windows
  git-mergetool: add new merge tool TortoiseMerge
  grep: don't support "grep.color"-like config options

Matthieu Moy (3):
  git add -p: new "quit" command at the prompt.
  Update git-add.txt according to the new possibilities of 'git add -p'.
  clone: add test for push on an empty clone.

Michael J Gruber (3):
  remote.c: use shorten_unambiguous_ref
  test-lib.sh: Help test_create_repo() find the templates dir
  Fix more typos/spelling in comments

Michał Kiedrowicz (6):
  tests: test applying criss-cross rename patch
  builtin-apply: keep information about files to be deleted
  Documentation: boolean value may be given by on/off
  tests: test applying criss-cross rename patch
  builtin-apply: keep information about files to be deleted
  tests: make test-apply-criss-cross-rename more robust

Mike Ralphson (3):
  builtin-remote: fix typo in option description
  Documentation: fix typos / spelling mistakes
  Fix typos / spelling in comments

Nanako Shiraishi (1):
  git-am: teach git-am to apply a patch to an unborn branch

Nguyễn Thái Ngọc Duy (3):
  get_local_heads(): do not return random pointer if there is no head
  attr: add GIT_ATTR_INDEX "direction"
  archive: do not read .gitattributes in working directory

Nicolas Pitre (1):
  progress bar: round to the nearest instead of truncating down

Patrick Welche (1):
  NetBSD compilation fix

Pierre Habouzit (1):
  hook/update: example of how to prevent branch creation

René Scharfe (2):
  archive tests: do not use .gitattributes in working directory
  archive test: attributes

Sam Vilain (1):
  SubmittingPatches: itemize and reflect upon well written changes

Sebastian Pipping (1):
  difftool/mergetool: add diffuse as merge and diff tool

Sitaram Chamarty (1):
  Remove obsolete bug warning in man git-update-server-info

Stephen Boyd (7):
  config.txt: add missing format.{subjectprefix,cc,attach} variables
  Documentation: use lowercase for shallow and deep threading
  git-show-branch.txt: cleanup example description
  git-format-patch.txt: general rewordings and cleanups
  config.txt: add missing 'the's and make words plural
  config.txt: clarify sentences in the configuration and syntax sections
  config.txt: Make configuration paragraph more consistent

Uwe Kleine-König (1):
  parseopt: fix documentation for --keep-dashdash

Wesley J. Landaker (4):
  Documentation: git-svn: fix spurious bolding that mangles the output
  Documentation: git-svn: fix a grammatical error without awkwardness
  Documentation: git-clean: fix minor grammatical errors
  Documentation: git-clean: make description more readable

Wincent Colaiuta (1):
  git add -p: add missing "q" to patch prompt

^ permalink raw reply	[relevance 3%]

* [PATCH v2 0/8] rebase: make reflog messages independent of the backend
  2022-02-21 11:10  3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
@ 2022-04-20  9:56  3% ` Phillip Wood via GitGitGadget
      2 siblings, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-04-20  9:56 UTC (permalink / raw)
  To: git; +Cc: Phillip Wood, Christian Couder, Elijah Newren, Phillip Wood

Thanks to Christian and Elijah for their comments on V1.

I've updated commit message for patch 1 to try and be clearer about the
removal of a call to strbuf_release() and spilt out the test changes from
the old patch 2 into a separate preparatory patch.

V1 Cover Letter:

This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.

 * improve rebase reflog test coverage
 * rebase --merge: fix reflog messages for --continue and --skip
 * rebase --apply: respect GIT_REFLOG_ACTION
 * rebase --abort: improve reflog message
 * unify reflog messages between the two rebase backends

This series is based on pw/use-inprocess-checkout-in-rebase

Phillip Wood (8):
  rebase --apply: remove duplicated code
  t3406: rework rebase reflog tests
  rebase --merge: fix reflog when continuing
  rebase --merge: fix reflog message after skipping
  rebase --apply: respect GIT_REFLOG_ACTION
  rebase --apply: make reflog messages match rebase --merge
  rebase --abort: improve reflog message
  rebase: cleanup action handling

 builtin/rebase.c          | 144 ++++++++++++-----------------
 sequencer.c               |   5 ++
 t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
 3 files changed, 214 insertions(+), 120 deletions(-)


base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1150

Range-diff vs v1:

 1:  243e7b0c372 ! 1:  a4320f2fcf3 rebase --apply: remove duplicated code
     @@ Commit message
          to do as we have already updated HEAD.
      
          Note that the removal of "strbuf_release(&msg)" is safe as there is an
     -    identical call just above this hunk.
     +    identical call just above this hunk which can be seen by viewing the
     +    diff with -U6.
      
          Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
      
 2:  493254ffbb8 ! 2:  0904b50a377 rebase --merge: fix reflog when continuing
     @@ Metadata
      Author: Phillip Wood <phillip.wood@dunelm.org.uk>
      
       ## Commit message ##
     -    rebase --merge: fix reflog when continuing
     +    t3406: rework rebase reflog tests
      
     -    The reflog message for a conflict resolution committed by "rebase
     -    --continue" looks like
     +    Refactor the tests in preparation for adding more tests in the next
     +    few commits. The reworked tests use the same function for testing both
     +    the "merge" and "apply" backends. The test coverage for the "apply"
     +    backend now includes setting GIT_REFLOG_ACTION.
      
     -            rebase (continue): commit subject line
     -
     -    Unfortunately the reflog message each subsequent pick look like
     -
     -            rebase (continue) (pick): commit subject line
     -
     -    Fix this by setting the reflog message for "rebase --continue" in
     -    sequencer_continue() so it does not affect subsequent commits. This
     -    introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
     -    in pick_commits(). Both of these will be fixed in a future series that
     -    stops the sequencer calling setenv().
     +    Note that rebasing the "conflicts" branch does not create any
     +    conflicts yet. A commit to do that will be added in the next commit
     +    and the diff ends up smaller if we have don't rename the branch when
     +    it is added.
      
          Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
      
     - ## builtin/rebase.c ##
     -@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
     - 		int fd;
     - 
     - 		options.action = "continue";
     --		set_reflog_action(&options);
     --
     - 		/* Sanity check */
     - 		if (get_oid("HEAD", &head))
     - 			die(_("Cannot read HEAD"));
     -
     - ## sequencer.c ##
     -@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
     - 	if (read_populate_opts(opts))
     - 		return -1;
     - 	if (is_rebase_i(opts)) {
     -+		char *previous_reflog_action;
     -+
     - 		if ((res = read_populate_todo(r, &todo_list, opts)))
     - 			goto release_todo_list;
     - 
     -@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
     - 			unlink(rebase_path_dropped());
     - 		}
     - 
     -+		previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
     -+		setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
     - 		if (commit_staged_changes(r, opts, &todo_list)) {
     - 			res = -1;
     - 			goto release_todo_list;
     - 		}
     -+		setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
     - 	} else if (!file_exists(get_todo_path(opts)))
     - 		return continue_single_pick(r, opts);
     - 	else if ((res = read_populate_todo(r, &todo_list, opts)))
     -
       ## t/t3406-rebase-message.sh ##
      @@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
       test_expect_success 'setup' '
     @@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
       
      +	git checkout -b conflicts O &&
      +	test_commit P &&
     -+	test_commit conflict-X fileX &&
      +	test_commit Q &&
      +
       	git checkout -b topic O &&
     @@ t/t3406-rebase-message.sh: test_expect_success 'error out early upon -C<n> or --
      +			GIT_REFLOG_ACTION="$reflog_action" &&
      +			export GIT_REFLOG_ACTION
      +		fi &&
     -+		test_must_fail git rebase $mode main &&
     -+		echo resolved >fileX &&
     -+		git add fileX &&
     -+		git rebase --continue
     ++		git rebase $mode main
      +	) &&
      +
     -+	git log -g --format=%gs -5 >actual &&
     ++	git log -g --format=%gs -4 >actual &&
      +	write_reflog_expect <<-EOF &&
      +	${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
      +	${reflog_action:-rebase} (pick): Q
     -+	${reflog_action:-rebase} (continue): conflict-X
      +	${reflog_action:-rebase} (pick): P
      +	${reflog_action:-rebase} (start): checkout main
       	EOF
 -:  ----------- > 3:  6c15f00e170 rebase --merge: fix reflog when continuing
 3:  f4e6e94bc2c = 4:  d3afa85ffc5 rebase --merge: fix reflog message after skipping
 4:  58c560d0e19 = 5:  afa67abe01a rebase --apply: respect GIT_REFLOG_ACTION
 5:  1c3ec165422 = 6:  95161f21e00 rebase --apply: make reflog messages match rebase --merge
 6:  c863cebbdc8 = 7:  d2c1dfbcd5e rebase --abort: improve reflog message
 7:  d26a221a79d = 8:  b0d21affa78 rebase: cleanup action handling

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #02; Tue, 11)
@ 2014-03-11 22:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-11 22:12 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Topics that have been cooking in 'next' for 2.0 have been merged to
'master', which means we are committed to make the next one a big
release.  Kind of scary, isn't it?

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* cc/starts-n-ends-with-endgame (2013-12-05) 1 commit
  (merged to 'next' on 2014-02-25 at 473e143)
 + strbuf: remove prefixcmp() and suffixcmp()

 Originally merged to 'next' on 2014-01-07

 Endgame for the cc/starts-n-ends-with topic; this needs to be
 evil-merged with other topics that introduce new uses of
 prefix/suffix-cmp functions.


* gj/push-more-verbose-advice (2013-11-13) 1 commit
  (merged to 'next' on 2014-02-25 at 1cd10b0)
 + push: switch default from "matching" to "simple"

 Originally merged to 'next' on 2013-11-21

 Explain 'simple' and 'matching' in "git push" advice message; the
 topmost patch is a rebase of jc/push-2.0-default-to-simple on top
 of it.


* jc/add-2.0-ignore-removal (2013-04-22) 1 commit
  (merged to 'next' on 2014-02-25 at a0d018a)
 + git add <pathspec>... defaults to "-A"

 Originally merged to 'next' on 2013-12-06

 Updated endgame for "git add <pathspec>" that defaults to "--all"
 aka "--no-ignore-removal".


* jc/core-checkstat-2.0 (2013-05-06) 1 commit
  (merged to 'next' on 2014-02-25 at 62f6aeb)
 + core.statinfo: remove as promised in Git 2.0

 Originally merged to 'next' on 2013-12-06


* jc/hold-diff-remove-q-synonym-for-no-deletion (2013-07-19) 1 commit
  (merged to 'next' on 2014-02-25 at ccfff88)
 + diff: remove "diff-files -q" in a version of Git in a distant future

 Originally merged to 'next' on 2013-12-06

 Remove deprecated "-q" option "git diff-files".


* jc/push-2.0-default-to-simple (2013-06-18) 1 commit
  (merged to 'next' on 2014-02-25 at 1f0e178)
 + push: switch default from "matching" to "simple"

 Originally merged to 'next' on 2013-12-06


* jk/run-network-tests-by-default (2014-02-14) 1 commit
  (merged to 'next' on 2014-02-25 at 62a8ad0)
 + tests: turn on network daemon tests by default

 Originally merged to 'next' on 2014-02-20

 Teach "make test" to run networking tests when possible by default.


* jn/add-2.0-u-A-sans-pathspec (2013-04-26) 1 commit
  (merged to 'next' on 2014-02-25 at 9e5c0d2)
 + git add: -u/-A now affects the entire working tree

 Originally merged to 'next' on 2013-12-06


* ks/combine-diff (2014-02-24) 6 commits
  (merged to 'next' on 2014-02-25 at 69e5a87)
 + tests: add checking that combine-diff emits only correct paths
 + combine-diff: simplify intersect_paths() further
 + combine-diff: combine_diff_path.len is not needed anymore
 + combine-diff: optimize combine_diff_path sets intersection
 + diff test: add tests for combine-diff with orderfile
 + diffcore-order: export generic ordering interface
 (this branch is used by ks/tree-diff-nway.)

 Originally merged to 'next' on 2014-02-20

 Teach combine-diff to honour the path-output-order imposed by
 diffcore-order, and optimize how matching paths are found in
 the N-way diffs made with parents.


* nd/daemonize-gc (2014-02-10) 2 commits
  (merged to 'next' on 2014-02-25 at f592335)
 + gc: config option for running --auto in background
 + daemon: move daemonize() to libgit.a

 Originally merged to 'next' on 2014-02-20

 Allow running "gc --auto" in the background.

--------------------------------------------------
[New Topics]

* jk/detect-push-typo-early (2014-03-05) 3 commits
 - push: detect local refspec errors early
 - match_explicit_lhs: allow a "verify only" mode
 - match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.

 Will merge to 'next'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 Has the discussion settled on this?


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
 - docs: mark info/grafts as outdated

 Will merge to 'next'.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
 - use strchrnul() in place of strchr() and strlen()

 Will merge to 'next'.


* sh/use-hashcpy (2014-03-06) 1 commit
 - Use hashcpy() when copying object names

 Will merge to 'next'.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
 - *.sh: drop useless use of "env"

 Will merge to 'next'.


* jc/tag-contains-with (2014-03-07) 1 commit
 - tag: grok "--with" as synonym to "--contains"

 Will merge to 'next'.


* bp/commit-p-editor (2014-03-11) 8 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - SQUASH???
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test


* cp/am-patch-format-doc (2014-03-11) 1 commit
 - Documentation/git-am: Document supported --patch-format options

 Will merge to 'next'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
 - configure.ac: link with -liconv for locale_charset()


* jk/clean-d-pathspec (2014-03-11) 2 commits
 - clean: simplify dir/not-dir logic
 - clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use pathspec correctly.

 Will merge to 'next' and later down to 'maint'.


* jk/mv-submodules-fix (2014-03-11) 2 commits
 - mv: prevent mismatched data when ignoring errors.
 - builtin/mv: fix out of bounds write

 Needs tests.


* nd/upload-pack-shallow (2014-03-11) 1 commit
 - upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'next'.


* rs/grep-h-c (2014-03-11) 2 commits
 - grep: support -h (no header) with --count
 - t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ap/remote-hg-skip-null-bookmarks (2014-01-02) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Reported to break tests ($gmane/240005)
 Expecting a reroll.


* jk/warn-on-object-refname-ambiguity (2014-01-09) 6 commits
 - get_sha1: drop object/refname ambiguity flag
 - get_sha1: speed up ambiguous 40-hex test
 - FIXUP: teach DO_FOR_EACH_NO_RECURSE to prime_ref_dir()
 - refs: teach for_each_ref a flag to avoid recursion
 - cat-file: fix a minor memory leak in batch_objects
 - cat-file: refactor error handling of batch_objects

 Expecting a reroll.


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* fc/completion (2013-12-09) 1 commit
 - completion: fix completion of certain aliases

 SZEDER Gábor noticed that this breaks "git -c var=val alias" and
 also suggested a better description of the change.

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* mo/subtree-split-updates (2013-12-10) 3 commits
 - subtree: add --edit option
 - subtree: allow --squash and --message with push
 - subtree: support split --rejoin --squash

 Has been stalled for a while without much comments from anybody
 interested.

 Will discard.


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* jc/create-directories-microopt (2013-11-11) 1 commit
 - checkout: most of the time we have good leading directories

 Of unknown value until tested on non-Linux platforms (especially
 Windows).

 Will discard.


* jt/commit-fixes-footer (2013-10-30) 1 commit
 - commit: Add -f, --fixes <commit> option to add Fixes: line

 There is an ongoing discussion around this topic; in general I am
 fairly negative on a new feature that is too narrow and prefer a
 more generic solution that can be tailored for specific needs, as
 many people stated in the thread.

 cc/interpret-trailers could be such a generic solution (although
 there don't seem to be much concensus yet).

 Will discard.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* mf/graph-show-root (2013-10-25) 1 commit
 . graph.c: mark root commit differently

 In a repository with multiple-roots, "log --graph", especially with
 "--oneline", does not give the reader enough visual cue to see
 where one line of history ended and a separate history began.

 This is the version that marks the roots 'x' when they would have
 been marked as '*'; Keshav Kini suggested an alternative of giving
 an extra blank line after every root, which I tend to think is a
 better approach to the problem.

 Will discard.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* yt/shortened-rename (2013-10-18) 2 commits
 - SQUASH??? style fixes and s/omit/shorten/ where appropriate
 - diff.c: keep arrow(=>) on show_stats()'s shortened filename part to make rename visible

 Attempts to give more weight on the fact that a filepair represents
 a rename than showing substring of the actual path when diffstat
 lines are not wide enough.

 I am not sure if that is solving a right problem, though.

 Will discard.


* rv/send-email-cache-generated-mid (2013-08-21) 2 commits
 - git-send-email: Cache generated message-ids, use them when prompting
 - git-send-email: add optional 'choices' parameter to the ask sub

 Will discard.


* rj/read-default-config-in-show-ref-pack-refs (2013-06-17) 3 commits
 - ### DONTMERGE: needs better explanation on what config they need
 - pack-refs.c: Add missing call to git_config()
 - show-ref.c: Add missing call to git_config()

 The changes themselves are probably good, but it is unclear what
 basic setting needs to be read for which exact operation.

 Will discard, tired of waiting for clarification.
 $gmane/228294


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jk/gitweb-utf8 (2013-04-08) 4 commits
 - gitweb: Fix broken blob action parameters on blob/commitdiff pages
 - gitweb: Don't append ';js=(0|1)' to external links
 - gitweb: Make feed title valid utf8
 - gitweb: Fix utf8 encoding for blob_plain, blobdiff_plain, commitdiff_plain, and patch

 Various fixes to gitweb.

 Drew Northup volunteered to take a look into this ($gmane/226216)
 but nothing seems to have happened since then.

 Will discard.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* jc/stash-pop-not-popped (2014-02-26) 1 commit
 - stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding, but otherwise
 it should be OK for 'next'.


* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
 - branch: use skip_prefix() in install_branch_config()
 - t3200-branch: test setting branch as own upstream

 Will merge to 'next'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
 - commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.

 Will merge to 'next'.


* dd/use-alloc-grow (2014-03-03) 14 commits
 - sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 - read-cache.c: use ALLOC_GROW() in add_index_entry()
 - builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 - attr.c: use ALLOC_GROW() in handle_attr_line()
 - dir.c: use ALLOC_GROW() in create_simplify()
 - reflog-walk.c: use ALLOC_GROW()
 - replace_object.c: use ALLOC_GROW() in register_replace_object()
 - patch-ids.c: use ALLOC_GROW() in add_commit()
 - diffcore-rename.c: use ALLOC_GROW()
 - diff.c: use ALLOC_GROW()
 - commit.c: use ALLOC_GROW() in register_commit_graft()
 - cache-tree.c: use ALLOC_GROW() in find_subtree()
 - bundle.c: use ALLOC_GROW() in add_to_ref_list()
 - builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.

 Will merge to 'next'.


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
 - skip_prefix(): scan prefix only once

 Updaste implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.


* jk/doc-coding-guideline (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at c33101d)
 + CodingGuidelines: mention C whitespace rules

 Elaborate on a style niggle that has been part of "mimic existing
 code".

 Will merge to 'master'.


* jk/shallow-update-fix (2014-02-27) 2 commits
 - shallow: automatically clean up shallow tempfiles
 - shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'next'.


* jl/doc-submodule-update-checkout (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at 8cdf5cb)
 + submodule update: consistently document the '--checkout' option

 Add missing documentation for "submodule update --checkout".

 Will merge to 'master'.


* jn/bisect-coding-style (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at e1de2a5)
 + git-bisect.sh: fix a few style issues

 Will merge to 'master'.


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
 - branch.c: delete size check of newly tracked branch names

 Will merge to 'next'.


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
 - cache_tree_find(): use path variable when passing over slashes
 - cache_tree_find(): remove early return
 - cache_tree_find(): remove redundant check
 - cache_tree_find(): fix comment formatting
 - cache_tree_find(): find the end of path component using strchrnul()
 - cache_tree_find(): remove redundant checks

 Will merge to 'next'.


* nd/strbuf-inline-styles (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 70b5e56)
 + strbuf: style fix -- top opening bracket on a separate line

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
 - tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'next'.


* rt/help-pretty-prints-cmd-names (2014-02-28) 1 commit
  (merged to 'next' on 2014-03-06 at fc607dc)
 + help.c: rename function "pretty_print_string_list"

 Will merge to 'master'.


* sg/archive-restrict-remote (2014-02-28) 2 commits
  (merged to 'next' on 2014-03-06 at 5fe8998)
 + add uploadarchive.allowUnreachable option
 + docs: clarify remote restrictions for git-upload-archive

 Allow loosening remote "git archive" invocation security check that
 refuses to serve tree-ish not at the tip of any ref.

 Will merge to 'master'.


* sh/finish-tmp-packfile (2014-03-03) 2 commits
 - finish_tmp_packfile():use strbuf for pathname construction
 - Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile
 (this branch uses sh/write-pack-file-warning-message-fix.)

 Will merge to 'next'.


* sh/write-pack-file-warning-message-fix (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-06 at 1470b0a)
 + write_pack_file: use correct variable in diagnostic
 (this branch is used by sh/finish-tmp-packfile.)

 A warning from "git pack-objects" were generated by referring to an
 incorrect variable when forming the filename that we had trouble
 with.

 Will merge to 'master'.


* sr/add--interactive-term-readkey (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-06 at 9ca7af8)
 + git-add--interactive: warn if module for interactive.singlekey is missing
 + git-config: document interactive.singlekey requires Term::ReadKey

 Will merge to 'master'.


* ta/parse-commit-with-skip-prefix (2014-03-04) 1 commit
  (merged to 'next' on 2014-03-06 at 0244988)
 + commit.c: use skip_prefix() instead of starts_with()

 Will merge to 'master'.


* ak/gitweb-fit-image (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at ba8cb50)
 + gitweb: Avoid overflowing page body frame with large images

 Instead of allowing an <img> to be shown in whatever size, force
 scaling it to fit on the page with max-height/max-width css style
 attributes.

 Will merge to 'master'.


* da/difftool-git-files (2014-03-05) 2 commits
  (merged to 'next' on 2014-03-06 at a563ec1)
 + t7800: add a difftool test for .git-files
 + difftool: support repositories with .git-files

 "git difftool" misbehaved when the repository is bound to the
 working tree with the ".git file" mechanism, where a textual
 file ".git" tells us where it is.

 Will merge to 'master'.


* jk/commit-dates-parsing-fix (2014-03-07) 6 commits
  (merged to 'next' on 2014-03-07 at 01e9d92)
 + show_ident_date: fix tz range check
  (merged to 'next' on 2014-03-06 at dd641e2)
 + log: do not segfault on gmtime errors
 + log: handle integer overflow in timestamps
 + date: check date overflow against time_t
 + fsck: report integer overflow in author timestamps
 + t4212: test bogus timestamps with git-log

 Will merge to 'master'.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
 - diffcore.h: be explicit about the signedness of is_binary

 Will merge to 'next' and then to 'master' and 'maint'.


* jk/remote-pushremote-config-reading (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 9e71ecb)
 + remote: handle pushremote config in any order

 Will merge to 'master'.


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
 - repack: add `repack.packKeptObjects` config var

 Will merge to 'next'.


* jm/stash-doc-k-for-keep (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at ddd8e48)
 + stash doc: mention short form -k in save description

 Will merge to 'master'.


* jn/am-doc-hooks (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 5c1c372)
 + am doc: add a pointer to relevant hooks

 Will merge to 'master'.


* mh/object-code-cleanup (2014-02-24) 4 commits
  (merged to 'next' on 2014-03-06 at d6b3867)
 + sha1_file.c: document a bunch of functions defined in the file
 + sha1_file_name(): declare to return a const string
 + find_pack_entry(): document last_found_pack
 + replace_object: use struct members instead of an array

 Will merge to 'master'.


* nd/i18n-progress (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-06 at 600fd3e)
 + i18n: mark all progress lines for translation

 Will merge to 'master'.


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
 - sha1_file: fix delta_stack memory leak in unpack_entry

 Will merge to 'next' and then to 'master' and 'maint'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
 - demonstrate git-commit --dry-run exit code behaviour

 Will merge to 'next'.


* fc/transport-helper-fixes (2014-02-24) 7 commits
 - remote-bzr: support the new 'force' option
 - test-hg.sh: tests are now expected to pass
 - transport-helper.c: do not overwrite forced bit
 - transport-helper: check for 'forced update' message
 - transport-helper: add 'force' to 'export' helpers
 - transport-helper: don't update refs in dry-run
 - transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.

 Will merge to 'next'.


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/http-no-curl-easy (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 56d3f6f)
 + http: never use curl_easy_perform

 Avoid use of the curl-easy family of functions, which interferes
 with connection reuse in a negative way.

 Will merge to 'master' and then to 'maint'.


* jk/janitorial-fixes (2014-02-18) 5 commits
  (merged to 'next' on 2014-03-06 at dac2de6)
 + open_istream(): do not dereference NULL in the error case
 + builtin/mv: don't use memory after free
 + utf8: use correct type for values in interval table
 + utf8: fix iconv error detection
 + notes-utils: handle boolean notes.rewritemode correctly

 Will merge to 'master'.


* ks/config-file-stdin (2014-02-18) 4 commits
  (merged to 'next' on 2014-03-06 at 3e77313)
 + config: teach "git config --file -" to read from the standard input
 + config: change git_config_with_options() interface
 + builtin/config.c: rename check_blob_write() -> check_write()
 + config: disallow relative include paths from blobs

 Will merge to 'master'.


* lb/contrib-contacts-looser-diff-parsing (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at 1cc4ffe)
 + git-contacts: do not fail parsing of good diffs

 Will merge to 'master'.


* mh/replace-refs-variable-rename (2014-02-28) 3 commits
  (merged to 'next' on 2014-03-06 at 70bf89b)
 + Document some functions defined in object.c
 + Add docstrings for lookup_replace_object() and do_lookup_replace_object()
 + rename read_replace_refs to check_replace_refs

 Will merge to 'master'.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
 - commit: add --cleanup=scissors
 - wt-status.c: move cut-line print code out to wt_status_add_cut_line
 - wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'next'.


* nd/no-more-fnmatch (2014-02-20) 4 commits
  (merged to 'next' on 2014-03-06 at f0b8f12)
 + actually remove compat fnmatch source code
 + stop using fnmatch (either native or compat)
 + Revert "test-wildmatch: add "perf" command to compare wildmatch and fnmatch"
 + use wildmatch() directly without fnmatch() wrapper

 We started using wildmatch() in place of fnmatch(3); complete the
 process and stop using fnmatch(3).

 Will merge to 'master'.


* nd/reset-setup-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at d93f20a)
 + reset: optionally setup worktree and refresh index on --mixed

 "git reset" needs to refresh the index when working in a working
 tree (it can also be used to match the index to the HEAD in an
 otherwise bare repository), but it failed to set up the working
 tree properly, causing GIT_WORK_TREE to be ignored.

 Will merge to 'master'.


* po/git-help-user-manual (2014-02-18) 1 commit
 - Provide a 'git help user-manual' route to the docbook

 I am not sure if this is even needed.

 Will discard.


* rt/links-for-asciidoctor (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at 547f13d)
 + Documentation: fix documentation AsciiDoc links for external urls

 Will merge to 'master'.


* tg/index-v4-format (2014-02-24) 3 commits
  (merged to 'next' on 2014-03-06 at d4ca5a8)
 + read-cache: add index.version config variable
 + test-lib: allow setting the index format version
 + introduce GIT_INDEX_VERSION environment variable

 Will merge to 'master'.


* tr/diff-submodule-no-reuse-worktree (2014-02-18) 1 commit
  (merged to 'next' on 2014-03-06 at ac8008f)
 + diff: do not reuse_worktree_file for submodules

 "git diff --external-diff" incorrectly fed the submodule directory
 in the working tree to the external diff driver when it knew it is
 the same as one of the versions being compared.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-06) 28 commits
 - FIXUP: minimum compilation fix
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - Add new environment variable $GIT_COMMON_DIR
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - Make git_path() aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - Convert git_snpath() to strbuf_git_path()
 - path.c: make get_pathname() return strbuf instead of static buffer

 The series needs a serious review.


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/gitignore-trailing-whitespace (2014-03-11) 3 commits
  (merged to 'next' on 2014-03-11 at ccdba51)
 + t0008: skip trailing space test on Windows
  (merged to 'next' on 2014-03-06 at f649a34)
 + dir: ignore trailing spaces in exclude patterns
 + dir: warn about trailing spaces in exclude patterns

 Warn and then ignore trailing whitespaces in .gitignore files,
 unless they are quoted for fnmatch(3), e.g. "path\ ".

 Will merge to 'master'.


* nd/log-show-linear-break (2014-02-10) 1 commit
 - log: add --show-linear-break to help see non-linear history

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 Will merge to 'next'.


* ss/completion-rec-sub-fetch-push (2014-02-11) 1 commit
  (merged to 'next' on 2014-03-06 at b5bf463)
 + completion: teach --recurse-submodules to fetch, pull and push

 Will merge to 'master'.


* jh/note-trees-record-blobs (2014-02-20) 1 commit
  (merged to 'next' on 2014-03-06 at f46852d)
 + notes: disallow reusing non-blob as a note object

 "git notes -C <blob>" should not take an object that is not a blob.

 Will merge to 'master'.


* jc/check-attr-honor-working-tree (2014-02-06) 2 commits
  (merged to 'next' on 2014-03-06 at 960d679)
 + check-attr: move to the top of working tree when in non-bare repository
 + t0003: do not chdir the whole test process

 "git check-attr" when (trying to) work on a repository with a
 working tree did not work well when the working tree was specified
 via --work-tree (and obviously with --git-dir).

 The command also works in a bare repository but it reads from the
 (possibly stale, irrelevant and/or nonexistent) index, which may
 need to be fixed to read from HEAD, but that is a completely
 separate issue.  As a related tangent to this separate issue, we
 may want to also fix "check-ignore", which refuses to work in a
 bare repository, to also operate in a bare one.

 Will merge to 'master'.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-02-25) 5 commits
 - request-pull: resurrect "pretty refname" feature
 - request-pull: test updates
 - request-pull: pick up tag message as before
 - request-pull: allow "local:remote" to specify names on both ends
 - request-pull: more strictly match local/remote branches

 Needs doc update but otherwise it should be ready for 'next'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* bl/blame-full-history (2014-01-14) 1 commit
 - blame: new option --prefer-first to better handle merged cherry-picks

 By disabling the tree-same optimization (which is consistent with
 the default behaviour of "git log"-family of commands), make "git
 blame" sometimes produce different result from the original code.

 Because the "git blame" output can give result for each line from
 only one lineage of the history, however, this can be only useful
 when you are lucky---unlike "--full-history" of "git log"-family,
 where we can show commits from both lineages of histories with an
 equal weight.  See $gmane/240392 for more detailed discussion.

 Will discard.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* tb/repack-fix-renames (2014-02-05) 1 commit
 . repack.c: rename a few variables

 Perhaps unneeded, as the longer-term plan is to drop the codeblock
 this change touches.


* ks/diff-c-with-diff-order (2014-02-03) 5 commits
 . combine-diff: simplify intersect_paths() further
 . combine-diff: combine_diff_path.len is not needed anymore
 . combine-diff: optimize combine_diff_path sets intersection
 . diff test: add tests for combine-diff with orderfile
 . diffcore-order: export generic ordering interface

 Now part of ks/combine-diff topic.


* ks/tree-diff-more (2014-02-24) 15 commits
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning
 (this branch is used by ks/tree-diff-nway; uses ks/combine-diff.)

 Code refactoring.

 Now part of ks/tree-diff-nway.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #05; Mon, 24)
@ 2014-03-24 20:27  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-24 20:27 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release, many of them fallouts from GSoC
microprojects.  Many topics that have been marked to be discarded
are finally discarded.

There seems to be a crasher somewhere in the new pack bitmap
codepath that was introduced recently. I am hoping that the root
cause is found and fixed soonish.  Other than that, things look more
or less calm on the 'next' and up.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.


* jk/shallow-update-fix (2014-03-17) 3 commits
  (merged to 'next' on 2014-03-17 at 011942e)
 + shallow: verify shallow file after taking lock
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a new file
 to hold the temporary shallow boundaries but it was not cleaned
 when we exit due to die() or a signal.


* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.


* lt/request-pull (2014-03-13) 6 commits
  (merged to 'next' on 2014-03-17 at 21a598d)
 + request-pull: documentation updates
 + request-pull: resurrect "pretty refname" feature
 + request-pull: test updates
 + request-pull: pick up tag message as before
 + request-pull: allow "local:remote" to specify names on both ends
 + request-pull: more strictly match local/remote branches

 Discard the accumulated "heuristics" to guess from which branch the
 result wants to be pulled from and make sure what the end user
 specified is not second-guessed by "git request-pull", to avoid
 mistakes.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.
 Instead feed these temporary shallow bounds from the standard input
 of pack-objects so that we do not have to use a temporary file.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour

--------------------------------------------------
[New Topics]

* ca/doc-config-third-party (2014-03-21) 1 commit
 - config.txt: third-party tools may and do use their own variables

 Will merge to 'next'.


* dw/doc-status-no-longer-shows-pound-prefix (2014-03-21) 1 commit
 - doc: status, remove leftover statement about '#' prefix

 Will merge to 'next'.


* js/userdiff-cc (2014-03-21) 10 commits
 - userdiff: have 'cpp' hunk header pattern catch more C++ anchor points
 - t4018: test cases showing that the cpp pattern misses many anchor points
 - t4018: test cases for the built-in cpp pattern
 - t4018: reduce test files for pattern compilation tests
 - t4018: convert custom pattern test to the new infrastructure
 - t4018: convert java pattern test to the new infrastructure
 - t4018: convert perl pattern tests to the new infrastructure
 - t4018: an infrastructure to test hunk headers
 - userdiff: support unsigned and long long suffixes of integer constants
 - userdiff: support C++ ->* and .* operators in the word regexp

 Improves the pattern to match the hunk-header for C/C++.

 Will merge to 'next'.


* dp/makefile-charset-lib-doc (2014-03-23) 1 commit
 - Makefile: describe CHARSET_LIB better

 Will merge to 'next'.


* ib/rev-parse-parseopt-argh (2014-03-24) 5 commits
 - parse-options: make sure argh string does not have SP or _
 - update-index: teach --cacheinfo a new syntax "mode,sha1,path"
 - parse-options: multi-word argh should use dash to separate words
 - t1502: protect runs of SPs used in the indentation
 - rev-parse --parseopt: option argument name hints

 Teaches the "rev-parse --parseopt" mechanism used by scripted
 Porcelains to parse command line options and give help text how to
 supply argv-help (the placeholder string for an option parameter,
 e.g. "key-id" in "--gpg-sign=<key-id>").

 Will merge to 'next'.


* rs/pickaxe-i (2014-03-24) 10 commits
 - pickaxe: simplify kwset loop in contains()
 - pickaxe: call strlen only when necessary in diffcore_pickaxe_count()
 - pickaxe: move pickaxe() after pickaxe_match()
 - pickaxe: merge diffcore_pickaxe_grep() and diffcore_pickaxe_count() into diffcore_pickaxe()
 - pickaxe: honor -i when used with -S and --pickaxe-regex
 - t4209: use helper functions to test --author
 - t4209: use helper functions to test --grep
 - t4209: factor out helper function test_log_icase()
 - t4209: factor out helper function test_log()
 - t4209: set up expectations up front

 Allow the options -i/--regexp-ignore-case, --pickaxe-regex, and -S
 to be used together and work as expected to perform a pickaxe
 search using case-insensitive regular expression matching.

 Will merge to 'next'.


* an/branch-config-message (2014-03-24) 1 commit
 - branch.c: install_branch_config: simplify if chain

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks


* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.

 Will merge to 'master'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable

 Will merge to 'next'.


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 Will merge to 'master'.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 Will merge to 'master'.


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 Will merge to 'master'.


* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()

 Will merge to 'master'.


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-21 at 916b759)
 + rebase: allow "-" short-hand for the previous branch

 Will merge to 'master'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
 - tests: use "env" to run commands with temporary env-var settings
 (this branch is used by jk/tests-cleanup.)

 Will merge to 'next'.


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
 - fsck: use bitwise-or assignment operator to set flag

 Will merge to 'next'.


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used

 Will merge to 'next' after squashing in the fixup.


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

 Will merge to 'master'.


* ap/remote-hg-skip-null-bookmarks (2014-03-21) 2 commits
 - SQUASH???
 - remote-hg: do not fail on invalid bookmarks

 Will merge to 'next' after squashing in the fix.
 Thanks Torsten for testing.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Will merge to 'master'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB

 Will merge to 'master'.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-21 at 2728983)
 + fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 + fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'master'.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects

 Will merge to 'master'.


* bp/commit-p-editor (2014-03-18) 7 commits
  (merged to 'next' on 2014-03-21 at 23b6b06)
 + run-command: mark run_hook_with_custom_index as deprecated
 + merge hook tests: fix and update tests
 + merge: fix GIT_EDITOR override for commit hook
 + commit: fix patch hunk editing with "commit -p -m"
 + test patch hunk editing with "commit -p -m"
 + merge hook tests: use 'test_must_fail' instead of '!'
 + merge hook tests: fix missing '&&' in test

 When it is not necessary to edit a commit log message (e.g. "git
 commit -m" is given a message without specifying "-e"), we used to
 disable the spawning of the editor by overriding GIT_EDITOR, but
 this means all the uses of the editor, other than to edit the
 commit log message, are also affected.

 Will merge to 'master'.


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()

 Will merge to 'master'.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-03-24) 3 commits
 - SQUASH??? style and leak fix
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Since I didn't get any responses to my earlier "Comments?", I ended
 up reading it myself again and found a small leak.

 Hoping to be able to merge a fix for this issue soonish.


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.

 Will merge to 'master'.


* nd/multiple-work-trees (2014-03-17) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 A replacement for contrib/workdir/git-new-workdir that does not
 rely on symbolic links and make sharing of objects and refs safer
 by making the borrowee and borrowers aware of each other.

 Reported to break on a worktree whose leading path component has a
 symbolic link in it ($gmane/244822).


* ks/tree-diff-nway (2014-03-20) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
  (merged to 'next' on 2014-03-21 at d872679)
 + tree-diff: consolidate code for emitting diffs and recursion in one place
 + tree-diff: show_tree() is not needed
 + tree-diff: no need to pass match to skip_uninteresting()
 + tree-diff: no need to manually verify that there is no mode change for a path
 + combine-diff: move changed-paths scanning logic into its own function
 + combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

--------------------------------------------------
[Discarded]

* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 . diff: simplify cpp funcname regex

 Superceded.


* pw/branch-config-message (2014-03-13) 1 commit
 . install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.

 an/branch-config-message supersedes this topic.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.18.0-rc0
@ 2018-05-30 22:47  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-30 22:47 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.18.0-rc0 is now available for
testing at the usual places.  It is comprised of 802 non-merge
commits since v2.17.0, contributed by 60 people, 19 of which are
new faces.

As the above numbers show, especially the non-merge commit count, it
turned out that 2.18 is relatively sizeable cycle.  Let's plan to
start cooling down and giving it a bit of extra polish to make sure
there is no/little regression.  I am tagging the preview now as I
want to do the -rc1 before I go offline early next week for a few
days for travelling.  I may go offline for the rest of the day as I
seem to have caught something X-<, but plan to spend the next 48
hours re-reviewing what is in (or close to be in) 'next' to see which
ones should be in -rc1.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.18.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Leif Middelschulte, Loganaden
  Velvindron, Luis Marsano, Paul-Sebastian Ungureanu, Pratik
  Karki, Ryan Dammrose, Takuto Ikuta, Tao Qingyun, Wink Saville,
  and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Jameson Miller,
  Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Lars Schneider,
  Lucas Werkmeister, Martin Ågren, Michal Nazarewicz, Michele
  Locati, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Philip
  Oakley, Phillip Wood, Ramsay Jones, René Scharfe, Sergey
  Organov, Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau,
  Thomas Gummerer, Todd Zullinger, and Torsten Bögershausen.

----------------------------------------------------------------

Git 2.18 Release Notes (draft)
==============================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "checkout-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to undertand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Christian Couder (6):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (70):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`

Eric Sunshine (5):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jeff King (54):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink

Johannes Schindelin (68):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: learn about the special "fake root commit" handling
      rebase -i --root: let the sequencer handle even the initial part
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      rebase --rebase-merges: root commits can be cousins, too
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (5):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info

Jonathan Tan (4):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2

Junio C Hamano (18):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0

Kaartic Sivaraam (1):
      branch --list: print useful info whilst interactive rebasing a detached HEAD

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (1):
      merge-recursive: give notice when submodule commit gets fast-forwarded

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (88):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      travis-ci: run gcc-8 on linux-gcc jobs

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (8):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (22):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (81):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (10):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches

Todd Zullinger (1):
      doc/clone: update caption for GIT URLS cross-reference

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (121):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants

Ævar Arnfjörð Bjarmason (21):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.18.0-rc1
@ 2018-06-04 13:53  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-04 13:53 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.18.0-rc1 is now available for testing
at the usual places.  It is comprised of 842 non-merge commits
since v2.17.0, contributed by 65 people, 20 of which are new faces.

I plan to go offline for most of the remainder of the week, and then
tag (hopefully) the last -rc early next week, with any urgent
regression fix accumulated on the list during this week.  Happy bug
hunting ;-)

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.18.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Leif Middelschulte,
  Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
  Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
  Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
  Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
  m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
  David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
  Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
  Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
  Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
  Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
  Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
  Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
  Gummerer, Todd Zullinger, and Torsten Bögershausen.

----------------------------------------------------------------

Git 2.18 Release Notes (draft)
==============================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic in "diff" family that is used in "merge" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "checkout-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.

 * The list of commands with their various attributes were spread
   across a few places in the build procedure, but it now is getting a
   bit more consolidated to allow more automation.

 * Quite a many tests assumed that newly created refs are made as
   loose refs using the files backend, which have been updated to use
   proper plumbing like rev-parse and update-ref, to avoid breakage
   once we start using different ref backends.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to undertand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * The import-tars script (in contrib/) has been taught to handle
   tarballs with overly long paths that use PAX extended headers.
   (merge 12ecea46e3 pa/import-tars-long-names later to maint).

 * "git rev-parse Y..." etc. misbehaved when given endpoints were
   not committishes.
   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).

 * "git pull -recurse-submodules --rebase", when the submodule
   repository's history did not have anything common between ours and
   the upstream's, failed to execute.  We need to fetch from them to
   continue even in such a case.
   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, but only one of them was documented.
   (merge a97447a42a nd/remote-update-doc later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
   (merge 590551ca2c rd/tag-doc-lightweight later to maint).
   (merge 44f560fc16 rd/init-typo later to maint).
   (merge f156a0934a rd/p4-doc-markup-env later to maint).
   (merge 2a00502b14 tg/doc-sec-list later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Christian Couder (7):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed
      t990X: use '.git/objects' as 'deep inside .git' path

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

David Turner (1):
      t: make many tests depend less on the refs being files

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (72):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`
      rev-parse: check lookup'ed commit references for NULL
      RelNotes: remove duplicate release note

Eric Sunshine (5):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jeff King (54):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink

Johannes Schindelin (68):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: learn about the special "fake root commit" handling
      rebase -i --root: let the sequencer handle even the initial part
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      rebase --rebase-merges: root commits can be cousins, too
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (6):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info
      fetch: do not pass ref-prefixes for fetch by exact SHA1

Jonathan Tan (5):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2
      submodule: do not pass null OID to setup_revisions

Junio C Hamano (21):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0
      refspec-api: avoid uninitialized field in refspec item
      A bit more topics before -rc1
      Git 2.18-rc1

Kaartic Sivaraam (1):
      branch --list: print useful info whilst interactive rebasing a detached HEAD

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (1):
      merge-recursive: give notice when submodule commit gets fast-forwarded

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Luke Diamand (1):
      git-p4: add unshelve command

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (108):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      generate-cmds.sh: factor out synopsis extract code
      generate-cmds.sh: export all commands to command-list.h
      help: use command-list.h for common command list
      Remove common-cmds.h
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      git.c: convert --list-* to --list-cmds=*
      git --list-cmds: collect command list in a string_list
      completion: implement and use --list-cmds=main,others
      git: support --list-cmds=list-<category>
      help: add "-a --verbose" to list all commands with synopsis
      help: use command-list.txt for the source of guides
      command-list.txt: documentation and guide line
      completion: let git provide the completable command list
      completion: reduce completable command list
      Move declaration for alias.c to alias.h
      completion: add and use --list-cmds=nohelpers
      completion: add and use --list-cmds=alias
      completion: allow to customize the completable command list
      travis-ci: run gcc-8 on linux-gcc jobs
      Use OPT_SET_INT_F() for cmdline option specification
      remote.txt: update documentation for 'update' command
      remote: doc typofix

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Orgad Shaneh (1):
      git-rebase--interactive: fix copy-paste mistake

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Pedro Alvarez Piedehierro (1):
      import-tars: read overlong names from pax extended header

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (8):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process

Robert P. J. Day (4):
      Use proper syntax for replaceables in command docs
      tag: clarify in the doc that a tag can refer to a non-commit object
      init: fix grammar in "templates not found" msg
      p4.txt: Use backquotes for variable names

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (22):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (81):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (12):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches
      SubmittingPatches: replace numbered attributes with names
      note git-security@googlegroups.com in more places

Todd Zullinger (1):
      doc/clone: update caption for GIT URLS cross-reference

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (123):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants
      sequencer: ensure labels that are object IDs are rewritten
      t3430: test clean-up

Ævar Arnfjörð Bjarmason (21):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1


^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  @ 2013-04-29 19:06  3%             ` Antoine Pelisse
  0 siblings, 0 replies; 200+ results
From: Antoine Pelisse @ 2013-04-29 19:06 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Johan Herland, Michael Haggerty, Jeff King, git

Should we think about adding some commands for that ?

On the very top of my head (there is certainly more than that):
- Save such a change: By basically creating a ref to HEAD (HEAD being
the commit, HEAD^ the fixed merge) with merge-fix/HEAD^^1-HEAD^^2
- Apply the merge-fix: On top of a merge, find the most recent
merge-fix for HEAD^1/HEAD^2 (according to what was discussed), and
squash it.

On Wed, Apr 24, 2013 at 9:14 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Johan Herland <johan@herland.net> writes:
>
>> This raises the same question I recently asked Antoine: For a given
>> prepackaged merge <X,Y>, do we assume that it only resolves conflicts
>> between the changes introduced in commit X vs. changes introduced in
>> commit Y, or do we assume that it resolves conflicts between the
>> histories leading up to X and Y, respectively? In other words, does
>> <X,Y> _supercede_ earlier pre-merges between the histories leading up
>> to X and Y?
>
> That is an interesting question.  There are largely two cases.
>
> When you replayed M---F to produce N---F', there may have been no
> textual or semantic conflict.  Which means that there were no new
> reason between A--X and B--Y that necessitates an evil merge.  A
> later merge between a descendant of X (but not Y) and a descendant
> of Y (but not X) can cherry pick the same <A,B> (M---F) on top of a
> mechanical merge,
>
> On the other hand, you may have had either a textual or a semantic
> conflict when replaying <A,B> on N, and you had to fix up F' for it
> to be the correct resolution of merge between X and Y.
>
>   ---o---o---A---o---X
>       \               \
>        \               N---F'
>         \             /
>          o---B---o---Y
>
> In such a case, you do want to record the fixed N---F' as the
> prepackaged resolution for <X,Y>.  Any time later when somebody is
> on a branch that has X (but not Y) and merges a branch that has Y
> (but not X), that N---F' should be the one to cherry-pick on top of
> a mechanical merge O between S and T.  What <A,B> (M---F) did is
> superseded if you are going to replay <X,Y>.
>
>   ---o---o---A---o---X----------S
>       \       \       \          \
>        \       M--F    N---F'     O---F''
>         \     /       /          /
>          o---B---o---Y----------T
>
> You can tell that by noticing that A is an ancestor of X and B is an
> ancestor of Y.  As you said, this is a good way to reduce the number
> of prepackaged evil merges that need to be considered.
>

^ permalink raw reply	[relevance 3%]

* Re: [PATCH v2 4/6] merge: make restore_state() restore staged state too
  @ 2022-07-21  1:37  3%         ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-21  1:37 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Elijah Newren via GitGitGadget, Git Mailing List, ZheNing Hu

On Tue, Jul 19, 2022 at 4:28 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Junio C Hamano <gitster@pobox.com> writes:
>
> > "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> >
> >> From: Elijah Newren <newren@gmail.com>
> >>
> >> merge can be invoked with uncommitted changes, including staged changes.
> >> merge is responsible for restoring this state if some of the merge
> >> strategies make changes.  However, it was not restoring staged changes
> >> due to the lack of the "--index" option to "git stash apply".  Add the
> >> option to fix this shortcoming.
> >
> > Shouldn't this be testable?

Yes, I will add a test.

> I actually take this part (which implied that the change is a good
> idea) back. I think we have clearly documented for the past 17
> years that you can have local changes but your index must match the
> HEAD before you start your merge.

Actually, we don't enforce that the index must match HEAD in all
cases, as noted in commit 55f39cf755 ("merge: fix misleading pre-merge
check documentation", 2018-06-30).  That commit also pointed out how
the documentation was a bit unclear in this area.

We also apparently fail to enforce the condition in at least two cases
that weren't a valid exception, which I just found while working on a
testcase for this patch.  (Thus, we have one more sordid tale to add
to the saga in commit 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17))

However, the failed enforcement and the "valid" special exceptions
aren't too relevant here, so...

> If "stash apply" vs "stash apply --index" makes any difference,
> there is something wrong.  We should be aborting the "git merge"
> even before we even start mucking with the working tree and the
> index with strategies, no?  I think it is the bug, if this change
> makes any difference, to be fixed---we shouldn't be proceeding to
> even create a stash with index changes to begin with.

I agree with you that generally if the index does not match HEAD, then
(A) we should abort the merge, and (B) the working tree and index need
to be left intact when the merge aborts.

But I don't think your conclusion follows from those two items,
because of the last sentence of this comment:

   /*
    * At this point, we need a real merge.  No matter what strategy
    * we use, it would operate on the index, possibly affecting the
    * working tree, and when resolved cleanly, have the desired
    * tree in the index -- this means that the index must be in
    * sync with the head commit.  The strategies are responsible
    * to ensure this.
    */

Due to this requirement, if a user has staged changes before starting
the merge, builtin/merge.c will:

   * stash the changes
   * try all the merge strategies in turn, each of which report they
cannot function due to index not matching HEAD
   * restore the changes via "git stash apply"

This sequence has the net effect of not quite cleanly aborting the
merge -- it also unstashes the user's changes.

One way to fix this problem is the simple patch I proposed.  An
alternative fix would be to rip out the extra code from all the merge
strategies that enforces the index matches HEAD requirement, and then
adding enforcement of that condition early in builtin/merge.c.  That
alternative fix probably would have saved us from a lot of the
headache detailed in commit 9822175d2b above, but it may also make
recursive and ort a bit slower (which had relied on unpack-trees to do
some of this checking, and thus they'd have some redundant checks).

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jun 2022, #08; Mon, 27)
@ 2022-06-27 18:22  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-06-27 18:22 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.

Git 2.37 (final) has been tagged.

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']

* ab/credentials-in-url-more (2022-06-23) 1 commit
  (merged to 'next' on 2022-06-23 at 11d700111c)
 + Documentation/config/transfer.txt: fix typo

 Typofix.
 source: <68c1c3648c51f6298eea4d58286b20e0c770a270.1656010900.git.me@ttaylorr.com>


* jc/revert-show-parent-info (2022-06-27) 1 commit
  (merged to 'next' on 2022-06-27 at 9a7cc59c69)
 + revert: config documentation fixes

 Typofix.
 source: <6727daf1-f077-7319-187e-ab4e55de3b2d@web.de>

--------------------------------------------------
[New Topics]

* ab/squelch-empty-fsync-traces (2022-06-23) 1 commit
 - trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Expecting a reroll.
 cf. <xmqqh74byy19.fsf@gitster.g>
 source: <patch-1.1-df87e515efd-20220623T154943Z-avarab@gmail.com>


* cl/grep-max-count (2022-06-22) 1 commit
 - grep: add --max-count command line option

 "git grep -m<max-hits>" is a way to limit the hits shown per file.

 Will merge to 'next'.
 source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>


* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
 - revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis

 Documentation mark-up fix.

 Will merge to 'next'.
 source: <YrOmsA04FZae89be@coredump.intra.peff.net>


* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
 - rev-parse: documentation adjustment - mention remote tracking with @{u}

 Doc update.

 Will merge to 'next'.
 source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* en/merge-tree (2022-06-22) 17 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-ort: optionally produce machine-readable output
 - merge-ort: store more specific conflict information
 - merge-ort: make `path_messages` a strmap to a string_list
 - merge-ort: store messages in a list, not in a single strbuf
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: remove command-line-centric submodule message from merge-ort
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: split out a separate display_update_messages() function
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 Will merge to 'next'.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
 - i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: that is shown in front of
 these messages.

 Will merge to 'next'.
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
 - t5510: replace 'origin' with URL more carefully

 Test fix.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
 - combine-diff: abort if --output is given
 - combine-diff: abort if --ignore-matching-lines is given

 Certain diff options are currently ignored when combined-diff is
 shown; mark them as incompatible with the feature.

 Will merge to 'next'.
 source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-06-27) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Expecting a reroll.
 cf. <CAOLTT8Tc95-aUE+uN2d8QjTJpGpGw6cBJfG+bpmyE55OcXTSRA@mail.gmail.com>
 source: <pull.1262.v4.git.1656257376109.gitgitgadget@gmail.com>


* ab/test-quoting-fix (2022-06-21) 3 commits
 - config tests: fix harmless but broken "rm -r" cleanup
 - test-lib.sh: fix prepend_var() quoting issue
 - tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.

 Expecting a reroll.
 source: <cover-0.3-00000000000-20220621T221928Z-avarab@gmail.com>


* en/merge-dual-dir-renames-fix (2022-06-21) 3 commits
 - merge-ort: fix issue with dual rename and add/add conflict
 - merge-ort: shuffle the computation and cleanup of potential collisions
 - t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Needs review.
 source: <pull.1268.git.1655871651.gitgitgadget@gmail.com>


* cr/setup-bug-typo (2022-06-17) 1 commit
  (merged to 'next' on 2022-06-17 at 8834ffe0ab)
 + setup: fix function name in a BUG() message

 Typofix in a BUG() message.

 Will cook in 'next'.
 source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
 - send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".

 Will merge to 'next'.
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
 - remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspecs.

 Will merge to 'next'.
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 Expecting a reroll.
 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
  (merged to 'next' on 2022-06-16 at ce0712a74c)
 + is_promisor_object(): walk promisor packs in pack-order

 Collection of what is referenced by objects in promisor packs have
 been optimized to inspect these objects in the in-pack order.

 Will cook in 'next'.
 source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
 - mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary.

 Will merge to 'next'.
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* ll/curl-accept-language (2022-06-13) 2 commits
 - PREP??? give initializer to rpc_state
 - remote-curl: send Accept-Language header to server

 source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>


* pb/diff-doc-raw-format (2022-06-13) 3 commits
 - diff-index.txt: update raw output format in examples
 - diff-format.txt: correct misleading wording
 - diff-format.txt: dst can be 0* SHA-1 when path is deleted, too

 source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>


* rs/archive-with-internal-gzip (2022-06-15) 6 commits
  (merged to 'next' on 2022-06-17 at ab5af6acd1)
 + archive-tar: use internal gzip by default
 + archive-tar: use OS_CODE 3 (Unix) for internal gzip
 + archive-tar: add internal gzip implementation
 + archive-tar: factor out write_block()
 + archive: rename archiver data field to filter_command
 + archive: update format documentation

 Teach "git archive" to (optionally and then by default) avoid
 spawning an external "gzip" process when creating ".tar.gz" (and
 ".tgz") archives.

 Will cook in 'next'.
 source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>


* ds/branch-checked-out (2022-06-21) 7 commits
  (merged to 'next' on 2022-06-21 at e42bc4566f)
 + branch: drop unused worktrees variable
 + fetch: stop passing around unused worktrees variable
  (merged to 'next' on 2022-06-17 at c881874257)
 + branch: fix branch_checked_out() leaks
 + branch: use branch_checked_out() when deleting refs
 + fetch: use new branch_checked_out() and add tests
 + branch: check for bisects and rebases
 + branch: add branch_checked_out() helper

 Introduce a helper to see if a branch is already being worked on
 (hence should not be newly checked out in a working tree), which
 performs much better than the existing find_shared_symref() to
 replace many uses of the latter.

 Will cook in 'next'.
 source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* ab/submodule-cleanup (2022-06-15) 12 commits
 - git-sh-setup.sh: remove "say" function, change last users
 - git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 - submodule--helper: eliminate internal "--update" option
 - submodule--helper: understand --checkout, --merge and --rebase synonyms
 - submodule--helper: report "submodule" as our name in "-h" output
 - submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 - submodule update: remove "-v" option
 - submodule--helper: have --require-init imply --init
 - git-submodule.sh: remove unused top-level "--branch" argument
 - git-submodule.sh: make "$cached" variable a boolean
 - git-submodule.sh: remove unused $prefix var and --super-prefix
 - git-submodule.sh: remove unused sanitize_submodule_env()

 Further preparation to turn git-submodule.sh into a builtin.

 Will merge to 'next'?
 source: <cover-v2-00.12-00000000000-20220613T220150Z-avarab@gmail.com>


* jc/resolve-undo (2022-06-09) 1 commit
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will cook in 'next'.
 source: <xmqqfskdieqz.fsf@gitster.g>


* ab/build-gitweb (2022-06-02) 7 commits
 - Makefile: build 'gitweb' in the default target
 - gitweb/Makefile: include in top-level Makefile
 - gitweb: remove "test" and "test-installed" targets
 - gitweb/Makefile: prepare to merge into top-level Makefile
 - gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 - gitweb/Makefile: add a $(GITWEB_ALL) variable
 - gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Needs review.
 source: <cover-v2-0.7-00000000000-20220531T173805Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
 - tests: don't assume a .git/info for .git/info/sparse-checkout
 - tests: don't assume a .git/info for .git/info/exclude
 - tests: don't assume a .git/info for .git/info/refs
 - tests: don't assume a .git/info for .git/info/attributes
 - tests: don't assume a .git/info for .git/info/grafts
 - tests: don't depend on template-created .git/branches
 - t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'next'?
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* ac/bitmap-format-doc (2022-06-16) 3 commits
  (merged to 'next' on 2022-06-16 at 5591d11601)
 + bitmap-format.txt: add information for trailing checksum
 + bitmap-format.txt: fix some formatting issues
 + bitmap-format.txt: feed the file to asciidoc to generate html

 Adjust technical/bitmap-format to be formatted by AsciiDoc, and
 add some missing information to the documentation.

 Will cook in 'next'.
 source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
 - unpack-objects: use stream_loose_object() to unpack large objects
 - core doc: modernize core.bigFileThreshold documentation
 - object-file.c: add "stream_loose_object()" to handle large object
 - object-file.c: factor out deflate part of write_loose_object()
 - object-file.c: refactor write_loose_object() to several steps
 - unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'next'.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-05-21) 15 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message

 Final bits of "git bisect.sh" have been rewritten in C.

 The command line parsing is reported to be still broken.
 cf. <220521.86zgjazuy4.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v3.git.1653144546.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-06-07) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: read protected config with `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Expecting a reroll.
 cf. <xmqqbkv4t7gp.fsf@gitster.g>
 source: <29053d029f8ec61095a2ad557be38b1d485a158f.1654635432.git.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
 - dir: minor refactoring / clean-up
 - dir: traverse into repository

 With a non-bare repository, with core.worktree pointing at a
 directory that has the repository as its subdirectory, regressed in
 Git 2.27 days.

 Will merge to 'next'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>


* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 - send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Will discard.

 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.

 Thoughts?
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.32.0-rc1
@ 2021-05-22 14:21  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-22 14:21 UTC (permalink / raw)
  To: git

A release candidate Git v2.32.0-rc1 is now available for testing at
the usual places.  It is comprised of 572 non-merge commits since
v2.31.0, contributed by 82 people, 31 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.32.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.31.0 are as follows.
Welcome to the Git development community!

  Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
  Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
  Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
  Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
  Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
  Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
  Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
  Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
  Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton
  Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
  Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff
  Hostetler, Jeff King, Johannes Schindelin, John Szakmeister,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
  Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
  Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
  Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
  Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
  Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
  Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
  Trygve Aaberge, Ville Skyttä, and ZheNing Hu.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.32 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer <key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of "for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:<what>)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).

----------------------------------------------------------------

Changes since v2.31.0 are as follows:

Adam Dinwoodie (1):
      cygwin: disallow backslashes in file names

Alex Henrie (1):
      merge-ort: split "distinct types" message into two translatable messages

Andrey Bienkowski (1):
      doc: clarify the filename encoding in git diff

Andrzej Hunt (24):
      Makefile: update 'make fuzz-all' docs to reflect modern clang
      symbolic-ref: don't leak shortened refname in check_symref()
      reset: free instead of leaking unneeded ref
      clone: free or UNLEAK further pointers when finished
      worktree: fix leak in dwim_branch()
      init: remove git_init_db_config() while fixing leaks
      init-db: silence template_dir leak when converting to absolute path
      fsmonitor: avoid global-buffer-overflow READ when checking trivial response
      parse-options: convert bitfield values to use binary shift
      parse-options: don't leak alias help messages
      transport: also free remote_refs in transport_disconnect()
      merge-ort: only do pointer arithmetic for non-empty lists
      revision: free remainder of old commit list in limit_list
      wt-status: fix multiple small leaks
      ls-files: free max_prefix when done
      bloom: clear each bloom_key after use
      branch: FREE_AND_NULL instead of NULL'ing real_ref
      builtin/bugreport: don't leak prefixed filename
      builtin/check-ignore: clear_pathspec before returning
      builtin/checkout: clear pending objects after diffing
      mailinfo: also free strbuf lists when clearing mailinfo
      builtin/for-each-ref: free filter and UNLEAK sorting.
      builtin/rebase: release git_format_patch_opt too
      builtin/rm: avoid leaking pathspec and seen

Atharva Raykar (1):
      userdiff: add support for Scheme

Bagas Sanjaya (1):
      INSTALL: note on using Asciidoctor to build doc

Bruno Albuquerque (1):
      object-info: support for retrieving object info

Charvi Mendiratta (23):
      sequencer: pass todo_item to do_pick_commit()
      sequencer: use const variable for commit message comments
      rebase -i: add fixup [-C | -c] command
      t3437: test script for fixup [-C|-c] options in interactive rebase
      rebase -i: teach --autosquash to work with amend!
      doc/git-rebase: add documentation for fixup [-C|-c] options
      sequencer: fixup the datatype of the 'flag' argument
      sequencer: rename a few functions
      rebase -i: clarify and fix 'fixup -c' rebase-todo help
      t/lib-rebase: update the documentation of FAKE_LINES
      t/t3437: fixup here-docs in the 'setup' test
      t/t3437: remove the dependency of 'expected-message' file from tests
      t/t3437: check the author date of fixed up commit
      t/t3437: simplify and document the test helpers
      t/t3437: use named commits in the tests
      t/t3437: fixup the test 'multiple fixup -c opens editor once'
      doc/rebase -i: fix typo in the documentation of 'fixup' command
      sequencer: export and rename subject_length()
      commit: add amend suboption to --fixup to create amend! commit
      commit: add a reword suboption to --fixup
      t7500: add tests for --fixup=[amend|reword] options
      t3437: use --fixup with options to create amend! commit
      doc/git-commit: add documentation for fixup=[amend|reword] options

Chinmoy Chakraborty (1):
      column, range-diff: downcase option description

Christian Couder (1):
      test-bloom: fix missing 'bloom' from usage string

Christopher Schenk (1):
      remote-curl: fall back to basic auth if Negotiate fails

Dennis Ameling (2):
      cmake(install): fix double .exe suffixes
      cmake(install): include vcpkg dlls

Denton Liu (14):
      git-cat-file.txt: monospace args, placeholders and filenames
      git-cat-file.txt: remove references to "sha1"
      stash show: teach --include-untracked and --only-untracked
      stash show: learn stash.showIncludeUntracked
      git-completion.bash: pass $__git_subcommand_idx from __git_main()
      git-completion.bash: extract from else in _git_stash()
      git-completion.bash: use __gitcomp_builtin() in _git_stash()
      git-completion.bash: separate some commands onto their own line
      git-completion.bash: rename to $__git_cmd_idx
      git-completion.bash: use $__git_cmd_idx in more places
      git-completion.bash: consolidate cases in _git_stash()
      t3905: correct test title
      stash show: fix segfault with --{include,only}-untracked
      stash show: use stash.showIncludeUntracked even when diff options given

Derrick Stolee (56):
      commit-graph: create local repository pointer
      commit-graph: use config to specify generation type
      csum-file: make hashwrite() more readable
      sparse-index: design doc and format update
      t/perf: add performance test for sparse operations
      t1092: clean up script quoting
      sparse-index: add guard to ensure full index
      sparse-index: implement ensure_full_index()
      t1092: compare sparse-checkout to sparse-index
      test-read-cache: print cache entries with --table
      test-tool: don't force full index
      unpack-trees: ensure full index
      sparse-checkout: hold pattern list in index
      sparse-index: add 'sdir' index extension
      sparse-index: convert from full to sparse
      submodule: sparse-index should not collapse links
      unpack-trees: allow sparse directories
      sparse-index: check index conversion happens
      sparse-index: add index.sparse config option
      sparse-checkout: toggle sparse index from builtin
      sparse-checkout: disable sparse-index
      cache-tree: integrate with sparse directory entries
      sparse-index: loose integration with cache_tree_verify()
      p2000: add sparse-index repos
      maintenance: simplify prefetch logic
      sparse-index: API protection strategy
      *: remove 'const' qualifier for struct index_state
      read-cache: expand on query into sparse-directory entry
      cache: move ensure_full_index() to cache.h
      add: ensure full index
      checkout-index: ensure full index
      checkout: ensure full index
      commit: ensure full index
      difftool: ensure full index
      fsck: ensure full index
      grep: ensure full index
      ls-files: ensure full index
      merge-index: ensure full index
      rm: ensure full index
      stash: ensure full index
      update-index: ensure full index
      dir: ensure full index
      entry: ensure full index
      merge-recursive: ensure full index
      pathspec: ensure full index
      read-cache: ensure full index
      resolve-undo: ensure full index
      revision: ensure full index
      name-hash: don't add directories to name_hash
      sparse-index: expand_to_path()
      name-hash: use expand_to_path()
      fetch: add --prefetch option
      maintenance: use 'git fetch --prefetch'
      maintenance: respect remote.*.skipFetchAll
      dir: update stale description of treat_directory()
      sparse-index: fix uninitialized jump

Elijah Newren (49):
      diffcore-rename: use directory rename guided basename comparisons
      diffcore-rename: provide basic implementation of idx_possible_rename()
      diffcore-rename: add a mapping of destination names to their indices
      Move computation of dir_rename_count from merge-ort to diffcore-rename
      diffcore-rename: add function for clearing dir_rename_count
      diffcore-rename: move dir_rename_counts into dir_rename_info struct
      diffcore-rename: extend cleanup_dir_rename_info()
      diffcore-rename: compute dir_rename_counts in stages
      diffcore-rename: limit dir_rename_counts computation to relevant dirs
      diffcore-rename: compute dir_rename_guess from dir_rename_counts
      diffcore-rename: enable filtering possible rename sources
      merge-ort: precompute subset of sources for which we need rename detection
      merge-ort: add data structures for an alternate tree traversal
      merge-ort: introduce wrappers for alternate tree traversal
      merge-ort: precompute whether directory rename detection is needed
      merge-ort: use relevant_sources to filter possible rename sources
      merge-ort: skip rename detection entirely if possible
      diffcore-rename: avoid doing basename comparisons for irrelevant sources
      diffcore-rename: take advantage of "majority rules" to skip more renames
      merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
      merge-ort: record the reason that we want a rename for a directory
      diffcore-rename: only compute dir_rename_count for relevant directories
      diffcore-rename: check if we have enough renames for directories early on
      diffcore-rename: add computation of number of unknown renames
      merge-ort: record the reason that we want a rename for a file
      diffcore-rename: determine which relevant_sources are no longer relevant
      merge-ort: use STABLE_QSORT instead of QSORT where required
      merge-ort: add a special minimal index just for renormalization
      merge-ort: have ll_merge() use a special attr_index for renormalization
      merge-ort: let renormalization change modify/delete into clean delete
      merge-ort: support subtree shifting
      t6428: new test for SKIP_WORKTREE handling and conflicts
      merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
      t: mark several submodule merging tests as fixed under merge-ort
      merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
      merge-recursive: add a bunch of FIXME comments documenting known bugs
      Revert "merge-ort: ignore the directory rename split conflict for now"
      t6423: mark remaining expected failure under merge-ort as such
      Add testing with merge-ort merge strategy
      sequencer: fix edit handling for cherry-pick and revert messages
      dir: convert trace calls to trace2 equivalents
      dir: report number of visited directories and paths with trace2
      ls-files: error out on -i unless -o or -c are specified
      t7300: add testcase showing unnecessary traversal into ignored directory
      t3001, t7300: add testcase showcasing missed directory traversal
      dir: avoid unnecessary traversal into ignored directory
      dir: traverse into untracked directories if they may have ignored subfiles
      dir: introduce readdir_skip_dot_and_dotdot() helper
      git-prompt: work under set -u

Eric Sunshine (1):
      merge(s): apply consistent punctuation to "up to date" messages

Eric Wong (1):
      remote-curl: fix clone on sha256 repos

Firmin Martin (1):
      user-manual.txt: assign preface an id and a title

Georgios Kontaxis (1):
      gitweb: add "e-mail privacy" feature to redact e-mail addresses

Han Xin (1):
      pack-objects: fix comment of reused_chunk.difference

Han-Wen Nienhuys (3):
      reftable: document an alternate cleanup method on Windows
      refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
      refs/debug: trace into reflog expiry too

Jeff Hostetler (14):
      pkt-line: eliminate the need for static buffer in packet_write_gently()
      simple-ipc: design documentation for new IPC mechanism
      simple-ipc: add win32 implementation
      unix-socket: eliminate static unix_stream_socket() helper function
      unix-socket: add backlog size option to unix_stream_listen()
      unix-socket: disallow chdir() when creating unix domain sockets
      unix-stream-server: create unix domain socket under lock
      convert: make convert_attrs() and convert structs public
      convert: add [async_]convert_to_working_tree_ca() variants
      convert: add get_stream_filter_ca() variant
      convert: add classification for conv_attrs struct
      simple-ipc: add Unix domain socket implementation
      t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
      simple-ipc: correct ifdefs when NO_PTHREADS is defined

Jeff King (43):
      add open_nofollow() helper
      attr: convert "macro_ok" into a flags field
      exclude: add flags parameter to add_patterns()
      attr: do not respect symlinks for in-tree .gitattributes
      exclude: do not respect symlinks for in-tree .gitignore
      mailmap: do not respect symlinks for in-tree .mailmap
      p5303: add missing &&-chains
      p5303: measure time to repack with keep
      builtin/pack-objects.c: rewrite honor-pack-keep logic
      packfile: add kept-pack cache for find_kept_pack_entry()
      t/perf: handle worktrees as test repos
      t/perf: avoid copying worktree files from test repo
      t7003: test ref rewriting explicitly
      filter-branch: drop multiple-ancestor warning
      filter-branch: drop $_x40 glob
      bisect: peel annotated tags to commits
      t: annotate !PTHREADS tests with !FAIL_PREREQS
      ref-filter: fix NULL check for parse object failure
      midx.c: improve cache locality in midx_pack_order_cmp()
      pack-objects: update "nr_seen" progress based on pack-reused count
      is_promisor_object(): free tree buffer after parsing
      lookup_unknown_object(): take a repository argument
      revision: avoid parsing with --exclude-promisor-objects
      pack-bitmap: clean up include_check after use
      prune: save reachable-from-recent objects with bitmaps
      t5300: modernize basic tests
      t5300: check that we produced expected number of deltas
      pack-objects: clamp negative window size to 0
      t5316: check behavior of pack-objects --depth=0
      pack-objects: clamp negative depth to 0
      docs/format-patch: mention handling of merges
      t7415: remove out-dated comment about translation
      fsck_tree(): fix shadowed variable
      fsck_tree(): wrap some long lines
      t7415: rename to expand scope
      t7450: test verify_path() handling of gitmodules
      t7450: test .gitmodules symlink matching against obscured names
      t0060: test ntfs/hfs-obscured dotfiles
      fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
      docs: document symlink restrictions for dot-files
      t: avoid sed-based chain-linting in some expensive cases
      t5551: test http interaction with credential helpers
      Revert "remote-curl: fall back to basic auth if Negotiate fails"

Jerry Zhang (3):
      git-apply: try threeway first when "--3way" is used
      git-apply: allow simultaneous --cached and --3way options
      apply: adjust messages to account for --3way changes

Joachim Kuebart (2):
      git-p4: ensure complex branches are cloned correctly
      git-p4: speed up search for branch parent

Johannes Schindelin (10):
      pkt-line: do not issue flush packets in write_packetized_*()
      pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
      pkt-line: add options argument to read_packetized_to_strbuf()
      fsmonitor: fix memory corruption in some corner cases
      fsmonitor: do not forget to release the token in `discard_index()`
      SECURITY: describe how to report vulnerabilities
      Document how we do embargoed releases
      cmake: support SKIP_DASHED_BUILT_INS
      cmake: add a preparatory work-around to accommodate `vcpkg`
      msvc: avoid calling `access("NUL", flags)`

John Szakmeister (2):
      http: store credential when PKI auth is used
      http: drop the check for an empty proxy password before approving

Jonathan Tan (8):
      t5606: run clone branch name test with protocol v2
      fetch-pack: buffer object-format with other args
      fetch-pack: refactor process_acks()
      fetch-pack: refactor add_haves()
      fetch-pack: refactor command and capability write
      fetch: teach independent negotiation (no packfile)
      send-pack: support push negotiation
      t5601: mark protocol v2-only test

Josh Soref (1):
      merge: fix swapped "up to date" message components

Julien Richard (1):
      doc: .gitignore documentation typofix

Junio C Hamano (27):
      builtin/repack.c: reword comment around pack-objects flags
      xcalloc: use CALLOC_ARRAY() when applicable
      cocci: allow xcalloc(1, size)
      The first batch in 2.32 cycle
      The second batch
      format-patch: give an overview of what a "patch" message is
      The third patch
      Git 2.31.1
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      doc: clarify "do not capitalize the first word" rule
      The tenth batch
      The eleventh (aka "ort") batch
      The twelfth batch
      The thirteenth batch
      CodingGuidelines: explicitly allow "local" for test scripts
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      The seventeenth batch
      Git 2.32-rc0
      A handful more topics before -rc1
      Git 2.32-rc1

Kyle Meyer (1):
      config.txt: add missing period

Li Linchao (1):
      builtin/clone.c: add --reject-shallow option

Louis Sautier (1):
      pretty: fix a typo in the documentation for %(trailers)

Luke Shumaker (30):
      .gitignore: ignore 'git-subtree' as a build artifact
      subtree: t7900: update for having the default branch name be 'main'
      subtree: t7900: use test-lib.sh's test_count
      subtree: t7900: use consistent formatting
      subtree: t7900: comment subtree_test_create_repo
      subtree: t7900: use 'test' for string equality
      subtree: t7900: delete some dead code
      subtree: t7900: fix 'verify one file change per commit'
      subtree: t7900: rename last_commit_message to last_commit_subject
      subtree: t7900: add a test for the -h flag
      subtree: t7900: add porcelain tests for 'pull' and 'push'
      subtree: don't have loose code outside of a function
      subtree: more consistent error propagation
      subtree: drop support for git < 1.7
      subtree: use `git merge-base --is-ancestor`
      subtree: use git-sh-setup's `say`
      subtree: use more explicit variable names for cmdline args
      subtree: use "$*" instead of "$@" as appropriate
      subtree: don't fuss with PATH
      subtree: use "^{commit}" instead of "^0"
      subtree: parse revs in individual cmd_ functions
      subtree: remove duplicate check
      subtree: add comments and sanity checks
      subtree: don't let debug and progress output clash
      subtree: have $indent actually affect indentation
      subtree: give the docs a once-over
      subtree: allow --squash to be used with --rejoin
      subtree: allow 'split' flags to be passed to 'push'
      subtree: push: allow specifying a local rev other than HEAD
      subtree: be stricter about validating flags

Lénaïc Huard (1):
      maintenance: fix two memory leaks

Martin Ågren (2):
      git-repack.txt: remove spurious ")"
      pretty-formats.txt: add missing space

Matheus Tavares (30):
      convert: fail gracefully upon missing clean cmd on required filter
      symlinks: update comment on threaded_check_leading_path()
      checkout: don't follow symlinks when removing entries
      entry: extract a header file for entry.c functions
      entry: make fstat_output() and read_blob_entry() public
      entry: extract update_ce_after_write() from write_entry()
      entry: move conv_attrs lookup up to checkout_entry()
      entry: add checkout_entry_ca() taking preloaded conv_attrs
      add: include magic part of pathspec on --refresh error
      t3705: add tests for `git add` in sparse checkouts
      add: make --chmod and --renormalize honor sparse checkouts
      pathspec: allow to ignore SKIP_WORKTREE entries on index matching
      refresh_index(): add flag to ignore SKIP_WORKTREE entries
      add: warn when asked to update SKIP_WORKTREE entries
      rm: honor sparse checkout patterns
      pkt-line: do not report packet write errors twice
      unpack-trees: add basic support for parallel checkout
      parallel-checkout: make it truly parallel
      parallel-checkout: add configuration options
      parallel-checkout: support progress displaying
      parallel-checkout: add design documentation
      make_transient_cache_entry(): optionally alloc from mem_pool
      builtin/checkout.c: complete parallel checkout support
      checkout-index: add parallel checkout support
      parallel-checkout: add tests for basic operations
      parallel-checkout: add tests related to path collisions
      t0028: extract encoding helpers to lib-encoding.sh
      parallel-checkout: add tests related to .gitattributes
      ci: run test round with parallel-checkout enabled
      clean: remove unnecessary variable

Nicholas Clark (1):
      submodule update: silence underlying fetch with "--quiet"

Nipunn Koorapati (3):
      fsmonitor: skip lstat deletion check during git diff-index
      fsmonitor: add assertion that fsmonitor is valid to check_removed
      fsmonitor: add perf test for git diff HEAD

Patrick Steinhardt (17):
      githooks.txt: replace mentions of SHA-1 specific properties
      githooks.txt: clarify documentation on reference-transaction hook
      pack-bitmap: avoid traversal of objects referenced by uninteresting tag
      uploadpack.txt: document implication of `uploadpackfilter.allow`
      revision: mark commit parents as NOT_USER_GIVEN
      list-objects: move tag processing into its own function
      list-objects: support filtering by tag and commit
      list-objects: implement object type filter
      pack-bitmap: implement object type filter
      pack-bitmap: implement combined filter
      rev-list: allow filtering of provided items
      config: rename `git_etc_config()`
      config: unify code paths to get global config paths
      config: allow overriding of global and system configuration
      t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
      git.txt: fix synopsis of `--config-env` missing the equals sign
      git: support separate arg for `--config-env`'s value

Peter Oliver (1):
      doc: point to diff attribute in patch format docs

Phillip Wood (6):
      rebase -i: only write fixup-message when it's needed
      sequencer: factor out code to append squash message
      rebase -i: comment out squash!/fixup! subjects from squash message
      word diff: handle zero length matches
      patience diff: remove unnecessary string comparisons
      patience diff: remove unused variable

Rafael Silva (1):
      repack: avoid loosening promisor objects in partial clones

Ramkumar Ramachandra (1):
      Add entry for Ramkumar Ramachandra

Ramsay Jones (1):
      bisect--helper: use BISECT_TERMS in 'bisect skip' command

René Scharfe (12):
      pretty: add %(describe)
      pretty: add merge and exclude options to %(describe)
      t4205: assert %(describe) test coverage
      pretty: document multiple %(describe) being inconsistent
      fix xcalloc() argument order
      archive: expand only a single %(describe) per archive
      git-compat-util.h: drop trailing semicolon from macro definition
      use CALLOC_ARRAY
      vcs-svn: remove header files as well
      block-sha1: drop trailing semicolon from macro definition
      mem-pool: drop trailing semicolon from macro definition
      daemon: sanitize all directory separators

Robert Foss (1):
      git-send-email: Respect core.hooksPath setting

SZEDER Gábor (1):
      Makefile: add missing dependencies of 'config-list.h'

Sardorbek Imomaliev (1):
      work around zsh comment in __git_complete_worktree_paths

Sergey Organov (5):
      diff-merges: introduce --diff-merges=on
      diff-merges: refactor set_diff_merges()
      diff-merges: adapt -m to enable default diff format
      diff-merges: introduce log.diffMerges config variable
      doc/diff-options: document new --diff-merges features

Shubham Verma (1):
      t9801: replace test -f with test_path_is_file

Taylor Blau (28):
      packfile: introduce 'find_kept_pack_entry()'
      revision: learn '--no-kept-objects'
      builtin/pack-objects.c: add '--stdin-packs' option
      builtin/repack.c: add '--geometric' option
      builtin/repack.c: do not repack single packs with --geometric
      t7703: test --geometric repack with loose objects
      builtin/repack.c: assign pack split later
      builtin/repack.c: be more conservative with unsigned overflows
      Documentation/git-push.txt: correct configuration typo
      builtin/pack-objects.c: ignore missing links with --stdin-packs
      builtin/multi-pack-index.c: inline 'flags' with options
      builtin/multi-pack-index.c: don't handle 'progress' separately
      builtin/multi-pack-index.c: define common usage with a macro
      builtin/multi-pack-index.c: split sub-commands
      builtin/multi-pack-index.c: don't enter bogus cmd_mode
      builtin/multi-pack-index.c: display usage on unrecognized command
      t/helper/test-read-midx.c: add '--show-objects'
      pack-bitmap: add 'test_bitmap_commits()' helper
      t/helper/test-bitmap.c: initial commit
      builtin/pack-objects.c: respect 'pack.preferBitmapTips'
      midx: allow marking a pack as preferred
      midx: don't free midx_name early
      midx: keep track of the checksum
      midx: make some functions non-static
      Documentation/technical: describe multi-pack reverse indexes
      pack-revindex: read multi-pack reverse indexes
      pack-write.c: extract 'write_rev_file_order'
      pack-revindex: write multi-pack reverse indexes

Todd Zullinger (1):
      t7500: remove non-existant C_LOCALE_OUTPUT prereq

Torsten Bögershausen (3):
      git mv foo FOO ; git mv foo bar gave an assert
      precompose_utf8: make precompose_string_if_needed() public
      macOS: precompose startup_info->prefix

Ville Skyttä (2):
      completion: audit and guard $GIT_* against unset use
      completion: avoid aliased command lookup error in nounset mode

Will Chandler (1):
      refs: cleanup directories when deleting packed ref

Wolfgang Müller (1):
      rev-parse: fix segfault with missing --path-format argument

ZheNing Hu (8):
      commit: add --trailer option
      format-patch: allow a non-integral version numbers
      ref-filter: get rid of show_ref_array_item
      ref-filter: reuse output buffer
      pretty: provide human date format
      docs: correct descript of trailer.<token>.command
      trailer: add new .cmd config option
      ref-filter: fix read invalid union member bug

brian m. carlson (14):
      builtin/init-db: handle bare clones when core.bare set to false
      hash: add an algo member to struct object_id
      Always use oidread to read into struct object_id
      http-push: set algorithm when reading object ID
      hash: add a function to finalize object IDs
      Use the final_oid_fn to finalize hashing of object IDs
      builtin/pack-redundant: avoid casting buffers to struct object_id
      hash: set, copy, and use algo field in struct object_id
      hash: provide per-algorithm null OIDs
      builtin/show-index: set the algorithm for object IDs
      commit-graph: don't store file hashes as struct object_id
      builtin/pack-objects: avoid using struct object_id for pack hash
      hex: default to the_hash_algo on zero algorithm value
      hex: print objects using the hash algorithm member

Ævar Arnfjörð Bjarmason (92):
      grep/pcre2: drop needless assignment + assert() on opt->pcre2
      grep/pcre2: drop needless assignment to NULL
      grep/pcre2: correct reference to grep_init() in comment
      grep/pcre2: prepare to add debugging to pcre2_malloc()
      grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
      grep/pcre2: use compile-time PCREv2 version test
      grep/pcre2: use pcre2_maketables_free() function
      grep/pcre2: actually make pcre2 use custom allocator
      grep/pcre2: move back to thread-only PCREv2 structures
      grep/pcre2: move definitions of pcre2_{malloc,free}
      Makefile: guard against TEST_OBJS in the environment
      Makefile: split up long OBJECTS line
      Makefile: sort OBJECTS assignment for subsequent change
      Makefile: split OBJECTS into OBJECTS and GIT_OBJS
      Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
      remote: add camel-cased *.tagOpt key, like clone
      remote: write camel-cased *.pushRemote on rename
      fsck.c: refactor and rename common config callback
      show tests: add test for "git show <tree>"
      ls-files tests: add meaningful --with-tree tests
      tree.c API: move read_tree() into builtin/ls-files.c
      ls-files: don't needlessly pass around stage variable
      ls-files: refactor away read_tree()
      archive: stop passing "stage" through read_tree_recursive()
      tree.h API: expose read_tree_1() as read_tree_at()
      tree.h API: simplify read_tree_recursive() signature
      diff --no-index tests: add test for --exit-code
      diff --no-index tests: test mode normalization
      rebase: remove transitory rebase.useBuiltin setting & env
      mktag tests: fix broken "&&" chain
      fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
      fsck.h: use "enum object_type" instead of "int"
      fsck.c: rename variables in fsck_set_msg_type() for less confusion
      fsck.c: remove (mostly) redundant append_msg_id() function
      fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
      fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
      fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
      fsck.h: re-order and re-assign "enum fsck_msg_type"
      fsck.c: call parse_msg_type() early in fsck_set_msg_type()
      fsck.c: undefine temporary STR macro after use
      fsck.c: give "FOREACH_MSG_ID" a more specific name
      fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
      fsck.c: pass along the fsck_msg_id in the fsck_error callback
      fsck.c: add an fsck_set_msg_type() API that takes enums
      fsck.c: move gitmodules_{found,done} into fsck_options
      fetch-pack: don't needlessly copy fsck_options
      fetch-pack: use file-scope static struct for fsck_options
      fetch-pack: use new fsck API to printing dangling submodules
      Makefile: add QUIET_GEN to "tags" and "TAGS" targets
      git-send-email: replace "map" in void context with "for"
      git-send-email: test full --validate output
      git-send-email: refactor duplicate $? checks into a function
      git-send-email: improve --validate error output
      bash completion: complete CHERRY_PICK_HEAD
      config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
      userdiff style: re-order drivers in alphabetical order
      userdiff style: declare patterns with consistent style
      userdiff style: normalize pascal regex declaration
      userdiff: add and use for_each_userdiff_driver()
      userdiff tests: explicitly test "default" pattern
      userdiff tests: list builtin drivers via test-tool
      userdiff: remove support for "broken" tests
      blame tests: don't rely on t/t4018/ directory
      blame tests: simplify userdiff driver test
      rebase tests: camel-case rebase.rescheduleFailedExec consistently
      rebase: don't override --no-reschedule-failed-exec with config
      Documentation/Makefile: make $(wildcard howto/*.txt) a var
      Documentation/Makefile: make doc.dep dependencies a variable again
      doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
      doc lint: fix bugs in, simplify and improve lint script
      doc lint: lint and fix missing "GIT" end sections
      doc lint: lint relative section order
      docs: fix linting issues due to incorrect relative section order
      svn tests: remove legacy re-setup from init-clone test
      svn tests: refactor away a "set -e" in test body
      tests: remove all uses of test_i18cmp
      usage.c: don't copy/paste the same comment three times
      api docs: document BUG() in api-error-handling.txt
      api docs: document that BUG() emits a trace2 error event
      pretty tests: simplify %aI/%cI date format test
      pretty tests: give --date/format tests a better description
      sparse-index.c: remove set_index_sparse_config()
      streaming.c: avoid forward declarations
      streaming.c: remove enum/function/vtbl indirection
      streaming.c: remove {open,close,read}_method_decl() macros
      streaming.c: stop passing around "object_info *" to open()
      streaming.c: move {open,close,read} from vtable to "struct git_istream"
      Makefile: don't re-define PERL_DEFINES
      Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
      Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
      perl: use mock i18n functions under NO_GETTEXT=Y
      Makefile: make PERL_DEFINES recursively expanded

Øystein Walle (2):
      transport: respect verbosity when setting upstream
      add: die if both --dry-run and --interactive are given

Đoàn Trần Công Danh (6):
      mailinfo: load default metainfo_charset lazily
      mailinfo: stop parsing options manually
      mailinfo: warn if CRLF found in decoded base64/QP email
      mailinfo: allow squelching quoted CRLF warning
      mailinfo: allow stripping quoted CR without warning
      am: learn to process quoted lines that ends with CRLF


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] GIT 1.4.1
@ 2006-07-02  6:33  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-07-02  6:33 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.4.1 is available at the usual
places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.4.1.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.4.1.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.4.1.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.4.1-1.$arch.rpm	(RPM)

As announced earlier, 1.4.1 is not just 1.4.0 plus bugfixes, but
also has enhancements from the "master" branch.

----------------------------------------------------------------

Changes since v1.4.0 are as follows:

Andre Noll:
      object-refs: avoid division by zero

Andreas Ericsson:
      git wrapper: fix command name in an error message.

David Woodhouse:
      Log peer address when git-daemon called from inetd

Dennis Stosberg:
      Make t4101-apply-nonl bring along its patches
      Make t8001-annotate and t8002-blame more portable
      Fix t8001-annotate and t8002-blame for ActiveState Perl
      Solaris needs inclusion of signal.h for signal()
      Fix pkt-line.h to compile with a non-GCC compiler
      Fix expr usage for FreeBSD

Eric W. Biederman:
      Don't parse any headers in the real body of an email message.
      Fix git-format-patch -s
      Check and document the options to prevent mistakes.

Eric Wong:
      git-svn: t0000: add -f flag to checkout
      git-svn: fix handling of filenames with embedded '@'
      git-svn: eol_cp corner-case fixes
      git-svn: restore original LC_ALL setting (or unset) for commit
      git-svn: don't allow commit if svn tree is not current
      git-svn: support -C<num> passing to git-diff-tree
      git-svn: --branch-all-refs / -B support
      git-svn: optimize --branch and --branch-all-ref
      git-svn: support manually placed initial trees from fetch
      git-svn: Move all git-svn-related paths into $GIT_DIR/svn
      git-svn: minor cleanups, extra error-checking
      git-svn: add --repack and --repack-flags= options
      git-svn: add --shared and --template= options to pass to init-db
      git-svn: add some functionality to better support branches in svn
      git-svn: add UTF-8 message test
      git-svn: add 'log' command, a facsimile of basic `svn log'
      git-svn: add support for Perl SVN::* libraries
      git-svn: make the $GIT_DIR/svn/*/revs directory obsolete
      git-svn: avoid creating some small files
      git-svn: fix several small bugs, enable branch optimization
      git-svn: Eliminate temp file usage in libsvn_get_file()
      git-svn: bugfix and optimize the 'log' command
      git-svn: tests no longer fail if LC_ALL is not a UTF-8 locale
      git-svn: svn (command-line) 1.0.x compatibility
      git-svn: rebuild convenience and bugfixes
      git-svn: fix --rmdir when using SVN:: libraries
      rebase: Allow merge strategies to be used when rebasing
      rebase: error out for NO_PYTHON if they use recursive merge
      git-svn: fix commit --edit flag when using SVN:: libraries
      rebase: allow --merge option to handle patches merged upstream
      rebase: cleanup rebasing with --merge
      rebase: allow --skip to work with --merge
      git-svn: SVN 1.1.x library compatibility
      git-svn: several graft-branches improvements
      git-svn: add the commit-diff command
      git-svn: add --follow-parent and --no-metadata options to fetch
      git-svn: be verbose by default on fetch/commit, add -q/--quiet option
      rebase: get rid of outdated MRESOLVEMSG
      rebase: check for errors from git-commit
      git-svn: allow a local target directory to be specified for init

Florian Forster:
      gitweb: Adding a `blame' interface.
      gitweb: Make the `blame' interface in gitweb optional.
      Remove ranges from switch statements.
      Initialize FAMs using `FLEX_ARRAY'.
      Don't instantiate structures with FAMs.
      Cast pointers to `void *' when used in a format.
      Don't use empty structure initializers.
      Change types used in bitfields to be `int's.
      Remove all void-pointer arithmetic.

Fredrik Kuivinen:
      blame: Add --time to produce raw timestamps

Jakub Narebski:
      Update gitweb README: gitweb is now included with git
      Move gitweb style to gitweb.css
      gitweb: safely output binary files for 'blob_plain' action
      gitweb: text files for 'blob_plain' action without charset by default
      Fix gitweb stylesheet
      Make CSS file gitweb/gitweb.css more readable
      gitweb: add type="text/css" to stylesheet link
      Fix: Support for the standard mime.types map in gitweb
      gitweb: A couple of page title tweaking
      gitweb: style done with stylesheet
      gitweb: whitespace cleanup
      Add git version to gitweb output
      Move $gitbin earlier in gitweb.cgi
      gitweb: Make use of $PATH_INFO for project parameter
      gitweb: whitespace cleanup around '='

Jeff King:
      git-commit: allow -e option anywhere on command line
      quote.c: silence compiler warnings from EMIT macro

Johannes Schindelin:
      diff options: add --color
      Initialize lock_file struct to all zero.
      Fix setting config variables with an alternative GIT_CONFIG
      Read configuration also from $HOME/.gitconfig
      repo-config: Fix late-night bug
      git_config: access() returns 0 on success, not > 0
      patch-id: take "commit" prefix as well as "diff-tree" prefix
      Teach diff about -b and -w flags
      cvsimport: always set $ENV{GIT_INDEX_FILE} to $index{$branch}
      apply: replace NO_ACCURATE_DIFF with --inaccurate-eof runtime flag.
      add diff_flush_patch_id() to calculate the patch id
      format-patch: introduce "--ignore-if-in-upstream"
      t4014: fix for whitespace from "wc -l"
      format-patch: use clear_commit_marks() instead of some ad-hockery
      Save errno in handle_alias()

Junio C Hamano:
      read-tree: --prefix=<path>/ option.
      write-tree: --prefix=<path>
      read-tree: reorganize bind_merge code.
      fetch-pack: give up after getting too many "ack continue"
      Fix earlier mismerges.
      shared repository: optionally allow reading to "others".
      gitk: rereadrefs needs listrefs
      fix git alias
      t5100: mailinfo and mailsplit tests.
      mailinfo: ignore blanks after in-body headers.
      fix rfc2047 formatter.
      xdiff: minor changes to match libxdiff-0.21
      Restore SIGCHLD to SIG_DFL where we care about waitpid().
      checkout -f: do not leave untracked working tree files.
      upload-pack: avoid sending an incomplete pack upon failure
      upload-pack: prepare for sideband message support.
      Retire git-clone-pack
      upload-pack/fetch-pack: support side-band communication
      Add renaming-rebase test.
      daemon: send stderr to /dev/null instead of closing.
      rebase --merge: fix for rebasing more than 7 commits.
      Makefile: do not force unneeded recompilation upon GIT_VERSION changes
      Makefile: do not recompile main programs when libraries have changed.
      usage: minimum type fix.
      git-pull: abort when fmt-merge-msg fails.
      git-merge --squash
      diff --color: use reset sequence when we mean reset.
      repo-config: fix printing of bool
      diff --color: use $GIT_DIR/config
      git-repack: Be careful when updating the same pack as an existing one.
      t4014: add format-patch --ignore-if-in-upstream test
      combine-diff.c: type sanity
      connect.c: remove unused parameters from tcp_connect and proxy_connect
      connect.c: check the commit buffer boundary while parsing.
      t/README: start testing porcelainish
      checkout -m: fix read-tree invocation
      t4014: fix test commit labels.
      diff.c: fix get_patch_id()
      Racy GIT (part #3)
      upload-pack.c: <sys/poll.h> includes <ctype.h> on OpenBSD 3.8

Linus Torvalds:
      gitweb.cgi history not shown
      Shrink "struct object" a bit
      Move "void *util" from "struct object" into "struct commit"
      Some more memory leak avoidance
      Remove "refs" field from "struct object"
      Add specialized object allocator
      Add "named object array" concept
      Fix grow_refs_hash()
      Tweak diff colors
      Do not try futile object pairs when repacking.
      Abstract out accesses to object hash array
      revision.c: --full-history fix.
      git object hash cleanups

Lukas Sandström:
      Make git-write-tree a builtin
      Make git-mailsplit a builtin
      Make git-mailinfo a builtin
      Make git-stripspace a builtin
      Make git-update-index a builtin
      Make git-update-ref a builtin

Martin Langhoff:
      cvsimport: ignore CVSPS_NO_BRANCH and impossible branches
      cvsimport: complete the cvsps run before starting the import
      cvsimport: keep one index per branch during import
      git-repack -- respect -q and be quiet
      cvsimport: setup indexes correctly for ancestors and incremental imports
      cvsimport - cleanup of the multi-indexes handling

Matthias Kestenholz:
      add GIT-CFLAGS to .gitignore

Matthias Lederhofer:
      correct documentation for git grep

Nicolas Pitre:
      consider previous pack undeltified object state only when reusing delta data
      don't load objects needlessly when repacking

Paul Eggert:
      date.c: improve guess between timezone offset and year.

Paul Mackerras:
      Fix PPC SHA1 routine for large input buffers

Peter Eriksen:
      Implement safe_strncpy() as strlcpy() and use it more.
      Rename safe_strncpy() to strlcpy().

Petr Baudis:
      Support for extracting configuration from different files
      Support for the standard mime.types map in gitweb
      Customizable error handlers
      Fix errno usage in connect.c

Rene Scharfe:
      git-tar-tree: Simplify write_trailer()
      git-tar-tree: documentation update
      git-tar-tree: no more void pointer arithmetic
      Make release tarballs friendlier to older tar versions

Robin Rosenberg:
      Minor documentation fixup.

Sean Estabrooks:
      Add a "--notags" option for git-p4import.

Sven Verdoolaege:
      git-cvsexportcommit.perl: fix typo

Timo Hirvonen:
      gitweb: Use $hash_base as $search_hash if possible
      git-merge: Don't use -p when outputting summary
      Clean up diff.c
      Make some strings const

Uwe Zeisberger:
      Fix possible out-of-bounds array access

Yakov Lerner:
      auto-detect changed prefix and/or changed build flags
      Pass -DDEFAULT_GIT_TEMPLATE_DIR only where actually used.

Yann Dirson:
      git-commit: filter out log message lines only when editor was run.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Mar 2014, #04; Thu, 20)
@ 2014-03-20 21:09  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-03-20 21:09 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

More topics merged to 'master', some of which have been cooking
before the v1.9.0 final release, many of them fallouts from GSoC
microprojects.  Many topics that have been marked to be discarded
are finally discarded.

Quite a few topics are still outside 'pu' and I suspect some of the
larger ones deserve deeper reviews to help moving them to 'next'.
In principle, I'd prefer to keep any large topic that touch core
part of the system cooking in 'next' for at least a full cycle, and
the sooner they get merged to 'next', the better.  Help is greatly
appreciated.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bg/install-branch-config-skip-prefix (2014-03-06) 2 commits
  (merged to 'next' on 2014-03-12 at 9d04564)
 + branch: use skip_prefix() in install_branch_config()
 + t3200-branch: test setting branch as own upstream


* dd/find-graft-with-sha1-pos (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-12 at 0383d59)
 + commit.c: use the generic "sha1_pos" function for lookup

 Replace a hand-rolled binary search with a call to our generic
 binary search helper function.


* dd/use-alloc-grow (2014-03-03) 14 commits
  (merged to 'next' on 2014-03-12 at ed82259)
 + sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
 + read-cache.c: use ALLOC_GROW() in add_index_entry()
 + builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
 + attr.c: use ALLOC_GROW() in handle_attr_line()
 + dir.c: use ALLOC_GROW() in create_simplify()
 + reflog-walk.c: use ALLOC_GROW()
 + replace_object.c: use ALLOC_GROW() in register_replace_object()
 + patch-ids.c: use ALLOC_GROW() in add_commit()
 + diffcore-rename.c: use ALLOC_GROW()
 + diff.c: use ALLOC_GROW()
 + commit.c: use ALLOC_GROW() in register_commit_graft()
 + cache-tree.c: use ALLOC_GROW() in find_subtree()
 + bundle.c: use ALLOC_GROW() in add_to_ref_list()
 + builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()

 Replace open-coded reallocation with ALLOC_GROW() macro.


* fc/transport-helper-fixes (2014-02-24) 7 commits
  (merged to 'next' on 2014-03-12 at 5d7c69a)
 + remote-bzr: support the new 'force' option
 + test-hg.sh: tests are now expected to pass
 + transport-helper.c: do not overwrite forced bit
 + transport-helper: check for 'forced update' message
 + transport-helper: add 'force' to 'export' helpers
 + transport-helper: don't update refs in dry-run
 + transport-helper: mismerge fix

 Updates transport-helper, fast-import and fast-export to allow the
 ref mapping and ref deletion in a way similar to the natively
 supported transports.


* jc/no-need-for-env-in-sh-scripts (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at dfd3234)
 + *.sh: drop useless use of "env"


* jc/tag-contains-with (2014-03-07) 1 commit
  (merged to 'next' on 2014-03-12 at e120644)
 + tag: grok "--with" as synonym to "--contains"


* jk/clean-d-pathspec (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at aaae6ee)
 + clean: simplify dir/not-dir logic
 + clean: respect pathspecs with "-d"

 "git clean -d pathspec" did not use the given pathspec correctly
 and ended up cleaning too much.


* jk/detect-push-typo-early (2014-03-05) 3 commits
  (merged to 'next' on 2014-03-12 at da522e7)
 + push: detect local refspec errors early
 + match_explicit_lhs: allow a "verify only" mode
 + match_explicit: hoist refspec lhs checks into their own function

 Catch "git push $there no-such-branch" early.


* jk/diff-filespec-cleanup (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 184c2aa)
 + diffcore.h: be explicit about the signedness of is_binary

 Portability fix to a topic already in v1.9


* jk/doc-deprecate-grafts (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at 8d34916)
 + docs: mark info/grafts as outdated


* jk/repack-pack-keep-objects (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-12 at 3fd2335)
 + repack: add `repack.packKeptObjects` config var


* jn/branch-lift-unnecessary-name-length-limit (2014-03-05) 1 commit
  (merged to 'next' on 2014-03-12 at bd0fb0e)
 + branch.c: delete size check of newly tracked branch names


* mh/simplify-cache-tree-find (2014-03-05) 6 commits
  (merged to 'next' on 2014-03-12 at c29aa24)
 + cache_tree_find(): use path variable when passing over slashes
 + cache_tree_find(): remove early return
 + cache_tree_find(): remove redundant check
 + cache_tree_find(): fix comment formatting
 + cache_tree_find(): find the end of path component using strchrnul()
 + cache_tree_find(): remove redundant checks


* nd/sha1-file-delta-stack-leakage-fix (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at 9d1a621)
 + sha1_file: fix delta_stack memory leak in unpack_entry

 Fix a small leak in the delta stack used when resolving a long
 delta chain at runtime.


* rm/strchrnul-not-strlen (2014-03-10) 1 commit
  (merged to 'next' on 2014-03-12 at fad8f12)
 + use strchrnul() in place of strchr() and strlen()


* rs/grep-h-c (2014-03-11) 2 commits
  (merged to 'next' on 2014-03-12 at 0341bd8)
 + grep: support -h (no header) with --count
 + t7810: add missing variables to tests in loop

 "git grep" learns to handle combination of "-h (no header)" and "-c
 (counts)".


* sh/finish-tmp-packfile (2014-03-03) 2 commits
  (merged to 'next' on 2014-03-12 at 410d45d)
 + finish_tmp_packfile():use strbuf for pathname construction
 + Merge branch 'sh/write-pack-file-warning-message-fix' into sh/finish-tmp-packfile


* sh/use-hashcpy (2014-03-06) 1 commit
  (merged to 'next' on 2014-03-12 at cf2735a)
 + Use hashcpy() when copying object names


--------------------------------------------------
[New Topics]

* jk/lib-terminal-lazy (2014-03-14) 1 commit
  (merged to 'next' on 2014-03-20 at 5de832f)
 + t/lib-terminal: make TTY a lazy prerequisite

 The test helper lib-terminal always run an actual test_expect_* when
 included, which screwed up with the use of skil-all that may have to
 be done later.

 Will merge to 'master'.


* ah/doc-gitk-config (2014-03-20) 1 commit
  (merged to 'next' on 2014-03-20 at d671b60)
 + Documentation/gitk: document the location of the configulation file

 Will merge to 'master'.


* as/grep-fullname-config (2014-03-20) 1 commit
 - grep: add grep.fullName config variable


* fr/add-interactive-argv-array (2014-03-18) 1 commit
  (merged to 'next' on 2014-03-20 at 9d65f3d)
 + add: use struct argv_array in run_add_interactive()

 Will merge to 'master'.


* jk/pack-bitmap (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at bba6246)
 + pack-objects: turn off bitmaps when skipping objects

 Instead of dying when asked to (re)pack with the reachability
 bitmap when a bitmap cannot be built, just (re)pack without
 producing a bitmap in such a case, with a warning.

 Will merge to 'master', and probably to 'maint' later.


* jk/pack-bitmap-progress (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-20 at c7a83f9)
 + pack-objects: show reused packfile objects in "Counting objects"
 + pack-objects: show progress for reused packfiles

 The progress output while repacking and transferring objects showed
 an apparent large silence while writing the objects out of existing
 packfiles, when the reachability bitmap was in use.

 Will merge to 'master', and probably to 'maint' later.


* jk/subtree-prefix (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 81367fa)
 + subtree: initialize "prefix" variable

 A stray environment variable $prefix could have leaked into and
 affected the behaviour of the "subtree" script.

 Will merge to 'master'.


* nd/gc-aggressive (2014-03-17) 4 commits
 - gc --aggressive: three phase repacking
 - gc --aggressive: make --depth configurable
 - pack-objects: support --keep
 - environment.c: fix constness for odb_pack_keep()


* nd/index-pack-error-message (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at 4d722ac)
 + index-pack: report error using the correct variable

 Will merge to 'master'.


* rr/doc-merge-strategies (2014-03-17) 1 commit
  (merged to 'next' on 2014-03-20 at d31f415)
 + Documentation/merge-strategies: avoid hyphenated commands

 Will merge to 'master'.


* us/printf-not-echo (2014-03-18) 2 commits
  (merged to 'next' on 2014-03-20 at 41205c8)
 + test-lib.sh: do not "echo" caller-supplied strings
 + rebase -i: do not "echo" random user-supplied strings

 Will merge to 'master'.


* bb/diff-no-index-dotdot (2014-03-19) 2 commits
  (merged to 'next' on 2014-03-20 at 352f48c)
 + diff-no-index: replace manual "."/".." check with is_dot_or_dotdot()
 + diff-no-index: rename read_directory()

 Will merge to 'master'.


* bg/rebase-off-of-previous-branch (2014-03-19) 1 commit
 - rebase: allow "-" short-hand for the previous branch

 Will merge to 'next'.


* dt/tests-with-env-not-subshell (2014-03-19) 1 commit
 - tests: use "env" to run commands with temporary env-var settings


* hs/simplify-bit-setting-in-fsck-tree (2014-03-20) 1 commit
 - fsck: use bitwise-or assignment operator to set flag


* mm/status-porcelain-format-i18n-fix (2014-03-20) 2 commits
 - SQUASH??? fix decl-after-stmt and simplify
 - status: disable translation when --porcelain is used


* ss/test-on-mingw-rsync-path-no-absolute (2014-03-19) 1 commit
  (merged to 'next' on 2014-03-20 at 2b7b95d)
 + t5510: Do not use $(pwd) when fetching / pushing / pulling via rsync

 Will merge to 'master'.


* sz/mingw-index-pack-threaded (2014-03-19) 1 commit
 - Enable index-pack threading in msysgit.

 Still under discussion among Windows folks

--------------------------------------------------
[Stalled]

* bc/blame-crlf-test (2014-02-18) 1 commit
 - blame: add a failing test for a CRLF issue.

 I have a feeling that a fix for this should be fairly isolated and
 trivial (it should be just the matter of paying attention to the
 crlf settings when synthesizing the fake commit)---perhaps somebody
 can squash in a fix to this?


* jk/makefile (2014-02-05) 16 commits
 - FIXUP
 - move LESS/LV pager environment to Makefile
 - Makefile: teach scripts to include make variables
 - FIXUP
 - Makefile: auto-build C strings from make variables
 - Makefile: drop *_SQ variables
 - FIXUP
 - Makefile: add c-quote helper function
 - Makefile: introduce sq function for shell-quoting
 - Makefile: always create files via make-var
 - Makefile: store GIT-* sentinel files in MAKE/
 - Makefile: prefer printf to echo for GIT-*
 - Makefile: use tempfile/mv strategy for GIT-*
 - Makefile: introduce make-var helper function
 - Makefile: fix git-instaweb dependency on gitweb
 - Makefile: drop USE_GETTEXT_SCHEME from GIT-CFLAGS

 Simplify the Makefile rules and macros that exist primarily for
 quoting purposes, and make it easier to robustly express the
 dependency rules.

 Expecting a reroll.


* kb/fast-hashmap-pack-struct (2014-02-24) 1 commit
 - hashmap.h: make sure map entries are tightly packed

 I am inclined to drop this; an alternative is to replace it with
 the "more portable" one that uses #pragma, which I am willing to
 try doing so on 'pu', though.


* po/everyday-doc (2014-01-27) 1 commit
 - Make 'git help everyday' work

 This may make the said command to emit something, but the source is
 not meant to be formatted into a manual pages to begin with, and
 also its contents are a bit stale.  It may be a good first step in
 the right direction, but needs more work to at least get the
 mark-up right before public consumption.

 Will hold.


* jk/branch-at-publish-rebased (2014-01-17) 5 commits
 - t1507 (rev-parse-upstream): fix typo in test title
 - implement @{publish} shorthand
 - branch_get: provide per-branch pushremote pointers
 - branch_get: return early on error
 - sha1_name: refactor upstream_mark

 Give an easier access to the tracking branches from "other" side in
 a triangular workflow by introducing B@{publish} that works in a
 similar way to how B@{upstream} does.

 Meant to be used as a basis for whatever Ram wants to build on.

 Will hold.


* rb/merge-prepare-commit-msg-hook (2014-01-10) 4 commits
 - merge: drop unused arg from abort_commit method signature
 - merge: make prepare_to_commit responsible for write_merge_state
 - t7505: ensure cleanup after hook blocks merge
 - t7505: add missing &&

 Expose more merge states (e.g. $GIT_DIR/MERGE_MODE) to hooks that
 run during "git merge".  The log message stresses too much on one
 hook, prepare-commit-msg, but it would equally apply to other hooks
 like post-merge, I think.

 Waiting for a reroll.


* jl/submodule-recursive-checkout (2013-12-26) 5 commits
 - Teach checkout to recursively checkout submodules
 - submodule: teach unpack_trees() to update submodules
 - submodule: teach unpack_trees() to repopulate submodules
 - submodule: teach unpack_trees() to remove submodule contents
 - submodule: prepare for recursive checkout of submodules

 Expecting a reroll.


* jc/graph-post-root-gap (2013-12-30) 3 commits
 - WIP: document what we want at the end
 - graph: remove unused code a bit
 - graph: stuff the current commit into graph->columns[]

 This was primarily a RFH ($gmane/239580).


* hv/submodule-ignore-fix (2013-12-06) 4 commits
 - disable complete ignorance of submodules for index <-> HEAD diff
 - always show committed submodules in summary after commit
 - teach add -f option for ignored submodules
 - fix 'git add' to skip submodules configured as ignored

 Teach "git add" to be consistent with "git status" when changes to
 submodules are set to be ignored, to avoid surprises after checking
 with "git status" to see there isn't any change to be further added
 and then see that "git add ." adds changes to them.

 I think a reroll is coming, so this may need to be replaced, but I
 needed some practice with heavy conflict resolution.  It conflicts
 with two changes to "git add" that have been scheduled for Git 2.0
 quite badly, and I think I got the resolution right this time.

 Waiting for a reroll.


* np/pack-v4 (2013-09-18) 90 commits
 . packv4-parse.c: add tree offset caching
 . t1050: replace one instance of show-index with verify-pack
 . index-pack, pack-objects: allow creating .idx v2 with .pack v4
 . unpack-objects: decode v4 trees
 . unpack-objects: allow to save processed bytes to a buffer
 - ...

 Nico and Duy advancing the eternal vaporware pack-v4.  This is here
 primarily for wider distribution of the preview edition.

 Temporarily ejected from 'pu', to try out jk/pack-bitmap, which
 this topic conflicts with.


* tg/perf-lib-test-perf-cleanup (2013-09-19) 2 commits
 - perf-lib: add test_perf_cleanup target
 - perf-lib: split starting the test from the execution

 Add test_perf_cleanup shell function to the perf suite, that allows
 the script writers to define a test with a clean-up action.

 Will hold.


* jc/format-patch (2013-04-22) 2 commits
 - format-patch: --inline-single
 - format-patch: rename "no_inline" field

 A new option to send a single patch to the standard output to be
 appended at the bottom of a message.  I personally have no need for
 this, but it was easy enough to cobble together.  Tests, docs and
 stripping out more MIMEy stuff are left as exercises to interested
 parties.


* jc/show-branch (2013-06-07) 5 commits
 - show-branch: use commit slab to represent bitflags of arbitrary width
 - show-branch.c: remove "all_mask"
 - show-branch.c: abstract out "flags" operation
 - show-branch.c: lift all_mask/all_revs to a global static
 - show-branch.c: update comment style

 Waiting for the final step to lift the hard-limit before sending it out.

--------------------------------------------------
[Cooking]

* ap/remote-hg-skip-null-bookmarks (2014-03-19) 1 commit
 - remote-hg: do not fail on invalid bookmarks

 Will merge to 'next'.


* jn/wt-status (2014-03-12) 4 commits
  (merged to 'next' on 2014-03-14 at 8ac862c)
 + wt-status: lift the artificual "at least 20 columns" floor
 + wt-status: i18n of section labels
 + wt-status: extract the code to compute width for labels
 + wt-status: make full label string to be subject to l10n

 Unify the codepaths that format new/modified/changed sections and
 conflicted paths in the "git status" output and make it possible to
 properly internationalize their output.

 Will merge to 'master'.


* es/sh-i18n-envsubst (2014-03-12) 1 commit
  (merged to 'next' on 2014-03-14 at e4d5603)
 + sh-i18n--envsubst: retire unused string_list_member()

 Will merge to 'master'.


* mh/remove-subtree-long-pathname-fix (2014-03-13) 2 commits
  (merged to 'next' on 2014-03-17 at 68cc994)
 + entry.c: fix possible buffer overflow in remove_subtree()
 + checkout_entry(): use the strbuf throughout the function

 Will merge to 'master'.


* nd/indent-fix-connect-c (2014-03-13) 1 commit
  (merged to 'next' on 2014-03-17 at a109efc)
 + connect.c: SP after "}", not TAB

 Will merge to 'master'.


* pw/branch-config-message (2014-03-13) 1 commit
 - install_branch_config(): simplify verbose messages logic

 Among the many attempts to microproject #8, this seemed to be the
 most "done" among the table based ones; I however tend to think
 that the original with minimum refactoring would be easier to read.


* ys/fsck-commit-parsing (2014-03-19) 2 commits
 - fsck.c:fsck_commit(): use skip_prefix() to verify and skip constant
 - fsck.c:fsck_ident(): ident points at a const string

 Will merge to 'next'.


* jk/warn-on-object-refname-ambiguity (2014-03-13) 4 commits
  (merged to 'next' on 2014-03-17 at 3f8e98e)
 + rev-list: disable object/refname ambiguity check with --stdin
 + cat-file: restore warn_on_object_refname_ambiguity flag
 + cat-file: fix a minor memory leak in batch_objects
 + cat-file: refactor error handling of batch_objects

 Will merge to 'master'.


* jk/diff-funcname-cpp-regex (2014-03-05) 1 commit
 - diff: simplify cpp funcname regex

 It appears that Peff and Hannes agreed to base the final version
 not on this one, but Hannes's version.


* bp/commit-p-editor (2014-03-18) 7 commits
 - run-command: mark run_hook_with_custom_index as deprecated
 - merge hook tests: fix and update tests
 - merge: fix GIT_EDITOR override for commit hook
 - commit: fix patch hunk editing with "commit -p -m"
 - test patch hunk editing with "commit -p -m"
 - merge hook tests: use 'test_must_fail' instead of '!'
 - merge hook tests: fix missing '&&' in test

 Will merge to 'next'.


* cp/am-patch-format-doc (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7437c77)
 + Documentation/git-am: typofix
  (merged to 'next' on 2014-03-12 at 17c3ada)
 + Documentation/git-am: Document supported --patch-format options

 Will merge to 'master'.


* dm/configure-iconv-locale-charset (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-20 at 4443bfd)
 + configure.ac: link with -liconv for locale_charset()

 Will merge to 'master'.


* jk/mv-submodules-fix (2014-03-17) 2 commits
  (merged to 'next' on 2014-03-17 at 7cae3b1)
 + mv: prevent mismatched data when ignoring errors.
 + builtin/mv: fix out of bounds write

 Will merge to 'master'.


* nd/upload-pack-shallow (2014-03-11) 1 commit
  (merged to 'next' on 2014-03-14 at d40b8c3)
 + upload-pack: send shallow info over stdin to pack-objects

 Will merge to 'master'.


* jc/stash-pop-not-popped (2014-02-26) 1 commit
  (merged to 'next' on 2014-03-14 at 9ba1de8)
 + stash pop: mention we did not drop the stash upon failing to apply

 "stash pop", upon failing to apply the stash, refrains from
 discarding the stash to avoid information loss.  Be more explicit
 in the error message.

 The wording may want to get a bit more bikeshedding.

 Will merge to 'master'.


* cn/fetch-prune-overlapping-destination (2014-02-28) 2 commits
 - fetch: handle overlaping refspecs on --prune
 - fetch: add a failing test for prunning with overlapping refspecs

 Protect refs in a hierarchy that can come from more than one remote
 hierarcies from incorrect removal by "git fetch --prune".

 Comments?


* dk/skip-prefix-scan-only-once (2014-03-03) 1 commit
  (merged to 'next' on 2014-03-14 at ff375fc)
 + skip_prefix(): scan prefix only once

 Update implementation of skip_prefix() to scan only once; given
 that most "prefix" arguments to the inline function are constant
 strings whose strlen() can be determined at the compile time, this
 might actually make things worse with a compiler with sufficient
 intelligence.

 Will merge to 'master'.


* jk/shallow-update-fix (2014-03-17) 3 commits
  (merged to 'next' on 2014-03-17 at 011942e)
 + shallow: verify shallow file after taking lock
  (merged to 'next' on 2014-03-12 at ce5abbf)
 + shallow: automatically clean up shallow tempfiles
 + shallow: use stat_validity to check for up-to-date file

 Serving objects from a shallow repository needs to write a
 temporary file to be used, but the serving upload-pack may not have
 write access to the repository which is meant to be read-only.

 Will merge to 'master'.


* nd/tag-version-sort (2014-02-27) 1 commit
  (merged to 'next' on 2014-03-14 at 4e7f714)
 + tag: support --sort=<spec>

 Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

 Will merge to 'master'.


* tc/commit-dry-run-exit-status-tests (2014-02-24) 1 commit
  (merged to 'next' on 2014-03-12 at b839886)
 + demonstrate git-commit --dry-run exit code behaviour


* nd/commit-editor-cleanup (2014-02-25) 3 commits
  (merged to 'next' on 2014-03-17 at 986605d)
 + commit: add --cleanup=scissors
 + wt-status.c: move cut-line print code out to wt_status_add_cut_line
 + wt-status.c: make cut_line[] const to shrink .data section a bit

 "git commit --cleanup=<mode>" learned a new mode, scissors.


* nd/multiple-work-trees (2014-03-17) 28 commits
 - count-objects: report unused files in $GIT_DIR/repos/...
 - gc: support prune --repos
 - gc: style change -- no SP before closing bracket
 - prune: strategies for linked checkouts
 - checkout: detach if the branch is already checked out elsewhere
 - checkout: clean up half-prepared directories in --to mode
 - checkout: support checking out into a new working directory
 - use new wrapper write_file() for simple file writing
 - wrapper.c: wrapper to open a file, fprintf then close
 - setup.c: support multi-checkout repo setup
 - setup.c: detect $GIT_COMMON_DIR check_repository_format_gently()
 - setup.c: convert check_repository_format_gently to use strbuf
 - setup.c: detect $GIT_COMMON_DIR in is_git_directory()
 - setup.c: convert is_git_directory() to use strbuf
 - git-stash: avoid hardcoding $GIT_DIR/logs/....
 - *.sh: avoid hardcoding $GIT_DIR/hooks/...
 - git-sh-setup.sh: use rev-parse --git-path to get $GIT_DIR/objects
 - $GIT_COMMON_DIR: a new environment variable
 - commit: use SEQ_DIR instead of hardcoding "sequencer"
 - fast-import: use git_path() for accessing .git dir instead of get_git_dir()
 - reflog: avoid constructing .lock path with git_path
 - *.sh: respect $GIT_INDEX_FILE
 - git_path(): be aware of file relocation in $GIT_DIR
 - path.c: group git_path(), git_pathdup() and strbuf_git_path() together
 - path.c: rename vsnpath() to do_git_path()
 - git_snpath(): retire and replace with strbuf_git_path()
 - path.c: make get_pathname() call sites return const char *
 - path.c: make get_pathname() return strbuf instead of static buffer

 Replaced with v5 (with minor fixes already squashed in).


* ks/tree-diff-nway (2014-03-04) 19 commits
 - combine-diff: speed it up, by using multiparent diff tree-walker directly
 - tree-diff: rework diff_tree() to generate diffs for multiparent cases as well
 - Portable alloca for Git
 - tree-diff: reuse base str(buf) memory on sub-tree recursion
 - tree-diff: no need to call "full" diff_tree_sha1 from show_path()
 - tree-diff: rework diff_tree interface to be sha1 based
 - tree-diff: diff_tree() should now be static
 - tree-diff: remove special-case diff-emitting code for empty-tree cases
 - tree-diff: simplify tree_entry_pathcmp
 - tree-diff: show_path prototype is not needed anymore
 - tree-diff: rename compare_tree_entry -> tree_entry_pathcmp
 - tree-diff: move all action-taking code out of compare_tree_entry()
 - tree-diff: don't assume compare_tree_entry() returns -1,0,1
 - tree-diff: consolidate code for emitting diffs and recursion in one place
 - tree-diff: show_tree() is not needed
 - tree-diff: no need to pass match to skip_uninteresting()
 - tree-diff: no need to manually verify that there is no mode change for a path
 - combine-diff: move changed-paths scanning logic into its own function
 - combine-diff: move show_log_first logic/action out of paths scanning

 Instead of running N pair-wise diff-trees when inspecting a
 N-parent merge, find the set of paths that were touched by walking
 N+1 trees in parallel.  These set of paths can then be turned into
 N pair-wise diff-tree results to be processed through rename
 detections and such.  And N=2 case nicely degenerates to the usual
 2-way diff-tree, which is very nice.


* nd/log-show-linear-break (2014-03-20) 2 commits
 - log: add --show-linear-break to help see non-linear history
 - object.h: centralize object flag allocation

 Attempts to show where a single-strand-of-pearls break in "git log"
 output.

 The implementation seems to have got worse compared to the previous
 round.  Will hold.


* tr/remerge-diff (2014-02-26) 5 commits
 . log --remerge-diff: show what the conflict resolution changed
 . name-hash: allow dir hashing even when !ignore_case
 . merge-recursive: allow storing conflict hunks in index
 . revision: fold all merge diff variants into an enum merge_diff_mode
 . combine-diff: do not pass revs->dense_combined_merges redundantly
 (this branch uses tr/merge-recursive-index-only.)

 "log -p" output learns a new way to let users inspect a merge
 commit by showing the differences between the automerged result
 with conflicts the person who recorded the merge would have seen
 and the final conflict resolution that was recorded in the merge.

 RFC.  This latest round clashes with the kb/fast-hashmap topic in
 'master'.


* lt/request-pull (2014-03-13) 6 commits
  (merged to 'next' on 2014-03-17 at 21a598d)
 + request-pull: documentation updates
 + request-pull: resurrect "pretty refname" feature
 + request-pull: test updates
 + request-pull: pick up tag message as before
 + request-pull: allow "local:remote" to specify names on both ends
 + request-pull: more strictly match local/remote branches

 Discard the accumulated "heuristics" to guess from which branch the
 result wants to be pulled from and make sure what the end user
 specified is not second-guessed by "git request-pull", to avoid
 mistakes.

 Will merge to 'master'.


* cc/interpret-trailers (2014-03-07) 11 commits
 - Documentation: add documentation for 'git interpret-trailers'
 - trailer: add tests for commands in config file
 - trailer: execute command from 'trailer.<name>.command'
 - trailer: add tests for "git interpret-trailers"
 - trailer: add interpret-trailers command
 - trailer: put all the processing together and print
 - trailer: parse trailers from stdin
 - trailer: process command line trailer arguments
 - trailer: read and process config information
 - trailer: process trailers from stdin and arguments
 - trailers: add data structures and basic functions

 A new filter to programatically edit the tail end of the commit log
 messages.


* tr/merge-recursive-index-only (2014-02-05) 3 commits
 - merge-recursive: -Xindex-only to leave worktree unchanged
 - merge-recursive: internal flag to avoid touching the worktree
 - merge-recursive: remove dead conditional in update_stages()
 (this branch is used by tr/remerge-diff.)

 Will hold.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2008, #08; Wed, 27)
@ 2008-08-28  2:54  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-28  2:54 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.

The topics list the commits in reverse chronological order.  The topics
meant to be merged to the maintenance series have "maint-" in their names.

----------------------------------------------------------------
[New Topics]

* dk/emacs (Tue Aug 26 22:24:40 2008 -0500) 2 commits
 - Teach git.el to mark/unmark files by regexp
 - git.el: Diff only file at point by default

With my limited elisp expertise I did not see anything obviously wrong
with these two patches from David Kågedal and David Christensen.

* tl/p4 (Thu Aug 28 00:36:12 2008 +0200) 1 commit
 - git-p4: Fix checkout bug when using --import-local.

A fix forked from 'maint' waiting for an Ack.

----------------------------------------------------------------
[Stalled -- Needs Action to Proceed (or to be dropped)]

* bd/blame (Thu Aug 21 18:22:01 2008 -0500) 5 commits
 . Use xdiff caching to improve git blame performance
 . Allow xdiff machinery to cache hash results for a file
 . Always initialize xpparam_t to 0
 . Bypass textual patch generation and parsing in git blame
 . Allow alternate "low-level" emit function from xdl_diff

Réne had good comments on how the callback should be structured.

* jc/maint-name-hash-clear (Sat Aug 23 13:05:10 2008 -0700) 1 commit
 - discard_cache: reset lazy name_hash bit

I spotted this by accident while working on something unrelated.

When a program calls discard_cache() to read the index again, we do not
properly re-initialize the name_hash structure that is used by the case
insensitivitly logic.  This _might_ improve issues people may be having on
case insensitive filesystems.  I dunno.

* jc/cc-ld-dynpath (Sat Aug 16 15:01:23 2008 +0200) 2 commits
 - configure: auto detect dynamic library path switches
 - Makefile: Allow CC_LD_DYNPATH to be overriden

Needs success reports from people who do use user-defined dynamic library
path when they build their "git" before this series can go anywhere.

* lt/time-reject-fractional-seconds (Sat Aug 16 21:25:40 2008 -0700) 1 commit
 - date/time: do not get confused by fractional seconds

Linus hints further enhancements as "the right way", so let's see if
somebody else steps up and tries it before merging this to 'next'.

----------------------------------------------------------------
[Actively Cooking]

* sb/daemon (Sun Aug 24 13:27:10 2008 -0700) 5 commits
 + daemon.c: minor style fixup
 + git-daemon: rewrite kindergarden, new option --max-connections
 + git-daemon: Simplify dead-children reaping logic
 + git-daemon: use LOG_PID, simplify logging code
 + git-daemon: call logerror() instead of error()

I re-reviewed the changes and they look quite sane.  Hopefully be moved to
'master' soonish.

* jc/add-ita (Thu Aug 21 01:44:53 2008 -0700) 3 commits
 - git-add --intent-to-add (-N)
 - cached_object: learn empty blob
 - sha1_object_info(): pay attention to cached objects

Teaches "git add" to record only the intent to add a path later.
I think this is better done without the hardcoded empty blob object.

* cc/bisect (Fri Aug 22 05:52:29 2008 +0200) 2 commits
 + bisect: only check merge bases when needed
 + bisect: test merge base if good rev is not an ancestor of bad rev

* mv/merge-recursive (Mon Aug 25 16:25:57 2008 +0200) 3 commits
 - merge-recursive: introduce merge_options
 - merge-recursive.c: Add more generic merge_recursive_generic()
 - Split out merge_recursive() to merge-recursive.c

Miklos's update; will move to 'next' shortly after reading it again.

* jc/diff-prefix (Mon Aug 18 20:08:09 2008 -0700) 1 commit
 - diff: vary default prefix depending on what are compared

As some people may have noticed, I've been running with this one when
sending out "How about this" patches to the discussion threads.

* sp/missing-thin-base (Tue Aug 12 11:31:06 2008 -0700) 1 commit
 + pack-objects: Allow missing base objects when creating thin packs

* tr/filter-branch (Tue Aug 12 10:45:59 2008 +0200) 7 commits
 + filter-branch: use --simplify-merges
 + filter-branch: fix ref rewriting with --subdirectory-filter
 + filter-branch: Extend test to show rewriting bug

Fixes a longstanding filter branch bug.  Success stories?
Later parts depends on the earlier part of "--simplify-merges"

* jc/post-simplify (Fri Aug 15 01:34:51 2008 -0700) 8 commits
 - revision --simplify-merges: incremental simplification
 - revision --simplify-merges: prepare for incremental simplification
 - revision --simplify-merges: make it a no-op without pathspec
 + revision --simplify-merges: do not leave commits unprocessed
 + revision --simplify-merges: use decoration instead of commit->util
   field
 + Topo-sort before --simplify-merges
 + revision traversal: show full history with merge simplification
 + revision.c: whitespace fix

"log --full-history" is with too much clutter, "log" itself is too cleverer
than some people, and here is the middle level of merge simplification.

I started making this incremental but the progress is not so great.

* tr/rev-list-docs (Tue Aug 12 01:55:37 2008 +0200) 5 commits
 + Documentation: rev-list-options: move --simplify-merges
   documentation

----------------------------------------------------------------
[On Hold]

* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits
 - git-am --forge: add Signed-off-by: line for the author
 - git-am: clean-up Signed-off-by: lines
 - stripspace: add --log-clean option to clean up signed-off-by:
   lines
 - stripspace: use parse_options()
 - Add "git am -s" test
 - git-am: refactor code to add signed-off-by line for the committer

* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit
 - "git push": tellme-more protocol extension

* jc/merge-whitespace (Sun Feb 24 23:29:36 2008 -0800) 1 commit
 - WIP: start teaching the --whitespace=fix to merge machinery

* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits
 - blame: show "previous" information in --porcelain/--incremental
   format
 - git-blame: refactor code to emit "porcelain format" output

* sg/merge-options (Sun Apr 6 03:23:47 2008 +0200) 1 commit
 + merge: remove deprecated summary and diffstat options and config
   variables

This was previously in "will be in master soon" category, but it turns out
that the synonyms to the ones this one deletes are fairly new invention
that happend in 1.5.6 timeframe, and we cannot do this just yet.  Perhaps
in 1.7.0, but with the loud whining about moving git-foo out of $PATH we
have been hearing, it might not be a bad idea to drop this.

* jc/dashless (Wed Jun 25 15:55:11 2008 -0700) 1 commit
 . Make clients ask for "git program" over ssh and local transport

And this is now dropped.

* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit
 - diff: enable "too large a rename" warning when -M/-C is explicitly
   asked for

This would be the right thing to do for command line use, but gitk will be
hit due to tcl/tk's limitation, so I am holding this back for now.

----------------------------------------------------------------
[Graduated to "master"]

* mv/maint-merge-fix (Sat Aug 23 12:56:57 2008 -0700) 1 commit
 + merge: fix numerus bugs around "trivial merge" area

* ml/submodule (Thu Aug 21 19:54:01 2008 -0400) 2 commits
 + git-submodule.sh - Remove trailing / from URL if found
 + git-submodule.sh - Remove trailing / from URL if found

Soon to be in 'master', I guess.

* np/verify-pack (Fri Aug 22 15:45:53 2008 -0400) 1 commit
 + discard revindex data when pack list changes

* jc/no-slim-shell (Tue Aug 19 18:05:43 2008 -0700) 2 commits
 + Build-in "git-shell"
 + shell: do not play duplicated definition games to shrink the
   executable

* mv/merge-custom (Sat Aug 23 19:23:22 2008 -0700) 9 commits
 + t7606: fix custom merge test
 + Fix "git-merge -s bogo" help text
 + Update .gitignore to ignore git-help
 + Builtin git-help.
 + builtin-help: always load_command_list() in cmd_help()
 + Add a second testcase for handling invalid strategies in git-merge
 + Add a new test for using a custom merge strategy
 + builtin-merge: allow using a custom strategy
 + builtin-help: make some internal functions available to other
   builtins

The one at the tip fixes a test that assumed git-merge has a broken
"trivial merge" implementation.

* jc/add-addremove (Tue Jul 22 22:30:40 2008 -0700) 2 commits
 + builtin-add.c: optimize -A option and "git add ."
 + builtin-add.c: restructure the code for maintainability

* am/cherry-pick-rerere (Sun Aug 10 17:18:55 2008 +0530) 1 commit
 + Make cherry-pick use rerere for conflict resolution.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2011, #02; Wed, 4)
@ 2011-05-05  2:37  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-05  2:37 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.

The main part of this cycle is expected to run thru May, aiming for a
feature freeze in early June.

We are in the middle of week #2 of this cycle.

--------------------------------------------------
[New Topics]

* jc/dotdot-is-parent-directory (2011-05-02) 1 commit
 - specifying ranges: we did not mean to make ".." an empty set

Updated documentation.

* mg/diff-stat-count (2011-05-03) 2 commits
 - diff-options.txt: describe --stat-{width,name-width,count}
 - diff: introduce --stat-count to limit the stat lines

There was a miscounting spotted.  Need another round.

* mk/grep-pcre (2011-05-03) 3 commits
 - git-grep: Learn PCRE
 - Documentation: Add --line-number to git-grep synopsis
 - [Missing sign-off and justification] grep: Put calls to fixmatch() and regmatch() into patmatch()

There was a re-roll but I haven't picked it up yet.

* vh/config-interactive-singlekey-doc (2011-05-02) 1 commit
 - config.txt: 'interactive.singlekey; is used by...

Will merge to 'next' but I recall we discussed the need for more cross
references and description of the configuration variable in Patch mode
documentation.

* jc/maint-branch-mergeoptions (2011-05-04) 1 commit
 - merge: fix branch.<name>.mergeoptions

Fix branch.<name>.mergeoptions that does not override merge.<option>

* jc/require-work-tree-exists (2011-05-04) 1 commit
 - require-work-tree wants more than what its name says

Make "git pull" run from a random place work as long as GIT_DIR and
GIT_WORK_TREE are set up correctly.  I am not absolutely sure if that
is a sane use case, though.

--------------------------------------------------
[Graduated to "master"]

* ab/i18n-fixup (2011-04-14) 24 commits
  (merged to 'next' on 2011-04-25 at 32fef07)
 + i18n: use test_i18n{cmp,grep} in t7600, t7607, t7611 and t7811
 + i18n: use test_i18n{grep,cmp} in t7508
 + i18n: use test_i18ngrep in t7506
 + i18n: use test_i18ngrep and test_i18ncmp in t7502
 + i18n: use test_i18ngrep in t7501
 + i18n: use test_i18ncmp in t7500
 + i18n: use test_i18ngrep in t7201
 + i18n: use test_i18ncmp and test_i18ngrep in t7102 and t7110
 + i18n: use test_i18ncmp and test_i18ngrep in t5541, t6040, t6120, t7004, t7012 and t7060
 + i18n: use test_i18ncmp and test_i18ngrep in t3700, t4001 and t4014
 + i18n: use test_i18ncmp and test_i18ngrep in t3203, t3501 and t3507
 + i18n: use test_i18ngrep in t2020, t2204, t3030, and t3200
 + i18n: use test_i18ngrep in lib-httpd and t2019
 + i18n: do not overuse C_LOCALE_OUTPUT (grep)
 + i18n: use test_i18ncmp in t1200 and t2200
 + i18n: .git file is not a human readable message (t5601)
 + i18n: do not overuse C_LOCALE_OUTPUT
 + i18n: mark init-db messages for translation
 + i18n: mark checkout plural warning for translation
 + i18n: mark checkout --detach messages for translation
 + i18n: mark clone nonexistent repository message for translation
 + i18n: mark merge CHERRY_PICK_HEAD messages for translation
 + i18n: mark merge "upstream" messages for translation
 + i18n: mark merge "Could not read from" message for translation

* ft/gitweb-tar-with-gzip-n (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at 8e59a0e)
 + gitweb: supply '-n' to gzip for identical output

* jh/notes-add-ui (2011-03-30) 1 commit
  (merged to 'next' on 2011-04-25 at 4fb1ac2)
 + Make "git notes add" more user-friendly when there are existing notes

* jk/format-patch-multiline-header (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-26 at 3d5eda3)
 + format-patch: wrap email addresses after long names

* jk/notes-ui-updates (2011-04-14) 8 commits
  (merged to 'next' on 2011-04-25 at 4216d33)
 + contrib/completion: --notes, --no-notes
 + log/pretty-options: Document --[no-]notes and deprecate old notes options
 + revision.c: make --no-notes reset --notes list
 + revision.c: support --notes command-line option
 + notes: refactor display notes default handling
 + notes: refactor display notes extra refs field
 + revision.c: refactor notes ref expansion
 + notes: make expand_notes_ref globally accessible

* jm/mergetool-submodules (2011-04-13) 1 commit
  (merged to 'next' on 2011-04-26 at 40892cf)
 + mergetool: Teach about submodules

* jn/format-patch-doc (2011-04-18) 6 commits
  (merged to 'next' on 2011-04-26 at 3f64325)
 + Documentation/format-patch: suggest Toggle Word Wrap add-on for Thunderbird
 + Documentation: publicize hints for sending patches with GMail
 + Documentation: publicize KMail hints for sending patches inline
 + Documentation: hints for sending patches inline with Thunderbird
 + Documentation: explain how to check for patch corruption
 + Merge v1.7.5-rc2 into jn/format-patch-doc
 (this branch uses jn/maint-format-patch-doc.)

* jn/maint-format-patch-doc (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-26 at 400cf42)
 + Documentation: describe the format of messages with inline patches
 (this branch is used by jn/format-patch-doc.)

* mg/rev-list-count-cherry (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at dc3e80a)
 + rev-list --count: separate count for --cherry-mark

* ml/test-readme (2011-04-26) 1 commit
  (merged to 'next' on 2011-04-26 at d1efe84)
 + t/README: unify documentation of test function args

* mz/maint-rename-unmerged (2011-03-23) 1 commit
  (merged to 'next' on 2011-04-25 at 038a8c3)
 + diffcore-rename: don't consider unmerged path as source

* nd/maint-setup (2011-03-26) 2 commits
  (merged to 'next' on 2011-04-25 at fd45c63)
 + Kill off get_relative_cwd()
 + setup: return correct prefix if worktree is '/'

* nm/submodule-update-force (2011-04-01) 1 commit
  (merged to 'next' on 2011-04-25 at 270fffc)
 + submodule: Add --force option for git submodule update

* ss/cherry-pick-x-doc (2011-04-15) 1 commit
  (merged to 'next' on 2011-04-26 at c9a6f83)
 + doc: Clarify that "cherry-pick -x" does not use "git notes"

* ss/doc-svn (2011-04-19) 1 commit
  (merged to 'next' on 2011-04-26 at a723b91)
 + remove noise and inaccuracies from git-svn docs

* vr/merge-base-doc (2011-04-15) 2 commits
  (merged to 'next' on 2011-04-26 at e906ba3)
 + Restructure documentation for git-merge-base.
 + Documentation: update to git-merge-base --octopus

--------------------------------------------------
[Stalled]

* jn/gitweb-js (2011-04-28) 13 commits
 - gitweb: Make JavaScript ability to adjust timezones configurable
 - gitweb.js: Add UI for selecting common timezone to display dates
 - gitweb: JavaScript ability to adjust time based on timezone
 - gitweb: Unify the way long timestamp is displayed
 - gitweb: Refactor generating of long dates into format_timestamp_html
 - gitweb.js: Provide getElementsByClassName method (if it not exists)
 - gitweb.js: Introduce code to handle cookies from JavaScript
 - gitweb.js: Extract and improve datetime handling
 - gitweb.js: Provide default values for padding in padLeftStr and padLeft
 - gitweb.js: Update and improve comments in JavaScript files
 - gitweb: Split JavaScript for maintability, combining on build
 - Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
 - git-instaweb: Simplify build dependency on gitweb

Rerolled.  Waiting for comments.

* jn/ctags (2011-04-29) 6 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Modularized git_get_project_description to be more generic
 - gitweb: Split git_project_list_body in two functions
 - gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
 - gitweb: Change the way "content tags" ('ctags') are handled
 - gitweb: Restructure projects list generation

Waiting for comments.

* jk/maint-merge-rename-create (2011-03-25) 3 commits
 - merge: turn on rewrite detection
 - merge: handle renames with replacement content
 - t3030: fix accidental success in symlink rename

Peff wanted to reroll this, so this is taken out of "next".

* rr/rerere-clear-libify (2011-04-13) 1 commit
 - rerere: Expose an API corresponding to 'clear' functionality

Jonathan had good comments on moving the garbage collection interface as
well. Perhaps needs a re-roll.

* jc/index-pack (2011-02-25) 5 commits
 - index-pack --verify: read anomalous offsets from v2 idx file
 - write_idx_file: need_large_offset() helper function
 - index-pack: --verify
 - write_idx_file: introduce a struct to hold idx customization options
 - index-pack: group the delta-base array entries also by type

Still a WIP. Need to put histogram output into index-pack --verify to
really kill verify-pack.

* jk/tag-contains (2010-07-05) 4 commits
 - Why is "git tag --contains" so slow?
 - default core.clockskew variable to one day
 - limit "contains" traversals based on commit timestamp
 - tag: speed up --contains calculation

The idea of the bottom one is probably Ok, except that the use of object
flags needs to be rethought, or at least the helper needs to be moved to
builtin/tag.c to make it clear that it should not be used outside the
current usage context.

--------------------------------------------------
[Cooking]

* dm/http-cleanup (2011-05-05) 4 commits
 - t5541-http-push: add test for chunked
 - http-push: refactor curl_easy_setup madness
 - http-push: use const for strings in signatures
 - http: make curl callbacks match contracts from curl header

* im/hashcmp-optim (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at f131195)
 + hashcmp(): inline memcmp() by hand to optimize

* jc/add-delete-default (2011-04-19) 1 commit
 - git add: notice removal of tracked paths by default
 (this branch uses jc/fix-add-u-unmerged, jc/fix-add-u-unmerged and jc/fix-diff-files-unmerged.)

* kk/maint-prefix-in-config-mak (2011-05-04) 3 commits
 - config.mak.in: allow "configure --sysconfdir=/else/where"
 - Makefile: allow sysconfdir to be used from configure
  (merged to 'next' on 2011-05-02 at c747ba3)
 + Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir

Fixed up after hitting 'next'.

* sg/completion-updates (2011-04-28) 3 commits
  (merged to 'next' on 2011-05-02 at 0fd443a)
 + completion: don't declare 'local words' to make zsh happy
 + completion: remove unnecessary _get_comp_words_by_ref() invocations
 + completion: don't modify the $cur variable in completion functions

Has this one settled?

* jk/merge-one-file-working-tree (2011-04-29) 2 commits
  (merged to 'next' on 2011-05-02 at 308fe21)
 + merge-one-file: fix broken merges with alternate work trees
 + add tests for merge-index / merge-one-file

* js/blame-parsename (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 5fde945)
 + blame: tolerate bogus e-mail addresses a bit better

Will merge to "master" by the end of week #2.

* js/info-man-path (2011-05-02) 2 commits
  (merged to 'next' on 2011-05-02 at 20a15dd)
 + Documentation: clarify meaning of --html-path, --man-path, and --info-path
 + git: add --info-path and --man-path options

* cj/p4merge (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 7197ef3)
 + Pass empty file to p4merge where no base is suitable.

* gr/cvsimport-alternative-cvspass-location (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 5a89e3e)
 + Look for password in both CVS and CVSNT password files.

* jc/maint-add-p-overlapping-hunks (2011-04-06) 4 commits
  (merged to 'next' on 2011-05-02 at e57b66f)
 + "add -p": work-around an old laziness that does not coalesce hunks
 + add--interactive.perl: factor out repeated --recount option
 + t3701: Editing a split hunk in an "add -p" session
 + add -p: 'q' should really quit

* ld/p4-preserve-user-names (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 25116c8)
 + git-p4: add option to preserve user names

Will merge to "master" by the end of week #2.

* jh/dirstat-lines (2011-04-29) 8 commits
  (merged to 'next' on 2011-04-29 at a302674)
 + Mark dirstat error messages for translation
 + Improve error handling when parsing dirstat parameters
 + New --dirstat=lines mode, doing dirstat analysis based on diffstat
 + Allow specifying --dirstat cut-off percentage as a floating point number
 + Add config variable for specifying default --dirstat behavior
 + Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
 + Make --dirstat=0 output directories that contribute < 0.1% of changes
 + Add several testcases for --dirstat and friends

* aw/maint-rebase-i-p-no-ff (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 9a159a5)
 + git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

* mg/alias-expose-prefix (2011-04-27) 2 commits
  (merged to 'next' on 2011-05-02 at 1c01d3a)
 + handle_alias: provide GIT_PREFIX to !alias
 + t1020: test !alias in subdirectory

* mg/diff-uiconfig-doc (2011-04-27) 1 commit
  (merged to 'next' on 2011-05-02 at 579a515)
 + config.txt,diff-options.txt: porcelain vs. plumbing for color.diff

* jk/format-patch-quote-special-in-from (2011-04-08) 1 commit
  (merged to 'next' on 2011-04-28 at 587f2d4)
 + pretty: quote rfc822 specials in email addresses

Will merge to "master" by the end of week #2.

* jn/setup-revisions-glob-and-friends-passthru (2011-04-21) 2 commits
  (merged to 'next' on 2011-04-28 at 6006cc4)
 + revisions: allow --glob and friends in parse_options-enabled commands
 + revisions: split out handle_revision_pseudo_opt function

* cn/log-parse-opt (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-28 at 02f2eac)
 + log: convert to parse-options

* jc/fix-add-u-unmerged (2011-04-20) 1 commit
  (merged to 'next' on 2011-04-28 at f7ed821)
 + Fix "add -u" that sometimes fails to resolve unmerged paths
 (this branch is used by jc/add-delete-default and jc/add-delete-default; uses jc/fix-diff-files-unmerged.)

* jc/fix-diff-files-unmerged (2011-04-22) 4 commits
  (merged to 'next' on 2011-04-28 at f1f837c)
 + diff-files: show unmerged entries correctly
 + diff: remove often unused parameters from diff_unmerge()
 + diff.c: return filepair from diff_unmerge()
 + test: use $_z40 from test-lib
 (this branch is used by jc/add-delete-default and jc/fix-add-u-unmerged.)

* js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix (2011-04-25) 1 commit
 + send-pack: avoid deadlock when pack-object dies early
 (this branch is used by js/maint-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #2.

* js/maint-send-pack-stateless-rpc-deadlock-fix (2011-04-25) 1 commit
  (merged to 'next' on 2011-04-28 at db7e04a)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
 (this branch uses js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #2.

* jn/run-command-error-failure (2011-04-20) 2 commits
  (merged to 'next' on 2011-04-26 at a1f171e)
 + run-command: handle short writes and EINTR in die_child
 + tests: check error message from run_command

Will merge to "master" by the end of week #2.

* nd/struct-pathspec (2011-04-05) 5 commits
  (merged to 'next' on 2011-04-25 at 65dbe80)
 + pathspec: rename per-item field has_wildcard to use_wildcard
 + Improve tree_entry_interesting() handling code
 + Convert read_tree{,_recursive} to support struct pathspec
 + Reimplement read_tree_recursive() using tree_entry_interesting()
 + Merge branch 'en/object-list-with-pathspec' into 'nd/struct-pathspec'

Will merge to "master" by the end of week #2.

* jc/magic-pathspec (2011-04-06) 3 commits
  (merged to 'next' on 2011-04-25 at 788cd46)
 + magic pathspec: add ":(icase)path" to match case insensitively
 + magic pathspec: futureproof shorthand form
 + magic pathspec: add tentative ":/path/from/top/level" pathspec support

Thanks to Peff, Duy, and Michael for helping to whip the syntax and the
basic semantics into a not-so-horrible shape.

Will merge to "master" by the end of week #2.

----------------------------------------------------------------
[Discarded]

* mg/branch-wildcard-config (2011-05-02) 1 commit
 - Add default merge options for all branches

It seems a separate merge.ff configuration would be more favourable
than this approach.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2022, #02; Fri, 5)
@ 2022-08-06  3:38  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-08-06  3:38 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.

A handful of topics have graduated to the 'master' track, and half a
dozen topics are now in 'next' to cook.  We are at the end of Week
#4 of a 12-week cycle (cf. https://tinyurl.com/gitCal).

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']

* ds/midx-with-less-memory (2022-07-27) 4 commits
  (merged to 'next' on 2022-07-27 at 9ac7aed9f6)
 + write_midx_bitmap(): drop unused refs_snapshot parameter
  (merged to 'next' on 2022-07-20 at 250d257c3e)
 + midx: reduce memory pressure while writing bitmaps
 + midx: extract bitmap write setup
 + pack-bitmap-write: use const for hashes

 The codepath to write multi-pack index has been taught to release a
 large chunk of memory that holds an array of objects in the packs,
 as soon as it is done with the array, to reduce memory consumption.
 source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>


* en/merge-restore-to-pristine (2022-07-22) 8 commits
  (merged to 'next' on 2022-07-27 at daafc50c15)
 + merge: do not exit restore_state() prematurely
 + merge: ensure we can actually restore pre-merge state
 + merge: make restore_state() restore staged state too
 + merge: fix save_state() to work when there are stat-dirty files
 + merge: do not abort early if one strategy fails to handle the merge
 + merge: abort if index does not match HEAD for trivial merges
 + merge-resolve: abort if index does not match HEAD
 + merge-ort-wrappers: make printed message match the one from recursive

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.
 source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 1d2bef98f6)
 + config.c: NULL check when reading protected config

 Fix-up for what has been merged to 'master' recently.
 source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>


* jc/string-list-cleanup (2022-07-20) 1 commit
  (merged to 'next' on 2022-07-27 at 858a0b2a28)
 + builtin/remote.c: use the right kind of STRING_LIST_INIT

 Code clean-up.
 source: <xmqq7d471dns.fsf@gitster.g>


* jr/gitweb-title-shortening (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 7528e87220)
 + gitweb: remove title shortening heuristics

 Gitweb had legacy URL shortener that is specific to the way
 projects hosted on kernel.org used to (but no longer) work, which
 has been removed.
 source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>


* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 8e6237d6b0)
 + fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.
 source: <20220726162712.1774355-1-jonathantanmy@google.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
  (merged to 'next' on 2022-07-25 at 92a39a5ff2)
 + xdiff: introduce XDL_ALLOC_GROW()
 + xdiff: introduce XDL_CALLOC_ARRAY()
 + xdiff: introduce xdl_calloc
 + xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* rs/mergesort (2022-07-17) 10 commits
  (merged to 'next' on 2022-07-27 at 42607a44bb)
 + mergesort: remove llist_mergesort()
 + packfile: use DEFINE_LIST_SORT
 + fetch-pack: use DEFINE_LIST_SORT
 + commit: use DEFINE_LIST_SORT
 + blame: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT_DEBUG
 + mergesort: add macros for typed sort of linked lists
 + mergesort: tighten merge loop
 + mergesort: unify ranks loops

 Make our mergesort implementation type-safe.
 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>


* sa/cat-file-mailmap (2022-07-18) 4 commits
  (merged to 'next' on 2022-07-27 at 59c4eb32b3)
 + cat-file: add mailmap support
 + ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 + ident: move commit_rewrite_person() to ident.c
 + revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.
 source: <20220718195102.66321-1-siddharthasthana31@gmail.com>


* tb/cat-file-z (2022-07-22) 2 commits
  (merged to 'next' on 2022-07-28 at 78731f0fdb)
 + builtin/cat-file.c: support NUL-delimited input with `-z`
 + t1006: extract --batch-command inputs to variables

 Operating modes like "--batch" of "git cat-file" command learned to
 take NUL-terminated input, instead of one-item-per-line.
 source: <cover.1658532524.git.me@ttaylorr.com>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
  (merged to 'next' on 2022-07-25 at e3464c2c1d)
 + commit-graph: fix corrupt upgrade from generation v1 to v2
 + commit-graph: introduce `repo_find_commit_pos_in_graph()`
 + t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.
 source: <cover.1657667404.git.me@ttaylorr.com>


* tk/untracked-cache-with-uall (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-25 at b792dd5012)
 + read-cache: make `do_read_index()` always set up `istate->repo`

 Fix for a bug that makes write-tree to fail to write out a
 non-existent index as a tree, introduced in 2.37.
 source: <20220722212232.833188-1-martin.agren@gmail.com>


* zh/ls-files-format (2022-07-23) 1 commit
  (merged to 'next' on 2022-07-27 at b7301f16ce)
 + ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.
 source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>

--------------------------------------------------
[New Topics]

* lt/symbolic-ref-sanity (2022-08-01) 1 commit
  (merged to 'next' on 2022-08-03 at 443647b94a)
 + symbolic-ref: refuse to set syntactically invalid target

 "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 Will merge to 'master'.
 source: <YugYNzQYWqDCmOqN@coredump.intra.peff.net>


* vd/scalar-generalize-diagnose (2022-08-03) 10 commits
 - scalar: update technical doc roadmap
 - scalar-diagnose: use 'git diagnose --all'
 - builtin/bugreport.c: create '--diagnose' option
 - builtin/diagnose.c: gate certain data behind '--all'
 - builtin/diagnose.c: create 'git diagnose' builtin
 - scalar-diagnose: move functionality to common location
 - scalar-diagnose: move 'get_disk_info()' to 'compat/'
 - scalar-diagnose: add directory to archiver more gently
 - scalar-diagnose: avoid 32-bit overflow of size_t
 - scalar-diagnose: use "$GIT_UNZIP" in test

 The "diagnose" feature to create a zip archive for diagnostic
 material has been lifted from "scalar" and made into a feature of
 "git bugreport".
 source: <pull.1310.v2.git.1659577543.gitgitgadget@gmail.com>


* gc/git-reflog-doc-markup (2022-08-01) 1 commit
  (merged to 'next' on 2022-08-05 at f2d8721ab2)
 + Documentation/git-reflog: remove unneeded \ from \{

 Doc mark-up fix.

 Will merge to 'master'.
 source: <pull.1304.git.git.1659387885711.gitgitgadget@gmail.com>


* jk/pipe-command-nonblock (2022-08-03) 1 commit
 - pipe_command(): mark stdin descriptor as non-blocking

 Fix deadlocks between main Git process and subprocess spawned via
 the pipe_command() API, that can kill "git add -p" that was
 reimplemented in C recently.

 Needs waiting for corresponding change to Windows to put the pipe
 into nonblock mode.
 cf. <YulFTSTbVaTwuQtt@coredump.intra.peff.net>
 source: <YunxHOa2sJeEpJxd@coredump.intra.peff.net>


* ab/plug-revisions-leak (2022-08-03) 6 commits
  (merged to 'next' on 2022-08-05 at d1ca88976f)
 + revisions API: don't leak memory on argv elements that need free()-ing
 + bisect.c: partially fix bisect_rev_setup() memory leak
 + log: refactor "rev.pending" code in cmd_show()
 + log: fix a memory leak in "git show <revision>..."
 + test-fast-rebase helper: use release_revisions() (again)
 + bisect.c: add missing "goto" for release_revisions()

 Plug a bit more leaks in the revisions API.

 Will merge to 'master'.
 source: <cover-v3-0.6-00000000000-20220802T152925Z-avarab@gmail.com>


* jc/rerere-autoupdate-doc (2022-08-03) 2 commits
 - doc: clarify rerere-autoupdate
 - doc: consolidate --rerere-autoupdate description

 Update documentation on the "--[no-]rerere-autoupdate" option.

 Will merge to 'next'.
 source: <xmqq35f2ysd9.fsf@gitster.g>


* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
 - config: let feature.experimental imply gc.cruftPacks=true
 - gc: add tests for --cruft and friends

 Enable gc.cruftpacks by default for those who opt into
 feature.experimental setting.

 Expecting a reroll.
 cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
 cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
 source: <20220803205721.3686361-1-emilyshaffer@google.com>


* pw/use-glibc-tunable-for-malloc-optim (2022-08-04) 1 commit
 - tests: cache glibc version check

 Avoid repeatedly running getconf to ask libc version in the test
 suite, and instead just as it once per script.

 Will merge to 'next'?
 source: <pull.1311.git.1659620305757.gitgitgadget@gmail.com>


* vd/sparse-reset-checkout-fixes (2022-08-04) 4 commits
 - unpack-trees: handle missing sparse directories
 - cache.h: replace 'index_entry_exists()' with 'index_name_pos_sparse()'
 - oneway_diff: handle removed sparse directories
 - checkout: fix nested sparse directory diff in sparse index

 Fixes to sparse index compatibility work for "reset" and "checkout"
 commands.

 Expecting a reroll to further clarify [4/4].
 cf. <3825ef9a-4c71-21ed-6452-bbd322ca839c@github.com>
 source: <pull.1312.git.1659645967.gitgitgadget@gmail.com>


* ab/hooks-regression-fix (2022-08-05) 1 commit
 - hook API: don't segfault on strbuf_addf() to NULL "out"

 A follow-up fix to a fix for a regression in 2.36.

 Will merge to 'next' and then to 'master'.
 source: <patch-1.1-2450e3e65cf-20220805T141402Z-avarab@gmail.com>

--------------------------------------------------
[Stalled]

* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>

--------------------------------------------------
[Cooking]

* ab/tech-docs-to-help (2022-08-04) 12 commits
 - docs: move http-protocol docs to man section 5
 - docs: move cruft pack docs to gitformat-pack
 - docs: move pack format docs to man section 5
 - docs: move signature docs to man section 5
 - docs: move index format docs to man section 5
 - docs: move protocol-related docs to man section 5
 - docs: move commit-graph format docs to man section 5
 - git docs: add a category for file formats, protocols and interfaces
 - git docs: add a category for user-facing file, repo and command UX
 - git help doc: use "<doc>" instead of "<guide>"
 - help.c: remove common category behavior from drop_prefix() behavior
 - help.c: refactor drop_prefix() to use a "switch" statement"

 Expose a lot of "tech docs" via "git help" interface.

 Will merge to 'next'?
 source: <cover-v8-00.12-00000000000-20220804T162138Z-avarab@gmail.com>


* sg/parse-options-subcommand (2022-07-25) 20 commits
 - builtin/worktree.c: let parse-options parse subcommands
 - builtin/stash.c: let parse-options parse subcommands
 - builtin/sparse-checkout.c: let parse-options parse subcommands
 - builtin/remote.c: let parse-options parse subcommands
 - builtin/reflog.c: let parse-options parse subcommands
 - builtin/notes.c: let parse-options parse subcommands
 - builtin/multi-pack-index.c: let parse-options parse subcommands
 - builtin/hook.c: let parse-option parse subcommands
 - builtin/gc.c: let parse-options parse 'git maintenance's subcommands
 - builtin/commit-graph.c: let parse-options parse subcommands
 - builtin/bundle.c: let parse-options parse subcommands
 - parse-options: add support for parsing subcommands
 - parse-options: drop leading space from '--git-completion-helper' output
 - parse-options: clarify the limitations of PARSE_OPT_NODASH
 - parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
 - api-parse-options.txt: fix description of OPT_CMDMODE
 - t0040-parse-options: test parse_options() with various 'parse_opt_flags'
 - t5505-remote.sh: check the behavior without a subcommand
 - t3301-notes.sh: check that default operation mode doesn't take arguments
 - git.c: update NO_PARSEOPT markings

 Introduce the "subcommand" mode to parse-options API and update the
 command line parser of Git commands with subcommands.
 source: <20220725123857.2773963-1-szeder.dev@gmail.com>


* ds/bundle-uri-clone (2022-08-02) 5 commits
 - clone: --bundle-uri cannot be combined with --depth
 - bundle-uri: add support for http(s):// and file://
 - clone: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability

 Implement "git clone --bundle-uri".
 source: <pull.1300.v2.git.1659443384.gitgitgadget@gmail.com>


* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
  (merged to 'next' on 2022-08-01 at 1d4f4c32a6)
 + cmake: support local installations of git

 Fix build procedure for Windows that uses CMake so that it can pick
 up the shell interpreter from local installation location.

 Will merge to 'master'.
 source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>


* ds/decorate-filter-tweak (2022-08-05) 11 commits
 - fetch: use ref_namespaces during prefetch
 - maintenance: stop writing log.excludeDecoration
 - log: create log.initialDecorationSet=all
 - log: add --clear-decorations option
 - log: add default decoration filter
 - log-tree: use ref_namespaces instead of if/else-if
 - refs: use ref_namespaces for replace refs base
 - refs: add array of ref namespaces
 - t4207: test coloring of grafted decorations
 - t4207: modernize test
 - refs: allow "HEAD" as decoration filter

 The namespaces used by "log --decorate" from "refs/" hierarchy by
 default has been tightened.
 source: <pull.1301.v3.git.1659722323.gitgitgadget@gmail.com>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll.
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
  (merged to 'next' on 2022-08-01 at 10499943b7)
 + lstat(mingw): correctly detect ENOTDIR scenarios

 Fix to lstat() emulation on Windows.

 Will merge to 'master'.
 source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>


* js/mingw-with-python (2022-07-29) 3 commits
  (merged to 'next' on 2022-08-01 at 73b8f06182)
 + mingw: remove unneeded `NO_CURL` directive
 + mingw: remove unneeded `NO_GETTEXT` directive
 + windows: include the Python bits when building Git for Windows

 Conditionally allow building Python interpreter on Windows

 Will merge to 'master'.
 source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>


* ab/submodule-helper-prep (2022-08-03) 28 commits
 - submodule--helper: fix bad config API usage
 - submodule--helper: libify "must_die_on_failure" code paths (for die)
 - submodule--helper: libify "must_die_on_failure" code paths
 - submodule--helper: libify determine_submodule_update_strategy()
 - submodule--helper: don't exit() on failure, return
 - submodule--helper: use "code" in run_update_command()
 - submodule--helper: move submodule_strategy_to_string() to only user
 - submodule--helper: don't call submodule_strategy_to_string() in BUG()
 - submodule--helper: add missing braces to "else" arm
 - submodule--helper: return "ret", not "1" from update_submodule()
 - submodule--helper: rename "int res" to "int ret"
 - submodule--helper: don't redundantly check "else if (res)"
 - submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
 - submodule--helper: add "const" to copy of "update_data"
 - submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
 - submodule--helper: move "sb" in clone_submodule() to its own scope
 - submodule--helper: use xstrfmt() in clone_submodule()
 - submodule--helper: replace memset() with { 0 }-initialization
 - submodule--helper style: add \n\n after variable declarations
 - submodule--helper style: don't separate declared variables with \n\n
 - submodule--helper: move "resolve-relative-url-test" to a test-tool
 - submodule--helper: move "check-name" to a test-tool
 - submodule--helper: move "is-active" to a test-tool
 - test-tool submodule-config: remove unused "--url" handling
 - submodule--helper: remove unused "list" helper
 - submodule--helper: remove unused "name" helper
 - submodule tests: test for "add <repository> <abs-path>"
 - submodule tests: test usage behavior
 (this branch is used by ab/submodule-helper-leakfix.)

 source: <cover-v2-00.28-00000000000-20220802T154036Z-avarab@gmail.com>


* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
 - docs: add CONFIGURATION sections that fuzzy map to built-ins
 - docs: add CONFIGURATION sections that map to a built-in
 - log docs: de-duplicate configuration sections
 - difftool docs: de-duplicate configuration sections
 - notes docs: de-duplicate configuration sections
 - apply docs: de-duplicate configuration sections
 - send-email docs: de-duplicate configuration sections
 - grep docs: de-duplicate configuration sections
 - docs: add and use include template for config/* includes

 Share the text used to explain configuration variables used by "git
 <subcmd>" in "git help <subcmd>" with the text from "git help config".

 Expecting a reroll.
 cf. <CAHd-oW5mD-H1kvuF9VEVb8KjaSkUSUpBH-WAkpCn6_Ci8o888w@mail.gmail.com>
 cf. <CAHd-oW7s6Hu24uTjCW9ROBbJkA5+7TCu32a4L_BXVLhcvw5kSw@mail.gmail.com>
 cf. <xmqqlesb4lwh.fsf@gitster.g>
 source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>


* jk/struct-zero-init-with-older-gcc (2022-07-31) 1 commit
  (merged to 'next' on 2022-08-01 at cde4f95964)
 + config.mak.dev: squelch -Wno-missing-braces for older gcc

 Older gcc with -Wall complains about the universal zero initializer
 "struct s = { 0 };" idiom, which makes developers' lives
 inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
 build procedure has been tweaked to help these compilers.

 Will merge to 'master'.
 source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>


* js/ort-clean-up-after-failed-merge (2022-07-31) 2 commits
  (merged to 'next' on 2022-08-01 at 0c9f02f3ec)
 + merge-ort: do leave trace2 region even if checkout fails
 + merge-ort: clean up after failed merge

 Plug memory leaks in the failure code path in the "merge-ort" merge
 strategy backend.

 Will merge to 'master'.
 source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>


* js/t5351-freebsd-fix (2022-07-29) 2 commits
  (merged to 'next' on 2022-08-01 at b47609e891)
 + t5351: avoid using `test_cmp` for binary data
 + t5351: avoid relying on `core.fsyncMethod = batch` to be supported

 Some tests assumed that core.fsyncMethod=batch is supported
 everywhere, which broke FreeBSD.

 Will merge to 'master'.
 source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>


* cw/remote-object-info (2022-07-28) 6 commits
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: initialization bug fix
 - fetch-pack: move fetch initialization
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.
 source: <20220728230210.2952731-1-calvinwan@google.com>


* ab/leak-check (2022-07-27) 15 commits
  (merged to 'next' on 2022-08-05 at 2a6b9c8432)
 + CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
 + upload-pack: fix a memory leak in create_pack_file()
 + leak tests: mark passing SANITIZE=leak tests as leak-free
 + leak tests: don't skip some tests under SANITIZE=leak
 + test-lib: have the "check" mode for SANITIZE=leak consider leak logs
 + test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
 + test-lib: simplify by removing test_external
 + tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
 + t/Makefile: don't remove test-results in "clean-except-prove-cache"
 + test-lib: add a SANITIZE=leak logging mode
 + t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
 + test-lib: add a --invert-exit-code switch
 + test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
 + test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
 + test-lib: use $1, not $@ in test_known_broken_{ok,failure}_

 Extend SANITIZE=leak checking and declare more tests "currently leak-free".

 Will merge to 'master'.
 source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>


* mt/rot13-in-c (2022-07-31) 4 commits
 - tests: use the new C rot13-filter helper to avoid PERL prereq
 - t0021: implementation the rot13-filter.pl script in C
 - t0021: avoid grepping for a Perl-specific string at filter output
 - Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c

 Test portability improvements.
 source: <cover.1659291025.git.matheus.bernardino@usp.br>


* tl/trace2-config-scope (2022-07-22) 2 commits
 - tr2: shows scope unconditionally in addition to key-value pair
 - api-trace2.txt: print config key-value pair

 Tweak trace2 output about configuration variables.

 Needs reviewer response
 cf. <20220801122515.23146-1-tenglong.tl@alibaba-inc.com>
 source: <cover.1658472474.git.dyroneteng@gmail.com>


* ab/submodule-helper-leakfix (2022-08-03) 18 commits
 - submodule--helper: fix a configure_added_submodule() leak
 - submodule--helper: free rest of "displaypath" in "struct update_data"
 - submodule--helper: free some "displaypath" in "struct update_data"
 - submodule--helper: fix a memory leak in print_status()
 - submodule--helper: fix a leak in module_add()
 - submodule--helper: fix obscure leak in module_add()
 - submodule--helper: fix "reference" leak
 - submodule--helper: fix a memory leak in get_default_remote_submodule()
 - submodule--helper: fix a leak with repo_clear()
 - submodule--helper: fix "sm_path" and other "module_cb_list" leaks
 - submodule--helper: fix "errmsg_str" memory leak
 - submodule--helper: add and use *_release() functions
 - submodule--helper: don't leak {run,capture}_command() cp.dir argument
 - submodule--helper: "struct pathspec" memory leak in module_update()
 - submodule--helper: fix most "struct pathspec" memory leaks
 - submodule--helper: fix trivial get_default_remote_submodule() leak
 - submodule--helper: fix a leak in "clone_submodule"
 - Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
 (this branch uses ab/submodule-helper-prep.)

 Plugging leaks in submodule--helper.

 Getting there.
 source: <cover-v5-00.17-00000000000-20220802T155002Z-avarab@gmail.com>


* cw/submodule-merge-messages (2022-08-04) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.

 Getting closer?
 source: <20220804195105.1303455-1-calvinwan@google.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Expecting a reroll.
 cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* ac/bitmap-lookup-table (2022-07-20) 6 commits
 - bitmap-lookup-table: add performance tests for lookup table
 - p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Seems to be flaky-broken under SHA-256.
 cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
 source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-07-25) 2 commits
 - bundle-uri: add example bundle organization
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>


* mt/doc-config (2022-07-14) 3 commits
 . doc: notes: unify configuration variables definitions
 . doc: apply: unify configuration variables definitions
 . doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Retracted.
 cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 . cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
 source: <20220715092527.1567837-1-mail@beyermatthias.de>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] GIT 1.5.2
@ 2007-05-20  9:08  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-05-20  9:08 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

The latest feature release GIT 1.5.2 is available at the usual
places:

  http://www.kernel.org/pub/software/scm/git/

  git-1.5.2.tar.{gz,bz2}			(tarball)
  git-htmldocs-1.5.2.tar.{gz,bz2}		(preformatted docs)
  git-manpages-1.5.2.tar.{gz,bz2}		(preformatted docs)
  RPMS/$arch/git-*-1.5.2-1.$arch.rpm	(RPM)

GIT v1.5.2 Release Notes
========================

Updates since v1.5.1
--------------------

* Plumbing level superproject support.

  You can include a subdirectory that has an independent git
  repository in your index and tree objects of your project
  ("superproject").  This plumbing (i.e. "core") level
  superproject support explicitly excludes recursive behaviour.

  The "subproject" entries in the index and trees of a superproject
  are incompatible with older versions of git.  Experimenting with
  the plumbing level support is encouraged, but be warned that
  unless everybody in your project updates to this release or
  later, using this feature would make your project
  inaccessible by people with older versions of git.

* Plumbing level gitattributes support.

  The gitattributes mechanism allows you to add 'attributes' to
  paths in your project, and affect the way certain git
  operations work.  Currently you can influence if a path is
  considered a binary or text (the former would be treated by
  'git diff' not to produce textual output; the latter can go
  through the line endings conversion process in repositories
  with core.autocrlf set), expand and unexpand '$Id$' keyword
  with blob object name, specify a custom 3-way merge driver,
  and specify a custom diff driver.  You can also apply
  arbitrary filter to contents on check-in/check-out codepath
  but this feature is an extremely sharp-edged razor and needs
  to be handled with caution (do not use it unless you
  understand the earlier mailing list discussion on keyword
  expansion).  These conversions apply when checking files in
  or out, and exporting via git-archive.

* The packfile format now optionally suports 64-bit index.

  This release supports the "version 2" format of the .idx
  file.  This is automatically enabled when a huge packfile
  needs more than 32-bit to express offsets of objects in the
  pack.

* Comes with an updated git-gui 0.7.1

* Updated gitweb:

  - can show combined diff for merges;
  - uses font size of user's preference, not hardcoded in pixels;
  - can now 'grep';

* New commands and options.

  - "git bisect start" can optionally take a single bad commit and
    zero or more good commits on the command line.

  - "git shortlog" can optionally be told to wrap its output.

  - "subtree" merge strategy allows another project to be merged in as
    your subdirectory.

  - "git format-patch" learned a new --subject-prefix=<string>
    option, to override the built-in "[PATCH]".

  - "git add -u" is a quick way to do the first stage of "git
    commit -a" (i.e. update the index to match the working
    tree); it obviously does not make a commit.

  - "git clean" honors a new configuration, "clean.requireforce".  When
    set to true, this makes "git clean" a no-op, preventing you
    from losing files by typing "git clean" when you meant to
    say "make clean".  You can still say "git clean -f" to
    override this.

  - "git log" family of commands learned --date={local,relative,default}
    option.  --date=relative is synonym to the --relative-date.
    --date=local gives the timestamp in local timezone.

* Updated behavior of existing commands.

  - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
    but $EMAIL is set, the latter is used as a substitute.

  - "git diff --stat" shows size of preimage and postimage blobs
    for binary contents.  Earlier it only said "Bin".

  - "git lost-found" shows stuff that are unreachable except
    from reflogs.

  - "git checkout branch^0" now detaches HEAD at the tip commit
    on the named branch, instead of just switching to the
    branch (use "git checkout branch" to switch to the branch,
    as before).

  - "git bisect next" can be used after giving only a bad commit
    without giving a good one (this starts bisection half-way to
    the root commit).  We used to refuse to operate without a
    good and a bad commit.

  - "git push", when pushing into more than one repository, does
    not stop at the first error.

  - "git archive" does not insist you to give --format parameter
    anymore; it defaults to "tar".

  - "git cvsserver" can use backends other than sqlite.

  - "gitview" (in contrib/ section) learned to better support
    "git-annotate".

  - "git diff $commit1:$path2 $commit2:$path2" can now report
    mode changes between the two blobs.

  - Local "git fetch" from a repository whose object store is
    one of the alternates (e.g. fetching from the origin in a
    repository created with "git clone -l -s") avoids
    downloading objects unnecessarily.

  - "git blame" uses .mailmap to canonicalize the author name
    just like "git shortlog" does.

  - "git pack-objects" pays attention to pack.depth
    configuration variable.

  - "git cherry-pick" and "git revert" does not use .msg file in
    the working tree to prepare commit message; instead it uses
    $GIT_DIR/MERGE_MSG as other commands do.

* Builds

  - git-p4import has never been installed; now there is an
    installation option to do so.

  - gitk and git-gui can be configured out.

  - Generated documentation pages automatically get version
    information from GIT_VERSION.

  - Parallel build with "make -j" descending into subdirectory
    was fixed.

* Performance Tweaks

  - Optimized "git-rev-list --bisect" (hence "git-bisect").

  - Optimized "git-add $path" in a large directory, most of
    whose contents are ignored.

  - Optimized "git-diff-tree" for reduced memory footprint.

  - The recursive merge strategy updated a worktree file that
    was changed identically in two branches, when one of them
    renamed it.  We do not do that when there is no rename, so
    match that behaviour.  This avoids excessive rebuilds.

  - The default pack depth has been increased to 50, as the
    recent addition of delta_base_cache makes deeper delta chains
    much less expensive to access.  Depending on the project, it was
    reported that this reduces the resulting pack file by 10%
    or so.


Fixes since v1.5.1
------------------

All of the fixes in v1.5.1 maintenance series are included in
this release, unless otherwise noted.

* Bugfixes

  - Switching branches with "git checkout" refused to work when
    a path changes from a file to a directory between the
    current branch and the new branch, in order not to lose
    possible local changes in the directory that is being turned
    into a file with the switch.  We now allow such a branch
    switch after making sure that there is no locally modified
    file nor un-ignored file in the directory.  This has not
    been backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - Merging branches that have a file in one and a directory in
    another at the same path used to get quite confused.  We
    handle such a case a bit more carefully, even though that is
    still left as a conflict for the user to sort out.  This
    will not be backported to 1.5.1.x series, as it is rather an
    intrusive change.

  - git-fetch had trouble with a remote with insanely large number
    of refs.

  - "git clean -d -X" now does not remove non-excluded directories.

  - rebasing (without -m) a series that changes a symlink to a directory
    in the middle of a path confused git-apply greatly and refused to
    operate.

----------------------------------------------------------------

Changes since v1.5.1 are as follows:

Adam Roben (5):
      Remove usernames from all commit messages, not just when using svmprops
      git-svn: Don't rely on $_ after making a function call
      git-svn: Ignore usernames in URLs in find_by_url
      git-svn: Added 'find-rev' command
      git-svn: Add 'find-rev' command

Alex Riesen (22):
      Fix passing of TCLTK_PATH to git-gui
      Use rev-list --reverse in git-rebase.sh
      Document -g (--walk-reflogs) option of git-log
      Fix t4201: accidental arithmetic expansion
      Fix permissions on test scripts
      Fix overwriting of files when applying contextually independent diffs
      Tests for core subproject support
      Simplify calling of CR/LF conversion routines
      Fix a typo in crlf conversion code
      Fix crash in t0020 (crlf conversion)
      Fix handle leak in write_tree
      Avoid excessive rewrites in merge-recursive
      Add a test for merging changed and rename-changed branches
      Ignore merged status of the file-level merge
      Use strlcpy instead of strncpy in mailmap.c
      Fix read_mailmap to handle a caller uninterested in repo abbreviation
      Remove pointless calls to access(2) when checking for .mailmap
      Include mailmap.h in mailmap.c to catch mailmap interface changes
      Small correction in reading of commit headers
      Handle return code of parse_commit in revision machinery
      Use GIT_OBJECT_DIR for temporary files of pack-objects
      Allow fetching references from any namespace

Alexandre Julliard (2):
      git.el: Add a commit description to the reflog.
      http-fetch: Disable use of curl multi support for libcurl < 7.16.

Amos Waterland (1):
      wcwidth redeclaration

Andrew Ruder (17):
      Add policy on user-interface changes
      Update git-am documentation
      Update git-applymbox documentation
      Update git-apply documentation
      Update git-annotate/git-blame documentation
      Update git-archive documentation
      Update git-cherry-pick documentation
      Fix unmatched emphasis tag in git-tutorial
      Update git-config documentation
      Removing -n option from git-diff-files documentation
      Document additional options for git-fetch
      Update git-fmt-merge documentation
      Update git-grep documentation
      Update -L documentation for git-blame/git-annotate
      Update git-http-push documentation
      Update git-local-fetch documentation
      Update git-http-fetch documentation

Andy Parkins (6):
      Show binary file size change in diff --stat
      post-receive-email example hook: fastforward should have been fast_forward
      post-receive-email example hook: detect rewind-only updates and output sensible message
      post-receive-email example hook: sed command for getting description was wrong
      Use $Id$ as the ident attribute keyword rather than $ident$ to be consistent with other VCSs
      Fix crlf attribute handling to match documentation

Andy Whitcroft (2):
      fix up strtoul_ui error handling
      git name-rev writes beyond the end of malloc() with large generations

Aneesh Kumar K.V (1):
      gitview: annotation support

Arjen Laarhoven (5):
      usermanual.txt: some capitalization nits
      t3200-branch.sh: small language nit
      t5300-pack-object.sh: portability issue using /usr/bin/stat
      Makefile: iconv() on Darwin has the old interface
      Document 'opendiff' value in config.txt and git-mergetool.txt

Brian Gernhardt (7):
      Remove unused WITH_OWN_SUBPROCESS_PY from RPM spec
      Fix t4200-rerere for white-space from "wc -l"
      Document --left-right option to rev-list.
      Distinguish branches by more than case in tests.
      Remove case-sensitive file in t3030-merge-recursive.
      Reverse the order of -b and --track in the man page.
      Ignore all man sections as they are generated files.

Bryan Larsen (2):
      Allow PERL_PATH="/usr/bin/env perl"
      posix compatibility for t4200

Carl Worth (1):
      Mention version 1.5.1 in tutorial and user-manual

Carlos Rica (1):
      Use const qualifier for 'sha1' parameter in delete_ref function

Christian Couder (4):
      Bisect: teach "bisect start" to optionally use one bad and many good revs.
      Documentation: bisect: "start" accepts one bad and many good commits
      Bisect: simplify "bisect start" logging.
      Bisect: rename "t/t6030-bisect-run.sh" to "t/t6030-bisect-porcelain.sh".

Dana L. How (2):
      Fix lseek(2) calls with args 2 and 3 swapped
      Create pack-write.c for common pack writing code

Daniel Barkalow (1):
      Make xstrndup common

Eric Wong (14):
      git-svn: bail out on incorrect command-line options
      git-svn: bail out on incorrect command-line options
      git-svn: dcommit/rebase confused by patches with git-svn-id: lines
      git-svn: fix log command to avoid infinite loop on long commit messages
      git-svn: respect lower bound of -r/--revision when following parent
      git-svn: quiet some warnings when run only with --version/--help
      git-svn: don't allow globs to match regular files
      perl: install private Error.pm if the site version is older than our own
      git-svn: don't drop the username from URLs when dcommit is run
      git-svn: clean up caching of SVN::Ra functions
      git-svn: fix segfaults due to initial SVN pool being cleared
      git-svn: don't attempt to minimize URLs by default
      git-svn: avoid crashing svnserve when creating new directories
      git-svn: don't minimize-url when doing an init that tracks multiple paths

Eygene Ryabinkin (13):
      Teach gitk to use the user-defined UI font everywhere.
      Improve look-and-feel of the gitk tool.
      Add the WITH_P4IMPORT knob to the Makefile.
      Added git-p4 package to the list of git RPMs.
      Added correct Python path to the RPM specfile.
      NO_TCLTK
      Add --with-tcltk and --without-tcltk to configure.
      Rewrite Tcl/Tk interpreter path for the GUI tools.
      Eliminate checks of user-specified Tcl/Tk interpreter.
      Allow wish interpreter to be defined with TCLTK_PATH
      Teach git-gui to use the user-defined UI font everywhere.
      Improve look-and-feel of the git-gui tool.
      Do not break git-gui messages into multiple lines.

Fernando J. Pereda (1):
      Makefile: Add '+' to QUIET_SUBDIR0 to fix parallel make.

Frank Lichtenheld (35):
      cvsserver: Introduce new state variable 'method'
      cvsserver: Handle three part keys in git config correctly
      cvsserver: Allow to override the configuration per access method
      cvsserver: Make the database backend configurable
      cvsserver: Abort if connect to database fails
      Documentation: Replace @@GIT_VERSION@@ in documentation
      Documentation: Add version information to man pages
      cvsserver: Use DBI->table_info instead of DBI->tables
      cvsimport: sync usage lines with existing options
      cvsimport: Improve documentation of CVSROOT and CVS module determination
      cvsimport: Improve usage error reporting
      cvsimport: Reorder options in documentation for better understanding
      cvsimport: Improve formating consistency
      cvsserver: small corrections to asciidoc documentation
      cvsserver: Corrections to the database backend configuration
      cvsserver: Add asciidoc documentation for new database backend configuration
      gitweb: Allow forks with project list file
      gitweb: Allow configuring the default projects order and add order 'none'
      cvsserver: Fix handling of diappeared files on update
      cvsserver: Allow to "add" a removed file
      cvsserver: Reword documentation on necessity of write access
      cvsserver: Document the GIT branches -> CVS modules mapping more prominently
      config.txt: Document gitcvs.allbinary
      config.txt: Document core.autocrlf
      config.txt: Change pserver to server in description of gitcvs.*
      config.txt: Fix grammatical error in description of http.noEPSV
      config.txt: Add gitcvs.db* variables
      git-shortlog: Fix two formatting errors in asciidoc documentation
      cvsserver: Handle re-added files correctly
      cvsserver: Add test cases for git-cvsserver
      cvsserver: Limit config parser to needed options
      cvsserver: Don't send mixed messages to clients
      builtin-log.c: Fix typo in comment
      Documentation: format-patch has no --mbox option
      git-am: Clean up the asciidoc documentation

Geert Bosch (1):
      Fix renaming branch without config file

Gerrit Pape (5):
      rename contrib/hooks/post-receieve-email to contrib/hooks/post-receive-email.
      variable $projectdesc needs to be set before checking against unchanged default.
      Have sample update hook not refuse deleting a branch through push.
      Documentation/git-reset.txt: suggest git commit --amend in example.
      gitweb: choose appropriate view for file type if a= parameter missing

Ismail Dönmez (1):
      gitweb: use decode_utf8 directly

J. Bruce Fields (28):
      Documentation: minor edits of git-lost-found manpage
      Documentation: clarify git-checkout -f, minor editing
      Documentation: clarify track/no-track option.
      user-manual: fix discussion of default clone
      user-manual: detached HEAD
      user-manual: start revising "internals" chapter
      user-manual: use detached head when rewriting history
      user-manual: more discussion of detached heads, fix typos
      user-manual: add section ID's
      user-manual: clean up fast-forward and dangling-objects sections
      user-manual: fix .gitconfig editing examples
      user-manual: miscellaneous editing
      user-manual: stop deprecating the manual
      user-manual: fix clone and fetch typos
      user-manual: revise birdseye-view chapter
      glossary: expand and clarify some definitions, prune cross-references
      user-manual: move quick-start to an appendix
      Documentation: remove howto's now incorporated into manual
      user-manual: move howto/make-dist.txt into user manual
      user-manual: move howto/using-topic-branches into manual
      user-manual: add a "counting commits" example
      user-manual: introduce git
      user-manual: listing commits reachable from some refs not others
      user-manual: reorganize public git repo discussion
      tutorials: add user-manual links
      tutorial: revise index introduction
      user-manual: discourage shared repository
      user-manual: finding commits referencing given file content

Jakub Narebski (20):
      gitweb: Whitespace cleanup - tabs are for indent, spaces are for align (3)
      gitweb: Quote hash keys, and do not use barewords keys
      gitweb: Fix bug in "blobdiff" view for split (e.g. file to symlink) patches
      diff format documentation: describe raw combined diff format
      gitweb: Add parsing of raw combined diff format to parse_difftree_raw_line
      gitweb: Add combined diff support to git_difftree_body
      gitweb: Add combined diff support to git_patchset_body
      gitweb: Make it possible to use pre-parsed info in git_difftree_body
      gitweb: Show combined diff for merge commits in 'commitdiff' view
      gitweb: Show combined diff for merge commits in 'commit' view
      gitweb: Test if $from_id and $to_id are defined before comparison
      gitweb: Check if requested object exists
      gitweb: Fix "Use of unitialized value" warnings in empty repository
      Documentation: Split description of pretty formats of commit log
      gitweb: Add a few comments about %feature hash
      gitweb: Do not use absolute font sizes
      gitweb: Separate search regexp from search text
      gitweb: Empty patch for merge means trivial merge, not no differences
      gitweb: Fix error in git_patchset_body for deletion in merge commit
      gitweb: Fix "Use of uninitialized value" warning in git_feed

James Bowes (2):
      Document git-check-attr
      Documentation: fix typo in git-remote.txt

Jan Hudec (2):
      Updated documentation of hooks in git-receive-pack.
      Minor fixup to documentation of hooks in git-receive-pack.

Jari Aalto (4):
      Clarify SubmittingPatches Checklist
      git.7: Mention preformatted html doc location
      send-email documentation: clarify --smtp-server
      SPECIFYING RANGES typo fix: it it => it is

Jeff King (4):
      Documentation: don't reference non-existent 'git-cvsapplycommit'
      git-add: allow path limiting with -u
      Documentation/git-add: clarify -u with path limiting
      format-patch: add MIME-Version header when we add content-type.

Jim Meyering (3):
      (encode_85, decode_85): Mark source buffer pointer as "const".
      sscanf/strtoul: parse integers robustly
      sscanf/strtoul: parse integers robustly

Johan Herland (3):
      Fix signedness on return value from xread()
      Ensure return value from xread() is always stored into an ssize_t
      user-manual: Add section on ignoring files

Johannes Schindelin (7):
      Use print_wrapped_text() in shortlog
      dir.c(common_prefix): Fix two bugs
      t4201: Do not display weird characters on the terminal
      import-tars: be nice to wrong directory modes
      Teach import-tars about GNU tar's @LongLink extension.
      import-tars: Use the "Link indicator" to identify directories
      Add a birdview-on-the-source-code section to the user manual

Johannes Sixt (1):
      git-gui: Call changes "Staged" and "Unstaged" in file list titles.

Jonas Fonseca (1):
      git-tag(1): -v option is a subcommand; fix code block

Josh Triplett (5):
      Add clean.requireForce option, and add -f option to git-clean to override it
      Fix typo in git-am: s/Was is/Was it/
      Create a sysconfdir variable, and use it for ETC_GITCONFIG
      Add missing reference to GIT_COMMITTER_DATE in git-commit-tree documentation
      Fall back to $EMAIL for missing GIT_AUTHOR_EMAIL and GIT_COMMITTER_EMAIL

Julian Phillips (3):
      Documentation: show-ref: document --exclude-existing
      refs.c: add a function to sort a ref list, rather then sorting on add
      http.c: Fix problem with repeated calls of http_init

Junio C Hamano (151):
      git-fetch: add --quiet
      t6002: minor spelling fix.
      git-rev-list: add --bisect-vars option.
      git-rev-list --bisect: optimization
      t6004: add a bit more path optimization test.
      rev-list --bisect: Fix "halfway" optimization.
      make the previous optimization work also on path-limited rev-list --bisect
      Documentation: unbreak user-manual.
      Optional Tck/Tk: ignore generated files.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      _GIT_INDEX_OUTPUT: allow plumbing to output to an alternative index file.
      git-read-tree --index-output=<file>
      add_cache_entry(): removal of file foo does not conflict with foo/bar
      unpack_trees.c: pass unpack_trees_options structure to keep_entry() as well.
      unpack-trees: get rid of *indpos parameter.
      Fix read-tree --prefix=dir/.
      Fix twoway_merge that passed d/f conflict marker to merged_entry().
      Fix switching to a branch with D/F when current branch has file D.
      rerere: make sorting really stable.
      RPM spec: include git-p4 in the list of all packages.
      Fix dependency of common-cmds.h
      Fix bogus error message from merge-recursive error path
      Propagate cache error internal to refresh_cache() via parameter.
      Rename internal function "add_file_to_cache" in builtin-update-index.c
      Rename static variable write_index to update_index in builtin-apply.c
      Rename add_file_to_index() to add_file_to_cache()
      git-bisect: modernization
      t6030: add a bit more tests to git-bisect
      git-bisect: allow bisecting with only one bad commit.
      Documentation: tighten dependency for git.{html,txt}
      git-push reports the URL after failing.
      git-push to multiple locations does not stop at the first failure
      A new merge stragety 'subtree'.
      Prepare for 1.5.1.1
      Start 1.5.2 cycle by prepareing RelNotes for it.
      Add Documentation/cmd-list.made to .gitignore
      shortlog -w: make wrap-line behaviour optional.
      t1000: fix case table.
      Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()
      merge-recursive: do not barf on "to be removed" entries.
      merge-recursive: handle D/F conflict case more carefully.
      t3030: merge-recursive backend test.
      git-fetch--tool pick-rref
      git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
      fsck: do not complain on detached HEAD.
      GIT 1.5.1.1
      Add %m to '--pretty=format:'
      Refactor patch-id filtering out of git-cherry and git-format-patch.
      git-log --cherry-pick A...B
      Documentation: --cherry-pick
      Fix git {log,show,...} --pretty=email
      Do not default to --no-index when given two directories.
      Add basic infrastructure to assign attributes to paths
      Define 'crlf' attribute.
      Teach 'diff' about 'diff' attribute.
      Fix 'crlf' attribute semantics.
      Fix 'diff' attribute semantics.
      Makefile: add patch-ids.h back in.
      attribute macro support
      Define a built-in attribute macro "binary".
      Change attribute negation marker from '!' to '-'.
      send-email: do not leave an empty CC: line if no cc is present.
      Make sure quickfetch is not fooled with a previous, incomplete fetch.
      Allow more than true/false to attributes.
      merge-recursive: separate out xdl_merge() interface.
      git-gui: Honor TCLTK_PATH if supplied
      Allow specifying specialized merge-backend per path.
      Add a demonstration/test of customized merge.
      Start preparing for 1.5.1.2
      Update draft release notes for 1.5.2 with accumulated changes.
      Custom low-level merge driver support.
      Allow the default low-level merge driver to be configured.
      Custom low-level merge driver: change the configuration scheme.
      Allow low-level driver to specify different behaviour during internal merge.
      Fix funny types used in attribute value representation
      Counto-fix in merge-recursive
      Simplify code to find recursive merge driver.
      Documentation: support manual section (5) - file formats.
      Update 'crlf' attribute semantics.
      Document gitattributes(5)
      git-add -u: match the index with working tree.
      git-clone: fix dumb protocol transport to clone from pack-pruned ref
      Fix bogus linked-list management for user defined merge drivers.
      convert.c: restructure the attribute checking part.
      lockfile: record the primary process.
      GIT 1.5.1.2
      Update documentation links to point at v1.5.1.2
      Documentation/Makefile: fix section (5) installation
      Update draft release notes for v1.5.2
      pack-objects: quickfix for permission modes.
      Fix 'quickfix' on pack-objects.
      Update tests not to assume that generated packfiles are writable.
      pack-objects: make generated packfile read-only
      Support 'diff=pgm' attribute
      Move index-related variables into a structure.
      Make read-cache.c "the_index" free.
      Document "diff=driver" attribute
      t5302: avoid using tail -c
      t6030: grab commit object name as we go
      Build RPM with ETC_GITCONFIG=/etc/gitconfig
      Diff between two blobs should take mode changes into account now.
      t/test-lib.sh: Protect ourselves from common misconfiguration
      gitattributes documentation: clarify overriding
      applymbox & quiltimport: typofix.
      Add 'ident' conversion.
      Add 'filter' attribute and external filter driver definition.
      Add --date={local,relative,default}
      Start preparing for 1.5.1.3
      Do not barf on too long action description
      Update .mailmap with "Michael"
      Fix import-tars fix.
      blame -s: suppress author name and time.
      Split out mailmap handling out of shortlog
      Apply mailmap in git-blame output.
      Make macros to prevent double-inclusion in headers consistent.
      Make sure test-genrandom and test-chmtime are builtas part of the main build.
      Fix symlink handling in git-svn, related to PerlIO
      GIT v1.5.1.3
      GIT v1.5.2-rc1
      blame: use .mailmap unconditionally
      diff.c: fix "size cache" handling.
      blame: Notice a wholesale incorporation of an existing file.
      blame: -C -C -C
      Add test for blame corner cases.
      GIT v1.5.2-rc2
      diff: release blobs after generating textual diff.
      diff.c: do not use a separate "size cache".
      diff -M: release the preimage candidate blobs after rename detection.
      diff -S: release the image after looking for needle in it
      GIT v1.5.1.4
      Update documentation links to point at 1.5.1.4
      t9400: skip cvsserver test if Perl SQLite interface is unavailable
      git-clone: don't get fooled by $PWD
      .mailmap: add some aliases
      GIT v1.5.2-rc3
      Minor copyediting on Release Notes for 1.5.2
      Add has_symlink_leading_path() function.
      apply: do not get confused by symlinks in the middle
      read-tree -m -u: avoid getting confused by intermediate symlinks.
      checkout: allow detaching to HEAD even when switching to the tip of a branch
      git-config: do not forget seeing "a.b.var" means we are out of "a.var" section.
      Link to HTML version of external doc if available
      Fix git-clone buglet for remote case.
      Prepare for 1.5.1.5 Release Notes
      gitweb: fix another use of undefined value
      GIT v1.5.1.5
      Add link to 1.5.1.5 release notes.
      Documentation/git.txt: Update links to older documentation pages.
      GIT 1.5.1.6
      git-cvsserver: exit with 1 upon "I HATE YOU"
      GIT 1.5.2

Junio Hamano (1):
      t9400: Use the repository config and nothing else.

Karl Hasselström (2):
      Fix markup in git-svn man page
      Add --no-rebase option to git-svn dcommit

Lars Hjemli (3):
      rename_ref(): only print a warning when config-file update fails
      Make builtin-branch.c handle the git config file
      git-archive: don't die when repository uses subprojects

Linus Torvalds (26):
      Optimize directory listing with pathspec limiter.
      diff-lib: use ce_mode_from_stat() rather than messing with modes manually
      Avoid overflowing name buffer in deep directory structures
      Add 'resolve_gitlink_ref()' helper function
      Add "S_IFDIRLNK" file mode infrastructure for git links
      Teach "fsck" not to follow subproject links
      Teach core object handling functions about gitlinks
      Fix thinko in subproject entry sorting
      Teach directory traversal about subprojects
      Teach git-update-index about gitlinks
      Don't show gitlink directories when we want "other" files
      Teach git list-objects logic not to follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      Fix gitlink index entry filesystem matching
      Teach git list-objects logic to not follow gitlinks
      Teach "git-read-tree -u" to check out submodules as a directory
      git-quiltimport complaining yet still working
      Fix some "git ls-files -o" fallout from gitlinks
      Expose subprojects as special files to "git diff" machinery
      Add a generic "object decorator" interface, and make object refs use it
      Add support for "commit name decorations" to log family of commands
      Use proper object allocators for unknown object nodes too
      Clean up object creation to use more common code
      Fix working directory errno handling when unlinking a directory
      Fix a copy-n-paste bug in the object decorator code.
      Fix --boundary output

Luiz Fernando N. Capitulino (7):
      ident.c: Use const qualifier for 'struct passwd' parameters
      ident.c: Use size_t (instead of int) to store sizes
      remove_subtree(): Use strerror() when possible
      entry.c: Use const qualifier for 'struct checkout' parameters
      read_cache_from(): small simplification
      core-tutorial: minor fixes
      init_buffer(): Kill buf pointer

Marco Costalba (1):
      Fix an unmatched comment end in arm/sha1_arm.S

Martin Koegler (7):
      gitweb: Show "no difference" message for empty diff
      Add S_IFINVALID mode
      add get_sha1_with_mode
      add add_object_array_with_mode
      store mode in rev_list, if <tree>:<filename> syntax is used
      use mode of the tree in git-diff, if <tree>:<file> syntax is used
      Fix compilation of test-delta

Matthias Kestenholz (2):
      Documentation: Added [verse] to SYNOPSIS where necessary
      Documentation: Reformatted SYNOPSIS for several commands

Matthias Lederhofer (1):
      handle_options in git wrapper miscounts the options it handled.

Matthieu Castet (1):
      Remove stale non-static-inline prototype for tree_entry_extract()

Matthieu Moy (2):
      Document git add -u introduced earlier.
      Added a reference to git-add in the documentation for git-update-index

Michael Hendricks (3):
      Document 'git-log --decorate'
      git-send-email: allow leading white space on mutt aliases
      Document core.excludesfile for git-add

Michael S. Tsirkin (1):
      Display the subject of the commit just made.

Michael Spang (4):
      git-blame: Fix overrun in fake_working_tree_commit()
      dir.c: Omit non-excluded directories with dir->show_ignored
      t7300: Basic tests for git-clean
      Fix minor documentation errors

Michele Ballabio (1):
      git shortlog documentation: add long options and fix a typo

Nicolas Pitre (33):
      clean up and optimize nth_packed_object_sha1() usage
      get rid of num_packed_objects()
      make overflow test on delta base offset work regardless of variable size
      add overflow tests on pack offset variables
      compute a CRC32 for each object as stored in a pack
      compute object CRC32 with index-pack
      pack-objects: learn about pack index version 2
      index-pack: learn about pack index version 2
      sha1_file.c: learn about index version 2
      show-index.c: learn about index v2
      pack-redundant.c: learn about index v2
      allow forcing index v2 and 64-bit offset treshold
      validate reused pack data with CRC when possible
      simple random data generator for tests
      use test-genrandom in tests instead of /dev/urandom
      tests for various pack index features
      clean up add_object_entry()
      pack-objects: optimize preferred base handling a bit
      pack-objects: equal objects in size should delta against newer objects
      pack-objects: rework check_delta_limit usage
      pack-objects: clean up list sorting
      pack-objects: get rid of reuse_cached_pack
      pack-objects: get rid of create_final_object_list()
      pack-objects: make in_pack_header_size a variable of its own
      add get_size_from_delta()
      pack-objects: better check_object() performances
      pack-objects: remove obsolete comments
      document --index-version for index-pack and pack-objects
      common progress display support
      make progress "title" part of the common progress interface
      provide a facility for "delayed" progress reporting
      delay progress display when checking out files
      add file checkout progress

OGAWA Hirofumi (1):
      git-fetch: Fix "argument list too long"

Paul Mackerras (1):
      gitk: Allow user to choose whether to see the diff, old file, or new file

Petr Baudis (7):
      Git.pm: config_boolean() -> config_bool()
      gitweb: Do not use absolute font sizes
      gitweb: Normalize searchbar font size
      gitweb: Add support for grep searches
      gitweb: Allow arbitrary strings to be dug with pickaxe
      Documentation: git-rev-list's "patterns"
      gitweb: Remove redundant $searchtype setup

Quy Tonthat (4):
      Add howto files to rpm packages.
      Added new git-gui library files to rpm spec
      RPM spec: include files in technical/ to package.
      Documentation/branch: fix small typo in -D example

René Scharfe (3):
      Revert "builtin-archive: use RUN_SETUP"
      git-archive: make tar the default format
      git-archive: convert archive entries like checkouts do

Richard P. Curnow (2):
      Fix documentation of tag in git-fast-import.txt
      Fix documentation of tag in git-fast-import.txt

Robin H. Johnson (12):
      Add custom subject prefix support to format-patch (take 3)
      Add testcase for format-patch --subject-prefix (take 3)
      Document --dry-run parameter to send-email.
      Prefix Dry- to the message status to denote dry-runs.
      Debugging cleanup improvements
      Change the scope of the $cc variable as it is not needed outside of send_message.
      Perform correct quoting of recipient names.
      Validate @recipients before using it for sendmail and Net::SMTP.
      Ensure clean addresses are always used with Net::SMTP
      Allow users to optionally specify their envelope sender.
      Document --dry-run and envelope-sender for git-send-email.
      Sanitize @to recipients.

Sam Vilain (1):
      git-tar-tree: complete deprecation conversion message

Sami Farin (1):
      fast-import: size_t vs ssize_t

Shawn O. Pearce (50):
      Always bind the return key to the default button
      git-gui: Brown paper bag fix division by 0 in blame
      Fix lost-found to show commits only referenced by reflogs
      Honor -p<n> when applying git diffs
      Don't yap about merge-subtree during make
      git-gui: Display the directory basename in the title
      Revert "Allow wish interpreter to be defined with TCLTK_PATH"
      Contribute a fairly paranoid update hook
      Kill the useless progress meter in merge-recursive
      Don't repack existing objects in fast-import
      Cleanup variables in cat-file
      git-gui: Correctly handle UTF-8 encoded commit messages
      Actually handle some-low memory conditions
      Don't allow empty pathnames in fast-import
      Catch empty pathnames in trees during fsck
      git-gui: Allow spaces in path to 'wish'
      git-gui: Include the subject in the status bar after commit
      git-gui: Warn users before making an octopus merge
      git-gui: Correct line wrapping for too many branch message
      git-gui: Cleanup common font handling for font_ui
      git-gui: Use option database defaults to set the font
      git-gui: Refactor to use our git proc more often
      git-gui: Track our own embedded values and rebuild when they change
      Reuse fixup_pack_header_footer in index-pack
      Don't use seq in tests, not everyone has it
      Improve request-pull to handle non-rebased branches
      Properly handle '0' filenames in import-tars
      git-gui: Refactor into multiple files to save my sanity
      git-gui: Move console procs into their own namespace
      git-gui: Allow vi keys to scroll the diff/blame regions
      git-gui: Move merge support into a namespace
      git-gui: Show all possible branches for merge
      git-gui: Include commit id/subject in merge choices
      git-gui: Use vi-like keys in merge dialog
      Remove duplicate exports from Makefile
      git-gui: Allow shift-{k,j} to select a range of branches to merge
      git-gui: Define a simple class/method system
      git-gui: Convert browser, console to "class" format
      git-gui: Don't attempt to inline array reads in methods
      git-gui: Convert blame to the "class" way of doing things
      git-gui: Use prefix if blame is run in a subdirectory
      git-gui: Smarter command line parsing for browser, blame
      git-gui: Generate blame on uncommitted working tree file
      git-gui: Cleanup minor nits in blame code
      git-gui: Format author/committer times in ISO format
      Use .git/MERGE_MSG in cherry-pick/revert
      git-gui: Paperbag fix blame in subdirectory
      git gui 0.7.0
      Correct error message in revert/cherry-pick
      git-gui: Gracefully handle bad TCL_PATH at compile time

Steffen Prohaska (4):
      tiny fix in documentation of git-clone
      git-config: test for 'do not forget "a.b.var" ends "a.var" section'.
      Optimized cvsexportcommit: calling 'cvs status' once instead of once per touched file.
      Fixed link in user-manual

Steven Grimm (3):
      Add --quiet option to suppress output of "rm" commands for removed files.
      git-rm: Trivial fix for a comment typo.
      Add --ignore-unmatch option to exit with zero status when no files are removed.

Theodore Ts'o (2):
      Add pack.depth option to git-pack-objects.
      Increase pack.depth default to 50

Tomash Brechko (1):
      cvsexportcommit -p : fix the usage of git-apply -C.

Uwe Kleine-König (1):
      fix importing of subversion tars

Ville Skyttä (1):
      DESTDIR support for git/contrib/emacs

Xavier Maillard (2):
      git-blame.el: separate git-blame-mode to ease maintenance
      git-blame.el: pick a set of random colors for each git-blame turn

YOSHIFUJI Hideaki (1):
      Avoid composing too long "References" header.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.32.0-rc2
@ 2021-05-28  6:13  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-28  6:13 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers, lwn

A release candidate Git v2.32.0-rc2 is now available for testing at
the usual places.  It is comprised of 586 non-merge commits since
v2.31.0, contributed by 83 people, 31 of which are new faces [*].

There have been a handful of regression found since v2.32.0-rc0 was
tagged, and this has fixes to them.  https://tinyurl.com/gitCal says
that we plan to have another release candidate mid next week, but we
may go straight to the final 2.32 instead.  Let's see how this one
fares before deciding.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.32.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.31.0 are as follows.
Welcome to the Git development community!

  Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
  Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
  Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
  Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
  Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
  Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
  Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
  Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
  Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton Liu,
  Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren, Eric
  Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff Hostetler,
  Jeff King, Johannes Schindelin, Johannes Sixt, John Szakmeister,
  Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
  Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
  Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
  Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
  Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
  Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
  Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
  Trygve Aaberge, Ville Skyttä, and ZheNing Hu.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.32 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer <key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of "for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:<what>)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).

----------------------------------------------------------------

Changes since v2.31.0 are as follows:

Adam Dinwoodie (1):
      cygwin: disallow backslashes in file names

Alex Henrie (1):
      merge-ort: split "distinct types" message into two translatable messages

Andrey Bienkowski (1):
      doc: clarify the filename encoding in git diff

Andrzej Hunt (24):
      Makefile: update 'make fuzz-all' docs to reflect modern clang
      symbolic-ref: don't leak shortened refname in check_symref()
      reset: free instead of leaking unneeded ref
      clone: free or UNLEAK further pointers when finished
      worktree: fix leak in dwim_branch()
      init: remove git_init_db_config() while fixing leaks
      init-db: silence template_dir leak when converting to absolute path
      fsmonitor: avoid global-buffer-overflow READ when checking trivial response
      parse-options: convert bitfield values to use binary shift
      parse-options: don't leak alias help messages
      transport: also free remote_refs in transport_disconnect()
      merge-ort: only do pointer arithmetic for non-empty lists
      revision: free remainder of old commit list in limit_list
      wt-status: fix multiple small leaks
      ls-files: free max_prefix when done
      bloom: clear each bloom_key after use
      branch: FREE_AND_NULL instead of NULL'ing real_ref
      builtin/bugreport: don't leak prefixed filename
      builtin/check-ignore: clear_pathspec before returning
      builtin/checkout: clear pending objects after diffing
      mailinfo: also free strbuf lists when clearing mailinfo
      builtin/for-each-ref: free filter and UNLEAK sorting.
      builtin/rebase: release git_format_patch_opt too
      builtin/rm: avoid leaking pathspec and seen

Atharva Raykar (1):
      userdiff: add support for Scheme

Bagas Sanjaya (1):
      INSTALL: note on using Asciidoctor to build doc

Bruno Albuquerque (1):
      object-info: support for retrieving object info

Charvi Mendiratta (23):
      sequencer: pass todo_item to do_pick_commit()
      sequencer: use const variable for commit message comments
      rebase -i: add fixup [-C | -c] command
      t3437: test script for fixup [-C|-c] options in interactive rebase
      rebase -i: teach --autosquash to work with amend!
      doc/git-rebase: add documentation for fixup [-C|-c] options
      sequencer: fixup the datatype of the 'flag' argument
      sequencer: rename a few functions
      rebase -i: clarify and fix 'fixup -c' rebase-todo help
      t/lib-rebase: update the documentation of FAKE_LINES
      t/t3437: fixup here-docs in the 'setup' test
      t/t3437: remove the dependency of 'expected-message' file from tests
      t/t3437: check the author date of fixed up commit
      t/t3437: simplify and document the test helpers
      t/t3437: use named commits in the tests
      t/t3437: fixup the test 'multiple fixup -c opens editor once'
      doc/rebase -i: fix typo in the documentation of 'fixup' command
      sequencer: export and rename subject_length()
      commit: add amend suboption to --fixup to create amend! commit
      commit: add a reword suboption to --fixup
      t7500: add tests for --fixup=[amend|reword] options
      t3437: use --fixup with options to create amend! commit
      doc/git-commit: add documentation for fixup=[amend|reword] options

Chinmoy Chakraborty (1):
      column, range-diff: downcase option description

Christian Couder (1):
      test-bloom: fix missing 'bloom' from usage string

Christopher Schenk (1):
      remote-curl: fall back to basic auth if Negotiate fails

Dennis Ameling (2):
      cmake(install): fix double .exe suffixes
      cmake(install): include vcpkg dlls

Denton Liu (14):
      git-cat-file.txt: monospace args, placeholders and filenames
      git-cat-file.txt: remove references to "sha1"
      stash show: teach --include-untracked and --only-untracked
      stash show: learn stash.showIncludeUntracked
      git-completion.bash: pass $__git_subcommand_idx from __git_main()
      git-completion.bash: extract from else in _git_stash()
      git-completion.bash: use __gitcomp_builtin() in _git_stash()
      git-completion.bash: separate some commands onto their own line
      git-completion.bash: rename to $__git_cmd_idx
      git-completion.bash: use $__git_cmd_idx in more places
      git-completion.bash: consolidate cases in _git_stash()
      t3905: correct test title
      stash show: fix segfault with --{include,only}-untracked
      stash show: use stash.showIncludeUntracked even when diff options given

Derrick Stolee (58):
      commit-graph: create local repository pointer
      commit-graph: use config to specify generation type
      csum-file: make hashwrite() more readable
      sparse-index: design doc and format update
      t/perf: add performance test for sparse operations
      t1092: clean up script quoting
      sparse-index: add guard to ensure full index
      sparse-index: implement ensure_full_index()
      t1092: compare sparse-checkout to sparse-index
      test-read-cache: print cache entries with --table
      test-tool: don't force full index
      unpack-trees: ensure full index
      sparse-checkout: hold pattern list in index
      sparse-index: add 'sdir' index extension
      sparse-index: convert from full to sparse
      submodule: sparse-index should not collapse links
      unpack-trees: allow sparse directories
      sparse-index: check index conversion happens
      sparse-index: add index.sparse config option
      sparse-checkout: toggle sparse index from builtin
      sparse-checkout: disable sparse-index
      cache-tree: integrate with sparse directory entries
      sparse-index: loose integration with cache_tree_verify()
      p2000: add sparse-index repos
      maintenance: simplify prefetch logic
      sparse-index: API protection strategy
      *: remove 'const' qualifier for struct index_state
      read-cache: expand on query into sparse-directory entry
      cache: move ensure_full_index() to cache.h
      add: ensure full index
      checkout-index: ensure full index
      checkout: ensure full index
      commit: ensure full index
      difftool: ensure full index
      fsck: ensure full index
      grep: ensure full index
      ls-files: ensure full index
      merge-index: ensure full index
      rm: ensure full index
      stash: ensure full index
      update-index: ensure full index
      dir: ensure full index
      entry: ensure full index
      merge-recursive: ensure full index
      pathspec: ensure full index
      read-cache: ensure full index
      resolve-undo: ensure full index
      revision: ensure full index
      name-hash: don't add directories to name_hash
      sparse-index: expand_to_path()
      name-hash: use expand_to_path()
      fetch: add --prefetch option
      maintenance: use 'git fetch --prefetch'
      maintenance: respect remote.*.skipFetchAll
      dir: update stale description of treat_directory()
      sparse-index: fix uninitialized jump
      t1092: use GIT_PROGRESS_DELAY for consistent results
      dir: update stale description of treat_directory()

Elijah Newren (50):
      diffcore-rename: use directory rename guided basename comparisons
      diffcore-rename: provide basic implementation of idx_possible_rename()
      diffcore-rename: add a mapping of destination names to their indices
      Move computation of dir_rename_count from merge-ort to diffcore-rename
      diffcore-rename: add function for clearing dir_rename_count
      diffcore-rename: move dir_rename_counts into dir_rename_info struct
      diffcore-rename: extend cleanup_dir_rename_info()
      diffcore-rename: compute dir_rename_counts in stages
      diffcore-rename: limit dir_rename_counts computation to relevant dirs
      diffcore-rename: compute dir_rename_guess from dir_rename_counts
      diffcore-rename: enable filtering possible rename sources
      merge-ort: precompute subset of sources for which we need rename detection
      merge-ort: add data structures for an alternate tree traversal
      merge-ort: introduce wrappers for alternate tree traversal
      merge-ort: precompute whether directory rename detection is needed
      merge-ort: use relevant_sources to filter possible rename sources
      merge-ort: skip rename detection entirely if possible
      diffcore-rename: avoid doing basename comparisons for irrelevant sources
      diffcore-rename: take advantage of "majority rules" to skip more renames
      merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
      merge-ort: record the reason that we want a rename for a directory
      diffcore-rename: only compute dir_rename_count for relevant directories
      diffcore-rename: check if we have enough renames for directories early on
      diffcore-rename: add computation of number of unknown renames
      merge-ort: record the reason that we want a rename for a file
      diffcore-rename: determine which relevant_sources are no longer relevant
      merge-ort: use STABLE_QSORT instead of QSORT where required
      merge-ort: add a special minimal index just for renormalization
      merge-ort: have ll_merge() use a special attr_index for renormalization
      merge-ort: let renormalization change modify/delete into clean delete
      merge-ort: support subtree shifting
      t6428: new test for SKIP_WORKTREE handling and conflicts
      merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
      t: mark several submodule merging tests as fixed under merge-ort
      merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
      merge-recursive: add a bunch of FIXME comments documenting known bugs
      Revert "merge-ort: ignore the directory rename split conflict for now"
      t6423: mark remaining expected failure under merge-ort as such
      Add testing with merge-ort merge strategy
      sequencer: fix edit handling for cherry-pick and revert messages
      dir: convert trace calls to trace2 equivalents
      dir: report number of visited directories and paths with trace2
      ls-files: error out on -i unless -o or -c are specified
      t7300: add testcase showing unnecessary traversal into ignored directory
      t3001, t7300: add testcase showcasing missed directory traversal
      dir: avoid unnecessary traversal into ignored directory
      dir: traverse into untracked directories if they may have ignored subfiles
      dir: introduce readdir_skip_dot_and_dotdot() helper
      git-prompt: work under set -u
      dir: introduce readdir_skip_dot_and_dotdot() helper

Eric Sunshine (1):
      merge(s): apply consistent punctuation to "up to date" messages

Eric Wong (1):
      remote-curl: fix clone on sha256 repos

Firmin Martin (1):
      user-manual.txt: assign preface an id and a title

Georgios Kontaxis (1):
      gitweb: add "e-mail privacy" feature to redact e-mail addresses

Han Xin (1):
      pack-objects: fix comment of reused_chunk.difference

Han-Wen Nienhuys (3):
      reftable: document an alternate cleanup method on Windows
      refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
      refs/debug: trace into reflog expiry too

Jeff Hostetler (14):
      pkt-line: eliminate the need for static buffer in packet_write_gently()
      simple-ipc: design documentation for new IPC mechanism
      simple-ipc: add win32 implementation
      unix-socket: eliminate static unix_stream_socket() helper function
      unix-socket: add backlog size option to unix_stream_listen()
      unix-socket: disallow chdir() when creating unix domain sockets
      unix-stream-server: create unix domain socket under lock
      convert: make convert_attrs() and convert structs public
      convert: add [async_]convert_to_working_tree_ca() variants
      convert: add get_stream_filter_ca() variant
      convert: add classification for conv_attrs struct
      simple-ipc: add Unix domain socket implementation
      t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
      simple-ipc: correct ifdefs when NO_PTHREADS is defined

Jeff King (43):
      add open_nofollow() helper
      attr: convert "macro_ok" into a flags field
      exclude: add flags parameter to add_patterns()
      attr: do not respect symlinks for in-tree .gitattributes
      exclude: do not respect symlinks for in-tree .gitignore
      mailmap: do not respect symlinks for in-tree .mailmap
      p5303: add missing &&-chains
      p5303: measure time to repack with keep
      builtin/pack-objects.c: rewrite honor-pack-keep logic
      packfile: add kept-pack cache for find_kept_pack_entry()
      t/perf: handle worktrees as test repos
      t/perf: avoid copying worktree files from test repo
      t7003: test ref rewriting explicitly
      filter-branch: drop multiple-ancestor warning
      filter-branch: drop $_x40 glob
      bisect: peel annotated tags to commits
      t: annotate !PTHREADS tests with !FAIL_PREREQS
      ref-filter: fix NULL check for parse object failure
      midx.c: improve cache locality in midx_pack_order_cmp()
      pack-objects: update "nr_seen" progress based on pack-reused count
      is_promisor_object(): free tree buffer after parsing
      lookup_unknown_object(): take a repository argument
      revision: avoid parsing with --exclude-promisor-objects
      pack-bitmap: clean up include_check after use
      prune: save reachable-from-recent objects with bitmaps
      t5300: modernize basic tests
      t5300: check that we produced expected number of deltas
      pack-objects: clamp negative window size to 0
      t5316: check behavior of pack-objects --depth=0
      pack-objects: clamp negative depth to 0
      docs/format-patch: mention handling of merges
      t7415: remove out-dated comment about translation
      fsck_tree(): fix shadowed variable
      fsck_tree(): wrap some long lines
      t7415: rename to expand scope
      t7450: test verify_path() handling of gitmodules
      t7450: test .gitmodules symlink matching against obscured names
      t0060: test ntfs/hfs-obscured dotfiles
      fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
      docs: document symlink restrictions for dot-files
      t: avoid sed-based chain-linting in some expensive cases
      t5551: test http interaction with credential helpers
      Revert "remote-curl: fall back to basic auth if Negotiate fails"

Jerry Zhang (3):
      git-apply: try threeway first when "--3way" is used
      git-apply: allow simultaneous --cached and --3way options
      apply: adjust messages to account for --3way changes

Joachim Kuebart (2):
      git-p4: ensure complex branches are cloned correctly
      git-p4: speed up search for branch parent

Johannes Schindelin (10):
      pkt-line: do not issue flush packets in write_packetized_*()
      pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
      pkt-line: add options argument to read_packetized_to_strbuf()
      fsmonitor: fix memory corruption in some corner cases
      fsmonitor: do not forget to release the token in `discard_index()`
      SECURITY: describe how to report vulnerabilities
      Document how we do embargoed releases
      cmake: support SKIP_DASHED_BUILT_INS
      cmake: add a preparatory work-around to accommodate `vcpkg`
      msvc: avoid calling `access("NUL", flags)`

Johannes Sixt (1):
      t9001-send-email.sh: fix expected absolute paths on Windows

John Szakmeister (2):
      http: store credential when PKI auth is used
      http: drop the check for an empty proxy password before approving

Jonathan Tan (8):
      t5606: run clone branch name test with protocol v2
      fetch-pack: buffer object-format with other args
      fetch-pack: refactor process_acks()
      fetch-pack: refactor add_haves()
      fetch-pack: refactor command and capability write
      fetch: teach independent negotiation (no packfile)
      send-pack: support push negotiation
      t5601: mark protocol v2-only test

Josh Soref (1):
      merge: fix swapped "up to date" message components

Julien Richard (1):
      doc: .gitignore documentation typofix

Junio C Hamano (31):
      builtin/repack.c: reword comment around pack-objects flags
      xcalloc: use CALLOC_ARRAY() when applicable
      cocci: allow xcalloc(1, size)
      The first batch in 2.32 cycle
      The second batch
      format-patch: give an overview of what a "patch" message is
      The third patch
      Git 2.31.1
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      doc: clarify "do not capitalize the first word" rule
      The tenth batch
      The eleventh (aka "ort") batch
      The twelfth batch
      The thirteenth batch
      CodingGuidelines: explicitly allow "local" for test scripts
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      The seventeenth batch
      Git 2.32-rc0
      A handful more topics before -rc1
      Git 2.32-rc1
      t1092: revert the "-1" hack for emulating "no progress meter"
      Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
      Revert "dir: update stale description of treat_directory()"
      Git 2.32-rc2

Kyle Meyer (1):
      config.txt: add missing period

Li Linchao (1):
      builtin/clone.c: add --reject-shallow option

Louis Sautier (1):
      pretty: fix a typo in the documentation for %(trailers)

Luke Shumaker (30):
      .gitignore: ignore 'git-subtree' as a build artifact
      subtree: t7900: update for having the default branch name be 'main'
      subtree: t7900: use test-lib.sh's test_count
      subtree: t7900: use consistent formatting
      subtree: t7900: comment subtree_test_create_repo
      subtree: t7900: use 'test' for string equality
      subtree: t7900: delete some dead code
      subtree: t7900: fix 'verify one file change per commit'
      subtree: t7900: rename last_commit_message to last_commit_subject
      subtree: t7900: add a test for the -h flag
      subtree: t7900: add porcelain tests for 'pull' and 'push'
      subtree: don't have loose code outside of a function
      subtree: more consistent error propagation
      subtree: drop support for git < 1.7
      subtree: use `git merge-base --is-ancestor`
      subtree: use git-sh-setup's `say`
      subtree: use more explicit variable names for cmdline args
      subtree: use "$*" instead of "$@" as appropriate
      subtree: don't fuss with PATH
      subtree: use "^{commit}" instead of "^0"
      subtree: parse revs in individual cmd_ functions
      subtree: remove duplicate check
      subtree: add comments and sanity checks
      subtree: don't let debug and progress output clash
      subtree: have $indent actually affect indentation
      subtree: give the docs a once-over
      subtree: allow --squash to be used with --rejoin
      subtree: allow 'split' flags to be passed to 'push'
      subtree: push: allow specifying a local rev other than HEAD
      subtree: be stricter about validating flags

Lénaïc Huard (1):
      maintenance: fix two memory leaks

Martin Ågren (2):
      git-repack.txt: remove spurious ")"
      pretty-formats.txt: add missing space

Matheus Tavares (32):
      convert: fail gracefully upon missing clean cmd on required filter
      symlinks: update comment on threaded_check_leading_path()
      checkout: don't follow symlinks when removing entries
      entry: extract a header file for entry.c functions
      entry: make fstat_output() and read_blob_entry() public
      entry: extract update_ce_after_write() from write_entry()
      entry: move conv_attrs lookup up to checkout_entry()
      entry: add checkout_entry_ca() taking preloaded conv_attrs
      add: include magic part of pathspec on --refresh error
      t3705: add tests for `git add` in sparse checkouts
      add: make --chmod and --renormalize honor sparse checkouts
      pathspec: allow to ignore SKIP_WORKTREE entries on index matching
      refresh_index(): add flag to ignore SKIP_WORKTREE entries
      add: warn when asked to update SKIP_WORKTREE entries
      rm: honor sparse checkout patterns
      pkt-line: do not report packet write errors twice
      unpack-trees: add basic support for parallel checkout
      parallel-checkout: make it truly parallel
      parallel-checkout: add configuration options
      parallel-checkout: support progress displaying
      parallel-checkout: add design documentation
      make_transient_cache_entry(): optionally alloc from mem_pool
      builtin/checkout.c: complete parallel checkout support
      parallel-checkout: add tests related to path collisions
      t0028: extract encoding helpers to lib-encoding.sh
      checkout-index: add parallel checkout support
      parallel-checkout: add tests related to .gitattributes
      parallel-checkout: add tests for basic operations
      ci: run test round with parallel-checkout enabled
      clean: remove unnecessary variable
      init: fix bug regarding ~/ expansion in init.templateDir
      t2080: fix cp invocation to copy symlinks instead of following them

Nicholas Clark (1):
      submodule update: silence underlying fetch with "--quiet"

Nipunn Koorapati (3):
      fsmonitor: skip lstat deletion check during git diff-index
      fsmonitor: add assertion that fsmonitor is valid to check_removed
      fsmonitor: add perf test for git diff HEAD

Patrick Steinhardt (17):
      githooks.txt: replace mentions of SHA-1 specific properties
      githooks.txt: clarify documentation on reference-transaction hook
      pack-bitmap: avoid traversal of objects referenced by uninteresting tag
      uploadpack.txt: document implication of `uploadpackfilter.allow`
      revision: mark commit parents as NOT_USER_GIVEN
      list-objects: move tag processing into its own function
      list-objects: support filtering by tag and commit
      list-objects: implement object type filter
      pack-bitmap: implement object type filter
      pack-bitmap: implement combined filter
      rev-list: allow filtering of provided items
      config: rename `git_etc_config()`
      config: unify code paths to get global config paths
      config: allow overriding of global and system configuration
      t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
      git.txt: fix synopsis of `--config-env` missing the equals sign
      git: support separate arg for `--config-env`'s value

Peter Oliver (1):
      doc: point to diff attribute in patch format docs

Phillip Wood (6):
      rebase -i: only write fixup-message when it's needed
      sequencer: factor out code to append squash message
      rebase -i: comment out squash!/fixup! subjects from squash message
      word diff: handle zero length matches
      patience diff: remove unnecessary string comparisons
      patience diff: remove unused variable

Rafael Silva (1):
      repack: avoid loosening promisor objects in partial clones

Ramkumar Ramachandra (1):
      Add entry for Ramkumar Ramachandra

Ramsay Jones (1):
      bisect--helper: use BISECT_TERMS in 'bisect skip' command

René Scharfe (12):
      pretty: add %(describe)
      pretty: add merge and exclude options to %(describe)
      t4205: assert %(describe) test coverage
      pretty: document multiple %(describe) being inconsistent
      fix xcalloc() argument order
      archive: expand only a single %(describe) per archive
      git-compat-util.h: drop trailing semicolon from macro definition
      use CALLOC_ARRAY
      vcs-svn: remove header files as well
      block-sha1: drop trailing semicolon from macro definition
      mem-pool: drop trailing semicolon from macro definition
      daemon: sanitize all directory separators

Robert Foss (1):
      git-send-email: Respect core.hooksPath setting

SZEDER Gábor (1):
      Makefile: add missing dependencies of 'config-list.h'

Sardorbek Imomaliev (1):
      work around zsh comment in __git_complete_worktree_paths

Sergey Organov (5):
      diff-merges: introduce --diff-merges=on
      diff-merges: refactor set_diff_merges()
      diff-merges: adapt -m to enable default diff format
      diff-merges: introduce log.diffMerges config variable
      doc/diff-options: document new --diff-merges features

Shubham Verma (1):
      t9801: replace test -f with test_path_is_file

Taylor Blau (28):
      packfile: introduce 'find_kept_pack_entry()'
      revision: learn '--no-kept-objects'
      builtin/pack-objects.c: add '--stdin-packs' option
      builtin/repack.c: add '--geometric' option
      builtin/repack.c: do not repack single packs with --geometric
      t7703: test --geometric repack with loose objects
      builtin/repack.c: assign pack split later
      builtin/repack.c: be more conservative with unsigned overflows
      Documentation/git-push.txt: correct configuration typo
      builtin/pack-objects.c: ignore missing links with --stdin-packs
      builtin/multi-pack-index.c: inline 'flags' with options
      builtin/multi-pack-index.c: don't handle 'progress' separately
      builtin/multi-pack-index.c: define common usage with a macro
      builtin/multi-pack-index.c: split sub-commands
      builtin/multi-pack-index.c: don't enter bogus cmd_mode
      builtin/multi-pack-index.c: display usage on unrecognized command
      t/helper/test-read-midx.c: add '--show-objects'
      pack-bitmap: add 'test_bitmap_commits()' helper
      t/helper/test-bitmap.c: initial commit
      builtin/pack-objects.c: respect 'pack.preferBitmapTips'
      midx: allow marking a pack as preferred
      midx: don't free midx_name early
      midx: keep track of the checksum
      midx: make some functions non-static
      Documentation/technical: describe multi-pack reverse indexes
      pack-revindex: read multi-pack reverse indexes
      pack-write.c: extract 'write_rev_file_order'
      pack-revindex: write multi-pack reverse indexes

Todd Zullinger (1):
      t7500: remove non-existant C_LOCALE_OUTPUT prereq

Torsten Bögershausen (3):
      git mv foo FOO ; git mv foo bar gave an assert
      precompose_utf8: make precompose_string_if_needed() public
      macOS: precompose startup_info->prefix

Ville Skyttä (2):
      completion: audit and guard $GIT_* against unset use
      completion: avoid aliased command lookup error in nounset mode

Will Chandler (1):
      refs: cleanup directories when deleting packed ref

Wolfgang Müller (1):
      rev-parse: fix segfault with missing --path-format argument

ZheNing Hu (8):
      commit: add --trailer option
      format-patch: allow a non-integral version numbers
      ref-filter: get rid of show_ref_array_item
      ref-filter: reuse output buffer
      pretty: provide human date format
      docs: correct descript of trailer.<token>.command
      trailer: add new .cmd config option
      ref-filter: fix read invalid union member bug

brian m. carlson (14):
      builtin/init-db: handle bare clones when core.bare set to false
      hash: add an algo member to struct object_id
      Always use oidread to read into struct object_id
      http-push: set algorithm when reading object ID
      hash: add a function to finalize object IDs
      Use the final_oid_fn to finalize hashing of object IDs
      builtin/pack-redundant: avoid casting buffers to struct object_id
      hash: set, copy, and use algo field in struct object_id
      hash: provide per-algorithm null OIDs
      builtin/show-index: set the algorithm for object IDs
      commit-graph: don't store file hashes as struct object_id
      builtin/pack-objects: avoid using struct object_id for pack hash
      hex: default to the_hash_algo on zero algorithm value
      hex: print objects using the hash algorithm member

Ævar Arnfjörð Bjarmason (96):
      grep/pcre2: drop needless assignment + assert() on opt->pcre2
      grep/pcre2: drop needless assignment to NULL
      grep/pcre2: correct reference to grep_init() in comment
      grep/pcre2: prepare to add debugging to pcre2_malloc()
      grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
      grep/pcre2: use compile-time PCREv2 version test
      grep/pcre2: use pcre2_maketables_free() function
      grep/pcre2: actually make pcre2 use custom allocator
      grep/pcre2: move back to thread-only PCREv2 structures
      grep/pcre2: move definitions of pcre2_{malloc,free}
      Makefile: guard against TEST_OBJS in the environment
      Makefile: split up long OBJECTS line
      Makefile: sort OBJECTS assignment for subsequent change
      Makefile: split OBJECTS into OBJECTS and GIT_OBJS
      Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
      remote: add camel-cased *.tagOpt key, like clone
      remote: write camel-cased *.pushRemote on rename
      fsck.c: refactor and rename common config callback
      show tests: add test for "git show <tree>"
      ls-files tests: add meaningful --with-tree tests
      tree.c API: move read_tree() into builtin/ls-files.c
      ls-files: don't needlessly pass around stage variable
      ls-files: refactor away read_tree()
      archive: stop passing "stage" through read_tree_recursive()
      tree.h API: expose read_tree_1() as read_tree_at()
      tree.h API: simplify read_tree_recursive() signature
      diff --no-index tests: add test for --exit-code
      diff --no-index tests: test mode normalization
      rebase: remove transitory rebase.useBuiltin setting & env
      mktag tests: fix broken "&&" chain
      fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
      fsck.h: use "enum object_type" instead of "int"
      fsck.c: rename variables in fsck_set_msg_type() for less confusion
      fsck.c: remove (mostly) redundant append_msg_id() function
      fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
      fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
      fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
      fsck.h: re-order and re-assign "enum fsck_msg_type"
      fsck.c: call parse_msg_type() early in fsck_set_msg_type()
      fsck.c: undefine temporary STR macro after use
      fsck.c: give "FOREACH_MSG_ID" a more specific name
      fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
      fsck.c: pass along the fsck_msg_id in the fsck_error callback
      fsck.c: add an fsck_set_msg_type() API that takes enums
      fsck.c: move gitmodules_{found,done} into fsck_options
      fetch-pack: don't needlessly copy fsck_options
      fetch-pack: use file-scope static struct for fsck_options
      fetch-pack: use new fsck API to printing dangling submodules
      Makefile: add QUIET_GEN to "tags" and "TAGS" targets
      git-send-email: replace "map" in void context with "for"
      git-send-email: test full --validate output
      git-send-email: refactor duplicate $? checks into a function
      git-send-email: improve --validate error output
      bash completion: complete CHERRY_PICK_HEAD
      config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
      userdiff style: re-order drivers in alphabetical order
      userdiff style: declare patterns with consistent style
      userdiff style: normalize pascal regex declaration
      userdiff: add and use for_each_userdiff_driver()
      userdiff tests: explicitly test "default" pattern
      userdiff tests: list builtin drivers via test-tool
      userdiff: remove support for "broken" tests
      blame tests: don't rely on t/t4018/ directory
      blame tests: simplify userdiff driver test
      rebase tests: camel-case rebase.rescheduleFailedExec consistently
      rebase: don't override --no-reschedule-failed-exec with config
      Documentation/Makefile: make $(wildcard howto/*.txt) a var
      Documentation/Makefile: make doc.dep dependencies a variable again
      doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
      doc lint: fix bugs in, simplify and improve lint script
      doc lint: lint and fix missing "GIT" end sections
      doc lint: lint relative section order
      docs: fix linting issues due to incorrect relative section order
      svn tests: remove legacy re-setup from init-clone test
      svn tests: refactor away a "set -e" in test body
      tests: remove all uses of test_i18cmp
      usage.c: don't copy/paste the same comment three times
      api docs: document BUG() in api-error-handling.txt
      api docs: document that BUG() emits a trace2 error event
      pretty tests: simplify %aI/%cI date format test
      pretty tests: give --date/format tests a better description
      sparse-index.c: remove set_index_sparse_config()
      streaming.c: avoid forward declarations
      streaming.c: remove enum/function/vtbl indirection
      streaming.c: remove {open,close,read}_method_decl() macros
      streaming.c: stop passing around "object_info *" to open()
      streaming.c: move {open,close,read} from vtable to "struct git_istream"
      Makefile: don't re-define PERL_DEFINES
      Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
      Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
      perl: use mock i18n functions under NO_GETTEXT=Y
      Makefile: make PERL_DEFINES recursively expanded
      send-email: fix missing error message regression
      send-email: don't needlessly abs_path() the core.hooksPath
      send-email: move "hooks_path" invocation to git-send-email.perl
      pack-objects: move static inline from a header to the sole consumer

Øystein Walle (2):
      transport: respect verbosity when setting upstream
      add: die if both --dry-run and --interactive are given

Đoàn Trần Công Danh (6):
      mailinfo: load default metainfo_charset lazily
      mailinfo: stop parsing options manually
      mailinfo: warn if CRLF found in decoded base64/QP email
      mailinfo: allow squelching quoted CRLF warning
      mailinfo: allow stripping quoted CR without warning
      am: learn to process quoted lines that ends with CRLF


^ permalink raw reply	[relevance 3%]

* Re: [RFC] Git rerere and non-conflicting changes during conflict resolution
  2017-07-26  7:14  3%       ` Junio C Hamano
@ 2017-07-27 21:01  3%         ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2017-07-27 21:01 UTC (permalink / raw)
  To: Jeff King; +Cc: Raman Gupta, git

Junio C Hamano <gitster@pobox.com> writes:

> Jeff King <peff@peff.net> writes:
>
>> From the user's perspective, calling X "rerere" would probably be OK[1].
>> But from an implementation perspective (and to keep the existing
>> plumbing available and unchanged), it probably makes sense to call it
>> something else, and have it run both rerere and a new plumbing command
>> to do the merge-fix work (or call it nothing, and assume that users will
>> either touch the plumbing directly or will use "git merge" to trigger
>> both).
>> ...
>> I think it should be its own plumbing tool that merge calls alongside
>> rerere. ;)
>
> As long as we use the database keyed with <A,B> and take the merge
> base into account, "git am" and "git cherry-pick" would not be able
> to use the merge-fix machinery, so in that sense, calling X "rerere"
> would not be OK, but I agree with your general sentiment about the
> UI visible to the end users.

Actually, I guess "cherry-pick" could use it if we think hard and
long enough and come up with an ideal scheme to compute the index
into the merge-fix database.

Imagine this topology:

       A---o---o---...        topic #1
      /
 o---o---o---...              mainline
      \
       o---B---o---C---...    topic #2

where topic #1 renames 'xyzzy' to 'frotz' at commit A, and topic #2
adds a new mention of 'xyzzy' in file F at commit B and another in
file E at commit C.

In the ideal world, we would have two merge-fix database entries,
one that turns 'xyzzy' in file F to 'frotz' that is keyed by the
pair of commits <A,B>, and the other that does the same in file E
that is keyed by <A,C>.  When merging the topic #1 and the topic #2
together, or when merging the topic #2 to a mainline that already
has merged the topic #1, the merge-fix machinery notices that one
side has A but not B nor C, and the other side has B and C but not
A, and finds these two merge-fixes and applies on top of the textual
merge.

If we are cherry-picking C to something that already has A, then, we
should be able to notice that the history that receives the cherry-pick
has A but not C, and C, which is being picked, does not have A, and
decide that merge-fix <A,C> is relevant.

If we do this purely with commit object name, it will still not work
if we cherry-pick A to mainline and then we cherry-pick C.  The
mainline may hae change from A but does not have the exact commit A.

Which brings us back to your earlier idea to use something like
patch-id to identify these individual changes.  I am not sure how we
can structure the merge-fix database so that we can efficiently find
which "changes" are already on a branch.

^ permalink raw reply	[relevance 3%]

* What's in git.git (Aug 2008, #07; Wed, 27)
@ 2008-08-28  3:01  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-28  3:01 UTC (permalink / raw)
  To: git

Handful fixes went to 1.6.0.1 and then a few more are on 'maint'.

On the 'master' front, among other things:

 - "git cherry-pick" can reuse earlier conflict resolution.

 - "git merge" can use a custom strategy (if you write one).

 - "git-shell" was broken and then fixed.

 - "git submodule sync" is a new subcommand.

* The 'maint' branch has these fixes since the last announcement.

Alexander Gavrilov (1):
  Respect core.autocrlf in combined diff

Jeff King (1):
  Fix "git log -i --grep"

Jonathan Nieder (2):
  Documentation: clarify pager.<cmd> configuration
  Documentation: clarify pager configuration

Junio C Hamano (3):
  merge: fix numerous bugs around "trivial merge" area
  GIT 1.6.0.1
  ctype.c: protect tiny C preprocessor constants

Linus Torvalds (1):
  index-pack: be careful after fixing up the header/footer

Miklos Vajna (1):
  Makefile: enable SNPRINTF_RETURNS_BOGUS for HP-UX

Nguyễn Thái Ngọc Duy (1):
  index-pack: setup git repository

Ramsay Allan Jones (2):
  Fix a warning (on cygwin) to allow -Werror
  Suppress some bash redirection error messages

Simon Hausmann (1):
  Clean up the git-p4 documentation


* The 'master' branch has these since the last announcement
  in addition to the above.

Abhijit Menon-Sen (1):
  Make cherry-pick use rerere for conflict resolution.

Andreas Färber (1):
  Makefile: always provide a fallback when hardlinks fail

David Aguilar (1):
  git-submodule: add "sync" command

Gustaf Hendeby (1):
  Update .gitignore to ignore git-help

Jeff King (1):
  format-patch: use default diff format even with patch options

Junio C Hamano (7):
  builtin-add.c: restructure the code for maintainability
  builtin-add.c: optimize -A option and "git add ."
  shell: do not play duplicated definition games to shrink the executable
  Build-in "git-shell"
  Fix "git-merge -s bogo" help text
  t7606: fix custom merge test
  Revert "Build-in "git-shell""

Mark Levedahl (3):
  git-submodule.sh - Remove trailing / from URL if found
  git-submodule.sh - Remove trailing / from URL if found
  git-submodule - Use "get_default_remote" from git-parse-remote

Miklos Vajna (6):
  builtin-help: make some internal functions available to other builtins
  builtin-merge: allow using a custom strategy
  Add a new test for using a custom merge strategy
  Add a second testcase for handling invalid strategies in git-merge
  builtin-help: always load_command_list() in cmd_help()
  Builtin git-help.

Nicolas Pitre (1):
  discard revindex data when pack list changes

Simon Hausmann (1):
  Make it possible to abort the submission of a change to Perforce

Tommi Virtanen (1):
  Install git-shell in bindir, too

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2018, #03; Wed, 25)
@ 2018-07-25 22:13  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-25 22:13 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ag/rebase-p (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at c36ebba99b)
 + git-rebase--preserve-merges: fix formatting of todo help message

 The help message shown in the editor to edit todo list in "rebase -p"
 has regressed recently, which has been corrected.


* as/sequencer-customizable-comment-char (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at 4163e23f29)
 + sequencer: use configured comment character

 Honor core.commentchar when preparing the list of commits to replay
 in "rebase -i".


* bb/pedantic (2018-07-09) 8 commits
  (merged to 'next' on 2018-07-18 at e9d075e8ed)
 + utf8.c: avoid char overflow
 + string-list.c: avoid conversion from void * to function pointer
 + sequencer.c: avoid empty statements at top level
 + convert.c: replace "\e" escapes with "\033".
 + fixup! refs/refs-internal.h: avoid forward declaration of an enum
 + refs/refs-internal.h: avoid forward declaration of an enum
 + fixup! connect.h: avoid forward declaration of an enum
 + connect.h: avoid forward declaration of an enum
 (this branch is used by bb/make-developer-pedantic.)

 The codebase has been updated to compile cleanly with -pedantic
 option.


* bb/unicode-11-width (2018-07-09) 1 commit
  (merged to 'next' on 2018-07-18 at 075648ed37)
 + unicode: update the width tables to Unicode 11

 The character display width table has been updated to match the
 latest Unicode standard.


* bc/send-email-auto-cte (2018-07-09) 4 commits
  (merged to 'next' on 2018-07-18 at d16c2a301a)
 + docs: correct RFC specifying email line length
 + send-email: automatically determine transfer-encoding
 + send-email: accept long lines with suitable transfer encoding
 + send-email: add an auto option for transfer encoding

 The content-transfer-encoding of the message "git send-email" sends
 out by default was 8bit, which can cause trouble when there is an
 overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
 automatically switch to quoted-printable when there is such a line
 in the payload has been introduced and is made the default.


* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
  (merged to 'next' on 2018-07-18 at 25a3a99528)
 + convert log_ref_write_fd() to use strbuf

 Code clean-up.


* bw/ref-in-want (2018-06-28) 8 commits
  (merged to 'next' on 2018-07-18 at 7e9f8db37c)
 + fetch-pack: implement ref-in-want
 + fetch-pack: put shallow info in output parameter
 + fetch: refactor to make function args narrower
 + fetch: refactor fetch_refs into two functions
 + fetch: refactor the population of peer ref OIDs
 + upload-pack: test negotiation with changing repository
 + upload-pack: implement ref-in-want
 + test-pkt-line: add unpack-sideband subcommand
 (this branch is used by bw/fetch-pack-i18n, jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.)

 Protocol v2 has been updated to allow slightly out-of-sync set of
 servers to work together to serve a single client, which would be
 useful with load-balanced servers that talk smart HTTP transport.


* en/apply-comment-fix (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-18 at 31d818f17d)
 + apply: fix grammar error in comment


* en/rebase-consistency (2018-06-27) 9 commits
  (merged to 'next' on 2018-07-18 at d597206c79)
 + git-rebase: make --allow-empty-message the default
 + t3401: add directory rename testcases for rebase and am
 + git-rebase.txt: document behavioral differences between modes
 + directory-rename-detection.txt: technical docs on abilities and limitations
 + git-rebase.txt: address confusion between --no-ff vs --force-rebase
 + git-rebase: error out when incompatible options passed
 + t3422: new testcases for checking when incompatible options passed
 + git-rebase.sh: update help messages a bit
 + git-rebase.txt: document incompatible options

 "git rebase" behaved slightly differently depending on which one of
 the three backends gets used; this has been documented and an
 effort to make them more uniform has begun.


* en/t5407-rebase-m-fix (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-18 at 459875daeb)
 + t5407: fix test to cover intended arguments


* es/test-lint-one-shot-export (2018-07-16) 5 commits
  (merged to 'next' on 2018-07-18 at 26a6124963)
 + t/check-non-portable-shell: detect "FOO=bar shell_func"
 + t/check-non-portable-shell: make error messages more compact
 + t/check-non-portable-shell: stop being so polite
 + t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
 + Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export
 (this branch uses jc/t3404-one-shot-export-fix.)

 Look for broken use of "VAR=VAL shell_func" in test scripts as part
 of test-lint.


* hs/push-cert-check-cleanup (2018-07-11) 2 commits
  (merged to 'next' on 2018-07-18 at 1ed25fbd77)
 + gpg-interface: make parse_gpg_output static and remove from interface header
 + builtin/receive-pack: use check_signature from gpg-interface
 (this branch is used by hs/gpgsm.)

 Code clean-up.


* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-18 at e15a79dca7)
 + t3404: fix use of "VAR=VAL cmd" with a shell function
 (this branch is used by es/test-lint-one-shot-export.)

 Correct a broken use of "VAR=VAL shell_func" in a test.


* jk/empty-pick-fix (2018-07-11) 2 commits
  (merged to 'next' on 2018-07-18 at 43bfa862f2)
 + sequencer: don't say BUG on bogus input
 + sequencer: handle empty-set cases consistently

 Handling of an empty range by "git cherry-pick" was inconsistent
 depending on how the range ended up to be empty, which has been
 corrected.


* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at d06c6f1665)
 + t5500: prettify non-commit tag tests

 Test modernization.


* jk/for-each-ref-icase (2018-07-03) 3 commits
  (merged to 'next' on 2018-07-18 at 4c86d62adb)
 + ref-filter: avoid backend filtering with --ignore-case
 + for-each-ref: consistently pass WM_IGNORECASE flag
 + t6300: add a test for --ignore-case

 The "--ignore-case" option of "git for-each-ref" (and its friends)
 did not work correctly, which has been fixed.


* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-18 at 8e7ee889c3)
 + fetch-pack: write shallow, then check connectivity
 (this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want; is tangled with bw/fetch-pack-i18n.)

 "git fetch" failed to correctly validate the set of objects it
 received when making a shallow history deeper, which has been
 corrected.


* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
  (merged to 'next' on 2018-07-18 at 968fd9c9f0)
 + clone: check connectivity even if clone is partial
 + upload-pack: send refs' objects despite "filter"
 (this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow; is tangled with bw/fetch-pack-i18n.)

 Partial clone support of "git clone" has been updated to correctly
 validate the objects it receives from the other side.  The server
 side has been corrected to send objects that are directly
 requested, even if they may match the filtering criteria (e.g. when
 doing a "lazy blob" partial clone).


* kn/userdiff-php (2018-07-06) 2 commits
  (merged to 'next' on 2018-07-18 at 9a533dc33a)
 + userdiff: support new keywords in PHP hunk header
 + t4018: add missing test cases for PHP

 The userdiff pattern for .php has been updated.


* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at eb393871f4)
 + fast-import: do not call diff_delta() with empty buffer

 "git fast-import" has been updated to avoid attempting to create
 delta against a zero-byte-long string, which is pointless.


* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
  (merged to 'next' on 2018-07-18 at d2a6d2684d)
 + unpack-trees: do not fail reset because of unmerged skipped entry

 "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
 had trouble working correctly in a sparsely checked out working
 tree after a conflict, which has been corrected.


* nd/command-list (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at 77ed2a3914)
 + vcbuild/README: update to accommodate for missing common-cmds.h

 Build doc update for Windows.


* rj/submodule-fsck-skip (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-11 at 985f88cf7e)
 + fsck: check skiplist for object in fsck_blob()

 "fsck.skipList" did not prevent a blob object listed there from
 being inspected for is contents (e.g. we recently started to
 inspect the contents of ".gitmodules" for certain malicious
 patterns), which has been corrected.


* sb/blame-color (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at c319268502)
 + blame: prefer xsnprintf to strcpy for colors
 (this branch is used by jk/banned-function.)

 Code clean-up.


* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
  (merged to 'next' on 2018-07-18 at 9e213ad1aa)
 + submodule.c: report the submodule that an error occurs in

 "git checkout --recurse-submodules another-branch" did not report
 in which submodule it failed to update the working tree, which
 resulted in an unhelpful error message.


* tb/config-default (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at 7994476f6f)
 + builtin/config: work around an unsized array forward declaration

 Compilation fix.


* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-18 at 334d2420c0)
 + sha1-name.c: for ":/", find detached HEAD commits

 "git rev-parse ':/substring'" did not consider the history leading
 only to HEAD when looking for a commit with the given substring,
 when the HEAD is detached.  This has been fixed.

--------------------------------------------------
[New Topics]

* ds/commit-graph-with-grafts (2018-07-19) 8 commits
 - commit-graph: close_commit_graph before shallow walk
 - commit-graph: not compatible with uninitialized repo
 - commit-graph: not compatible with grafts
 - commit-graph: not compatible with replace objects
 - test-repository: properly init repo
 - commit-graph: update design document
 - refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
 - refs.c: migrate internal ref iteration to pass thru repository argument
 (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/reachable.)

 The recently introduced commit-graph auxiliary data is incompatible
 with mechanisms such as replace & grafts that "breaks" immutable
 nature of the object reference relationship.  Disable optimizations
 based on its use (and updating existing commit-graph) when these
 incompatible features are in use in the repository.

 Will merge to 'next'.


* jk/core-use-replace-refs (2018-07-18) 3 commits
 - add core.usereplacerefs config option
 - check_replace_refs: rename to read_replace_refs
 - check_replace_refs: fix outdated comment

 A new configuration variable core.usereplacerefs has been added,
 primarily to help server installations that want to ignore the
 replace mechanism altogether.

 Will merge to 'next'.


* nd/i18n (2018-07-23) 23 commits
 - transport-helper.c: mark more strings for translation
 - transport.c: mark more strings for translation
 - sha1-file.c: mark more strings for translation
 - sequencer.c: mark more strings for translation
 - replace-object.c: mark more strings for translation
 - refspec.c: mark more strings for translation
 - refs.c: mark more strings for translation
 - pkt-line.c: mark more strings for translation
 - object.c: mark more strings for translation
 - exec-cmd.c: mark more strings for translation
 - environment.c: mark more strings for translation
 - dir.c: mark more strings for translation
 - convert.c: mark more strings for translation
 - connect.c: mark more strings for translation
 - config.c: mark more strings for translation
 - commit-graph.c: mark more strings for translation
 - builtin/replace.c: mark more strings for translation
 - builtin/pack-objects.c: mark more strings for translation
 - builtin/grep.c: mark strings for translation
 - builtin/config.c: mark more strings for translation
 - archive-zip.c: mark more strings for translation
 - archive-tar.c: mark more strings for translation
 - Update messages in preparation for i18n

 Many more strings are prepared for l10n.

 Will merge to 'next'.


* sb/histogram-less-memory (2018-07-23) 4 commits
 - xdiff/histogram: remove tail recursion
 - xdiff/xhistogram: move index allocation into find_lcs
 - xdiff/xhistogram: factor out memory cleanup into free_index()
 - xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff

 "git diff --histogram" had a bad memory usage pattern, which has
 been rearranged to reduce the peak usage.

 Will merge to 'next'.


* bb/make-developer-pedantic (2018-07-25) 1 commit
 - Makefile: add a DEVOPTS flag to get pedantic compilation

 "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
 with -pedantic option, which may catch more problematic program
 constructs and potential bugs.

 Will merge to 'next' and then to 'master'.


* bw/clone-ref-prefixes (2018-07-20) 1 commit
 - clone: send ref-prefixes when using protocol v2

 The wire-protocol v2 relies on the client to send "ref prefixes" to
 limit the bandwidth spent on the initial ref advertisement.  "git
 clone" when learned to speak v2 forgot to do so, which has been
 corrected.

 Will merge to 'next'.


* bw/fetch-pack-i18n (2018-07-23) 1 commit
 - fetch-pack: mark die strings for translation

 i18n updates.

 Will merge to 'next' and then to 'master'.


* bw/protocol-v2 (2018-07-24) 1 commit
 - pack-protocol: mention and point to docs for protocol v2

 Doc update.

 Will merge to 'next' and then to 'master'.


* ds/reachable (2018-07-20) 18 commits
 - commit-reach: use can_all_from_reach
 - commit-reach: make can_all_from_reach... linear
 - commit-reach: replace ref_newer logic
 - test-reach: test commit_contains
 - test-reach: test can_all_from_reach_with_flags
 - test-reach: test reduce_heads
 - test-reach: test get_merge_bases_many
 - test-reach: test is_descendant_of
 - test-reach: test in_merge_bases
 - test-reach: create new test tool for ref_newer
 - commit-reach: move can_all_from_reach_with_flags
 - upload-pack: generalize commit date cutoff
 - upload-pack: refactor ok_to_give_up()
 - upload-pack: make reachable() more generic
 - commit-reach: move commit_contains from ref-filter
 - commit-reach: move ref_newer from remote.c
 - commit.h: remove method declarations
 - commit-reach: move walk methods from commit.c
 (this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/commit-graph-with-grafts.)

 The code for computing history reachability has been shuffled,
 obtained a bunch of new tests to cover them, and then being
 improved.

 Stuck in review?
 cf. <20180723203500.231932-1-jonathantanmy@google.com>
 cf. <20180723204112.233274-1-jonathantanmy@google.com>
 cf. <CAGZ79kb7tWV=cmboA+nsChAUaiC+fVVM-GBCuWfsypC+-wyaVg@mail.gmail.com>


* en/merge-recursive-skip-fix (2018-07-23) 2 commits
 - merge-recursive: preserve skip_worktree bit when necessary
 - t3507: add a testcase showing failure with sparse checkout

 When the sparse checkout feature is in use, "git cherry-pick" and
 other mergy operations lost the skip_worktree bit when a path that
 is excluded from checkout requires content level merge, which is
 resolved as the same as the HEAD version, without materializing the
 merge result in the working tree, which made the path appear as
 deleted.  This has been corrected by preserving the skip_worktree
 bit (and not materializing the file in the working tree).

 Stuck in review?
 cf. <75aa297e-4857-d92a-7041-618ff3b0b77a@gmail.com>


* es/format-patch-interdiff (2018-07-23) 6 commits
 - format-patch: allow --interdiff to apply to a lone-patch
 - log-tree: show_log: make commentary block delimiting reusable
 - interdiff: teach show_interdiff() to indent interdiff
 - format-patch: teach --interdiff to respect -v/--reroll-count
 - format-patch: add --interdiff option to embed diff in cover letter
 - format-patch: allow additional generated content in make_cover_letter()
 (this branch is used by es/format-patch-rangediff.)

 "git format-patch" learned a new "--interdiff" option to explain
 the difference between this version and the previous atttempt in
 the cover letter (or after the tree-dashes as a comment).

 Stuck in review?
 cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>


* es/format-patch-rangediff (2018-07-25) 10 commits
 - format-patch: allow --range-diff to apply to a lone-patch
 - format-patch: add --creation-factor tweak for --range-diff
 - format-patch: teach --range-diff to respect -v/--reroll-count
 - format-patch: extend --range-diff to accept revision range
 - format-patch: add --range-diff option to embed diff in cover letter
 - range-diff: relieve callers of low-level configuration burden
 - range-diff: publish default creation factor
 - range-diff: respect diff_option.file rather than assuming 'stdout'
 - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
 - Merge branch 'js/range-diff' into es/format-patch-rangediff
 (this branch uses es/format-patch-interdiff and js/range-diff.)

 "git format-patch" learned a new "--range-diff" option to explain
 the difference between this version and the previous atttempt in
 the cover letter (or after the tree-dashes as a comment).

 Need to wait for the prereq topics to solidify a bit more.


* jk/banned-function (2018-07-24) 5 commits
 - banned.h: mark strncpy() as banned
 - banned.h: mark sprintf() as banned
 - banned.h: mark strcat() as banned
 - automatically ban strcpy()
 - Merge branch 'sb/blame-color' into jk/banned-function

 It is too easy to misuse system API functions such as strcat();
 these selected functions are now forbidden in this codebase and
 will cause a compilation failure.

 Will merge to 'next'.


* jk/size-t (2018-07-24) 6 commits
 - strbuf_humanise: use unsigned variables
 - pass st.st_size as hint for strbuf_readlink()
 - strbuf_readlink: use ssize_t
 - strbuf: use size_t for length in intermediate variables
 - reencode_string: use size_t for string lengths
 - reencode_string: use st_add/st_mult helpers

 Code clean-up to use size_t/ssize_t when they are the right type.

 Will merge to 'next'.


* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
 - t7406: avoid failures solely due to timing issues

 Test fix.

 Will merge to 'next' and then to 'master'.


* js/vscode (2018-07-23) 9 commits
 - vscode: let cSpell work on commit messages, too
 - vscode: add a dictionary for cSpell
 - vscode: use 8-space tabs, no trailing ws, etc for Git's source code
 - vscode: wrap commit messages at column 72 by default
 - vscode: only overwrite C/C++ settings
 - mingw: define WIN32 explicitly
 - cache.h: extract enum declaration from inside a struct declaration
 - vscode: hard-code a couple defines
 - contrib: add a script to initialize VS Code configuration

 Add a script (in contrib/) to help users of VSCode work better with
 our codebase.

 Stuck in review?
 cf. <20180723165719.GA16420@aiede.svl.corp.google.com>
 cf. <20180723174108.GA9285@aiede.svl.corp.google.com>


* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
 - fetch: send "refs/tags/" prefix upon CLI refspecs
 - t5702: test fetch with multiple refspecs at a time

 The wire-protocol v2 relies on the client to send "ref prefixes" to
 limit the bandwidth spent on the initial ref advertisement.  "git
 fetch $remote branch:branch" that asks tags that point into the
 history leading to the "branch" automatically followed sent to
 narrow prefix and broke the tag following, which has been fixed.

 Will merge to 'next'.


* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
 - pack-objects: fix performance issues on packing large deltas

 In a recent update in 2.18 era, "git pack-objects" started
 producing a larger than necessary packfiles by missing
 opportunities to use large deltas.

 Will merge to and cook in 'next'.


* sb/trailers-docfix (2018-07-20) 1 commit
 - Documentation/git-interpret-trailers: explain possible values

 Doc update.

 Will merge to 'next' and then to 'master'.


* sg/coccicheck-updates (2018-07-23) 5 commits
 - coccinelle: extract dedicated make target to clean Coccinelle's results
 - coccinelle: put sane filenames into output patches
 - coccinelle: exclude sha1dc source files from static analysis
 - coccinelle: use $(addsuffix) in 'coccicheck' make target
 - coccinelle: mark the 'coccicheck' make target as .PHONY

 Update the way we use Coccinelle to find out-of-style code that
 need to be modernised.

 Will merge to 'next'.


* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
 - t9300: wait for background fast-import process to die after killing it

 Test update.

 Will merge to 'next' and then to 'master'.


* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
 - travis-ci: fail if Coccinelle static analysis found something to transform
 - travis-ci: run Coccinelle static analysis with two parallel jobs

 Update the way we run static analysis tool at TravisCI to make it
 easier to use its findings.

 Will merge to 'next' and then to 'master'.


* ab/newhash-is-sha256 (2018-07-25) 1 commit
 - doc hash-function-transition: note the lack of a changelog

 Documentation update.

 Waiting for another attempt for the second part.


* bb/redecl-enum-fix (2018-07-25) 1 commit
 - packfile: drop a repeated enum declaration

 Compilation fix.


* es/diff-color-move-fix (2018-07-25) 1 commit
 - diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"

 One of the "diff --color-moved" mode "dimmed_zebra" that was named
 in an unusual way has been deprecated and replaced by
 "dimmed-zebra".

 Will merge to 'next' and then to 'master'.


* jh/structured-logging (2018-07-25) 25 commits
 - structured-logging: add config data facility
 - structured-logging: t0420 tests for interacitve child_summary
 - structured-logging: t0420 tests for child process detail events
 - structured-logging: add child process classification
 - structured-logging: add detail-events for child processes
 - structured-logging: add structured logging to remote-curl
 - structured-logging: t0420 tests for aux-data
 - structured-logging: add aux-data for size of sparse-checkout file
 - structured-logging: add aux-data for index size
 - structured-logging: add aux-data facility
 - structured-logging: t0420 tests for timers
 - structured-logging: add timer around preload_index
 - structured-logging: add timer around wt-status functions
 - structured-logging: add timer around do_write_index
 - structured-logging: add timer around do_read_index
 - structured-logging: add timer facility
 - structured-logging: add detail-event for lazy_init_name_hash
 - structured-logging: add detail-event facility
 - structured-logging: t0420 basic tests
 - structured-logging: set sub_command field for checkout command
 - structured-logging: set sub_command field for branch command
 - structured-logging: add session-id to log events
 - structured-logging: add structured logging framework
 - structured-logging: add STRUCTURED_LOGGING=1 to Makefile
 - structured-logging: design document
 (this branch uses jh/json-writer.)

 X-Gah.

--------------------------------------------------
[Stalled]

* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2018-07-23) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>

 I just rebased the topic to a newer base as it did not build
 standalone with the base I originally queued the topic on, but
 otherwise there is no update to address any of the review comments
 in the thread above---we are still waiting for a reroll.


* mk/http-backend-content-length (2018-06-11) 3 commits
 - http-backend: respect CONTENT_LENGTH for receive-pack
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
 - http-backend: cleanup writing to child process

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* am/sequencer-author-script-fix (2018-07-18) 1 commit
 - sequencer.c: terminate the last line of author-script properly

 The author-script that records the author information created by
 the sequencer machinery lacked the closing single quote on the last
 entry.

 Fixing this alone may or may not break the reader that may have
 been compensating for this bogus writer.  I think I saw another fix
 to the same source file posted today---if we are fixing, we should
 fix them all at the same time to keep the reader and the writer in
 sync.


* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at 0b83ade721)
 + sequencer: pass absolute GIT_WORK_TREE to exec commands

 "git rebase" started exporting GIT_DIR environment variable and
 exposing it to hook scripts when part of it got rewritten in C.
 Instead of matching the old scripted Porcelains' behaviour,
 compensate by also exporting GIT_WORK_TREE environment as well to
 lessen the damage.  This can harm existing hooks that want to
 operate on different repository, but the current behaviour is
 already broken for them anyway.

 Will merge to 'master'.


* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-24 at 257bb336c6)
 + handle lower case drive letters on Windows

 A test helper update for Windows.

 Will merge to 'master'.


* en/abort-df-conflict-fixes (2018-07-16) 2 commits
 - read-cache: fix directory/file conflict handling in read_index_unmerged()
 - t1015: demonstrate directory/file conflict recovery failures

 "git merge --abort" etc. did not clean things up properly when
 there were conflicted entries in certain order that are involved
 in D/F conflicts.  This has been corrected.

 This may have to be rebased on an older maintenance track before
 moving forward.


* es/chain-lint-in-subshell (2018-07-17) 10 commits
  (merged to 'next' on 2018-07-24 at 9370bbdfaf)
 + t/chainlint: add chainlint "specialized" test cases
 + t/chainlint: add chainlint "complex" test cases
 + t/chainlint: add chainlint "cuddled" test cases
 + t/chainlint: add chainlint "loop" and "conditional" test cases
 + t/chainlint: add chainlint "nested subshell" test cases
 + t/chainlint: add chainlint "one-liner" test cases
 + t/chainlint: add chainlint "whitespace" test cases
 + t/chainlint: add chainlint "basic" test cases
 + t/Makefile: add machinery to check correctness of chainlint.sed
 + t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
 (this branch uses es/test-fixes.)

 Look for broken "&&" chains that are hidden in subshell, many of
 which have been found and corrected.

 Will merge to 'master'.


* hs/gpgsm (2018-07-20) 7 commits
 - gpg-interface t: extend the existing GPG tests with GPGSM
 - gpg-interface: introduce new signature format "x509" using gpgsm
 - gpg-interface: introduce new config to select per gpg format program
 - gpg-interface: do not hardcode the key string len anymore
 - gpg-interface: introduce an abstraction for multiple gpg formats
 - t/t7510: check the validation of the new config gpg.format
 - gpg-interface: add new config to select how to sign a commit

 Teach "git tag -s" etc. a few configuration varaibles (gpg.format
 that can be set to "openpgp" or "x509", and gpg.<format>.program
 that is used to specify what program to use to deal with the format)
 to allow x.509 certs with CMS via "gpgsm" to be used instead of
 openpgp via "gnupg".

 Will merge to 'next'.


* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
  (merged to 'next' on 2018-07-24 at 2ea14c0afb)
 + has_uncommitted_changes(): fall back to empty tree

 "git pull --rebase" on a corrupt HEAD caused a segfault.  In
 general we substitute an empty tree object when running the in-core
 equivalent of the diff-index command, and the codepath has been
 corrected to do so as well to fix this issue.

 Will merge to 'master'.


* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at fb3e653f44)
 + send-email: fix tls AUTH when sending batch

 "git send-email" when using in a batched mode that limits the
 number of messages sent in a single SMTP session lost the contents
 of the variable used to choose between tls/ssl, unable to send the
 second and later batches, which has been fixed.

 Will merge to 'master'.

 This is marked to be merged to 'next' already, but I do not mind
 getting an updated version with an improved log message before that
 happens.


* jn/gc-auto (2018-07-17) 3 commits
 - gc: do not return error for prior errors in daemonized mode
 - gc: exit with status 128 on failure
 - gc: improve handling of errors reading gc.log

 "gc --auto" ended up calling exit(-1) upon error, which has been
 corrected to use exit(1).  Also the error reporting behaviour when
 daemonized has been updated to exit with zero status when stopping
 due to a previously discovered error (which implies there is no
 point running gc to improve the situation); we used to exit with
 failure in such a case.

 Stuck in review?
 cf. <20180717201348.GD26218@sigill.intra.peff.net>


* js/rebase-merge-octopus (2018-07-11) 3 commits
  (merged to 'next' on 2018-07-24 at 14ad8699de)
 + rebase --rebase-merges: adjust man page for octopus support
 + rebase --rebase-merges: add support for octopus merges
 + merge: allow reading the merge commit message from a file

 "git rebase --rebase-merges" mode now handles octopus merges as
 well.

 Will merge to 'master'.


* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at 8e25a49405)
 + negotiator/skipping: skip commits during fetch
 (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)

 Add a server-side knob to skip commits in exponential/fibbonacci
 stride in an attempt to cover wider swath of history with a smaller
 number of iterations, potentially accepting a larger packfile
 transfer, instead of going back one commit a time during common
 ancestor discovery during the "git fetch" transaction.

 Will merge to 'master'.


* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
  (merged to 'next' on 2018-07-24 at 8d7e78a671)
 + tag: don't warn if target is missing but promised
 + revision: tolerate promised targets of tags

 The lazy clone support had a few places where missing but promised
 objects were not correctly tolerated, which have been fixed.

 Will merge to 'master'.


* sb/submodule-update-in-c (2018-07-18) 6 commits
 - submodule--helper: introduce new update-module-mode helper
 - builtin/submodule--helper: factor out method to update a single submodule
 - builtin/submodule--helper: store update_clone information in a struct
 - builtin/submodule--helper: factor out submodule updating
 - git-submodule.sh: rename unused variables
 - git-submodule.sh: align error reporting for update mode to use path

 "git submodule update" is getting rewritten piece-by-piece into C.

 It seems to pass its own self-tests standalone, but seems to break
 horribly when merged to 'pu'.


* sg/httpd-test-unflake (2018-07-12) 3 commits
  (merged to 'next' on 2018-07-24 at b7df820256)
 + t/lib-httpd: avoid occasional failures when checking access.log
 + t/lib-httpd: add the strip_access_log() helper function
 + t5541: clean up truncating access log

 httpd tests saw occasional breakage due to the way its access log
 gets inspected by the tests, which has been updated to make them
 less flaky.

 Will merge to 'master'.


* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits
 - commit: fix exit code for --short/--porcelain
 - wt-status: teach wt_status_collect about merges in progress
 - t7501: add merge conflict tests for dry run

 "git commit --dry-run" gave a correct exit status even during a
 conflict resolution toward a merge, but it did not with the
 "--short" option, which has been corrected.

 Will merge to 'next'.


* tg/rerere (2018-07-16) 11 commits
 - rerere: recalculate conflict ID when unresolved conflict is committed
 - rerere: teach rerere to handle nested conflicts
 - rerere: return strbuf from handle path
 - rerere: factor out handle_conflict function
 - rerere: only return whether a path has conflicts or not
 - rerere: fix crash when conflict goes unresolved
 - rerere: add documentation for conflict normalization
 - rerere: mark strings for translation
 - rerere: wrap paths in output in sq
 - rerere: lowercase error messages
 - rerere: unify error messages when read_cache fails


* jk/ui-color-always-to-auto (2018-07-18) 1 commit
 - Documentation: fix --color option formatting

 Doc formatting fix.

 Will merge to 'next' and then to 'master'.


* jh/json-writer (2018-07-16) 1 commit
 - json_writer: new routines to create JSON data
 (this branch is used by jh/structured-logging.)

 Preparatory code to later add json output for telemetry data.

 Will merge to 'next'.


* ag/rebase-i-in-c (2018-07-10) 13 commits
 - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
 - rebase -i: implement the logic to initialize the variable $revision in C
 - rebase--interactive: remove unused modes and functions
 - rebase--interactive: rewrite complete_action() in C
 - sequencer: change the way skip_unnecessary_picks() returns its result
 - sequencer: refactor append_todo_help() to write its message to a buffer
 - rebase -i: rewrite checkout_onto() in C
 - rebase -i: rewrite setup_reflog_action() in C
 - sequencer: add a new function to silence a command, except if it fails
 - rebase-interactive: rewrite the edit-todo functionality in C
 - editor: add a function to launch the sequence editor
 - rebase--interactive: rewrite append_todo_help() in C
 - sequencer: make two functions and an enum from sequencer.c public

 Piecemeal rewrite of the remaining "rebase -i" machinery in C.

 A reroll (which is rumored to be quite good) exists, but hasn't
 been picked up yet.


* sb/object-store-lookup (2018-06-29) 33 commits
  (merged to 'next' on 2018-07-24 at dd96e29376)
 + commit.c: allow lookup_commit_reference to handle arbitrary repositories
 + commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
 + tag.c: allow deref_tag to handle arbitrary repositories
 + object.c: allow parse_object to handle arbitrary repositories
 + object.c: allow parse_object_buffer to handle arbitrary repositories
 + commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
 + commit.c: allow set_commit_buffer to handle arbitrary repositories
 + commit.c: migrate the commit buffer to the parsed object store
 + commit-slabs: remove realloc counter outside of slab struct
 + commit.c: allow parse_commit_buffer to handle arbitrary repositories
 + tag: allow parse_tag_buffer to handle arbitrary repositories
 + tag: allow lookup_tag to handle arbitrary repositories
 + commit: allow lookup_commit to handle arbitrary repositories
 + tree: allow lookup_tree to handle arbitrary repositories
 + blob: allow lookup_blob to handle arbitrary repositories
 + object: allow lookup_object to handle arbitrary repositories
 + object: allow object_as_type to handle arbitrary repositories
 + tag: add repository argument to deref_tag
 + tag: add repository argument to parse_tag_buffer
 + tag: add repository argument to lookup_tag
 + commit: add repository argument to get_cached_commit_buffer
 + commit: add repository argument to set_commit_buffer
 + commit: add repository argument to parse_commit_buffer
 + commit: add repository argument to lookup_commit
 + commit: add repository argument to lookup_commit_reference
 + commit: add repository argument to lookup_commit_reference_gently
 + tree: add repository argument to lookup_tree
 + blob: add repository argument to lookup_blob
 + object: add repository argument to object_as_type
 + object: add repository argument to parse_object_buffer
 + object: add repository argument to lookup_object
 + object: add repository argument to parse_object
 + Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
 (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)

 lookup_commit_reference() and friends have been updated to find
 in-core object for a specific in-core repository instance.

 Will merge to 'master'.


* bc/object-id (2018-07-16) 16 commits
  (merged to 'next' on 2018-07-24 at 23680778a9)
 + pretty: switch hard-coded constants to the_hash_algo
 + sha1-file: convert constants to uses of the_hash_algo
 + log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
 + diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
 + builtin/merge-recursive: make hash independent
 + builtin/merge: switch to use the_hash_algo
 + builtin/fmt-merge-msg: make hash independent
 + builtin/update-index: simplify parsing of cacheinfo
 + builtin/update-index: convert to using the_hash_algo
 + refs/files-backend: use the_hash_algo for writing refs
 + sha1-name: use the_hash_algo when parsing object names
 + strbuf: allocate space with GIT_MAX_HEXSZ
 + commit: express tree entry constants in terms of the_hash_algo
 + hex: switch to using the_hash_algo
 + tree-walk: replace hard-coded constants with the_hash_algo
 + cache: update object ID functions for the_hash_algo

 Conversion from uchar[40] to struct object_id continues.

 Will merge to 'master'.


* en/dirty-merge-fixes (2018-07-11) 9 commits
  (merged to 'next' on 2018-07-24 at 7b6ca3507c)
 + merge: fix misleading pre-merge check documentation
 + merge-recursive: enforce rule that index matches head before merging
 + t6044: add more testcases with staged changes before a merge is invoked
 + merge-recursive: fix assumption that head tree being merged is HEAD
 + merge-recursive: make sure when we say we abort that we actually abort
 + t6044: add a testcase for index matching head, when head doesn't match HEAD
 + t6044: verify that merges expected to abort actually abort
 + index_has_changes(): avoid assuming operating on the_index
 + read-cache.c: move index_has_changes() from merge.c

 The recursive merge strategy did not properly ensure there was no
 change between HEAD and the index before performing its operation,
 which has been corrected.

 Will merge to 'master'.


* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
  (merged to 'next' on 2018-07-24 at 75055cb6e1)
 + t6036: add a failed conflict detection case: regular files, different modes
 + t6036: add a failed conflict detection case with conflicting types
 + t6036: add a failed conflict detection case with submodule add/add
 + t6036: add a failed conflict detection case with submodule modify/modify
 + t6036: add a failed conflict detection case with symlink add/add
 + t6036: add a failed conflict detection case with symlink modify/modify

 Tests to cover various conflicting cases have been added for
 merge-recursive.

 Will merge to 'master'.


* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
  (merged to 'next' on 2018-07-24 at b7b3514ef4)
 + t6036: fix broken && chain in sub-shell
 + t6036: add lots of detail for directory/file conflicts in recursive case

 Tests to cover more D/F conflict cases have been added for
 merge-recursive.

 Will merge to 'master'.


* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
  (merged to 'next' on 2018-07-24 at 65c80f72da)
 + t6042: add testcase covering long chains of rename conflicts
 + t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
 + t6042: add testcase covering rename/add/delete conflict type

 Various glitches in the heuristics of merge-recursive strategy have
 been documented in new tests.

 Will merge to 'master'.

 I am not sure if there is a single "correct" answer everybody can
 agree on for each of these "insane" cases, though.


* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
  (merged to 'next' on 2018-07-24 at 6cb7d02298)
 + t7405: verify 'merge --abort' works after submodule/path conflicts
 + t7405: add a directory/submodule conflict
 + t7405: add a file/submodule conflict

 Tests to cover conflict cases that involve submodules have been
 added for merge-recursive.

 Will merge to 'master'.


* es/test-fixes (2018-07-17) 26 commits
  (merged to 'next' on 2018-07-24 at fd6796a3ef)
 + t5608: fix broken &&-chain
 + t9119: fix broken &&-chains
 + t9000-t9999: fix broken &&-chains
 + t7000-t7999: fix broken &&-chains
 + t6000-t6999: fix broken &&-chains
 + t5000-t5999: fix broken &&-chains
 + t4000-t4999: fix broken &&-chains
 + t3030: fix broken &&-chains
 + t3000-t3999: fix broken &&-chains
 + t2000-t2999: fix broken &&-chains
 + t1000-t1999: fix broken &&-chains
 + t0000-t0999: fix broken &&-chains
 + t9814: simplify convoluted check that command correctly errors out
 + t9001: fix broken "invoke hook" test
 + t7810: use test_expect_code() instead of hand-rolled comparison
 + t7400: fix broken "submodule add/reconfigure --force" test
 + t7201: drop pointless "exit 0" at end of subshell
 + t6036: fix broken "merge fails but has appropriate contents" tests
 + t5505: modernize and simplify hard-to-digest test
 + t5406: use write_script() instead of birthing shell script manually
 + t5405: use test_must_fail() instead of checking exit code manually
 + t/lib-submodule-update: fix "absorbing" test
 + t: drop unnecessary terminating semicolon in subshell
 + t: use sane_unset() rather than 'unset' with broken &&-chain
 + t: use test_write_lines() instead of series of 'echo' commands
 + t: use test_might_fail() instead of manipulating exit code manually
 (this branch is used by es/chain-lint-in-subshell.)

 Test clean-up and corrections.

 Will merge to 'master'.


* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
  (merged to 'next' on 2018-07-24 at 5b15c800db)
 + fsck: downgrade gitmodulesParse default to "info"
 + fsck: split ".gitmodules too large" error from parse failure
 + fsck: silence stderr when parsing .gitmodules
 + config: add options parameter to git_config_from_mem
 + config: add CONFIG_ERROR_SILENT handler
 + config: turn die_on_error into caller-facing enum

 Recent "security fix" to pay attention to contents of ".gitmodules"
 while accepting "git push" was a bit overly strict than necessary,
 which has been adjusted.

 Will merge to 'master'.


* js/range-diff (2018-07-25) 21 commits
 - range-diff: use dim/bold cues to improve dual color mode
 - range-diff: make --dual-color the default mode
 - range-diff: left-pad patch numbers
 - completion: support `git range-diff`
 - range-diff: populate the man page
 - range-diff --dual-color: fix bogus white-space warning
 - range-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: add the meta color GIT_COLOR_REVERSE
 - range-diff: use color for the commit pairs
 - range-diff: add tests
 - range-diff: do not show "function names" in hunk headers
 - range-diff: adjust the output of the commit pairs
 - range-diff: suppress the diff headers
 - range-diff: indent the diffs just like tbdiff
 - range-diff: right-trim commit messages
 - range-diff: also show the diff between patches
 - range-diff: improve the order of the shown commits
 - range-diff: first rudimentary implementation
 - Introduce `range-diff` to compare iterations of a topic branch
 - linear-assignment: a function to solve least-cost assignment problems
 (this branch is used by es/format-patch-rangediff.)

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 Undecided.  

 Many "The feature is useful" comments without much real review; we
 know the feature is great as this mimicks tbdiff already so that is
 not news.

 I've squashed an obvious documentation fix in before rebasing the
 other topic that depends on it.  I _think_ we would probably be
 better off to _disable_ whitespace-error coloring altogether when
 showing diff-of-diff, and get rid of the workaround that only is
 applicable to the context lines of the outer diff (unless we first
 define how whitespace errors in diff-of-diff should be colored and
 implement it correctly, that is, but after seeing these two
 attempts, it seems that is harder than it is worth).


* jt/commit-graph-per-object-store (2018-07-17) 7 commits
  (merged to 'next' on 2018-07-24 at 090d1a4d59)
 + commit-graph: add repo arg to graph readers
 + commit-graph: store graph in struct object_store
 + commit-graph: add free_commit_graph
 + commit-graph: add missing forward declaration
 + object-store: add missing include
 + commit-graph: refactor preparing commit graph
 + Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
 (this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)

 The singleton commit-graph in-core instance is made per in-core
 repository instance.

 Will merge to 'master'.


* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
  (merged to 'next' on 2018-07-24 at 71c05d27b6)
 + gc --auto: release pack files before auto packing

 "git gc --auto" opens file descriptors for the packfiles before
 spawning "git repack/prune", which would upset Windows that does
 not want a process to work on a file that is open by another
 process.  The issue has been worked around.

 Will merge to 'master'.


* lt/date-human (2018-07-09) 1 commit
 - Add 'human' date format

 A new date format "--date=human" that morphs its output depending
 on how far the time is from the current time has been introduced.
 "--date=auto" can be used to use this new format when the output is
 goint to the pager or to the terminal and otherwise the default
 format.


* ot/ref-filter-object-info (2018-07-17) 5 commits
 - ref-filter: use oid_object_info() to get object
 - ref-filter: merge get_obj and get_object
 - ref-filter: initialize eaten variable
 - ref-filter: fill empty fields with empty values
 - ref-filter: add info_source to valid_atom

 A few atoms like %(objecttype) and %(objectsize) in the format
 specifier of "for-each-ref --format=<format>" can be filled without
 getting the full contents of the object, but just with the object
 header.  These cases have been optimzied by calling
 oid_object_info() API.

 What's the doneness of this one?


* pk/rebase-in-c (2018-07-23) 4 commits
 - builtin/rebase: support running "git rebase <upstream>"
 - sequencer: refactor the code to detach HEAD to checkout.c
 - rebase: refactor common shell functions into their own file
 - rebase: start implementing it as a builtin

 Piecemeal rewrite of the "rebase" machinery in C.
 Expecting a reroll, but it seems that this is getting quite close.
 cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>


* jt/fetch-nego-tip (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-24 at a9e299006d)
 + fetch-pack: support negotiation tip whitelist
 (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)

 "git fetch" learned a new option "--negotiation-tip" to limit the
 set of commits it tells the other end as "have", to reduce wasted
 bandwidth and cycles, which would be helpful when the receiving
 repository has a lot of refs that have little to do with the
 history at the remote it is fetching from.

 Will merge to 'master'.


* tb/grep-only-matching (2018-07-09) 2 commits
  (merged to 'next' on 2018-07-24 at 7e878b9d95)
 + grep.c: teach 'git grep --only-matching'
 + grep.c: extract show_line_header()

 "git grep" learned the "--only-matching" option.

 Will merge to 'master'.


* jk/branch-l-1-repurpose (2018-06-22) 1 commit
 - branch: make "-l" a synonym for "--list"

 Updated plan to repurpose the "-l" option to "git branch".

 Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.


* cc/remote-odb (2018-07-16) 9 commits
 - Documentation/config: add odb.<name>.promisorRemote
 - t0410: test fetching from many promisor remotes
 - Use odb.origin.partialclonefilter instead of core.partialclonefilter
 - Use remote_odb_get_direct() and has_remote_odb()
 - remote-odb: add remote_odb_reinit()
 - remote-odb: implement remote_odb_get_many_direct()
 - remote-odb: implement remote_odb_get_direct()
 - Add initial remote odb support
 - fetch-object: make functions return an error code


* ds/multi-pack-index (2018-07-20) 23 commits
 - midx: clear midx on repack
 - packfile: skip loading index if in multi-pack-index
 - midx: prevent duplicate packfile loads
 - midx: use midx in approximate_object_count
 - midx: use existing midx when writing new one
 - midx: use midx in abbreviation calculations
 - midx: read objects from multi-pack-index
 - config: create core.multiPackIndex setting
 - midx: write object offsets
 - midx: write object id fanout chunk
 - midx: write object ids in a chunk
 - midx: sort and deduplicate objects from packfiles
 - midx: read pack names into array
 - multi-pack-index: write pack names in chunk
 - multi-pack-index: read packfile list
 - packfile: generalize pack directory list
 - t5319: expand test data
 - multi-pack-index: load into memory
 - midx: write header information to lockfile
 - multi-pack-index: add 'write' verb
 - multi-pack-index: add builtin
 - multi-pack-index: add format details
 - multi-pack-index: add design document

 When there are too many packfiles in a repository (which is not
 recommended), looking up an object in these would require
 consulting many pack .idx files; a new mechanism to have a single
 file that consolidates all of these .idx files is introduced.

 Ready to move to 'next', with some known issues to be followed up?
 cf. <xmqqefg8uplg.fsf@gitster-ct.c.googlers.com>
 cf. <CAPig+cTU--KrGcv4C_CwBZEuec4dgm_tJqL=CFWKT6vxxR016w@mail.gmail.com>


* jt/fetch-pack-negotiator (2018-06-15) 7 commits
  (merged to 'next' on 2018-07-24 at 438efcd6b1)
 + fetch-pack: introduce negotiator API
 + fetch-pack: move common check and marking together
 + fetch-pack: make negotiation-related vars local
 + fetch-pack: use ref adv. to prune "have" sent
 + fetch-pack: directly end negotiation if ACK ready
 + fetch-pack: clear marks before re-marking
 + fetch-pack: split up everything_local()
 (this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)

 Code restructuring and a small fix to transport protocol v2 during
 fetching.

 Will merge to 'master'.


* is/parsing-line-range (2018-06-15) 2 commits
  (merged to 'next' on 2018-07-24 at a06b453f32)
 + log: prevent error if line range ends past end of file
 + blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Will merge to 'master'.


* ab/checkout-default-remote (2018-06-11) 8 commits
  (merged to 'next' on 2018-07-24 at 6ef645f485)
 + checkout & worktree: introduce checkout.defaultRemote
 + checkout: add advice for ambiguous "checkout <branch>"
 + builtin/checkout.c: use "ret" variable for return
 + checkout: pass the "num_matches" up to callers
 + checkout.c: change "unique" member to "num_matches"
 + checkout.c: introduce an *_INIT macro
 + checkout.h: wrap the arguments to unique_tracking_name()
 + checkout tests: index should be clean after dwim checkout

 "git checkout" and "git worktree add" learned to honor
 checkout.defaultRemote when auto-vivifying a local branch out of a
 remote tracking branch in a repository with multiple remotes that
 have tracking branches that share the same names.

 Will merge to 'master'.


* ds/commit-graph-fsck (2018-07-16) 23 commits
  (merged to 'next' on 2018-07-24 at 6a802adc7a)
 + coccinelle: update commit.cocci
 + commit-graph: update design document
 + gc: automatically write commit-graph files
 + commit-graph: add '--reachable' option
 + commit-graph: use string-list API for input
 + fsck: verify commit-graph
 + commit-graph: verify contents match checksum
 + commit-graph: test for corrupted octopus edge
 + commit-graph: verify commit date
 + commit-graph: verify generation number
 + commit-graph: verify parent list
 + commit-graph: verify root tree OIDs
 + commit-graph: verify objects exist
 + commit-graph: verify corrupt OID fanout and lookup
 + commit-graph: verify required chunks are present
 + commit-graph: verify catches corrupt signature
 + commit-graph: add 'verify' subcommand
 + commit-graph: load a root tree from specific graph
 + commit: force commit to parse from object database
 + commit-graph: parse commit from chosen graph
 + commit-graph: fix GRAPH_MIN_SIZE
 + commit-graph: UNLEAK before die()
 + t5318-commit-graph.sh: use core.commitGraph
 (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)

 "git fsck" learns to make sure the optional commit-graph file is in
 a sane state.

 Will merge to 'master'.


* ma/wrapped-info (2018-05-28) 2 commits
 - usage: prefix all lines in `vreportf()`, not just the first
 - usage: extract `prefix_suffix_lines()` from `advise()`

 An attempt to help making multi-line messages fed to warning(),
 error(), and friends more easily translatable.

 Will discard and wait for a cleaned-up rewrite.
 cf. <20180529213957.GF7964@sigill.intra.peff.net>


* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
  (merged to 'next' on 2018-07-24 at 9be51a88dc)
 + block alloc: add validations around cache_entry lifecyle
 + block alloc: allocate cache entries from mem_pool
 + mem-pool: fill out functionality
 + mem-pool: add life cycle management functions
 + mem-pool: only search head block for available space
 + block alloc: add lifecycle APIs for cache_entry structs
 + read-cache: teach make_cache_entry to take object_id
 + read-cache: teach refresh_cache_entry to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 Will merge to 'master'.

 This makes each cache-entry larger by either 4 or 8 bytes, which is
 a bit sad, though.


* sb/diff-color-move-more (2018-07-19) 10 commits
  (merged to 'next' on 2018-07-24 at 89c893cab2)
 + diff.c: offer config option to control ws handling in move detection
 + diff.c: add white space mode to move detection that allows indent changes
 + diff.c: factor advance_or_nullify out of mark_color_as_moved
 + diff.c: decouple white space treatment from move detection algorithm
 + diff.c: add a blocks mode for moved code detection
 + diff.c: adjust hash function signature to match hashmap expectation
 + diff.c: do not pass diff options as keydata to hashmap
 + t4015: avoid git as a pipe input
 + xdiff/xdiffi.c: remove unneeded function declarations
 + xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.

 Will merge to 'master'.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (topics)
       [not found]     ` <7v1wd1d0le.fsf@gitster.siamese.dyndns.org>
@ 2007-09-26 20:05  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-09-26 20:05 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed
with '-' are only in 'pu' while commits prefixed with '+' are
in 'next'.  The topics list the commits in reverse chronological
order.

* jk/diff-rename (Tue Sep 25 15:29:42 2007 -0400) 1 commit
 + diffcore-rename: cache file deltas

Parked in 'next' for now but is 'master' material.

* mv/unknown (Tue Sep 25 16:38:46 2007 +0200) 1 commit
 + Don't use "<unknown>" for placeholders and suppress printing of
   empty user formats.

Parked in 'next'; I was already burned by it not passing one of
the test cases, and I am not absolutely certain what else this
subtly breaks.  Hopefully minor.

* jb/remote-rm (Sun Sep 23 22:29:12 2007 -0700) 3 commits
 + git-remote rm: add tests and minor fix-ups
 + remote: document the 'rm' subcommand
 + remote: add 'rm' subcommand

Should be Ok to push out to 'master'.

* ml/submodule (Sun Sep 23 22:19:42 2007 -0400) 1 commit
 + git-submodule - allow a relative path as the subproject url

Should be Ok to push out to 'master'.

* lh/merge (Mon Sep 24 00:51:45 2007 +0200) 6 commits
 + git-merge: add --ff and --no-ff options
 + git-merge: add support for --commit and --no-squash
 + git-merge: add support for branch.<name>.mergeoptions
 + git-merge: refactor option parsing
 + git-merge: fix faulty SQUASH_MSG
 + Add test-script for git-merge porcelain

Comments?  I personally never felt need for --no-ff but the
series is reasonably clean so I do not see strong objection
against this series either.

* sv/svn (Fri Sep 21 15:27:01 2007 +1200) 3 commits
 + git-svn: handle changed svn command-line syntax
 + git-svn: fix test for trunk svn (transaction out of date)
 + git-svn: fix test for trunk svn (commit message not needed)

Will merge to 'master' this weekend.

* js/rebase-i (Tue Sep 25 16:43:15 2007 +0100) 1 commit
 + rebase -i: work on a detached HEAD

Waiting for autogc change as this textually interacts with it,
and the additional convenience can wait.

* jc/autogc (Mon Sep 17 00:55:13 2007 -0700) 10 commits
 + git-gc --auto: run "repack -A -d -l" as necessary.
 + git-gc --auto: restructure the way "repack" command line is built.
 + git-gc --auto: protect ourselves from accumulated cruft
 + git-gc --auto: add documentation.
 + git-gc --auto: move threshold check to need_to_gc() function.
 + repack -A -d: use --keep-unreachable when repacking
 + pack-objects --keep-unreachable
 + Export matches_pack_name() and fix its return value
 + Invoke "git gc --auto" from commit, merge, am and rebase.
 + Implement git gc --auto

I think the only remaining thing left with this thing is to
prevent more than one instances of it from running at the same
time.  Any takers?

* ph/strbuf (Tue Sep 25 10:22:44 2007 +0200) 37 commits
 + Small cache_tree_write refactor.
 + Make builtin-rerere use of strbuf nicer and more efficient.
 + Add strbuf_cmp.
 + strbuf_setlen(): do not barf on setting length of an empty buffer
   to 0
 + sq_quote_argv and add_to_string rework with strbuf's.
 + Full rework of quote_c_style and write_name_quoted.
 + ...

I had to make a small fix-up to strbuf_setlen() last night to
this series; this should be ready for 'master'.

And it is better to push this out early, as the series touches
everywhere and conflicts with peoples' patches.

* db/fetch-pack (Tue Sep 25 00:13:25 2007 -0400) 45 commits
 + Prevent send-pack from segfaulting when a branch doesn't match
 + Cleanup unnecessary break in remote.c
 + Cleanup style nit of 'x == NULL' in remote.c
 + Fix memory leaks when disconnecting transport instances
 + Ensure builtin-fetch honors {fetch,transfer}.unpackLimit
 + ...

Two issues known to me are:

 - "rsync" transport is not supported yet;

 - regresses "git pull <name>" using .git/remotes/<name>; does
   not merge the first refspec when branch.<name>.merge is not
   set.

There may be others but some people apparently use this in
production (including me) and I do not expect major breakages in
the really essential part.

* ss/svnimport (Mon Sep 24 12:57:40 2007 +0200) 1 commit
 + Fix pool handling in git-svnimport to avoid memory leaks.

This is meant to eventually go to 'maint' as well but with
diminishing user base of svnimport it is getting harder to get
good "tested successfully, seen improvements" reports.

* jc/stash-create (Mon Jul 9 00:51:23 2007 -0700) 2 commits
 + rebase: allow starting from a dirty tree.
 + stash: implement "stash create"

I think "stash create" is going in a good direction, but I do
not think rebase should unstash unconditionally on the resulting
work tree.  A good compromise might be not to unstash if the
user asked to switch branches first and to unstash if he didn't.

* kh/commit (Mon Sep 17 20:06:48 2007 -0400) 7 commits
 - Implement git commit as a builtin command.
 - Export rerere() and launch_editor().
 - Add strbuf_read_file().
 - Clean up stripspace a bit, use strbuf even more.
 - Introduce entry point for launching add--interactive.
 - Enable wt-status to run against non-standard index file.
 - Enable wt-status output to a given FILE pointer.

There were a few updates/replacements to the list I missed;

* gr/smtp (Tue Sep 25 17:27:54 2007 -0700) 2 commits
 - [TO BE SQUASHED] Fix-up after review
 - Add ability to specify SMTP server port when using git-send-email.

Will be in 'next'.

^ permalink raw reply	[relevance 3%]

* [PATCH 0/4] merge: cleanups and fix
@ 2021-06-13 22:58  3% Felipe Contreras
  0 siblings, 0 replies; 200+ results
From: Felipe Contreras @ 2021-06-13 22:58 UTC (permalink / raw)
  To: git; +Cc: Jeff King, Junio C Hamano, Felipe Contreras

Investigating a crash with the proposed zdiff3 [1] I found some easy
improvements in the merge/xmerge code and one crash fix.

These should not cause any functional changes, even the fix doesn't
affect any current code-paths.

[1] https://lore.kernel.org/git/YMYnVWSEgxvKRU9j@coredump.intra.peff.net/

Felipe Contreras (4):
  merge: simplify initialization
  merge: fix Yoda conditions
  xdiff/xmerge: simplify xdl_recs_copy_0
  xdiff/xmerge: fix chg0 initialization

 builtin/merge-file.c |  8 ++------
 xdiff/xmerge.c       | 30 ++++++++++++++++--------------
 2 files changed, 18 insertions(+), 20 deletions(-)

-- 
2.32.0


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.18.0
@ 2018-06-21 19:27  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-21 19:27 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.18.0 is now available at the
usual places.  It is comprised of 903 non-merge commits since
v2.17.0, contributed by 80 people, 24 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.18.0'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.17.0 are as follows.
Welcome to the Git development community!

  Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
  Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
  Florian Gamböck, Harald Nordgren, Jeremy Linton, Karthikeyan
  Singaravelan, Leif Middelschulte, Loganaden Velvindron, Luis
  Marsano, Meng-Sung Wu, Paul-Sebastian Ungureanu, Pedro Alvarez
  Piedehierro, Pratik Karki, Romain Merland, Ryan Dammrose,
  Takuto Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alexander Shopov, Anders Kaseorg,
  Andreas Heiduk, Andre Hinrichs, Antonio Ospite, Beat Bolli,
  Ben Peart, Brandon Williams, brian m. carlson, Changwoo Ryu,
  Christian Couder, Christian Hesse, Christopher Diaz Riveros,
  Clemens Buchacher, David Turner, Derrick Stolee, Elijah Newren,
  Eric Sunshine, Jameson Miller, Jean-Noël Avila, Jeff King,
  Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
  Jonathan Tan, Jordi Mas, Junio C Hamano, Kaartic Sivaraam,
  Kyle Meyer, Lars Schneider, Lucas Werkmeister, Luke Diamand,
  Martin Ågren, Michal Nazarewicz, Michele Locati, Nguyễn Thái
  Ngọc Duy, Olga Telezhnaya, Orgad Shaneh, Peter Krefting, Philip
  Oakley, Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe,
  Robert P. J. Day, Sergey Organov, Stefan Agner, Stefan Beller,
  SZEDER Gábor, Taylor Blau, Thomas Gummerer, Todd Zullinger,
  Torsten Bögershausen, and Trần Ngọc Quân.

----------------------------------------------------------------

Git 2.18 Release Notes
======================

Updates since v2.17
-------------------

UI, Workflows & Features

 * Rename detection logic that is used in "merge" and "cherry-pick" has
   learned to guess when all of x/a, x/b and x/c have moved to z/a,
   z/b and z/c, it is likely that x/d added in the meantime would also
   want to move to z/d by taking the hint that the entire directory
   'x' moved to 'z'.  A bug causing dirty files involved in a rename
   to be overwritten during merge has also been fixed as part of this
   work.  Incidentally, this also avoids updating a file in the
   working tree after a (non-trivial) merge whose result matches what
   our side originally had.

 * "git filter-branch" learned to use a different exit code to allow
   the callers to tell the case where there was no new commits to
   rewrite from other error cases.

 * When built with more recent cURL, GIT_SSL_VERSION can now specify
   "tlsv1.3" as its value.

 * "git gui" learned that "~/.ssh/id_ecdsa.pub" and
   "~/.ssh/id_ed25519.pub" are also possible SSH key files.
   (merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).

 * "git gui" performs commit upon CTRL/CMD+ENTER but the
   CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
   same key binding.  It now does.
   (merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).

 * "git gui" has been taught to work with old versions of tk (like
   8.5.7) that do not support "ttk::style theme use" as a way to query
   the current theme.
   (merge 4891961105 cb/git-gui-ttk-style later to maint).

 * "git rebase" has learned to honor "--signoff" option when using
   backends other than "am" (but not "--preserve-merges").

 * "git branch --list" during an interrupted "rebase -i" now lets
   users distinguish the case where a detached HEAD is being rebased
   and a normal branch is being rebased.

 * "git mergetools" learned talking to guiffy.

 * The scripts in contrib/emacs/ have outlived their usefulness and
   have been replaced with a stub that errors out and tells the user
   there are replacements.

 * The new "working-tree-encoding" attribute can ask Git to convert the
   contents to the specified encoding when checking out to the working
   tree (and the other way around when checking in).

 * The "git config" command uses separate options e.g. "--int",
   "--bool", etc. to specify what type the caller wants the value to
   be interpreted as.  A new "--type=<typename>" option has been
   introduced, which would make it cleaner to define new types.

 * "git config --get" learned the "--default" option, to help the
   calling script.  Building on top of the above changes, the
   "git config" learns "--type=color" type.  Taken together, you can
   do things like "git config --get foo.color --default blue" and get
   the ANSI color sequence for the color given to foo.color variable,
   or "blue" if the variable does not exist.

 * "git ls-remote" learned an option to allow sorting its output based
   on the refnames being shown.

 * The command line completion (in contrib/) has been taught that "git
   stash save" has been deprecated ("git stash push" is the preferred
   spelling in the new world) and does not offer it as a possible
   completion candidate when "git stash push" can be.

 * "git gc --prune=nonsense" spent long time repacking and then
   silently failed when underlying "git prune --expire=nonsense"
   failed to parse its command line.  This has been corrected.

 * Error messages from "git push" can be painted for more visibility.

 * "git http-fetch" (deprecated) had an optional and experimental
   "feature" to fetch only commits and/or trees, which nobody used.
   This has been removed.

 * The functionality of "$GIT_DIR/info/grafts" has been superseded by
   the "refs/replace/" mechanism for some time now, but the internal
   code had support for it in many places, which has been cleaned up
   in order to drop support of the "grafts" mechanism.

 * "git worktree add" learned to check out an existing branch.

 * "git --no-pager cmd" did not have short-and-sweet single letter
   option. Now it does as "-P".
   (merge 7213c28818 js/no-pager-shorthand later to maint).

 * "git rebase" learned "--rebase-merges" to transplant the whole
   topology of commit graph elsewhere.

 * "git status" learned to pay attention to UI related diff
   configuration variables such as diff.renames.

 * The command line completion mechanism (in contrib/) learned to load
   custom completion file for "git $command" where $command is a
   custom "git-$command" that the end user has on the $PATH when using
   newer version of bash-completion.

 * "git send-email" can sometimes offer confirmation dialog "Send this
   email?" with choices 'Yes', 'No', 'Quit', and 'All'.  A new action
   'Edit' has been added to this dialog's choice.

 * With merge.renames configuration set to false, the recursive merge
   strategy can be told not to spend cycles trying to find renamed
   paths and merge them accordingly.

 * "git status" learned to honor a new status.renames configuration to
   skip rename detection, which could be useful for those who want to
   do so without disabling the default rename detection done by the
   "git diff" command.

 * Command line completion (in contrib/) learned to complete pathnames
   for various commands better.

 * "git blame" learns to unhighlight uninteresting metadata from the
   originating commit on lines that are the same as the previous one,
   and also paint lines in different colors depending on the age of
   the commit.

 * Transfer protocol v2 learned to support the partial clone.

 * When a short hexadecimal string is used to name an object but there
   are multiple objects that share the string as the prefix of their
   names, the code lists these ambiguous candidates in a help message.
   These object names are now sorted according to their types for
   easier eyeballing.

 * "git fetch $there $refspec" that talks over protocol v2 can take
   advantage of server-side ref filtering; the code has been extended
   so that this mechanism triggers also when fetching with configured
   refspec.

 * Our HTTP client code used to advertise that we accept gzip encoding
   from the other side; instead, just let cURL library to advertise
   and negotiate the best one.

 * "git p4" learned to "unshelve" shelved commit from P4.
   (merge 123f631761 ld/p4-unshelve later to maint).


Performance, Internal Implementation, Development Support etc.

 * A "git fetch" from a repository with insane number of refs into a
   repository that is already up-to-date still wasted too many cycles
   making many lstat(2) calls to see if these objects at the tips
   exist as loose objects locally.  These lstat(2) calls are optimized
   away by enumerating all loose objects beforehand.
   It is unknown if the new strategy negatively affects existing use
   cases, fetching into a repository with many loose objects from a
   repository with small number of refs.

 * Git can be built to use either v1 or v2 of the PCRE library, and so
   far, the build-time configuration USE_LIBPCRE=YesPlease instructed
   the build procedure to use v1, but now it means v2.  USE_LIBPCRE1
   and USE_LIBPCRE2 can be used to explicitly choose which version to
   use, as before.

 * The build procedure learned to optionally use symbolic links
   (instead of hardlinks and copies) to install "git-foo" for built-in
   commands, whose binaries are all identical.

 * Conversion from uchar[20] to struct object_id continues.

 * The way "git worktree prune" worked internally has been simplified,
   by assuming how "git worktree move" moves an existing worktree to a
   different place.

 * Code clean-up for the "repository" abstraction.
   (merge 00a3da2a13 nd/remove-ignore-env-field later to maint).

 * Code to find the length to uniquely abbreviate object names based
   on packfile content, which is a relatively recent addtion, has been
   optimized to use the same fan-out table.

 * The mechanism to use parse-options API to automate the command line
   completion continues to get extended and polished.

 * Copies of old scripted Porcelain commands in contrib/examples/ have
   been removed.

 * Some tests that rely on the exact hardcoded values of object names
   have been updated in preparation for hash function migration.

 * Perf-test update.

 * Test helper update.

 * The effort continues to refactor the internal global data structure
   to make it possible to open multiple repositories, work with and
   then close them,

 * Small test-helper programs have been consolidated into a single
   binary.

 * API clean-up around ref-filter code.

 * Shell completion (in contrib) that gives list of paths have been
   optimized somewhat.

 * The index file is updated to record the fsmonitor section after a
   full scan was made, to avoid wasting the effort that has already
   spent.

 * Performance measuring framework in t/perf learned to help bisecting
   performance regressions.

 * Some multi-word source filenames are being renamed to separate
   words with dashes instead of underscores.

 * An reusable "memory pool" implementation has been extracted from
   fast-import.c, which in turn has become the first user of the
   mem-pool API.

 * A build-time option has been added to allow Git to be told to refer
   to its associated files relative to the main binary, in the same
   way that has been possible on Windows for quite some time, for
   Linux, BSDs and Darwin.

 * Precompute and store information necessary for ancestry traversal
   in a separate file to optimize graph walking.

 * The effort to pass the repository in-core structure throughout the
   API continues.  This round deals with the code that implements the
   refs/replace/ mechanism.

 * The build procedure "make DEVELOPER=YesPlease" learned to enable a
   bit more warning options depending on the compiler used to help
   developers more.  There also is "make DEVOPTS=tokens" knob
   available now, for those who want to help fixing warnings we
   usually ignore, for example.

 * A new version of the transport protocol is being worked on.

 * The code to interface to GPG has been restructured somewhat to make
   it cleaner to integrate with other types of signature systems later.

 * The code has been taught to use the duplicated information stored
   in the commit-graph file to learn the tree object name for a commit
   to avoid opening and parsing the commit object when it makes sense
   to do so.

 * "git gc" in a large repository takes a lot of time as it considers
   to repack all objects into one pack by default.  The command has
   been taught to pretend as if the largest existing packfile is
   marked with ".keep" so that it is left untouched while objects in
   other packs and loose ones are repacked.

 * The transport protocol v2 is getting updated further.

 * The codepath around object-info API has been taught to take the
   repository object (which in turn tells the API which object store
   the objects are to be located).

 * "git pack-objects" needs to allocate tons of "struct object_entry"
   while doing its work, and shrinking its size helps the performance
   quite a bit.

 * The implementation of "git rebase -i --root" has been updated to use
   the sequencer machinery more.

 * Developer support update, by using BUG() macro instead of die() to
   mark codepaths that should not happen more clearly.

 * Developer support.  Use newer GCC on one of the builds done at
   TravisCI.org to get more warnings and errors diagnosed.

 * Conversion from uchar[20] to struct object_id continues.

 * By code restructuring of submodule merge in merge-recursive,
   informational messages from the codepath are now given using the
   same mechanism as other output, and honor the merge.verbosity
   configuration.  The code also learned to give a few new messages
   when a submodule three-way merge resolves cleanly when one side
   records a descendant of the commit chosen by the other side.

 * Avoid unchecked snprintf() to make future code auditing easier.
   (merge ac4896f007 jk/snprintf-truncation later to maint).

 * Many tests hardcode the raw object names, which would change once
   we migrate away from SHA-1.  While some of them must test against
   exact object names, most of them do not have to use hardcoded
   constants in the test.  The latter kind of tests have been updated
   to test the moral equivalent of the original without hardcoding the
   actual object names.

 * The list of commands with their various attributes were spread
   across a few places in the build procedure, but it now is getting a
   bit more consolidated to allow more automation.

 * Quite a many tests assumed that newly created refs are made as
   loose refs using the files backend, which have been updated to use
   proper plumbing like rev-parse and update-ref, to avoid breakage
   once we start using different ref backends.


Also contains various documentation updates and code clean-ups.


Fixes since v2.17
-----------------

 * "git shortlog cruft" aborted with a BUG message when run outside a
   Git repository.  The command has been taught to complain about
   extra and unwanted arguments on its command line instead in such a
   case.
   (merge 4aa0161e83 ma/shortlog-revparse later to maint).

 * "git stash push -u -- <pathspec>" gave an unnecessary and confusing
   error message when there was no tracked files that match the
   <pathspec>, which has been fixed.
   (merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).

 * "git tag --contains no-such-commit" gave a full list of options
   after giving an error message.
   (merge 3bb0923f06 ps/contains-id-error-message later to maint).

 * "diff-highlight" filter (in contrib/) learned to understand "git log
   --graph" output better.
   (merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).

 * when refs that do not point at committish are given, "git
   filter-branch" gave a misleading error messages.  This has been
   corrected.
   (merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).

 * "git submodule status" misbehaved on a submodule that has been
   removed from the working tree.
   (merge 74b6bda32f rs/status-with-removed-submodule later to maint).

 * When credential helper exits very quickly without reading its
   input, it used to cause Git to die with SIGPIPE, which has been
   fixed.
   (merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).

 * "git rebase --keep-empty" still removed an empty commit if the
   other side contained an empty commit (due to the "does an
   equivalent patch exist already?" check), which has been corrected.
   (merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).

 * Some codepaths, including the refs API, get and keep relative
   paths, that go out of sync when the process does chdir(2).  The
   chdir-notify API is introduced to let these codepaths adjust these
   cached paths to the new current directory.
   (merge fb9c2d2703 jk/relative-directory-fix later to maint).

 * "cd sub/dir && git commit ../path" ought to record the changes to
   the file "sub/path", but this regressed long time ago.
   (merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).

 * Recent introduction of "--log-destination" option to "git daemon"
   did not work well when the daemon was run under "--inetd" mode.
   (merge e67d906d73 lw/daemon-log-destination later to maint).

 * Small fix to the autoconf build procedure.
   (merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).

 * Fix an unexploitable (because the oversized contents are not under
   attacker's control) buffer overflow.
   (merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).

 * Recent simplification of build procedure forgot a bit of tweak to
   the build procedure of contrib/mw-to-git/
   (merge d8698987f3 ab/simplify-perl-makefile later to maint).

 * Moving a submodule that itself has submodule in it with "git mv"
   forgot to make necessary adjustment to the nested sub-submodules;
   now the codepath learned to recurse into the submodules.

 * "git config --unset a.b", when "a.b" is the last variable in an
   otherwise empty section "a", left an empty section "a" behind, and
   worse yet, a subsequent "git config a.c value" did not reuse that
   empty shell and instead created a new one.  These have been
   (partially) corrected.
   (merge c71d8bb38a js/empty-config-section-fix later to maint).

 * "git worktree remove" learned that "-f" is a shorthand for
   "--force" option, just like for "git worktree add".
   (merge d228eea514 sb/worktree-remove-opt-force later to maint).

 * The completion script (in contrib/) learned to clear cached list of
   command line options upon dot-sourcing it again in a more efficient
   way.
   (merge 94408dc71c sg/completion-clear-cached later to maint).

 * "git svn" had a minor thinko/typo which has been fixed.
   (merge 51db271587 ab/git-svn-get-record-typofix later to maint).

 * During a "rebase -i" session, the code could give older timestamp
   to commits created by later "pick" than an earlier "reword", which
   has been corrected.
   (merge 12f7babd6b js/ident-date-fix later to maint).

 * "git submodule status" did not check the symbolic revision name it
   computed for the submodule HEAD is not the NULL, and threw it at
   printf routines, which has been corrected.
   (merge 0b5e2ea7cf nd/submodule-status-fix later to maint).

 * When fed input that already has In-Reply-To: and/or References:
   headers and told to add the same information, "git send-email"
   added these headers separately, instead of appending to an existing
   one, which is a violation of the RFC.  This has been corrected.
   (merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).

 * "git fast-export" had a regression in v2.15.0 era where it skipped
   some merge commits in certain cases, which has been corrected.
   (merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).

 * The code did not propagate the terminal width to subprocesses via
   COLUMNS environment variable, which it now does.  This caused
   trouble to "git column" helper subprocess when "git tag --column=row"
   tried to list the existing tags on a display with non-default width.
   (merge b5d5a567fb nd/term-columns later to maint).

 * We learned that our source files with ".pl" and ".py" extensions
   are Perl and Python files respectively and changes to them are
   better viewed as such with appropriate diff drivers.
   (merge 7818b619e2 ab/perl-python-attrs later to maint).

 * "git rebase -i" sometimes left intermediate "# This is a
   combination of N commits" message meant for the human consumption
   inside an editor in the final result in certain corner cases, which
   has been fixed.
   (merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).

 * A test to see if the filesystem normalizes UTF-8 filename has been
   updated to check what we need to know in a more direct way, i.e. a
   path created in NFC form can be accessed with NFD form (or vice
   versa) to cope with APFS as well as HFS.
   (merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).

 * "git format-patch --cover --attach" created a broken MIME multipart
   message for the cover letter, which has been fixed by keeping the
   cover letter as plain text file.
   (merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).

 * The split-index feature had a long-standing and dormant bug in
   certain use of the in-core merge machinery, which has been fixed.
   (merge 7db118303a en/unpack-trees-split-index-fix later to maint).

 * Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
   render illustration in a literal block correctly when indented with
   HT by default. The problem is fixed by forcing 8-space tabs.
   (merge 379805051d bc/asciidoctor-tab-width later to maint).

 * Code clean-up to adjust to a more recent lockfile API convention that
   allows lockfile instances kept on the stack.
   (merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).

 * the_repository->index is not a allocated piece of memory but
   repo_clear() indiscriminately attempted to free(3) it, which has
   been corrected.
   (merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).

 * Code clean-up to avoid non-standard-conformant pointer arithmetic.
   (merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).

 * Code clean-up to turn history traversal more robust in a
   semi-corrupt repository.
   (merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).

 * "git update-ref A B" is supposed to ensure that ref A does not yet
   exist when B is a NULL OID, but this check was not done correctly
   for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.

 * "git submodule update" and "git submodule add" supported the
   "--reference" option to borrow objects from a neighbouring local
   repository like "git clone" does, but lacked the more recent
   invention "--dissociate".  Also "git submodule add" has been taught
   to take the "--progress" option.
   (merge a0ef29341a cf/submodule-progress-dissociate later to maint).

 * Update credential-netrc helper (in contrib/) to allow customizing
   the GPG used to decrypt the encrypted .netrc file.
   (merge 786ef50a23 lm/credential-netrc later to maint).

 * "git submodule update" attempts two different kinds of "git fetch"
   against the upstream repository to grab a commit bound at the
   submodule's path, but it incorrectly gave up if the first kind
   (i.e. a normal fetch) failed, making the second "last resort" one
   (i.e. fetching an exact commit object by object name) ineffective.
   This has been corrected.
   (merge e30d833671 sb/submodule-update-try-harder later to maint).

 * Error behaviour of "git grep" when it cannot read the index was
   inconsistent with other commands that uses the index, which has
   been corrected to error out early.
   (merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).

 * We used to call regfree() after regcomp() failed in some codepaths,
   which have been corrected.
   (merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).

 * The import-tars script (in contrib/) has been taught to handle
   tarballs with overly long paths that use PAX extended headers.
   (merge 12ecea46e3 pa/import-tars-long-names later to maint).

 * "git rev-parse Y..." etc. misbehaved when given endpoints were
   not committishes.
   (merge 0ed556d38f en/rev-parse-invalid-range later to maint).

 * "git pull --recurse-submodules --rebase", when the submodule
   repository's history did not have anything common between ours and
   the upstream's, failed to execute.  We need to fetch from them to
   continue even in such a case.
   (merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, but only one of them was documented.
   (merge a97447a42a nd/remote-update-doc later to maint).

 * "index-pack --strict" has been taught to make sure that it runs the
   final object integrity checks after making the freshly indexed
   packfile available to itself.
   (merge 3737746120 jk/index-pack-maint later to maint).

 * Make zlib inflate codepath more robust against versions of zlib
   that clobber unused portion of outbuf.
   (merge b611396e97 jl/zlib-restore-nul-termination later to maint).

 * Fix old merge glitch in Documentation during v2.13-rc0 era.
   (merge 28cb06020b mw/doc-merge-enumfix later to maint).

 * The code to read compressed bitmap was not careful to avoid reading
   past the end of the file, which has been corrected.
   (merge 1140bf01ec jk/ewah-bounds-check later to maint).

 * "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
   (i.e. linkage of -lintl, -liconv, etc. that are platform-specific
   tweaks), which has been corrected.
   (merge fdb1fbbc7d es/make-no-iconv later to maint).

 * Other minor doc, test and build updates and code cleanups.
   (merge 248f66ed8e nd/trace-with-env later to maint).
   (merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
   (merge 5988eb631a ab/doc-hash-brokenness later to maint).
   (merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
   (merge 05e293c1ac jk/flockfile-stdio later to maint).
   (merge e9184b0789 jk/t5561-missing-curl later to maint).
   (merge b1801b85a3 nd/worktree-move later to maint).
   (merge bbd374dd20 ak/bisect-doc-typofix later to maint).
   (merge 4855f06fb3 mn/send-email-credential-doc later to maint).
   (merge 8523b1e355 en/doc-typoes later to maint).
   (merge 43b44ccfe7 js/t5404-path-fix later to maint).
   (merge decf711fc1 ps/test-chmtime-get later to maint).
   (merge 22d11a6e8e es/worktree-docs later to maint).
   (merge 92a5dbbc22 tg/use-git-contacts later to maint).
   (merge adc887221f tq/t1510 later to maint).
   (merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
   (merge 73364e4f10 tz/doc-git-urls-reference later to maint).
   (merge cd1e606bad bc/mailmap-self later to maint).
   (merge f7997e3682 ao/config-api-doc later to maint).
   (merge ee930754d8 jk/apply-p-doc later to maint).
   (merge 011b648646 nd/pack-format-doc later to maint).
   (merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
   (merge f6b82970aa sg/t5516-fixes later to maint).
   (merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
   (merge 7d0ee47c11 js/test-unset-prereq later to maint).
   (merge 5356a3c354 ah/misc-doc-updates later to maint).
   (merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
   (merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
   (merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
   (merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
   (merge 590551ca2c rd/tag-doc-lightweight later to maint).
   (merge 44f560fc16 rd/init-typo later to maint).
   (merge f156a0934a rd/p4-doc-markup-env later to maint).
   (merge 2a00502b14 tg/doc-sec-list later to maint).
   (merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
   (merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
   (merge 7eedad15df rd/diff-options-typofix later to maint).
   (merge 58ebd936cc km/doc-workflows-typofix later to maint).
   (merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
   (merge cf317877e3 ks/branch-set-upstream later to maint).
   (merge 8de19d6be8 sg/t7406-chain-fix later to maint).

----------------------------------------------------------------

Changes since v2.17.0 are as follows:

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (3608t)
      l10n: bg.po: Updated Bulgarian translation (3608t)

Anders Kaseorg (1):
      Documentation/git-bisect.txt: git bisect term → git bisect terms

Andre Hinrichs (1):
      l10n: de.po: fix typos

Andreas Heiduk (9):
      git-svn: search --authors-prog in PATH too
      git-svn: allow empty email-address using authors-prog and authors-file
      doc: improve formatting in githooks.txt
      doc: align 'diff --no-index' in text and synopsis
      doc: clarify ignore rules for git ls-files
      doc: add '-d' and '-o' for 'git push'
      git-svn: remove ''--add-author-from' for 'commit-diff'
      doc: add note about shell quoting to revision.txt
      doc: normalize [--options] to [options] in git-diff

Antonio Ospite (1):
      doc: fix config API documentation about config_with_options

Beat Bolli (1):
      git-gui: search for all current SSH key types

Ben Peart (7):
      fsmonitor: fix incorrect buffer size when printing version number
      fsmonitor: force index write after full scan
      test-drop-caches: simplify delay loading of NtSetSystemInformation
      merge: update documentation for {merge,diff}.renameLimit
      merge: add merge.renames config setting
      merge: pass aggressive when rename detection is turned off
      add status config and command line options for rename detection

Bill Ritcher (1):
      mergetools: add support for guiffy

Birger Skogeng Pedersen (1):
      git-gui: bind CTRL/CMD+numpad ENTER to do_commit

Brandon Williams (79):
      pkt-line: introduce packet_read_with_status
      pkt-line: allow peeking a packet line without consuming it
      pkt-line: add delim packet support
      upload-pack: convert to a builtin
      upload-pack: factor out processing lines
      transport: use get_refs_via_connect to get refs
      connect: convert get_remote_heads to use struct packet_reader
      connect: discover protocol version outside of get_remote_heads
      transport: store protocol version
      protocol: introduce enum protocol_version value protocol_v2
      test-pkt-line: introduce a packet-line test helper
      serve: introduce git-serve
      ls-refs: introduce ls-refs server command
      connect: request remote refs using v2
      transport: convert get_refs_list to take a list of ref prefixes
      transport: convert transport_get_remote_refs to take a list of ref prefixes
      ls-remote: pass ref prefixes when requesting a remote's refs
      fetch: pass ref prefixes when fetching
      push: pass ref prefixes when pushing
      upload-pack: introduce fetch server command
      fetch-pack: perform a fetch using v2
      fetch-pack: support shallow requests
      connect: refactor git_connect to only get the protocol version once
      connect: don't request v2 when pushing
      transport-helper: remove name parameter
      transport-helper: refactor process_connect_service
      transport-helper: introduce stateless-connect
      pkt-line: add packet_buf_write_len function
      remote-curl: create copy of the service name
      remote-curl: store the protocol version the server responded with
      http: allow providing extra headers for http requests
      http: don't always add Git-Protocol header
      http: eliminate "# service" line when using protocol v2
      remote-curl: implement stateless-connect command
      remote-curl: don't request v2 when pushing
      commit: allow partial commits with relative paths
      serve: introduce the server-option capability
      ls-remote: send server options when using protocol v2
      fetch: send server options when using protocol v2
      refspec: move refspec parsing logic into its own file
      refspec: rename struct refspec to struct refspec_item
      refspec: factor out parsing a single refspec
      refspec: introduce struct refspec
      refspec: convert valid_fetch_refspec to use parse_refspec
      submodule--helper: convert push_check to use struct refspec
      pull: convert get_tracking_branch to use refspec_item_init
      transport: convert transport_push to use struct refspec
      remote: convert check_push_refs to use struct refspec
      remote: convert match_push_refs to use struct refspec
      clone: convert cmd_clone to use refspec_item_init
      fast-export: convert to use struct refspec
      remote: convert push refspecs to struct refspec
      remote: convert fetch refspecs to struct refspec
      remote: remove add_prune_tags_to_fetch_refspec
      transport-helper: convert to use struct refspec
      fetch: convert fetch_one to use struct refspec
      fetch: convert refmap to use struct refspec
      refspec: remove the deprecated functions
      fetch: convert do_fetch to take a struct refspec
      fetch: convert get_ref_map to take a struct refspec
      fetch: convert prune_refs to take a struct refspec
      remote: convert get_stale_heads to take a struct refspec
      remote: convert apply_refspecs to take a struct refspec
      remote: convert query_refspecs to take a struct refspec
      remote: convert get_ref_match to take a struct refspec
      remote: convert match_explicit_refs to take a struct refspec
      push: check for errors earlier
      push: convert to use struct refspec
      transport: convert transport_push to take a struct refspec
      send-pack: store refspecs in a struct refspec
      transport: remove transport_verify_remote_names
      http-push: store refspecs in a struct refspec
      remote: convert match_push_refs to take a struct refspec
      remote: convert check_push_refs to take a struct refspec
      submodule: convert push_unpushed_submodules to take a struct refspec
      refspec: consolidate ref-prefix generation logic
      fetch: generate ref-prefixes when using a configured refspec
      remote-curl: accept all encodings supported by curl
      remote-curl: accept compressed responses with protocol v2

Casey Fitzpatrick (3):
      submodule: clean up substitutions in script
      submodule: add --progress option to add command
      submodule: add --dissociate option to add/update commands

Changwoo Ryu (1):
      l10n: ko.po: Update Korean translation

Christian Couder (7):
      perf/aggregate: add display_dir()
      perf/aggregate: add --sort-by=regression option
      perf/run: add --subsection option
      t/perf: add scripts to bisect performance regressions
      perf/aggregate: use Getopt::Long for option parsing
      perf/bisect_run_script: disable codespeed
      t990X: use '.git/objects' as 'deep inside .git' path

Christian Hesse (2):
      perl: fix installing modules from contrib
      Makefile: mark perllibdir as a .PHONY target

Christopher Diaz Riveros (3):
      l10n: es.po: Spanish update for v2.18.0 round 1
      l10n: es.po: Spanish update for v2.18.0 round 2
      l10n: es.po: Spanish update for v2.18.0 round 3

Clemens Buchacher (2):
      git-gui: workaround ttk:style theme use
      completion: improve ls-files filter performance

Dan Jacques (3):
      Makefile: generate Perl header from template file
      Makefile: add Perl runtime prefix support
      exec_cmd: RUNTIME_PREFIX on some POSIX systems

David Turner (1):
      t: make many tests depend less on the refs being files

Derrick Stolee (20):
      packfile: define and use bsearch_pack()
      sha1_name: use bsearch_pack() for abbreviations
      csum-file: rename hashclose() to finalize_hashfile()
      csum-file: refactor finalize_hashfile() method
      commit-graph: add format document
      graph: add commit graph design document
      commit-graph: create git-commit-graph builtin
      commit-graph: implement write_commit_graph()
      commit-graph: implement git-commit-graph write
      commit-graph: implement git commit-graph read
      commit-graph: add core.commitGraph setting
      commit-graph: close under reachability
      commit: integrate commit graph with commit parsing
      commit-graph: read only from specific pack-indexes
      commit-graph: build graph from starting commits
      commit-graph: implement "--append" option
      treewide: rename tree to maybe_tree
      commit: create get_commit_tree() method
      treewide: replace maybe_tree with accessor methods
      commit-graph: lazy-load trees for commits

Drew DeVault (1):
      git-send-email: allow re-editing of message

Eckhard S. Maaß (1):
      wt-status: use settings from git_diff_ui_config

Elijah Newren (73):
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: ensure we write updates for directory-renamed file
      Documentation: fix several one-character-off spelling errors
      Documentation: normalize spelling of 'normalised'
      directory rename detection: basic testcases
      directory rename detection: directory splitting testcases
      directory rename detection: testcases to avoid taking detection too far
      directory rename detection: partially renamed directory testcase/discussion
      directory rename detection: files/directories in the way of some renames
      directory rename detection: testcases checking which side did the rename
      directory rename detection: more involved edge/corner testcases
      directory rename detection: testcases exploring possibly suboptimal merges
      directory rename detection: miscellaneous testcases to complete coverage
      directory rename detection: tests for handling overwriting untracked files
      directory rename detection: tests for handling overwriting dirty files
      merge-recursive: move the get_renames() function
      merge-recursive: introduce new functions to handle rename logic
      merge-recursive: fix leaks of allocated renames and diff_filepairs
      merge-recursive: make !o->detect_rename codepath more obvious
      merge-recursive: split out code for determining diff_filepairs
      merge-recursive: make a helper function for cleanup for handle_renames
      Make running git under other debugger-like programs easy
      unpack_trees: fix breakage when o->src_index != o->dst_index
      merge-recursive: add get_directory_renames()
      merge-recursive: check for directory level conflicts
      merge-recursive: add computation of collisions due to dir rename & merging
      merge-recursive: check for file level conflicts then get new name
      merge-recursive: when comparing files, don't include trees
      merge-recursive: apply necessary modifications for directory renames
      merge-recursive: avoid clobbering untracked files with directory renames
      merge-recursive: fix overwriting dirty files involved in renames
      merge-recursive: fix remaining directory rename + dirty overwrite cases
      directory rename detection: new testcases showcasing a pair of bugs
      merge-recursive: avoid spurious rename/rename conflict from dir renames
      merge-recursive: improve add_cacheinfo error handling
      merge-recursive: move more is_dirty handling to merge_content
      merge-recursive: avoid triggering add_cacheinfo error with dirty mod
      t6046: testcases checking whether updates can be skipped in a merge
      merge-recursive: fix was_tracked() to quit lying with some renamed paths
      merge-recursive: fix remainder of was_dirty() to use original index
      merge-recursive: make "Auto-merging" comment show for other merges
      merge-recursive: fix check for skipability of working tree updates
      merge-recursive: provide pair of `unpack_trees_{start,finish}()`
      rev-parse: check lookup'ed commit references for NULL
      RelNotes: remove duplicate release note
      RelNotes 2.18: clarify where directory rename detection applies

Eric Sunshine (6):
      t3200: verify "branch --list" sanity when rebasing from detached HEAD
      t2028: tighten grep expression to make "move worktree" test more robust
      git-worktree.txt: recommend 'git worktree remove' over manual deletion
      git-worktree.txt: unify command-line prompt in example blocks
      configure.ac: fix botched FREAD_READS_DIRECTORIES check
      Makefile: make NO_ICONV really mean "no iconv"

Erik E Brady (1):
      credential: ignore SIGPIPE when writing to credential helpers

Florian Gamböck (1):
      completion: load completion file for external subcommand

Harald Nordgren (1):
      ls-remote: create '--sort' option

Jameson Miller (3):
      fast-import: rename mem_pool type to mp_block
      fast-import: introduce mem_pool type
      mem-pool: move reusable parts of memory pool into its own file

Jean-Noël Avila (2):
      l10n: fr.po v2.18 round 1
      l10n: fr.po v2.18.0 round 3

Jeff King (60):
      diff-highlight: correct test graph diagram
      diff-highlight: use test_tick in graph test
      diff-highlight: prefer "echo" to "cat" in tests
      diff-highlight: test interleaved parallel lines of history
      diff-highlight: test graphs with --color
      diff-highlight: use flush() helper consistently
      diff-highlight: detect --graph by indent
      set_git_dir: die when setenv() fails
      add chdir-notify API
      set_work_tree: use chdir_notify
      refs: use chdir_notify to update cached relative paths
      config: move flockfile() closer to unlocked functions
      t5561: drop curl stderr redirects
      t5561: skip tests if curl is not available
      ref-filter: use "struct object_id" consistently
      ref-filter: make ref_array_item allocation more consistent
      ref-filter: factor ref_array pushing into its own function
      t7004: fix mistaken tag name
      gpg-interface: handle bool user.signingkey
      gpg-interface: modernize function declarations
      gpg-interface: use size_t for signature buffer size
      gpg-interface: fix const-correctness of "eol" pointer
      gpg-interface: extract gpg line matching helper
      gpg-interface: find the last gpg signature line
      apply: clarify "-p" documentation
      pager: set COLUMNS to term_columns()
      mark_tree_contents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): drop missing object check
      mark_parents_uninteresting(): replace list with stack
      mark_parents_uninteresting(): avoid most allocation
      get_main_ref_store: BUG() when outside a repository
      config: die when --blob is used outside a repository
      http: use strbufs instead of fixed buffers
      log_write_email_headers: use strbufs
      shorten_unambiguous_ref: use xsnprintf
      fmt_with_err: add a comment that truncation is OK
      submodule-config: verify submodule names as paths
      is_ntfs_dotgit: use a size_t for traversing string
      is_hfs_dotgit: match other .git files
      skip_prefix: add case-insensitive variant
      verify_path: drop clever fallthrough
      verify_dotfile: mention case-insensitivity in comment
      update-index: stat updated files earlier
      verify_path: disallow symlinks in .gitmodules
      index-pack: make fsck error message more specific
      fsck: simplify ".git" check
      fsck: actually fsck blob data
      fsck: detect gitmodules files
      fsck: handle promisor objects in .gitmodules check
      fsck: check .gitmodules content
      fsck: call fsck_finish() after fscking objects
      unpack-objects: call fsck_finish() after fscking objects
      index-pack: check .gitmodules files with --strict
      fsck: complain when .gitmodules is a symlink
      prepare_commit_graft: treat non-repository as a noop
      index-pack: handle --strict checks of non-repo packs
      t7415: don't bother creating commit for symlink test
      fsck: avoid looking at NULL blob->object
      ewah_read_mmap: bounds-check mmap reads
      ewah: adjust callers of ewah_read_mmap()

Jeremy Linton (1):
      packfile: correct zlib buffer handling

Jiang Xin (4):
      l10n: git.pot: v2.18.0 round 1 (108 new, 14 removed)
      l10n: git.pot: v2.18.0 round 2 (144 new, 6 removed)
      l10n: git.pot: v2.18.0 round 3 (1 new, 1 removed)
      l10n: zh_CN: for git v2.18.0 l10n round 1 to 3

Johannes Schindelin (69):
      git_config_set: fix off-by-two
      t1300: rename it to reflect that `repo-config` was deprecated
      t1300: demonstrate that --replace-all can "invent" newlines
      config --replace-all: avoid extra line breaks
      t1300: avoid relying on a bug
      t1300: remove unreasonable expectation from TODO
      t5404: relax overzealous test
      t1300: add a few more hairy examples of sections becoming empty
      t1300: `--unset-all` can leave an empty section behind (bug)
      config: introduce an optional event stream while parsing
      config: avoid using the global variable `store`
      config_set_store: rename some fields for consistency
      git_config_set: do not use a state machine
      git_config_set: make use of the config parser's event stream
      git config --unset: remove empty sections (in the common case)
      git_config_set: reuse empty sections
      exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
      mingw/msvc: use the new-style RUNTIME_PREFIX helper
      color: introduce support for colorizing stderr
      push: test to verify that push errors are colored
      config: document the settings to colorize push errors/hints
      gettext: avoid initialization if the locale dir is not present
      git_setup_gettext: plug memory leak
      sequencer: avoid using errno clobbered by rollback_lock_file()
      sequencer: make rearrange_squash() a bit more obvious
      sequencer: refactor how original todo list lines are accessed
      sequencer: offer helpful advice when a command was rescheduled
      sequencer: introduce new commands to reset the revision
      sequencer: introduce the `merge` command
      sequencer: fast-forward `merge` commands, if possible
      rebase-helper --make-script: introduce a flag to rebase merges
      rebase: introduce the --rebase-merges option
      sequencer: make refs generated by the `label` command worktree-local
      sequencer: handle post-rewrite for merge commands
      rebase --rebase-merges: avoid "empty merges"
      pull: accept --rebase=merges to recreate the branch topology
      rebase -i: introduce --rebase-merges=[no-]rebase-cousins
      rebase -i --rebase-merges: add a section to the man page
      argv_array: offer to split a string by whitespace
      commit: Let the callback of for_each_mergetag return on error
      replace: avoid using die() to indicate a bug
      tests: introduce test_unset_prereq, for debugging
      replace: "libify" create_graft() and callees
      replace: prepare create_graft() for converting graft files wholesale
      replace: introduce --convert-graft-file
      Add a test for `git replace --convert-graft-file`
      Deprecate support for .git/info/grafts
      filter-branch: stop suggesting to use grafts
      technical/shallow: stop referring to grafts
      technical/shallow: describe why shallow cannot use replace refs
      Remove obsolete script to convert grafts to replace refs
      rebase -i: demonstrate bugs with fixup!/squash! commit messages
      rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
      sequencer: always commit without editing when asked for
      rebase --skip: clean up commit message after a failed fixup/squash
      sequencer: extract helper to update active_cache_tree
      sequencer: allow introducing new root commits
      rebase --rebase-merges: a "merge" into a new root is a fast-forward
      sequencer: learn about the special "fake root commit" handling
      rebase --rebase-merges: root commits can be cousins, too
      rebase -i --root: let the sequencer handle even the initial part
      test-tool: help verifying BUG() code paths
      run-command: use BUG() to report bugs, not die()
      Replace all die("BUG: ...") calls by BUG() ones
      Convert remaining die*(BUG) messages
      config: a user-provided invalid section is not a BUG
      is_ntfs_dotgit: match other .git files
      is_{hfs,ntfs}_dotgitmodules: add tests
      rebase --root: fix amending root commit messages

Johannes Sixt (2):
      sequencer: reset the committer date before commits
      git: add -P as a short option for --no-pager

Jonathan Nieder (6):
      sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
      sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
      Makefile: remove unused @@PERLLIBDIR@@ substitution variable
      Makefile: quote $INSTLIBDIR when passing it to sed
      packfile: add repository argument to packed_object_info
      fetch: do not pass ref-prefixes for fetch by exact SHA1

Jonathan Tan (5):
      grep: remove "repo" arg from non-supporting funcs
      upload-pack: fix error message typo
      upload-pack: read config when serving protocol v2
      {fetch,upload}-pack: support filter in protocol v2
      submodule: do not pass null OID to setup_revisions

Jordi Mas (1):
      l10n: Update Catalan translation

Junio C Hamano (27):
      stash: fix nonsense pipeline
      The first batch for 2.18 cycle
      The second batch for 2.18
      The third batch for 2.18
      Revert "Merge branch 'en/rename-directory-detection'"
      gc: do not upcase error message shown with die()
      parseopt: handle malformed --expire arguments more nicely
      The fourth batch for 2.18
      The fifth batch for 2.18
      argv-array: return the pushed string from argv_push*()
      Git 2.13.7
      Git 2.14.4
      Git 2.15.2
      Git 2.16.4
      Git 2.17.1
      The sixth batch for 2.18
      The seventh batch for 2.18
      Git 2.18-rc0
      refspec-api: avoid uninitialized field in refspec item
      A bit more topics before -rc1
      Git 2.18-rc1
      RelNotes 2.18: typofixes
      index-pack: correct install_packed_git() args
      Git 2.18-rc2
      A bunch of micro-fixes before going 2.18 final
      Almost 2.18 final
      Git 2.18

Kaartic Sivaraam (2):
      branch --list: print useful info whilst interactive rebasing a detached HEAD
      t3200: clarify description of --set-upstream test

Karthikeyan Singaravelan (1):
      doc: fix typos in documentation and release notes

Kyle Meyer (1):
      gitworkflows: fix grammar in 'Merge upwards' rule

Lars Schneider (10):
      strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
      strbuf: add xstrdup_toupper()
      strbuf: add a case insensitive starts_with()
      utf8: teach same_encoding() alternative UTF encoding names
      utf8: add function to detect prohibited UTF-16/32 BOM
      utf8: add function to detect a missing UTF-16/32 BOM
      convert: add 'working-tree-encoding' attribute
      convert: check for detectable errors in UTF encodings
      convert: add tracing for 'working-tree-encoding' attribute
      convert: add round trip check based on 'core.checkRoundtripEncoding'

Leif Middelschulte (2):
      merge-recursive: give notice when submodule commit gets fast-forwarded
      merge-submodule: reduce output verbosity

Loganaden Velvindron (1):
      http: allow use of TLS 1.3

Lucas Werkmeister (1):
      daemon.c: fix condition for redirecting stderr

Luis Marsano (2):
      git-credential-netrc: adapt to test framework for git
      git-credential-netrc: accept gpg option

Luke Diamand (7):
      git-p4: add unshelve command
      git-p4: disable-rebase: allow setting this via configuration
      git-p4: add option to disable syncing of p4/master with p4
      git-p4: better error reporting when p4 fails
      git-p4: raise exceptions from p4CmdList based on error from p4 server
      git-p4: narrow the scope of exceptions caught when parsing an int
      git-p4: auto-size the block

Martin Ågren (24):
      git-shortlog.txt: reorder usages
      shortlog: add usage-string for stdin-reading
      shortlog: disallow left-over arguments outside repo
      doc: convert \--option to --option
      doc: convert [\--] to [--]
      git-[short]log.txt: unify quoted standalone --
      git-submodule.txt: quote usage in monospace, drop backslash
      fast-export: fix regression skipping some merge-commits
      http-fetch: make `-a` standard behaviour
      walker: drop fields of `struct walker` which are always 1
      t/helper/test-write-cache: clean up lock-handling
      refs.c: do not die if locking fails in `write_pseudoref()`
      refs.c: do not die if locking fails in `delete_pseudoref()`
      lock_file: make function-local locks non-static
      lock_file: move static locks into functions
      refs.c: refer to "object ID", not "sha1", in error messages
      t1400: add tests around adding/deleting pseudorefs
      refs: handle zero oid for pseudorefs
      merge: setup `opts` later in `checkout_fast_forward()`
      config: free resources of `struct config_store_data`
      config: let `config_store_data_clear()` handle `value_regex`
      config: let `config_store_data_clear()` handle `key`
      regex: do not call `regfree()` if compilation fails
      unpack_trees_options: free messages when done

Meng-Sung Wu (1):
      doc: update the order of the syntax `git merge --continue`

Michal Nazarewicz (1):
      send-email: simplify Gmail example in the documentation

Michele Locati (1):
      filter-branch: return 2 when nothing to rewrite

Nguyễn Thái Ngọc Duy (108):
      repository: initialize the_repository in main()
      repository.c: move env-related setup code back to environment.c
      repository.c: delete dead functions
      sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
      repository: delete ignore_env member
      gc.txt: more details about what gc does
      worktree: delete dead code
      worktree prune: improve prune logic when worktree is moved
      repository.h: add comment and clarify repo_set_gitdir
      git.c: move cmd_struct declaration up
      git.c: add hidden option --list-parseopt-builtins
      completion: mention the oldest version we need to support
      completion: factor out _git_xxx calling code
      completion: add --option completion for most builtin commands
      completion: delete option-only completion commands
      completion: use __gitcomp_builtin in _git_ls_tree
      completion: use __gitcomp_builtin in _git_cherry
      packfile: keep prepare_packed_git() private
      t/helper: add an empty test-tool program
      t/helper: merge test-chmtime into test-tool
      t/helper: merge test-sha1 into test-tool
      t/helper: merge test-lazy-init-name-hash into test-tool
      t/helper: merge test-config into test-tool
      t/helper: merge test-ctype into test-tool
      t/helper: merge test-date into test-tool
      t/helper: merge (unused) test-delta into test-tool
      t/helper: merge test-drop-caches into test-tool
      t/helper: merge test-dump-cache-tree into test-tool
      t/helper: merge test-dump-split-index into test-tool
      t/helper: merge test-example-decorate into test-tool
      t/helper: merge test-genrandom into test-tool
      t/helper: merge test-hashmap into test-tool
      t/helper: merge test-index-version into test-tool
      t/helper: merge (unused) test-match-trees into test-tool
      t/helper: merge (unused) test-mergesort into test-tool
      t/helper: merge test-mktemp into test-tool
      t/helper: merge test-online-cpus into test-tool
      t/helper: merge test-path-utils into test-tool
      t/helper: merge test-prio-queue into test-tool
      t/helper: merge test-read-cache into test-tool
      t/helper: merge test-ref-store into test-tool
      t/helper: merge test-regex into test-tool
      t/helper: merge test-revision-walking into test-tool
      t/helper: merge test-run-command into test-tool
      t/helper: merge test-scrap-cache-tree into test-tool
      t/helper: merge test-sha1-array into test-tool
      t/helper: merge test-sigchain into test-tool
      t/helper: merge test-strcmp-offset into test-tool
      t/helper: merge test-string-list into test-tool
      t/helper: merge test-submodule-config into test-tool
      t/helper: merge test-subprocess into test-tool
      t/helper: merge test-urlmatch-normalization into test-tool
      t/helper: merge test-wildmatch into test-tool
      t/helper: merge test-write-cache into test-tool
      trace.c: export trace_setup_key
      read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
      pack-objects: a bit of document about struct object_entry
      pack-objects: turn type and in_pack_type to bitfields
      pack-objects: use bitfield for object_entry::dfs_state
      pack-objects: use bitfield for object_entry::depth
      pack-objects: move in_pack_pos out of struct object_entry
      pack-objects: move in_pack out of struct object_entry
      pack-objects: refer to delta objects by index instead of pointer
      pack-objects: shrink z_delta_size field in struct object_entry
      pack-objects: don't check size when the object is bad
      pack-objects: clarify the use of object_entry::size
      pack-objects: shrink size field in struct object_entry
      pack-objects: shrink delta_size field in struct object_entry
      pack-objects: reorder members to shrink struct object_entry
      ci: exercise the whole test suite with uncommon code in pack-objects
      t7700: have closing quote of a test at the beginning of line
      repack: add --keep-pack option
      gc: add --keep-largest-pack option
      gc: add gc.bigPackThreshold config
      gc: handle a corner case in gc.bigPackThreshold
      gc --auto: exclude base pack if not enough mem to "repack -ad"
      pack-objects: show some progress when counting kept objects
      connect.c: mark die_initial_contact() NORETURN
      Makefile: detect compiler and enable more warnings in DEVELOPER=1
      submodule--helper: don't print null in 'submodule status'
      doc: keep first level section header in upper case
      pack-objects: validation and documentation about unreachable options
      completion: fix misspelled config key aliasesfiletype
      repository: fix free problem with repo_clear(the_repository)
      generate-cmds.sh: factor out synopsis extract code
      generate-cmds.sh: export all commands to command-list.h
      help: use command-list.h for common command list
      Remove common-cmds.h
      pack-format.txt: more details on pack file format
      column: fix off-by-one default width
      commit.h: rearrange 'index' to shrink struct commit
      git.c: convert --list-* to --list-cmds=*
      git --list-cmds: collect command list in a string_list
      completion: implement and use --list-cmds=main,others
      git: support --list-cmds=list-<category>
      help: add "-a --verbose" to list all commands with synopsis
      help: use command-list.txt for the source of guides
      command-list.txt: documentation and guide line
      completion: let git provide the completable command list
      completion: reduce completable command list
      Move declaration for alias.c to alias.h
      completion: add and use --list-cmds=nohelpers
      completion: add and use --list-cmds=alias
      completion: allow to customize the completable command list
      travis-ci: run gcc-8 on linux-gcc jobs
      Use OPT_SET_INT_F() for cmdline option specification
      remote.txt: update documentation for 'update' command
      remote: doc typofix

Olga Telezhnaya (6):
      ref-filter: add shortcut to work with strbufs
      ref-filter: start adding strbufs with errors
      ref-filter: add return value && strbuf to handlers
      ref-filter: change parsing function error handling
      ref-filter: add return value to parsers
      ref-filter: libify get_ref_atom_value()

Orgad Shaneh (1):
      git-rebase--interactive: fix copy-paste mistake

Paul-Sebastian Ungureanu (2):
      parse-options: do not show usage upon invalid option value
      t/helper: 'test-chmtime (--get|-g)' to print only the mtime

Pedro Alvarez Piedehierro (1):
      import-tars: read overlong names from pax extended header

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (3470t0f0u)
      l10n: sv.po: Update Swedish translation (3608t0f0u)

Philip Oakley (1):
      Avoid multiple PREFIX definitions

Phillip Wood (7):
      rebase --root: stop assuming squash_onto is unset
      rebase -i --keep-empty: don't prune empty commits
      rebase: respect --no-keep-empty
      rebase: extend --signoff support
      rebase -p: error out if --signoff is given
      rebase --keep-empty: always use interactive rebase
      rebase --rebase-merges: add test for --keep-empty

Pratik Karki (1):
      test: avoid pipes in git related commands for test

Ralf Thielow (1):
      l10n: TEAMS: remove inactive de team members

Ramsay Jones (1):
      BUG_exit_code: fix sparse "symbol not declared" warning

René Scharfe (11):
      sha1_name: use bsearch_pack() in unique_in_pack()
      bisect: use oid_to_hex() for converting object_id hashes to hex strings
      run-command: use strbuf_addstr() for adding a string to a strbuf
      submodule: check for NULL return of get_submodule_ref_store()
      replace_object: use oidmap
      fast-export: avoid NULL pointer arithmetic
      t5512: run git fetch inside test
      fsmonitor: use internal argv_array of struct child_process
      merge-recursive: use xstrdup() instead of fixed buffer
      blame: release string_list after use in parse_color_fields()
      merge-recursive: use xstrdup() instead of fixed buffer

Robert P. J. Day (7):
      Use proper syntax for replaceables in command docs
      tag: clarify in the doc that a tag can refer to a non-commit object
      init: fix grammar in "templates not found" msg
      p4.txt: Use backquotes for variable names
      sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
      diff-options.txt: fix minor typos, font inconsistencies, in docs
      Use hyphenated "remote-tracking branch" (docs and comments)

Romain Merland (1):
      git-p4: add options --commit and --disable-rebase

Ryan Dammrose (1):
      push: colorize errors

SZEDER Gábor (25):
      test_must_be_empty: simplify file existence check
      t9902-completion: add tests demonstrating issues with quoted pathnames
      completion: move __git_complete_index_file() next to its helpers
      completion: simplify prefix path component handling during path completion
      completion: support completing non-ASCII pathnames
      completion: improve handling quoted paths on the command line
      completion: let 'ls-files' and 'diff-index' filter matching paths
      completion: use 'awk' to strip trailing path components
      t9902-completion: ignore COMPREPLY element order in some tests
      completion: remove repeated dirnames with 'awk' during path completion
      completion: improve handling quoted paths in 'git ls-files's output
      completion: fill COMPREPLY directly when completing paths
      completion: reduce overhead of clearing cached --options
      docs/git-gc: fix minor rendering issue
      coccinelle: avoid wrong transformation suggestions from commit.cocci
      t6050-replace: don't disable stdin for the whole test script
      t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
      t5516-fetch-push: fix 'push with dry-run' test
      t5516-fetch-push: fix broken &&-chain
      t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
      completion: don't return with error from __gitcomp_file_direct()
      t9902-completion: exercise __git_complete_index_file() directly
      completion: correct zsh detection when run from git-completion.zsh
      t7406-submodule-update: fix broken &&-chains
      RelNotes 2.18: minor fix to entry about dynamically loading completions

Sergey Organov (1):
      glossary: substitute "ancestor" for "direct ancestor" in 'push' description.

Stefan Agner (1):
      send-email: avoid duplicate In-Reply-To/References

Stefan Beller (82):
      repository: introduce raw object store field
      object-store: migrate alternates struct and functions from cache.h
      object-store: move alt_odb_list and alt_odb_tail to object store
      object-store: free alt_odb_list
      object-store: move packed_git and packed_git_mru to object store
      object-store: close all packs upon clearing the object store
      pack: move prepare_packed_git_run_once to object store
      pack: move approximate object count to object store
      sha1_file: add raw_object_store argument to alt_odb_usable
      sha1_file: add repository argument to link_alt_odb_entry
      sha1_file: add repository argument to read_info_alternates
      sha1_file: add repository argument to link_alt_odb_entries
      sha1_file: add repository argument to prepare_alt_odb
      sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
      sha1_file: allow prepare_alt_odb to handle arbitrary repositories
      sha1_file: add repository argument to sha1_file_name
      sha1_file: add repository argument to stat_sha1_file
      sha1_file: add repository argument to open_sha1_file
      sha1_file: add repository argument to map_sha1_file_1
      sha1_file: add repository argument to map_sha1_file
      sha1_file: add repository argument to sha1_loose_object_info
      sha1_file: allow sha1_file_name to handle arbitrary repositories
      sha1_file: allow stat_sha1_file to handle arbitrary repositories
      sha1_file: allow open_sha1_file to handle arbitrary repositories
      sha1_file: allow map_sha1_file to handle arbitrary repositories
      packfile: allow prepare_packed_git_mru to handle arbitrary repositories
      packfile: allow rearrange_packed_git to handle arbitrary repositories
      packfile: allow install_packed_git to handle arbitrary repositories
      packfile: add repository argument to prepare_packed_git_one
      packfile: add repository argument to prepare_packed_git
      packfile: add repository argument to reprepare_packed_git
      packfile: allow prepare_packed_git_one to handle arbitrary repositories
      packfile: allow prepare_packed_git to handle arbitrary repositories
      packfile: allow reprepare_packed_git to handle arbitrary repositories
      packfile: add repository argument to find_pack_entry
      packfile: allow find_pack_entry to handle arbitrary repositories
      submodule.h: drop declaration of connect_work_tree_and_git_dir
      submodule-config: allow submodule_free to handle arbitrary repositories
      submodule-config: add repository argument to submodule_from_{name, path}
      submodule-config: remove submodule_from_cache
      submodule: fixup nested submodules after moving the submodule
      write_or_die.c: rename to use dashes in file name
      unicode_width.h: rename to use dash in file name
      exec_cmd: rename to use dash in file name
      sha1_name.c: rename to use dash in file name
      sha1_file.c: rename to use dash in file name
      replace_object.c: rename to use dash in file name
      replace-object: move replace_map to object store
      object-store: move lookup_replace_object to replace-object.h
      replace-object: eliminate replace objects prepared flag
      replace-object: check_replace_refs is safe in multi repo environment
      refs: add repository argument to get_main_ref_store
      refs: add repository argument to for_each_replace_ref
      replace-object: add repository argument to prepare_replace_object
      replace-object: add repository argument to do_lookup_replace_object
      replace-object: add repository argument to lookup_replace_object
      refs: store the main ref store inside the repository struct
      refs: allow for_each_replace_ref to handle arbitrary repositories
      replace-object: allow prepare_replace_object to handle arbitrary repositories
      replace-object: allow do_lookup_replace_object to handle arbitrary repositories
      replace-object: allow lookup_replace_object to handle arbitrary repositories
      worktree: accept -f as short for --force for removal
      builtin/blame: dim uninteresting metadata lines
      builtin/blame: highlight recently changed lines
      builtin/blame: add new coloring scheme config
      cache.h: add repository argument to oid_object_info_extended
      cache.h: add repository argument to oid_object_info
      packfile: add repository argument to retry_bad_packed_offset
      packfile: add repository argument to packed_to_object_type
      packfile: add repository argument to read_object
      packfile: add repository argument to unpack_entry
      packfile: add repository argument to cache_or_unpack_entry
      cache.h: allow oid_object_info to handle arbitrary repositories
      git-rebase--interactive: clarify arguments
      object.c: free replace map in raw_object_store_clear
      replace-object.c: remove the_repository from prepare_replace_object
      grep: handle corrupt index files early
      git-submodule.sh: try harder to fetch a submodule
      submodule.c: move submodule merging to merge-recursive.c
      merge-recursive: i18n submodule merge output and respect verbosity
      object.c: clear replace map before freeing it
      t7400: encapsulate setup code in test_expect_success

Takuto Ikuta (1):
      fetch-pack.c: use oidset to check existence of loose object

Tao Qingyun (1):
      t1510-repo-setup.sh: remove useless mkdir

Taylor Blau (5):
      builtin/config.c: treat type specifiers singularly
      builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
      builtin/config: introduce `--default`
      config.c: introduce 'git_config_color' to parse ANSI colors
      builtin/config: introduce `color` type specifier

Thomas Gummerer (12):
      stash push: avoid printing errors
      stash push -u: don't create empty stash
      stash: drop superfluos pathspec parameter
      SubmittingPatches: mention the git contacts command
      completion: stop showing 'save' for stash by default
      completion: make stash -p and alias for stash push -p
      worktree: remove extra members from struct add_opts
      worktree: improve message when creating a new worktree
      worktree: factor out dwim_branch function
      worktree: teach "add" to check out existing branches
      SubmittingPatches: replace numbered attributes with names
      note git-security@googlegroups.com in more places

Todd Zullinger (3):
      doc/clone: update caption for GIT URLS cross-reference
      rebase --root: demonstrate a bug while amending root commit messages
      t3404: check root commit in 'rebase -i --root reword root commit'

Torsten Bögershausen (1):
      test: correct detection of UTF8_NFD_TO_NFC for APFS

Trần Ngọc Quân (3):
      l10n: vi(3470t): Updated Vietnamese translation for v2.18.0
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round2
      l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round 3

Wink Saville (8):
      rebase-interactive: simplify pick_on_preserving_merges
      rebase: update invocation of rebase dot-sourced scripts
      rebase: reindent function git_rebase__interactive
      rebase: extract functions out of git_rebase__interactive
      rebase: add and use git_rebase__interactive__preserve_merges
      rebase: remove unused code paths from git_rebase__interactive
      rebase: remove unused code paths from git_rebase__interactive__preserve_merges
      rebase: remove merges_option and a blank line

Yuki Kokubun (1):
      filter-branch: fix errors caused by refs that point at non-committish

brian m. carlson (123):
      bulk-checkin: convert index_bulk_checkin to struct object_id
      builtin/write-tree: convert to struct object_id
      cache-tree: convert write_*_as_tree to object_id
      cache-tree: convert remnants to struct object_id
      resolve-undo: convert struct resolve_undo_info to object_id
      tree: convert read_tree_recursive to struct object_id
      ref-filter: convert grab_objectname to struct object_id
      strbuf: convert strbuf_add_unique_abbrev to use struct object_id
      wt-status: convert struct wt_status_state to object_id
      Convert find_unique_abbrev* to struct object_id
      http-walker: convert struct object_request to use struct object_id
      send-pack: convert remaining functions to struct object_id
      replace_object: convert struct replace_object to object_id
      builtin/mktag: convert to struct object_id
      archive: convert write_archive_entry_fn_t to object_id
      archive: convert sha1_file_to_archive to struct object_id
      builtin/index-pack: convert struct ref_delta_entry to object_id
      sha1_file: convert read_loose_object to use struct object_id
      sha1_file: convert check_sha1_signature to struct object_id
      streaming: convert open_istream to use struct object_id
      builtin/mktree: convert to struct object_id
      sha1_file: convert assert_sha1_type to object_id
      sha1_file: convert retry_bad_packed_offset to struct object_id
      packfile: convert unpack_entry to struct object_id
      Convert remaining callers of sha1_object_info_extended to object_id
      sha1_file: convert sha1_object_info* to object_id
      builtin/fmt-merge-msg: convert remaining code to object_id
      builtin/notes: convert static functions to object_id
      tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
      streaming: convert istream internals to struct object_id
      tree-walk: convert tree entry functions to object_id
      sha1_file: convert read_object_with_reference to object_id
      sha1_file: convert read_sha1_file to struct object_id
      Convert lookup_replace_object to struct object_id
      sha1_file: introduce a constant for max header length
      convert: convert to struct object_id
      sha1_name: convert struct min_abbrev_data to object_id
      t1011: abstract away SHA-1-specific constants
      t1304: abstract away SHA-1-specific constants
      t1300: abstract away SHA-1-specific constants
      t1405: sort reflog entries in a hash-independent way
      t1411: abstract away SHA-1-specific constants
      t1507: abstract away SHA-1-specific constants
      t2020: abstract away SHA-1 specific constants
      t2101: modernize test style
      t2101: abstract away SHA-1-specific constants
      t2107: abstract away SHA-1-specific constants
      format-patch: make cover letters always text/plain
      cache: add a function to read an object ID from a buffer
      server-info: remove unused members from struct pack_info
      Remove unused member in struct object_context
      packfile: remove unused member from struct pack_entry
      packfile: convert has_sha1_pack to object_id
      sha1-file: convert freshen functions to object_id
      packfile: convert find_pack_entry to object_id
      packfile: abstract away hash constant values
      pack-objects: abstract away hash algorithm
      pack-redundant: abstract away hash algorithm
      tree-walk: avoid hard-coded 20 constant
      tree-walk: convert get_tree_entry_follow_symlinks to object_id
      fsck: convert static functions to struct object_id
      submodule-config: convert structures to object_id
      split-index: convert struct split_index to object_id
      Update struct index_state to use struct object_id
      pack-redundant: convert linked lists to use struct object_id
      index-pack: abstract away hash function constant
      commit: convert uses of get_sha1_hex to get_oid_hex
      dir: convert struct untracked_cache_dir to object_id
      http: eliminate hard-coded constants
      revision: replace use of hard-coded constants
      upload-pack: replace use of several hard-coded constants
      diff: specify abbreviation size in terms of the_hash_algo
      builtin/receive-pack: avoid hard-coded constants for push certs
      sha1-file: add functions for hex empty tree and blob OIDs
      builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
      builtin/merge: switch tree functions to use object_id
      merge: convert empty tree constant to the_hash_algo
      sequencer: convert one use of EMPTY_TREE_SHA1_HEX
      submodule: convert several uses of EMPTY_TREE_SHA1_HEX
      wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
      builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
      builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
      sha1_file: convert cached object code to struct object_id
      cache-tree: use is_empty_tree_oid
      sequencer: use the_hash_algo for empty tree object ID
      dir: use the_hash_algo for empty blob object ID
      sha1_file: only expose empty object constants through git_hash_algo
      Update shell scripts to compute empty tree object ID
      add--interactive: compute the empty tree value
      merge-one-file: compute empty blob object ID
      Documentation: use 8-space tabs with Asciidoctor
      Documentation: render revisions correctly under Asciidoctor
      mailmap: update brian m. carlson's email address
      t/test-lib: add an SHA1 prerequisite
      t/test-lib: introduce ZERO_OID
      t: switch $_z40 to $ZERO_OID
      t/test-lib: introduce OID_REGEX
      t: switch $_x40 to $OID_REGEX
      t0000: annotate with SHA1 prerequisite
      t1007: annotate with SHA1 prerequisite
      t1512: skip test if not using SHA-1
      t4044: skip test if not using SHA-1
      t: skip pack tests if not using SHA-1
      t2203: abstract away SHA-1-specific constants
      t3103: abstract away SHA-1-specific constants
      t3702: abstract away SHA-1-specific constants
      t3905: abstract away SHA-1-specific constants
      t4007: abstract away SHA-1-specific constants
      t4008: abstract away SHA-1-specific constants
      t4014: abstract away SHA-1-specific constants
      t4020: abstract away SHA-1-specific constants
      t4022: abstract away SHA-1-specific constants
      t4029: fix test indentation
      t4029: abstract away SHA-1-specific constants
      t4030: abstract away SHA-1-specific constants
      t/lib-diff-alternative: abstract away SHA-1-specific constants
      t4205: sort log output in a hash-independent way
      t4042: abstract away SHA-1-specific constants
      t4045: abstract away SHA-1-specific constants
      t4208: abstract away SHA-1-specific constants
      t5300: abstract away SHA-1-specific constants
      sequencer: ensure labels that are object IDs are rewritten
      t3430: test clean-up

Ævar Arnfjörð Bjarmason (22):
      configure: fix a regression in PCRE v1 detection
      configure: detect redundant --with-libpcre & --with-libpcre1
      Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
      Makefile: fix broken bindir_relative variable
      Makefile: add a gitexecdir_relative variable
      Makefile: optionally symlink libexec/git-core binaries to bin/git
      Remove contrib/examples/*
      doc hash-function-transition: clarify how older gits die on NewHash
      doc hash-function-transition: clarify what SHAttered means
      git-svn: avoid warning on undef readline()
      Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
      Makefile: add a DEVOPTS to get all of -Wextra
      git{,-blame}.el: remove old bitrotting Emacs code
      .gitattributes: add *.pl extension for Perl
      .gitattributes: use the "perl" differ for Perl
      .gitattributes: add a diff driver for Python
      sha1-name.c: remove stray newline
      sha1-array.h: align function arguments
      git-p4: change "commitish" typo to "committish"
      sha1-name.c: move around the collect_ambiguous() function
      get_short_oid: sort ambiguous objects by type, then SHA-1
      git-credential-netrc: remove use of "autodie"


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.32.0
@ 2021-06-06 12:40  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-06-06 12:40 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.32.0 is now available at the
usual places.  It is comprised of 617 non-merge commits since
v2.31.0, contributed by 100 people, 35 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.32.0'
tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.31.0 are as
follows.  Welcome to the Git development community!

  Adam Sharafeddine, Alexey Roslyakov, Andrey Bienkowski,
  Atharva Raykar, Bruno Albuquerque, Chinmoy Chakraborty,
  Christopher Schenk, Dan Moseley, David Emett, Dmitry Torilov,
  Fabien Terrani, Firmin Martin, Georgios Kontaxis, Jason Gore,
  Jerry Zhang, Joachim Kuebart, Joseph Vusich, Josh Soref,
  Julien Richard, Li Linchao, Louis Sautier, Luke Shumaker,
  Matheus Tavares Bernardino, Nicholas Clark, Peter Oliver,
  Renato Botelho, rlespinasse, Robert Foss, RyotaK, Sardorbek
  Imomaliev, Tom Saeger, Vincent Tam, Will Chandler, Wolfgang
  Müller, and Yiyuan guo.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Shopov,
  Alex Henrie, Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian
  m. carlson, Charvi Mendiratta, Christian Couder, Christopher Diaz
  Riveros, Daniel Santos, David Aguilar, Dennis Ameling, Denton
  Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
  Emir Sarı, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
  Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
  Schindelin, Johannes Sixt, John Szakmeister, Jonathan Nieder,
  Jonathan Tan, Jordi Mas, Junio C Hamano, Kyle Meyer, Lénaïc
  Huard, Luke Diamand, Marc Branchaud, Martin Ågren, Matheus
  Tavares, Matthias Rüster, Nguyễn Thái Ngọc Duy, Nipunn
  Koorapati, Øystein Walle, Patrick Steinhardt, Peter Krefting,
  Phillip Wood, Rafael Silva, Ralf Thielow, Ramkumar Ramachandra,
  Ramsay Jones, Randall S. Becker, René Scharfe, Sergey Organov,
  Shubham Verma, Son Luong Ngoc, SZEDER Gábor, Taylor Blau,
  Todd Zullinger, Torsten Bögershausen, Trần Ngọc Quân,
  Trygve Aaberge, Ville Skyttä, Yi-Jyun Pan, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.32 Release Notes
======================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer <key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of "for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:<what>)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).

----------------------------------------------------------------

Changes since v2.31.0 are as follows:

Adam Dinwoodie (1):
      cygwin: disallow backslashes in file names

Alex Henrie (2):
      merge-ort: split "distinct types" message into two translatable messages
      l10n: Update Catalan translation

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (5204t)

Alexey Roslyakov (1):
      l10n: ru.po: fix typo in Russian translation

Andrey Bienkowski (1):
      doc: clarify the filename encoding in git diff

Andrzej Hunt (24):
      Makefile: update 'make fuzz-all' docs to reflect modern clang
      symbolic-ref: don't leak shortened refname in check_symref()
      reset: free instead of leaking unneeded ref
      clone: free or UNLEAK further pointers when finished
      worktree: fix leak in dwim_branch()
      init: remove git_init_db_config() while fixing leaks
      init-db: silence template_dir leak when converting to absolute path
      fsmonitor: avoid global-buffer-overflow READ when checking trivial response
      parse-options: convert bitfield values to use binary shift
      parse-options: don't leak alias help messages
      transport: also free remote_refs in transport_disconnect()
      merge-ort: only do pointer arithmetic for non-empty lists
      revision: free remainder of old commit list in limit_list
      wt-status: fix multiple small leaks
      ls-files: free max_prefix when done
      bloom: clear each bloom_key after use
      branch: FREE_AND_NULL instead of NULL'ing real_ref
      builtin/bugreport: don't leak prefixed filename
      builtin/check-ignore: clear_pathspec before returning
      builtin/checkout: clear pending objects after diffing
      mailinfo: also free strbuf lists when clearing mailinfo
      builtin/for-each-ref: free filter and UNLEAK sorting.
      builtin/rebase: release git_format_patch_opt too
      builtin/rm: avoid leaking pathspec and seen

Atharva Raykar (1):
      userdiff: add support for Scheme

Bagas Sanjaya (6):
      INSTALL: note on using Asciidoctor to build doc
      l10n: id: po-id for 2.32.0 (round 1)
      l10n: README: document git-po-helper
      l10n: README: document "core translation"
      l10n: README: document l10n conventions
      l10n: README: note on fuzzy translations

Bruno Albuquerque (1):
      object-info: support for retrieving object info

Charvi Mendiratta (23):
      sequencer: pass todo_item to do_pick_commit()
      sequencer: use const variable for commit message comments
      rebase -i: add fixup [-C | -c] command
      t3437: test script for fixup [-C|-c] options in interactive rebase
      rebase -i: teach --autosquash to work with amend!
      doc/git-rebase: add documentation for fixup [-C|-c] options
      sequencer: fixup the datatype of the 'flag' argument
      sequencer: rename a few functions
      rebase -i: clarify and fix 'fixup -c' rebase-todo help
      t/lib-rebase: update the documentation of FAKE_LINES
      t/t3437: fixup here-docs in the 'setup' test
      t/t3437: remove the dependency of 'expected-message' file from tests
      t/t3437: check the author date of fixed up commit
      t/t3437: simplify and document the test helpers
      t/t3437: use named commits in the tests
      t/t3437: fixup the test 'multiple fixup -c opens editor once'
      doc/rebase -i: fix typo in the documentation of 'fixup' command
      sequencer: export and rename subject_length()
      commit: add amend suboption to --fixup to create amend! commit
      commit: add a reword suboption to --fixup
      t7500: add tests for --fixup=[amend|reword] options
      t3437: use --fixup with options to create amend! commit
      doc/git-commit: add documentation for fixup=[amend|reword] options

Chinmoy Chakraborty (1):
      column, range-diff: downcase option description

Christian Couder (1):
      test-bloom: fix missing 'bloom' from usage string

Christopher Diaz Riveros (1):
      l10n: es: 2.32.0 round 1

Christopher Schenk (1):
      remote-curl: fall back to basic auth if Negotiate fails

Daniel Santos (2):
      l10n: pt_PT: add Portuguese translations part 2
      l10n: pt_PT: add Portuguese translations part 3

David Aguilar (1):
      contrib/completion: fix zsh completion regression from 59d85a2a05

Dennis Ameling (2):
      cmake(install): fix double .exe suffixes
      cmake(install): include vcpkg dlls

Denton Liu (14):
      git-cat-file.txt: monospace args, placeholders and filenames
      git-cat-file.txt: remove references to "sha1"
      stash show: teach --include-untracked and --only-untracked
      stash show: learn stash.showIncludeUntracked
      git-completion.bash: pass $__git_subcommand_idx from __git_main()
      git-completion.bash: extract from else in _git_stash()
      git-completion.bash: use __gitcomp_builtin() in _git_stash()
      git-completion.bash: separate some commands onto their own line
      git-completion.bash: rename to $__git_cmd_idx
      git-completion.bash: use $__git_cmd_idx in more places
      git-completion.bash: consolidate cases in _git_stash()
      t3905: correct test title
      stash show: fix segfault with --{include,only}-untracked
      stash show: use stash.showIncludeUntracked even when diff options given

Derrick Stolee (58):
      commit-graph: create local repository pointer
      commit-graph: use config to specify generation type
      csum-file: make hashwrite() more readable
      sparse-index: design doc and format update
      t/perf: add performance test for sparse operations
      t1092: clean up script quoting
      sparse-index: add guard to ensure full index
      sparse-index: implement ensure_full_index()
      t1092: compare sparse-checkout to sparse-index
      test-read-cache: print cache entries with --table
      test-tool: don't force full index
      unpack-trees: ensure full index
      sparse-checkout: hold pattern list in index
      sparse-index: add 'sdir' index extension
      sparse-index: convert from full to sparse
      submodule: sparse-index should not collapse links
      unpack-trees: allow sparse directories
      sparse-index: check index conversion happens
      sparse-index: add index.sparse config option
      sparse-checkout: toggle sparse index from builtin
      sparse-checkout: disable sparse-index
      cache-tree: integrate with sparse directory entries
      sparse-index: loose integration with cache_tree_verify()
      p2000: add sparse-index repos
      maintenance: simplify prefetch logic
      sparse-index: API protection strategy
      *: remove 'const' qualifier for struct index_state
      read-cache: expand on query into sparse-directory entry
      cache: move ensure_full_index() to cache.h
      add: ensure full index
      checkout-index: ensure full index
      checkout: ensure full index
      commit: ensure full index
      difftool: ensure full index
      fsck: ensure full index
      grep: ensure full index
      ls-files: ensure full index
      merge-index: ensure full index
      rm: ensure full index
      stash: ensure full index
      update-index: ensure full index
      dir: ensure full index
      entry: ensure full index
      merge-recursive: ensure full index
      pathspec: ensure full index
      read-cache: ensure full index
      resolve-undo: ensure full index
      revision: ensure full index
      name-hash: don't add directories to name_hash
      sparse-index: expand_to_path()
      name-hash: use expand_to_path()
      fetch: add --prefetch option
      maintenance: use 'git fetch --prefetch'
      maintenance: respect remote.*.skipFetchAll
      dir: update stale description of treat_directory()
      sparse-index: fix uninitialized jump
      t1092: use GIT_PROGRESS_DELAY for consistent results
      dir: update stale description of treat_directory()

Elijah Newren (50):
      diffcore-rename: use directory rename guided basename comparisons
      diffcore-rename: provide basic implementation of idx_possible_rename()
      diffcore-rename: add a mapping of destination names to their indices
      Move computation of dir_rename_count from merge-ort to diffcore-rename
      diffcore-rename: add function for clearing dir_rename_count
      diffcore-rename: move dir_rename_counts into dir_rename_info struct
      diffcore-rename: extend cleanup_dir_rename_info()
      diffcore-rename: compute dir_rename_counts in stages
      diffcore-rename: limit dir_rename_counts computation to relevant dirs
      diffcore-rename: compute dir_rename_guess from dir_rename_counts
      diffcore-rename: enable filtering possible rename sources
      merge-ort: precompute subset of sources for which we need rename detection
      merge-ort: add data structures for an alternate tree traversal
      merge-ort: introduce wrappers for alternate tree traversal
      merge-ort: precompute whether directory rename detection is needed
      merge-ort: use relevant_sources to filter possible rename sources
      merge-ort: skip rename detection entirely if possible
      diffcore-rename: avoid doing basename comparisons for irrelevant sources
      diffcore-rename: take advantage of "majority rules" to skip more renames
      merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
      merge-ort: record the reason that we want a rename for a directory
      diffcore-rename: only compute dir_rename_count for relevant directories
      diffcore-rename: check if we have enough renames for directories early on
      diffcore-rename: add computation of number of unknown renames
      merge-ort: record the reason that we want a rename for a file
      diffcore-rename: determine which relevant_sources are no longer relevant
      merge-ort: use STABLE_QSORT instead of QSORT where required
      merge-ort: add a special minimal index just for renormalization
      merge-ort: have ll_merge() use a special attr_index for renormalization
      merge-ort: let renormalization change modify/delete into clean delete
      merge-ort: support subtree shifting
      t6428: new test for SKIP_WORKTREE handling and conflicts
      merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
      t: mark several submodule merging tests as fixed under merge-ort
      merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
      merge-recursive: add a bunch of FIXME comments documenting known bugs
      Revert "merge-ort: ignore the directory rename split conflict for now"
      t6423: mark remaining expected failure under merge-ort as such
      Add testing with merge-ort merge strategy
      sequencer: fix edit handling for cherry-pick and revert messages
      dir: convert trace calls to trace2 equivalents
      dir: report number of visited directories and paths with trace2
      ls-files: error out on -i unless -o or -c are specified
      t7300: add testcase showing unnecessary traversal into ignored directory
      t3001, t7300: add testcase showcasing missed directory traversal
      dir: avoid unnecessary traversal into ignored directory
      dir: traverse into untracked directories if they may have ignored subfiles
      dir: introduce readdir_skip_dot_and_dotdot() helper
      git-prompt: work under set -u
      dir: introduce readdir_skip_dot_and_dotdot() helper

Emir Sarı (1):
      l10n: tr: v2.32.0-r1

Eric Sunshine (1):
      merge(s): apply consistent punctuation to "up to date" messages

Eric Wong (1):
      remote-curl: fix clone on sha256 repos

Firmin Martin (1):
      user-manual.txt: assign preface an id and a title

Georgios Kontaxis (1):
      gitweb: add "e-mail privacy" feature to redact e-mail addresses

Han Xin (1):
      pack-objects: fix comment of reused_chunk.difference

Han-Wen Nienhuys (3):
      reftable: document an alternate cleanup method on Windows
      refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
      refs/debug: trace into reflog expiry too

Jean-Noël Avila (1):
      l10n: fr: v2.32.0 round 1

Jeff Hostetler (14):
      pkt-line: eliminate the need for static buffer in packet_write_gently()
      simple-ipc: design documentation for new IPC mechanism
      simple-ipc: add win32 implementation
      unix-socket: eliminate static unix_stream_socket() helper function
      unix-socket: add backlog size option to unix_stream_listen()
      unix-socket: disallow chdir() when creating unix domain sockets
      unix-stream-server: create unix domain socket under lock
      convert: make convert_attrs() and convert structs public
      convert: add [async_]convert_to_working_tree_ca() variants
      convert: add get_stream_filter_ca() variant
      convert: add classification for conv_attrs struct
      simple-ipc: add Unix domain socket implementation
      t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
      simple-ipc: correct ifdefs when NO_PTHREADS is defined

Jeff King (43):
      add open_nofollow() helper
      attr: convert "macro_ok" into a flags field
      exclude: add flags parameter to add_patterns()
      attr: do not respect symlinks for in-tree .gitattributes
      exclude: do not respect symlinks for in-tree .gitignore
      mailmap: do not respect symlinks for in-tree .mailmap
      p5303: add missing &&-chains
      p5303: measure time to repack with keep
      builtin/pack-objects.c: rewrite honor-pack-keep logic
      packfile: add kept-pack cache for find_kept_pack_entry()
      t/perf: handle worktrees as test repos
      t/perf: avoid copying worktree files from test repo
      t7003: test ref rewriting explicitly
      filter-branch: drop multiple-ancestor warning
      filter-branch: drop $_x40 glob
      bisect: peel annotated tags to commits
      t: annotate !PTHREADS tests with !FAIL_PREREQS
      ref-filter: fix NULL check for parse object failure
      midx.c: improve cache locality in midx_pack_order_cmp()
      pack-objects: update "nr_seen" progress based on pack-reused count
      is_promisor_object(): free tree buffer after parsing
      lookup_unknown_object(): take a repository argument
      revision: avoid parsing with --exclude-promisor-objects
      pack-bitmap: clean up include_check after use
      prune: save reachable-from-recent objects with bitmaps
      t5300: modernize basic tests
      t5300: check that we produced expected number of deltas
      pack-objects: clamp negative window size to 0
      t5316: check behavior of pack-objects --depth=0
      pack-objects: clamp negative depth to 0
      docs/format-patch: mention handling of merges
      t7415: remove out-dated comment about translation
      fsck_tree(): fix shadowed variable
      fsck_tree(): wrap some long lines
      t7415: rename to expand scope
      t7450: test verify_path() handling of gitmodules
      t7450: test .gitmodules symlink matching against obscured names
      t0060: test ntfs/hfs-obscured dotfiles
      fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
      docs: document symlink restrictions for dot-files
      t: avoid sed-based chain-linting in some expensive cases
      t5551: test http interaction with credential helpers
      Revert "remote-curl: fall back to basic auth if Negotiate fails"

Jerry Zhang (3):
      git-apply: try threeway first when "--3way" is used
      git-apply: allow simultaneous --cached and --3way options
      apply: adjust messages to account for --3way changes

Jiang Xin (4):
      l10n: git.pot: v2.32.0 round 1 (126 new, 26 removed)
      l10n: fix typos in po/TEAMS
      l10n: README: add file extention ".md"
      l10n: zh_CN: for git v2.32.0 l10n round 1

Joachim Kuebart (2):
      git-p4: ensure complex branches are cloned correctly
      git-p4: speed up search for branch parent

Johannes Schindelin (10):
      pkt-line: do not issue flush packets in write_packetized_*()
      pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
      pkt-line: add options argument to read_packetized_to_strbuf()
      fsmonitor: fix memory corruption in some corner cases
      fsmonitor: do not forget to release the token in `discard_index()`
      SECURITY: describe how to report vulnerabilities
      Document how we do embargoed releases
      cmake: support SKIP_DASHED_BUILT_INS
      cmake: add a preparatory work-around to accommodate `vcpkg`
      msvc: avoid calling `access("NUL", flags)`

Johannes Sixt (1):
      t9001-send-email.sh: fix expected absolute paths on Windows

John Szakmeister (2):
      http: store credential when PKI auth is used
      http: drop the check for an empty proxy password before approving

Jonathan Tan (8):
      t5606: run clone branch name test with protocol v2
      fetch-pack: buffer object-format with other args
      fetch-pack: refactor process_acks()
      fetch-pack: refactor add_haves()
      fetch-pack: refactor command and capability write
      fetch: teach independent negotiation (no packfile)
      send-pack: support push negotiation
      t5601: mark protocol v2-only test

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Soref (1):
      merge: fix swapped "up to date" message components

Julien Richard (1):
      doc: .gitignore documentation typofix

Junio C Hamano (34):
      builtin/repack.c: reword comment around pack-objects flags
      xcalloc: use CALLOC_ARRAY() when applicable
      cocci: allow xcalloc(1, size)
      The first batch in 2.32 cycle
      The second batch
      format-patch: give an overview of what a "patch" message is
      The third patch
      Git 2.31.1
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      doc: clarify "do not capitalize the first word" rule
      The tenth batch
      The eleventh (aka "ort") batch
      The twelfth batch
      The thirteenth batch
      CodingGuidelines: explicitly allow "local" for test scripts
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      The seventeenth batch
      Git 2.32-rc0
      A handful more topics before -rc1
      Git 2.32-rc1
      t1092: revert the "-1" hack for emulating "no progress meter"
      Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
      Revert "dir: update stale description of treat_directory()"
      Git 2.32-rc2
      Git 2.32-rc3
      fsync(): be prepared to see EINTR
      Git 2.32

Kyle Meyer (1):
      config.txt: add missing period

Li Linchao (1):
      builtin/clone.c: add --reject-shallow option

Louis Sautier (1):
      pretty: fix a typo in the documentation for %(trailers)

Luke Shumaker (30):
      .gitignore: ignore 'git-subtree' as a build artifact
      subtree: t7900: update for having the default branch name be 'main'
      subtree: t7900: use test-lib.sh's test_count
      subtree: t7900: use consistent formatting
      subtree: t7900: comment subtree_test_create_repo
      subtree: t7900: use 'test' for string equality
      subtree: t7900: delete some dead code
      subtree: t7900: fix 'verify one file change per commit'
      subtree: t7900: rename last_commit_message to last_commit_subject
      subtree: t7900: add a test for the -h flag
      subtree: t7900: add porcelain tests for 'pull' and 'push'
      subtree: don't have loose code outside of a function
      subtree: more consistent error propagation
      subtree: drop support for git < 1.7
      subtree: use `git merge-base --is-ancestor`
      subtree: use git-sh-setup's `say`
      subtree: use more explicit variable names for cmdline args
      subtree: use "$*" instead of "$@" as appropriate
      subtree: don't fuss with PATH
      subtree: use "^{commit}" instead of "^0"
      subtree: parse revs in individual cmd_ functions
      subtree: remove duplicate check
      subtree: add comments and sanity checks
      subtree: don't let debug and progress output clash
      subtree: have $indent actually affect indentation
      subtree: give the docs a once-over
      subtree: allow --squash to be used with --rejoin
      subtree: allow 'split' flags to be passed to 'push'
      subtree: push: allow specifying a local rev other than HEAD
      subtree: be stricter about validating flags

Lénaïc Huard (1):
      maintenance: fix two memory leaks

Martin Ågren (2):
      git-repack.txt: remove spurious ")"
      pretty-formats.txt: add missing space

Matheus Tavares (32):
      convert: fail gracefully upon missing clean cmd on required filter
      symlinks: update comment on threaded_check_leading_path()
      checkout: don't follow symlinks when removing entries
      entry: extract a header file for entry.c functions
      entry: make fstat_output() and read_blob_entry() public
      entry: extract update_ce_after_write() from write_entry()
      entry: move conv_attrs lookup up to checkout_entry()
      entry: add checkout_entry_ca() taking preloaded conv_attrs
      add: include magic part of pathspec on --refresh error
      t3705: add tests for `git add` in sparse checkouts
      add: make --chmod and --renormalize honor sparse checkouts
      pathspec: allow to ignore SKIP_WORKTREE entries on index matching
      refresh_index(): add flag to ignore SKIP_WORKTREE entries
      add: warn when asked to update SKIP_WORKTREE entries
      rm: honor sparse checkout patterns
      pkt-line: do not report packet write errors twice
      unpack-trees: add basic support for parallel checkout
      parallel-checkout: make it truly parallel
      parallel-checkout: add configuration options
      parallel-checkout: support progress displaying
      parallel-checkout: add design documentation
      make_transient_cache_entry(): optionally alloc from mem_pool
      builtin/checkout.c: complete parallel checkout support
      parallel-checkout: add tests related to path collisions
      t0028: extract encoding helpers to lib-encoding.sh
      checkout-index: add parallel checkout support
      parallel-checkout: add tests related to .gitattributes
      parallel-checkout: add tests for basic operations
      ci: run test round with parallel-checkout enabled
      clean: remove unnecessary variable
      init: fix bug regarding ~/ expansion in init.templateDir
      t2080: fix cp invocation to copy symlinks instead of following them

Matthias Rüster (1):
      l10n: de.po: Update German translation for Git v2.32.0

Nicholas Clark (1):
      submodule update: silence underlying fetch with "--quiet"

Nipunn Koorapati (3):
      fsmonitor: skip lstat deletion check during git diff-index
      fsmonitor: add assertion that fsmonitor is valid to check_removed
      fsmonitor: add perf test for git diff HEAD

Patrick Steinhardt (17):
      githooks.txt: replace mentions of SHA-1 specific properties
      githooks.txt: clarify documentation on reference-transaction hook
      pack-bitmap: avoid traversal of objects referenced by uninteresting tag
      uploadpack.txt: document implication of `uploadpackfilter.allow`
      revision: mark commit parents as NOT_USER_GIVEN
      list-objects: move tag processing into its own function
      list-objects: support filtering by tag and commit
      list-objects: implement object type filter
      pack-bitmap: implement object type filter
      pack-bitmap: implement combined filter
      rev-list: allow filtering of provided items
      config: rename `git_etc_config()`
      config: unify code paths to get global config paths
      config: allow overriding of global and system configuration
      t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
      git.txt: fix synopsis of `--config-env` missing the equals sign
      git: support separate arg for `--config-env`'s value

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5204t0f0u)

Peter Oliver (1):
      doc: point to diff attribute in patch format docs

Phillip Wood (6):
      rebase -i: only write fixup-message when it's needed
      sequencer: factor out code to append squash message
      rebase -i: comment out squash!/fixup! subjects from squash message
      word diff: handle zero length matches
      patience diff: remove unnecessary string comparisons
      patience diff: remove unused variable

Rafael Silva (1):
      repack: avoid loosening promisor objects in partial clones

Ramkumar Ramachandra (1):
      Add entry for Ramkumar Ramachandra

Ramsay Jones (1):
      bisect--helper: use BISECT_TERMS in 'bisect skip' command

René Scharfe (13):
      pretty: add %(describe)
      pretty: add merge and exclude options to %(describe)
      t4205: assert %(describe) test coverage
      pretty: document multiple %(describe) being inconsistent
      fix xcalloc() argument order
      archive: expand only a single %(describe) per archive
      git-compat-util.h: drop trailing semicolon from macro definition
      use CALLOC_ARRAY
      vcs-svn: remove header files as well
      block-sha1: drop trailing semicolon from macro definition
      mem-pool: drop trailing semicolon from macro definition
      daemon: sanitize all directory separators
      parallel-checkout: avoid dash local bug in tests

Robert Foss (1):
      git-send-email: Respect core.hooksPath setting

SZEDER Gábor (1):
      Makefile: add missing dependencies of 'config-list.h'

Sardorbek Imomaliev (1):
      work around zsh comment in __git_complete_worktree_paths

Sergey Organov (5):
      diff-merges: introduce --diff-merges=on
      diff-merges: refactor set_diff_merges()
      diff-merges: adapt -m to enable default diff format
      diff-merges: introduce log.diffMerges config variable
      doc/diff-options: document new --diff-merges features

Shubham Verma (1):
      t9801: replace test -f with test_path_is_file

Taylor Blau (28):
      packfile: introduce 'find_kept_pack_entry()'
      revision: learn '--no-kept-objects'
      builtin/pack-objects.c: add '--stdin-packs' option
      builtin/repack.c: add '--geometric' option
      builtin/repack.c: do not repack single packs with --geometric
      t7703: test --geometric repack with loose objects
      builtin/repack.c: assign pack split later
      builtin/repack.c: be more conservative with unsigned overflows
      Documentation/git-push.txt: correct configuration typo
      builtin/pack-objects.c: ignore missing links with --stdin-packs
      builtin/multi-pack-index.c: inline 'flags' with options
      builtin/multi-pack-index.c: don't handle 'progress' separately
      builtin/multi-pack-index.c: define common usage with a macro
      builtin/multi-pack-index.c: split sub-commands
      builtin/multi-pack-index.c: don't enter bogus cmd_mode
      builtin/multi-pack-index.c: display usage on unrecognized command
      t/helper/test-read-midx.c: add '--show-objects'
      pack-bitmap: add 'test_bitmap_commits()' helper
      t/helper/test-bitmap.c: initial commit
      builtin/pack-objects.c: respect 'pack.preferBitmapTips'
      midx: allow marking a pack as preferred
      midx: don't free midx_name early
      midx: keep track of the checksum
      midx: make some functions non-static
      Documentation/technical: describe multi-pack reverse indexes
      pack-revindex: read multi-pack reverse indexes
      pack-write.c: extract 'write_rev_file_order'
      pack-revindex: write multi-pack reverse indexes

Todd Zullinger (1):
      t7500: remove non-existant C_LOCALE_OUTPUT prereq

Torsten Bögershausen (3):
      git mv foo FOO ; git mv foo bar gave an assert
      precompose_utf8: make precompose_string_if_needed() public
      macOS: precompose startup_info->prefix

Trần Ngọc Quân (1):
      l10n: vi.po(5204t): Updated Vietnamese translation for v2.32.0

Ville Skyttä (2):
      completion: audit and guard $GIT_* against unset use
      completion: avoid aliased command lookup error in nounset mode

Vincent Tam (1):
      l10n: fr.po fixed inconsistencies

Will Chandler (1):
      refs: cleanup directories when deleting packed ref

Wolfgang Müller (1):
      rev-parse: fix segfault with missing --path-format argument

Yi-Jyun Pan (2):
      l10n: zh_TW.po: v2.32.0 round 1 (11 untranslated)
      l10n: zh_TW.po: localized

ZheNing Hu (8):
      commit: add --trailer option
      format-patch: allow a non-integral version numbers
      ref-filter: get rid of show_ref_array_item
      ref-filter: reuse output buffer
      pretty: provide human date format
      docs: correct descript of trailer.<token>.command
      trailer: add new .cmd config option
      ref-filter: fix read invalid union member bug

brian m. carlson (14):
      builtin/init-db: handle bare clones when core.bare set to false
      hash: add an algo member to struct object_id
      Always use oidread to read into struct object_id
      http-push: set algorithm when reading object ID
      hash: add a function to finalize object IDs
      Use the final_oid_fn to finalize hashing of object IDs
      builtin/pack-redundant: avoid casting buffers to struct object_id
      hash: set, copy, and use algo field in struct object_id
      hash: provide per-algorithm null OIDs
      builtin/show-index: set the algorithm for object IDs
      commit-graph: don't store file hashes as struct object_id
      builtin/pack-objects: avoid using struct object_id for pack hash
      hex: default to the_hash_algo on zero algorithm value
      hex: print objects using the hash algorithm member

rlespinasse (1):
      l10n: fr: fixed inconsistencies

Ævar Arnfjörð Bjarmason (97):
      grep/pcre2: drop needless assignment + assert() on opt->pcre2
      grep/pcre2: drop needless assignment to NULL
      grep/pcre2: correct reference to grep_init() in comment
      grep/pcre2: prepare to add debugging to pcre2_malloc()
      grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
      grep/pcre2: use compile-time PCREv2 version test
      grep/pcre2: use pcre2_maketables_free() function
      grep/pcre2: actually make pcre2 use custom allocator
      grep/pcre2: move back to thread-only PCREv2 structures
      grep/pcre2: move definitions of pcre2_{malloc,free}
      Makefile: guard against TEST_OBJS in the environment
      Makefile: split up long OBJECTS line
      Makefile: sort OBJECTS assignment for subsequent change
      Makefile: split OBJECTS into OBJECTS and GIT_OBJS
      Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
      remote: add camel-cased *.tagOpt key, like clone
      remote: write camel-cased *.pushRemote on rename
      fsck.c: refactor and rename common config callback
      show tests: add test for "git show <tree>"
      ls-files tests: add meaningful --with-tree tests
      tree.c API: move read_tree() into builtin/ls-files.c
      ls-files: don't needlessly pass around stage variable
      ls-files: refactor away read_tree()
      archive: stop passing "stage" through read_tree_recursive()
      tree.h API: expose read_tree_1() as read_tree_at()
      tree.h API: simplify read_tree_recursive() signature
      diff --no-index tests: add test for --exit-code
      diff --no-index tests: test mode normalization
      rebase: remove transitory rebase.useBuiltin setting & env
      mktag tests: fix broken "&&" chain
      fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
      fsck.h: use "enum object_type" instead of "int"
      fsck.c: rename variables in fsck_set_msg_type() for less confusion
      fsck.c: remove (mostly) redundant append_msg_id() function
      fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
      fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
      fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
      fsck.h: re-order and re-assign "enum fsck_msg_type"
      fsck.c: call parse_msg_type() early in fsck_set_msg_type()
      fsck.c: undefine temporary STR macro after use
      fsck.c: give "FOREACH_MSG_ID" a more specific name
      fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
      fsck.c: pass along the fsck_msg_id in the fsck_error callback
      fsck.c: add an fsck_set_msg_type() API that takes enums
      fsck.c: move gitmodules_{found,done} into fsck_options
      fetch-pack: don't needlessly copy fsck_options
      fetch-pack: use file-scope static struct for fsck_options
      fetch-pack: use new fsck API to printing dangling submodules
      Makefile: add QUIET_GEN to "tags" and "TAGS" targets
      git-send-email: replace "map" in void context with "for"
      git-send-email: test full --validate output
      git-send-email: refactor duplicate $? checks into a function
      git-send-email: improve --validate error output
      bash completion: complete CHERRY_PICK_HEAD
      config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
      userdiff style: re-order drivers in alphabetical order
      userdiff style: declare patterns with consistent style
      userdiff style: normalize pascal regex declaration
      userdiff: add and use for_each_userdiff_driver()
      userdiff tests: explicitly test "default" pattern
      userdiff tests: list builtin drivers via test-tool
      userdiff: remove support for "broken" tests
      blame tests: don't rely on t/t4018/ directory
      blame tests: simplify userdiff driver test
      rebase tests: camel-case rebase.rescheduleFailedExec consistently
      rebase: don't override --no-reschedule-failed-exec with config
      Documentation/Makefile: make $(wildcard howto/*.txt) a var
      Documentation/Makefile: make doc.dep dependencies a variable again
      doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
      doc lint: fix bugs in, simplify and improve lint script
      doc lint: lint and fix missing "GIT" end sections
      doc lint: lint relative section order
      docs: fix linting issues due to incorrect relative section order
      svn tests: remove legacy re-setup from init-clone test
      svn tests: refactor away a "set -e" in test body
      tests: remove all uses of test_i18cmp
      usage.c: don't copy/paste the same comment three times
      api docs: document BUG() in api-error-handling.txt
      api docs: document that BUG() emits a trace2 error event
      pretty tests: simplify %aI/%cI date format test
      pretty tests: give --date/format tests a better description
      sparse-index.c: remove set_index_sparse_config()
      streaming.c: avoid forward declarations
      streaming.c: remove enum/function/vtbl indirection
      streaming.c: remove {open,close,read}_method_decl() macros
      streaming.c: stop passing around "object_info *" to open()
      streaming.c: move {open,close,read} from vtable to "struct git_istream"
      Makefile: don't re-define PERL_DEFINES
      Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
      Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
      perl: use mock i18n functions under NO_GETTEXT=Y
      Makefile: make PERL_DEFINES recursively expanded
      send-email: fix missing error message regression
      send-email: don't needlessly abs_path() the core.hooksPath
      send-email: move "hooks_path" invocation to git-send-email.perl
      pack-objects: move static inline from a header to the sole consumer
      builtin/fsck.c: don't conflate "int" and "enum" in callback

Øystein Walle (2):
      transport: respect verbosity when setting upstream
      add: die if both --dry-run and --interactive are given

Đoàn Trần Công Danh (6):
      mailinfo: load default metainfo_charset lazily
      mailinfo: stop parsing options manually
      mailinfo: warn if CRLF found in decoded base64/QP email
      mailinfo: allow squelching quoted CRLF warning
      mailinfo: allow stripping quoted CR without warning
      am: learn to process quoted lines that ends with CRLF


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.32.0-rc3
@ 2021-06-02  8:29  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-06-02  8:29 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.32.0-rc3 is now available for testing at
the usual places.  It is comprised of 589 non-merge commits since
v2.31.0, contributed by 84 people, 31 of which are new faces [*].

A couple of small last-minute regression fixes are in, relative to
the previouss release candidate.  Hopefully we can tag the final
this weekend.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.32.0-rc3' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.31.0 are as follows.
Welcome to the Git development community!

  Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
  Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
  Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
  Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
  Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
  Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
  Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
  Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
  Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson, Charvi
  Mendiratta, Christian Couder, David Aguilar, Dennis Ameling,
  Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
  Newren, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
  Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
  John Szakmeister, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
  Kyle Meyer, Lénaïc Huard, Luke Diamand, Marc Branchaud,
  Martin Ågren, Matheus Tavares, Nguyễn Thái Ngọc Duy,
  Nipunn Koorapati, Øystein Walle, Patrick Steinhardt, Phillip
  Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones, Randall
  S. Becker, René Scharfe, Sergey Organov, Shubham Verma, Son
  Luong Ngoc, SZEDER Gábor, Taylor Blau, Todd Zullinger, Torsten
  Bögershausen, Trygve Aaberge, Ville Skyttä, and ZheNing Hu.

[*] We are counting not just the authorship contribution but
    issue reporting, testing and reviewing that are recorded
    in the commit trailers.

----------------------------------------------------------------

Git 2.32 Release Notes (draft)
==============================

Backward compatibility notes
----------------------------

 * ".gitattributes", ".gitignore", and ".mailmap" files that are
   symbolic links are ignored.

 * "git apply --3way" used to first attempt a straight application,
   and only fell back to the 3-way merge algorithm when the stright
   application failed.  Starting with this version, the command will
   first try the 3-way merge algorithm and only when it fails (either
   resulting with conflict or the base versions of blobs are missing),
   falls back to the usual patch application.


Updates since v2.31
-------------------

UI, Workflows & Features

 * It does not make sense to make ".gitattributes", ".gitignore" and
   ".mailmap" symlinks, as they are supposed to be usable from the
   object store (think: bare repositories where HEAD:.mailmap etc. are
   used).  When these files are symbolic links, we used to read the
   contents of the files pointed by them by mistake, which has been
   corrected.

 * "git stash show" learned to optionally show untracked part of the
   stash.

 * "git log --format='...'" learned "%(describe)" placeholder.

 * "git repack" so far has been only capable of repacking everything
   under the sun into a single pack (or split by size).  A cleverer
   strategy to reduce the cost of repacking a repository has been
   introduced.

 * The http codepath learned to let the credential layer to cache the
   password used to unlock a certificate that has successfully been
   used.

 * "git commit --fixup=<commit>", which was to tweak the changes made
   to the contents while keeping the original log message intact,
   learned "--fixup=(amend|reword):<commit>", that can be used to
   tweak both the message and the contents, and only the message,
   respectively.

 * "git send-email" learned to honor the core.hooksPath configuration.

 * "git format-patch -v<n>" learned to allow a reroll count that is
   not an integer.

 * "git commit" learned "--trailer <key>[=<value>]" option; together
   with the interpret-trailers command, this will make it easier to
   support custom trailers.

 * "git clone --reject-shallow" option fails the clone as soon as we
   notice that we are cloning from a shallow repository.

 * A configuration variable has been added to force tips of certain
   refs to be given a reachability bitmap.

 * "gitweb" learned "e-mail privacy" feature to redact strings that
   look like e-mail addresses on various pages.

 * "git apply --3way" has always been "to fall back to 3-way merge
   only when straight application fails". Swap the order of falling
   back so that 3-way is always attempted first (only when the option
   is given, of course) and then straight patch application is used as
   a fallback when it fails.

 * "git apply" now takes "--3way" and "--cached" at the same time, and
   work and record results only in the index.

 * The command line completion (in contrib/) has learned that
   CHERRY_PICK_HEAD is a possible pseudo-ref.

 * Userdiff patterns for "Scheme" has been added.

 * "git log" learned "--diff-merges=<style>" option, with an
   associated configuration variable log.diffMerges.

 * "git log --format=..." placeholders learned %ah/%ch placeholders to
   request the --date=human output.

 * Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
   system-wide configuration file with GIT_CONFIG_SYSTEM that lets
   users specify from which file to read the system-wide configuration
   (setting it to an empty file would essentially be the same as
   setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
   per-user configuration in $HOME/.gitconfig.

 * "git add" and "git rm" learned not to touch those paths that are
   outside of sparse checkout.

 * "git rev-list" learns the "--filter=object:type=<type>" option,
   which can be used to exclude objects of the given kind from the
   packfile generated by pack-objects.

 * The command line completion (in contrib/) for "git stash" has been
   updated.

 * "git subtree" updates.

 * It is now documented that "format-patch" skips merges.

 * Options to "git pack-objects" that take numeric values like
   --window and --depth should not accept negative values; the input
   validation has been tightened.

 * The way the command line specified by the trailer.<token>.command
   configuration variable receives the end-user supplied value was
   both error prone and misleading.  An alternative to achieve the
   same goal in a safer and more intuitive way has been added, as
   the trailer.<token>.cmd configuration variable, to replace it.

 * "git add -i --dry-run" does not dry-run, which was surprising.  The
   combination of options has taught to error out.

 * "git push" learns to discover common ancestor with the receiving
   end over protocol v2.  This will hopefully make "git push" as
   efficient as "git fetch" in avoiding objects from getting
   transferred unnecessarily.

 * "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
   control how lines ending with CRLF wrapped in base64 or qp are
   handled.


Performance, Internal Implementation, Development Support etc.

 * Rename detection rework continues.

 * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
   prerequisites to catch broken tests that depend on the side effects
   of optional pieces, but did not work at all when negative
   prerequisites were involved.
   (merge 27d578d904 jk/fail-prereq-testfix later to maint).

 * "git diff-index" codepath has been taught to trust fsmonitor status
   to reduce number of lstat() calls.
   (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).

 * Reorganize Makefile to allow building git.o and other essential
   objects without extra stuff needed only for testing.

 * Preparatory API changes for parallel checkout.

 * A simple IPC interface gets introduced to build services like
   fsmonitor on top.

 * Fsck API clean-up.

 * SECURITY.md that is facing individual contributors and end users
   has been introduced.  Also a procedure to follow when preparing
   embargoed releases has been spelled out.
   (merge 09420b7648 js/security-md later to maint).

 * Optimize "rev-list --use-bitmap-index --objects" corner case that
   uses negative tags as the stopping points.

 * CMake update for vsbuild.

 * An on-disk reverse-index to map the in-pack location of an object
   back to its object name across multiple packfiles is introduced.

 * Generate [ec]tags under $(QUIET_GEN).

 * Clean-up codepaths that implements "git send-email --validate"
   option and improves the message from it.

 * The last remnant of gettext-poison has been removed.

 * The test framework has been taught to optionally turn the default
   merge strategy to "ort" throughout the system where we use
   three-way merges internally, like cherry-pick, rebase etc.,
   primarily to enhance its test coverage (the strategy has been
   available as an explicit "-s ort" choice).

 * A bit of code clean-up and a lot of test clean-up around userdiff
   area.

 * Handling of "promisor packs" that allows certain objects to be
   missing and lazily retrievable has been optimized (a bit).

 * When packet_write() fails, we gave an extra error message
   unnecessarily, which has been corrected.

 * The checkout machinery has been taught to perform the actual
   write-out of the files in parallel when able.

 * Show errno in the trace output in the error codepath that calls
   read_raw_ref method.

 * Effort to make the command line completion (in contrib/) safe with
   "set -u" continues.

 * Tweak a few tests for "log --format=..." that show timestamps in
   various formats.

 * The reflog expiry machinery has been taught to emit trace events.

 * Over-the-wire protocol learns a new request type to ask for object
   sizes given a list of object names.


Fixes since v2.31
-----------------

 * The fsmonitor interface read from its input without making sure
   there is something to read from.  This bug is new in 2.31
   timeframe.

 * The data structure used by fsmonitor interface was not properly
   duplicated during an in-core merge, leading to use-after-free etc.

 * "git bisect" reimplemented more in C during 2.30 timeframe did not
   take an annotated tag as a good/bad endpoint well.  This regression
   has been corrected.

 * Fix macros that can silently inject unintended null-statements.

 * CALLOC_ARRAY() macro replaces many uses of xcalloc().

 * Update insn in Makefile comments to run fuzz-all target.

 * Fix a corner case bug in "git mv" on case insensitive systems,
   which was introduced in 2.29 timeframe.

 * We had a code to diagnose and die cleanly when a required
   clean/smudge filter is missing, but an assert before that
   unnecessarily fired, hiding the end-user facing die() message.
   (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).

 * Update C code that sets a few configuration variables when a remote
   is configured so that it spells configuration variable names in the
   canonical camelCase.
   (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).

 * A new configuration variable has been introduced to allow choosing
   which version of the generation number gets used in the
   commit-graph file.
   (merge 702110aac6 ds/commit-graph-generation-config later to maint).

 * Perf test update to work better in secondary worktrees.
   (merge 36e834abc1 jk/perf-in-worktrees later to maint).

 * Updates to memory allocation code around the use of pcre2 library.
   (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).

 * "git -c core.bare=false clone --bare ..." would have segfaulted,
   which has been corrected.
   (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).

 * When "git checkout" removes a path that does not exist in the
   commit it is checking out, it wasn't careful enough not to follow
   symbolic links, which has been corrected.
   (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).

 * A few option description strings started with capital letters,
   which were corrected.
   (merge 5ee90326dc cc/downcase-opt-help later to maint).

 * Plug or annotate remaining leaks that trigger while running the
   very basic set of tests.
   (merge 68ffe095a2 ah/plugleaks later to maint).

 * The hashwrite() API uses a buffering mechanism to avoid calling
   write(2) too frequently. This logic has been refactored to be
   easier to understand.
   (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).

 * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
   the editor as expected (e.g. "revert --no-edit" after a conflict
   still asked to edit the message), which has been corrected.
   (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).

 * "git daemon" has been tightened against systems that take backslash
   as directory separator.
   (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).

 * A NULL-dereference bug has been corrected in an error codepath in
   "git for-each-ref", "git branch --list" etc.
   (merge c685450880 jk/ref-filter-segfault-fix later to maint).

 * Streamline the codepath to fix the UTF-8 encoding issues in the
   argv[] and the prefix on macOS.
   (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).

 * The command-line completion script (in contrib/) had a couple of
   references that would have given a warning under the "-u" (nounset)
   option.
   (merge c5c0548d79 vs/completion-with-set-u later to maint).

 * When "git pack-objects" makes a literal copy of a part of existing
   packfile using the reachability bitmaps, its update to the progress
   meter was broken.
   (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).

 * The dependencies for config-list.h and command-list.h were broken
   when the former was split out of the latter, which has been
   corrected.
   (merge 56550ea718 sg/bugreport-fixes later to maint).

 * "git push --quiet --set-upstream" was not quiet when setting the
   upstream branch configuration, which has been corrected.
   (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).

 * The prefetch task in "git maintenance" assumed that "git fetch"
   from any remote would fetch all its local branches, which would
   fetch too much if the user is interested in only a subset of
   branches there.
   (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).

 * Clarify that pathnames recorded in Git trees are most often (but
   not necessarily) encoded in UTF-8.
   (merge 9364bf465d ab/pathname-encoding-doc later to maint).

 * "git --config-env var=val cmd" weren't accepted (only
   --config-env=var=val was).
   (merge c331551ccf ps/config-env-option-with-separate-value later to maint).

 * When the reachability bitmap is in effect, the "do not lose
   recently created objects and those that are reachable from them"
   safety to protect us from races were disabled by mistake, which has
   been corrected.
   (merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).

 * Cygwin pathname handling fix.
   (merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).

 * "git rebase --[no-]reschedule-failed-exec" did not work well with
   its configuration variable, which has been corrected.
   (merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).

 * Portability fix for command line completion script (in contrib/).
   (merge f2acf763e2 si/zsh-complete-comment-fix later to maint).

 * "git repack -A -d" in a partial clone unnecessarily loosened
   objects in promisor pack.

 * "git bisect skip" when custom words are used for new/old did not
   work, which has been corrected.

 * A few variants of informational message "Already up-to-date" has
   been rephrased.
   (merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).

 * "git submodule update --quiet" did not propagate the quiet option
   down to underlying "git fetch", which has been corrected.
   (merge 62af4bdd42 nc/submodule-update-quiet later to maint).

 * Document that our test can use "local" keyword.
   (merge a84fd3bcc6 jc/test-allows-local later to maint).

 * The word-diff mode has been taught to work better with a word
   regexp that can match an empty string.
   (merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).

 * "git p4" learned to find branch points more efficiently.
   (merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).

 * When "git update-ref -d" removes a ref that is packed, it left
   empty directories under $GIT_DIR/refs/ for
   (merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).

 * "git clean" and "git ls-files -i" had confusion around working on
   or showing ignored paths inside an ignored directory, which has
   been corrected.
   (merge b548f0f156 en/dir-traversal later to maint).

 * The handling of "%(push)" formatting element of "for-each-ref" and
   friends was broken when the same codepath started handling
   "%(push:<what>)", which has been corrected.
   (merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).

 * The bash prompt script (in contrib/) did not work under "set -u".
   (merge 5c0cbdb107 en/prompt-under-set-u later to maint).

 * The "chainlint" feature in the test framework is a handy way to
   catch common mistakes in writing new tests, but tends to get
   expensive.  An knob to selectively disable it has been introduced
   to help running tests that the developer has not modified.
   (merge 2d86a96220 jk/test-chainlint-softer later to maint).

 * The "rev-parse" command did not diagnose the lack of argument to
   "--path-format" option, which was introduced in v2.31 era, which
   has been corrected.
   (merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge f451960708 dl/cat-file-doc-cleanup later to maint).
   (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
   (merge ea7e63921c jr/doc-ignore-typofix later to maint).
   (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
   (merge 42efa1231a jk/filter-branch-sha256 later to maint).
   (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
   (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
   (merge 47957485b3 ab/read-tree later to maint).
   (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
   (merge 76593c09bb ab/detox-gettext-tests later to maint).
   (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
   (merge fc12b6fdde fm/user-manual-use-preface later to maint).
   (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
   (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
   (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
   (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
   (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
   (merge 7a14acdbe6 po/diff-patch-doc later to maint).
   (merge f91371b948 pw/patience-diff-clean-up later to maint).
   (merge 3a7f0908b6 mt/clean-clean later to maint).
   (merge d4e2d15a8b ab/streaming-simplify later to maint).
   (merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
   (merge e6f68f62e0 ls/typofix later to maint).

----------------------------------------------------------------

Changes since v2.31.0 are as follows:

Adam Dinwoodie (1):
      cygwin: disallow backslashes in file names

Alex Henrie (1):
      merge-ort: split "distinct types" message into two translatable messages

Andrey Bienkowski (1):
      doc: clarify the filename encoding in git diff

Andrzej Hunt (24):
      Makefile: update 'make fuzz-all' docs to reflect modern clang
      symbolic-ref: don't leak shortened refname in check_symref()
      reset: free instead of leaking unneeded ref
      clone: free or UNLEAK further pointers when finished
      worktree: fix leak in dwim_branch()
      init: remove git_init_db_config() while fixing leaks
      init-db: silence template_dir leak when converting to absolute path
      fsmonitor: avoid global-buffer-overflow READ when checking trivial response
      parse-options: convert bitfield values to use binary shift
      parse-options: don't leak alias help messages
      transport: also free remote_refs in transport_disconnect()
      merge-ort: only do pointer arithmetic for non-empty lists
      revision: free remainder of old commit list in limit_list
      wt-status: fix multiple small leaks
      ls-files: free max_prefix when done
      bloom: clear each bloom_key after use
      branch: FREE_AND_NULL instead of NULL'ing real_ref
      builtin/bugreport: don't leak prefixed filename
      builtin/check-ignore: clear_pathspec before returning
      builtin/checkout: clear pending objects after diffing
      mailinfo: also free strbuf lists when clearing mailinfo
      builtin/for-each-ref: free filter and UNLEAK sorting.
      builtin/rebase: release git_format_patch_opt too
      builtin/rm: avoid leaking pathspec and seen

Atharva Raykar (1):
      userdiff: add support for Scheme

Bagas Sanjaya (1):
      INSTALL: note on using Asciidoctor to build doc

Bruno Albuquerque (1):
      object-info: support for retrieving object info

Charvi Mendiratta (23):
      sequencer: pass todo_item to do_pick_commit()
      sequencer: use const variable for commit message comments
      rebase -i: add fixup [-C | -c] command
      t3437: test script for fixup [-C|-c] options in interactive rebase
      rebase -i: teach --autosquash to work with amend!
      doc/git-rebase: add documentation for fixup [-C|-c] options
      sequencer: fixup the datatype of the 'flag' argument
      sequencer: rename a few functions
      rebase -i: clarify and fix 'fixup -c' rebase-todo help
      t/lib-rebase: update the documentation of FAKE_LINES
      t/t3437: fixup here-docs in the 'setup' test
      t/t3437: remove the dependency of 'expected-message' file from tests
      t/t3437: check the author date of fixed up commit
      t/t3437: simplify and document the test helpers
      t/t3437: use named commits in the tests
      t/t3437: fixup the test 'multiple fixup -c opens editor once'
      doc/rebase -i: fix typo in the documentation of 'fixup' command
      sequencer: export and rename subject_length()
      commit: add amend suboption to --fixup to create amend! commit
      commit: add a reword suboption to --fixup
      t7500: add tests for --fixup=[amend|reword] options
      t3437: use --fixup with options to create amend! commit
      doc/git-commit: add documentation for fixup=[amend|reword] options

Chinmoy Chakraborty (1):
      column, range-diff: downcase option description

Christian Couder (1):
      test-bloom: fix missing 'bloom' from usage string

Christopher Schenk (1):
      remote-curl: fall back to basic auth if Negotiate fails

David Aguilar (1):
      contrib/completion: fix zsh completion regression from 59d85a2a05

Dennis Ameling (2):
      cmake(install): fix double .exe suffixes
      cmake(install): include vcpkg dlls

Denton Liu (14):
      git-cat-file.txt: monospace args, placeholders and filenames
      git-cat-file.txt: remove references to "sha1"
      stash show: teach --include-untracked and --only-untracked
      stash show: learn stash.showIncludeUntracked
      git-completion.bash: pass $__git_subcommand_idx from __git_main()
      git-completion.bash: extract from else in _git_stash()
      git-completion.bash: use __gitcomp_builtin() in _git_stash()
      git-completion.bash: separate some commands onto their own line
      git-completion.bash: rename to $__git_cmd_idx
      git-completion.bash: use $__git_cmd_idx in more places
      git-completion.bash: consolidate cases in _git_stash()
      t3905: correct test title
      stash show: fix segfault with --{include,only}-untracked
      stash show: use stash.showIncludeUntracked even when diff options given

Derrick Stolee (58):
      commit-graph: create local repository pointer
      commit-graph: use config to specify generation type
      csum-file: make hashwrite() more readable
      sparse-index: design doc and format update
      t/perf: add performance test for sparse operations
      t1092: clean up script quoting
      sparse-index: add guard to ensure full index
      sparse-index: implement ensure_full_index()
      t1092: compare sparse-checkout to sparse-index
      test-read-cache: print cache entries with --table
      test-tool: don't force full index
      unpack-trees: ensure full index
      sparse-checkout: hold pattern list in index
      sparse-index: add 'sdir' index extension
      sparse-index: convert from full to sparse
      submodule: sparse-index should not collapse links
      unpack-trees: allow sparse directories
      sparse-index: check index conversion happens
      sparse-index: add index.sparse config option
      sparse-checkout: toggle sparse index from builtin
      sparse-checkout: disable sparse-index
      cache-tree: integrate with sparse directory entries
      sparse-index: loose integration with cache_tree_verify()
      p2000: add sparse-index repos
      maintenance: simplify prefetch logic
      sparse-index: API protection strategy
      *: remove 'const' qualifier for struct index_state
      read-cache: expand on query into sparse-directory entry
      cache: move ensure_full_index() to cache.h
      add: ensure full index
      checkout-index: ensure full index
      checkout: ensure full index
      commit: ensure full index
      difftool: ensure full index
      fsck: ensure full index
      grep: ensure full index
      ls-files: ensure full index
      merge-index: ensure full index
      rm: ensure full index
      stash: ensure full index
      update-index: ensure full index
      dir: ensure full index
      entry: ensure full index
      merge-recursive: ensure full index
      pathspec: ensure full index
      read-cache: ensure full index
      resolve-undo: ensure full index
      revision: ensure full index
      name-hash: don't add directories to name_hash
      sparse-index: expand_to_path()
      name-hash: use expand_to_path()
      fetch: add --prefetch option
      maintenance: use 'git fetch --prefetch'
      maintenance: respect remote.*.skipFetchAll
      dir: update stale description of treat_directory()
      sparse-index: fix uninitialized jump
      t1092: use GIT_PROGRESS_DELAY for consistent results
      dir: update stale description of treat_directory()

Elijah Newren (50):
      diffcore-rename: use directory rename guided basename comparisons
      diffcore-rename: provide basic implementation of idx_possible_rename()
      diffcore-rename: add a mapping of destination names to their indices
      Move computation of dir_rename_count from merge-ort to diffcore-rename
      diffcore-rename: add function for clearing dir_rename_count
      diffcore-rename: move dir_rename_counts into dir_rename_info struct
      diffcore-rename: extend cleanup_dir_rename_info()
      diffcore-rename: compute dir_rename_counts in stages
      diffcore-rename: limit dir_rename_counts computation to relevant dirs
      diffcore-rename: compute dir_rename_guess from dir_rename_counts
      diffcore-rename: enable filtering possible rename sources
      merge-ort: precompute subset of sources for which we need rename detection
      merge-ort: add data structures for an alternate tree traversal
      merge-ort: introduce wrappers for alternate tree traversal
      merge-ort: precompute whether directory rename detection is needed
      merge-ort: use relevant_sources to filter possible rename sources
      merge-ort: skip rename detection entirely if possible
      diffcore-rename: avoid doing basename comparisons for irrelevant sources
      diffcore-rename: take advantage of "majority rules" to skip more renames
      merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
      merge-ort: record the reason that we want a rename for a directory
      diffcore-rename: only compute dir_rename_count for relevant directories
      diffcore-rename: check if we have enough renames for directories early on
      diffcore-rename: add computation of number of unknown renames
      merge-ort: record the reason that we want a rename for a file
      diffcore-rename: determine which relevant_sources are no longer relevant
      merge-ort: use STABLE_QSORT instead of QSORT where required
      merge-ort: add a special minimal index just for renormalization
      merge-ort: have ll_merge() use a special attr_index for renormalization
      merge-ort: let renormalization change modify/delete into clean delete
      merge-ort: support subtree shifting
      t6428: new test for SKIP_WORKTREE handling and conflicts
      merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
      t: mark several submodule merging tests as fixed under merge-ort
      merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
      merge-recursive: add a bunch of FIXME comments documenting known bugs
      Revert "merge-ort: ignore the directory rename split conflict for now"
      t6423: mark remaining expected failure under merge-ort as such
      Add testing with merge-ort merge strategy
      sequencer: fix edit handling for cherry-pick and revert messages
      dir: convert trace calls to trace2 equivalents
      dir: report number of visited directories and paths with trace2
      ls-files: error out on -i unless -o or -c are specified
      t7300: add testcase showing unnecessary traversal into ignored directory
      t3001, t7300: add testcase showcasing missed directory traversal
      dir: avoid unnecessary traversal into ignored directory
      dir: traverse into untracked directories if they may have ignored subfiles
      dir: introduce readdir_skip_dot_and_dotdot() helper
      git-prompt: work under set -u
      dir: introduce readdir_skip_dot_and_dotdot() helper

Eric Sunshine (1):
      merge(s): apply consistent punctuation to "up to date" messages

Eric Wong (1):
      remote-curl: fix clone on sha256 repos

Firmin Martin (1):
      user-manual.txt: assign preface an id and a title

Georgios Kontaxis (1):
      gitweb: add "e-mail privacy" feature to redact e-mail addresses

Han Xin (1):
      pack-objects: fix comment of reused_chunk.difference

Han-Wen Nienhuys (3):
      reftable: document an alternate cleanup method on Windows
      refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
      refs/debug: trace into reflog expiry too

Jeff Hostetler (14):
      pkt-line: eliminate the need for static buffer in packet_write_gently()
      simple-ipc: design documentation for new IPC mechanism
      simple-ipc: add win32 implementation
      unix-socket: eliminate static unix_stream_socket() helper function
      unix-socket: add backlog size option to unix_stream_listen()
      unix-socket: disallow chdir() when creating unix domain sockets
      unix-stream-server: create unix domain socket under lock
      convert: make convert_attrs() and convert structs public
      convert: add [async_]convert_to_working_tree_ca() variants
      convert: add get_stream_filter_ca() variant
      convert: add classification for conv_attrs struct
      simple-ipc: add Unix domain socket implementation
      t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
      simple-ipc: correct ifdefs when NO_PTHREADS is defined

Jeff King (43):
      add open_nofollow() helper
      attr: convert "macro_ok" into a flags field
      exclude: add flags parameter to add_patterns()
      attr: do not respect symlinks for in-tree .gitattributes
      exclude: do not respect symlinks for in-tree .gitignore
      mailmap: do not respect symlinks for in-tree .mailmap
      p5303: add missing &&-chains
      p5303: measure time to repack with keep
      builtin/pack-objects.c: rewrite honor-pack-keep logic
      packfile: add kept-pack cache for find_kept_pack_entry()
      t/perf: handle worktrees as test repos
      t/perf: avoid copying worktree files from test repo
      t7003: test ref rewriting explicitly
      filter-branch: drop multiple-ancestor warning
      filter-branch: drop $_x40 glob
      bisect: peel annotated tags to commits
      t: annotate !PTHREADS tests with !FAIL_PREREQS
      ref-filter: fix NULL check for parse object failure
      midx.c: improve cache locality in midx_pack_order_cmp()
      pack-objects: update "nr_seen" progress based on pack-reused count
      is_promisor_object(): free tree buffer after parsing
      lookup_unknown_object(): take a repository argument
      revision: avoid parsing with --exclude-promisor-objects
      pack-bitmap: clean up include_check after use
      prune: save reachable-from-recent objects with bitmaps
      t5300: modernize basic tests
      t5300: check that we produced expected number of deltas
      pack-objects: clamp negative window size to 0
      t5316: check behavior of pack-objects --depth=0
      pack-objects: clamp negative depth to 0
      docs/format-patch: mention handling of merges
      t7415: remove out-dated comment about translation
      fsck_tree(): fix shadowed variable
      fsck_tree(): wrap some long lines
      t7415: rename to expand scope
      t7450: test verify_path() handling of gitmodules
      t7450: test .gitmodules symlink matching against obscured names
      t0060: test ntfs/hfs-obscured dotfiles
      fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
      docs: document symlink restrictions for dot-files
      t: avoid sed-based chain-linting in some expensive cases
      t5551: test http interaction with credential helpers
      Revert "remote-curl: fall back to basic auth if Negotiate fails"

Jerry Zhang (3):
      git-apply: try threeway first when "--3way" is used
      git-apply: allow simultaneous --cached and --3way options
      apply: adjust messages to account for --3way changes

Joachim Kuebart (2):
      git-p4: ensure complex branches are cloned correctly
      git-p4: speed up search for branch parent

Johannes Schindelin (10):
      pkt-line: do not issue flush packets in write_packetized_*()
      pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
      pkt-line: add options argument to read_packetized_to_strbuf()
      fsmonitor: fix memory corruption in some corner cases
      fsmonitor: do not forget to release the token in `discard_index()`
      SECURITY: describe how to report vulnerabilities
      Document how we do embargoed releases
      cmake: support SKIP_DASHED_BUILT_INS
      cmake: add a preparatory work-around to accommodate `vcpkg`
      msvc: avoid calling `access("NUL", flags)`

Johannes Sixt (1):
      t9001-send-email.sh: fix expected absolute paths on Windows

John Szakmeister (2):
      http: store credential when PKI auth is used
      http: drop the check for an empty proxy password before approving

Jonathan Tan (8):
      t5606: run clone branch name test with protocol v2
      fetch-pack: buffer object-format with other args
      fetch-pack: refactor process_acks()
      fetch-pack: refactor add_haves()
      fetch-pack: refactor command and capability write
      fetch: teach independent negotiation (no packfile)
      send-pack: support push negotiation
      t5601: mark protocol v2-only test

Josh Soref (1):
      merge: fix swapped "up to date" message components

Julien Richard (1):
      doc: .gitignore documentation typofix

Junio C Hamano (32):
      builtin/repack.c: reword comment around pack-objects flags
      xcalloc: use CALLOC_ARRAY() when applicable
      cocci: allow xcalloc(1, size)
      The first batch in 2.32 cycle
      The second batch
      format-patch: give an overview of what a "patch" message is
      The third patch
      Git 2.31.1
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      The ninth batch
      doc: clarify "do not capitalize the first word" rule
      The tenth batch
      The eleventh (aka "ort") batch
      The twelfth batch
      The thirteenth batch
      CodingGuidelines: explicitly allow "local" for test scripts
      The fourteenth batch
      The fifteenth batch
      The sixteenth batch
      The seventeenth batch
      Git 2.32-rc0
      A handful more topics before -rc1
      Git 2.32-rc1
      t1092: revert the "-1" hack for emulating "no progress meter"
      Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
      Revert "dir: update stale description of treat_directory()"
      Git 2.32-rc2
      Git 2.32-rc3

Kyle Meyer (1):
      config.txt: add missing period

Li Linchao (1):
      builtin/clone.c: add --reject-shallow option

Louis Sautier (1):
      pretty: fix a typo in the documentation for %(trailers)

Luke Shumaker (30):
      .gitignore: ignore 'git-subtree' as a build artifact
      subtree: t7900: update for having the default branch name be 'main'
      subtree: t7900: use test-lib.sh's test_count
      subtree: t7900: use consistent formatting
      subtree: t7900: comment subtree_test_create_repo
      subtree: t7900: use 'test' for string equality
      subtree: t7900: delete some dead code
      subtree: t7900: fix 'verify one file change per commit'
      subtree: t7900: rename last_commit_message to last_commit_subject
      subtree: t7900: add a test for the -h flag
      subtree: t7900: add porcelain tests for 'pull' and 'push'
      subtree: don't have loose code outside of a function
      subtree: more consistent error propagation
      subtree: drop support for git < 1.7
      subtree: use `git merge-base --is-ancestor`
      subtree: use git-sh-setup's `say`
      subtree: use more explicit variable names for cmdline args
      subtree: use "$*" instead of "$@" as appropriate
      subtree: don't fuss with PATH
      subtree: use "^{commit}" instead of "^0"
      subtree: parse revs in individual cmd_ functions
      subtree: remove duplicate check
      subtree: add comments and sanity checks
      subtree: don't let debug and progress output clash
      subtree: have $indent actually affect indentation
      subtree: give the docs a once-over
      subtree: allow --squash to be used with --rejoin
      subtree: allow 'split' flags to be passed to 'push'
      subtree: push: allow specifying a local rev other than HEAD
      subtree: be stricter about validating flags

Lénaïc Huard (1):
      maintenance: fix two memory leaks

Martin Ågren (2):
      git-repack.txt: remove spurious ")"
      pretty-formats.txt: add missing space

Matheus Tavares (32):
      convert: fail gracefully upon missing clean cmd on required filter
      symlinks: update comment on threaded_check_leading_path()
      checkout: don't follow symlinks when removing entries
      entry: extract a header file for entry.c functions
      entry: make fstat_output() and read_blob_entry() public
      entry: extract update_ce_after_write() from write_entry()
      entry: move conv_attrs lookup up to checkout_entry()
      entry: add checkout_entry_ca() taking preloaded conv_attrs
      add: include magic part of pathspec on --refresh error
      t3705: add tests for `git add` in sparse checkouts
      add: make --chmod and --renormalize honor sparse checkouts
      pathspec: allow to ignore SKIP_WORKTREE entries on index matching
      refresh_index(): add flag to ignore SKIP_WORKTREE entries
      add: warn when asked to update SKIP_WORKTREE entries
      rm: honor sparse checkout patterns
      pkt-line: do not report packet write errors twice
      unpack-trees: add basic support for parallel checkout
      parallel-checkout: make it truly parallel
      parallel-checkout: add configuration options
      parallel-checkout: support progress displaying
      parallel-checkout: add design documentation
      make_transient_cache_entry(): optionally alloc from mem_pool
      builtin/checkout.c: complete parallel checkout support
      parallel-checkout: add tests related to path collisions
      t0028: extract encoding helpers to lib-encoding.sh
      checkout-index: add parallel checkout support
      parallel-checkout: add tests related to .gitattributes
      parallel-checkout: add tests for basic operations
      ci: run test round with parallel-checkout enabled
      clean: remove unnecessary variable
      init: fix bug regarding ~/ expansion in init.templateDir
      t2080: fix cp invocation to copy symlinks instead of following them

Nicholas Clark (1):
      submodule update: silence underlying fetch with "--quiet"

Nipunn Koorapati (3):
      fsmonitor: skip lstat deletion check during git diff-index
      fsmonitor: add assertion that fsmonitor is valid to check_removed
      fsmonitor: add perf test for git diff HEAD

Patrick Steinhardt (17):
      githooks.txt: replace mentions of SHA-1 specific properties
      githooks.txt: clarify documentation on reference-transaction hook
      pack-bitmap: avoid traversal of objects referenced by uninteresting tag
      uploadpack.txt: document implication of `uploadpackfilter.allow`
      revision: mark commit parents as NOT_USER_GIVEN
      list-objects: move tag processing into its own function
      list-objects: support filtering by tag and commit
      list-objects: implement object type filter
      pack-bitmap: implement object type filter
      pack-bitmap: implement combined filter
      rev-list: allow filtering of provided items
      config: rename `git_etc_config()`
      config: unify code paths to get global config paths
      config: allow overriding of global and system configuration
      t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
      git.txt: fix synopsis of `--config-env` missing the equals sign
      git: support separate arg for `--config-env`'s value

Peter Oliver (1):
      doc: point to diff attribute in patch format docs

Phillip Wood (6):
      rebase -i: only write fixup-message when it's needed
      sequencer: factor out code to append squash message
      rebase -i: comment out squash!/fixup! subjects from squash message
      word diff: handle zero length matches
      patience diff: remove unnecessary string comparisons
      patience diff: remove unused variable

Rafael Silva (1):
      repack: avoid loosening promisor objects in partial clones

Ramkumar Ramachandra (1):
      Add entry for Ramkumar Ramachandra

Ramsay Jones (1):
      bisect--helper: use BISECT_TERMS in 'bisect skip' command

René Scharfe (12):
      pretty: add %(describe)
      pretty: add merge and exclude options to %(describe)
      t4205: assert %(describe) test coverage
      pretty: document multiple %(describe) being inconsistent
      fix xcalloc() argument order
      archive: expand only a single %(describe) per archive
      git-compat-util.h: drop trailing semicolon from macro definition
      use CALLOC_ARRAY
      vcs-svn: remove header files as well
      block-sha1: drop trailing semicolon from macro definition
      mem-pool: drop trailing semicolon from macro definition
      daemon: sanitize all directory separators

Robert Foss (1):
      git-send-email: Respect core.hooksPath setting

SZEDER Gábor (1):
      Makefile: add missing dependencies of 'config-list.h'

Sardorbek Imomaliev (1):
      work around zsh comment in __git_complete_worktree_paths

Sergey Organov (5):
      diff-merges: introduce --diff-merges=on
      diff-merges: refactor set_diff_merges()
      diff-merges: adapt -m to enable default diff format
      diff-merges: introduce log.diffMerges config variable
      doc/diff-options: document new --diff-merges features

Shubham Verma (1):
      t9801: replace test -f with test_path_is_file

Taylor Blau (28):
      packfile: introduce 'find_kept_pack_entry()'
      revision: learn '--no-kept-objects'
      builtin/pack-objects.c: add '--stdin-packs' option
      builtin/repack.c: add '--geometric' option
      builtin/repack.c: do not repack single packs with --geometric
      t7703: test --geometric repack with loose objects
      builtin/repack.c: assign pack split later
      builtin/repack.c: be more conservative with unsigned overflows
      Documentation/git-push.txt: correct configuration typo
      builtin/pack-objects.c: ignore missing links with --stdin-packs
      builtin/multi-pack-index.c: inline 'flags' with options
      builtin/multi-pack-index.c: don't handle 'progress' separately
      builtin/multi-pack-index.c: define common usage with a macro
      builtin/multi-pack-index.c: split sub-commands
      builtin/multi-pack-index.c: don't enter bogus cmd_mode
      builtin/multi-pack-index.c: display usage on unrecognized command
      t/helper/test-read-midx.c: add '--show-objects'
      pack-bitmap: add 'test_bitmap_commits()' helper
      t/helper/test-bitmap.c: initial commit
      builtin/pack-objects.c: respect 'pack.preferBitmapTips'
      midx: allow marking a pack as preferred
      midx: don't free midx_name early
      midx: keep track of the checksum
      midx: make some functions non-static
      Documentation/technical: describe multi-pack reverse indexes
      pack-revindex: read multi-pack reverse indexes
      pack-write.c: extract 'write_rev_file_order'
      pack-revindex: write multi-pack reverse indexes

Todd Zullinger (1):
      t7500: remove non-existant C_LOCALE_OUTPUT prereq

Torsten Bögershausen (3):
      git mv foo FOO ; git mv foo bar gave an assert
      precompose_utf8: make precompose_string_if_needed() public
      macOS: precompose startup_info->prefix

Ville Skyttä (2):
      completion: audit and guard $GIT_* against unset use
      completion: avoid aliased command lookup error in nounset mode

Will Chandler (1):
      refs: cleanup directories when deleting packed ref

Wolfgang Müller (1):
      rev-parse: fix segfault with missing --path-format argument

ZheNing Hu (8):
      commit: add --trailer option
      format-patch: allow a non-integral version numbers
      ref-filter: get rid of show_ref_array_item
      ref-filter: reuse output buffer
      pretty: provide human date format
      docs: correct descript of trailer.<token>.command
      trailer: add new .cmd config option
      ref-filter: fix read invalid union member bug

brian m. carlson (14):
      builtin/init-db: handle bare clones when core.bare set to false
      hash: add an algo member to struct object_id
      Always use oidread to read into struct object_id
      http-push: set algorithm when reading object ID
      hash: add a function to finalize object IDs
      Use the final_oid_fn to finalize hashing of object IDs
      builtin/pack-redundant: avoid casting buffers to struct object_id
      hash: set, copy, and use algo field in struct object_id
      hash: provide per-algorithm null OIDs
      builtin/show-index: set the algorithm for object IDs
      commit-graph: don't store file hashes as struct object_id
      builtin/pack-objects: avoid using struct object_id for pack hash
      hex: default to the_hash_algo on zero algorithm value
      hex: print objects using the hash algorithm member

Ævar Arnfjörð Bjarmason (97):
      grep/pcre2: drop needless assignment + assert() on opt->pcre2
      grep/pcre2: drop needless assignment to NULL
      grep/pcre2: correct reference to grep_init() in comment
      grep/pcre2: prepare to add debugging to pcre2_malloc()
      grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
      grep/pcre2: use compile-time PCREv2 version test
      grep/pcre2: use pcre2_maketables_free() function
      grep/pcre2: actually make pcre2 use custom allocator
      grep/pcre2: move back to thread-only PCREv2 structures
      grep/pcre2: move definitions of pcre2_{malloc,free}
      Makefile: guard against TEST_OBJS in the environment
      Makefile: split up long OBJECTS line
      Makefile: sort OBJECTS assignment for subsequent change
      Makefile: split OBJECTS into OBJECTS and GIT_OBJS
      Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
      remote: add camel-cased *.tagOpt key, like clone
      remote: write camel-cased *.pushRemote on rename
      fsck.c: refactor and rename common config callback
      show tests: add test for "git show <tree>"
      ls-files tests: add meaningful --with-tree tests
      tree.c API: move read_tree() into builtin/ls-files.c
      ls-files: don't needlessly pass around stage variable
      ls-files: refactor away read_tree()
      archive: stop passing "stage" through read_tree_recursive()
      tree.h API: expose read_tree_1() as read_tree_at()
      tree.h API: simplify read_tree_recursive() signature
      diff --no-index tests: add test for --exit-code
      diff --no-index tests: test mode normalization
      rebase: remove transitory rebase.useBuiltin setting & env
      mktag tests: fix broken "&&" chain
      fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
      fsck.h: use "enum object_type" instead of "int"
      fsck.c: rename variables in fsck_set_msg_type() for less confusion
      fsck.c: remove (mostly) redundant append_msg_id() function
      fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
      fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
      fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
      fsck.h: re-order and re-assign "enum fsck_msg_type"
      fsck.c: call parse_msg_type() early in fsck_set_msg_type()
      fsck.c: undefine temporary STR macro after use
      fsck.c: give "FOREACH_MSG_ID" a more specific name
      fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
      fsck.c: pass along the fsck_msg_id in the fsck_error callback
      fsck.c: add an fsck_set_msg_type() API that takes enums
      fsck.c: move gitmodules_{found,done} into fsck_options
      fetch-pack: don't needlessly copy fsck_options
      fetch-pack: use file-scope static struct for fsck_options
      fetch-pack: use new fsck API to printing dangling submodules
      Makefile: add QUIET_GEN to "tags" and "TAGS" targets
      git-send-email: replace "map" in void context with "for"
      git-send-email: test full --validate output
      git-send-email: refactor duplicate $? checks into a function
      git-send-email: improve --validate error output
      bash completion: complete CHERRY_PICK_HEAD
      config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
      userdiff style: re-order drivers in alphabetical order
      userdiff style: declare patterns with consistent style
      userdiff style: normalize pascal regex declaration
      userdiff: add and use for_each_userdiff_driver()
      userdiff tests: explicitly test "default" pattern
      userdiff tests: list builtin drivers via test-tool
      userdiff: remove support for "broken" tests
      blame tests: don't rely on t/t4018/ directory
      blame tests: simplify userdiff driver test
      rebase tests: camel-case rebase.rescheduleFailedExec consistently
      rebase: don't override --no-reschedule-failed-exec with config
      Documentation/Makefile: make $(wildcard howto/*.txt) a var
      Documentation/Makefile: make doc.dep dependencies a variable again
      doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
      doc lint: fix bugs in, simplify and improve lint script
      doc lint: lint and fix missing "GIT" end sections
      doc lint: lint relative section order
      docs: fix linting issues due to incorrect relative section order
      svn tests: remove legacy re-setup from init-clone test
      svn tests: refactor away a "set -e" in test body
      tests: remove all uses of test_i18cmp
      usage.c: don't copy/paste the same comment three times
      api docs: document BUG() in api-error-handling.txt
      api docs: document that BUG() emits a trace2 error event
      pretty tests: simplify %aI/%cI date format test
      pretty tests: give --date/format tests a better description
      sparse-index.c: remove set_index_sparse_config()
      streaming.c: avoid forward declarations
      streaming.c: remove enum/function/vtbl indirection
      streaming.c: remove {open,close,read}_method_decl() macros
      streaming.c: stop passing around "object_info *" to open()
      streaming.c: move {open,close,read} from vtable to "struct git_istream"
      Makefile: don't re-define PERL_DEFINES
      Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
      Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
      perl: use mock i18n functions under NO_GETTEXT=Y
      Makefile: make PERL_DEFINES recursively expanded
      send-email: fix missing error message regression
      send-email: don't needlessly abs_path() the core.hooksPath
      send-email: move "hooks_path" invocation to git-send-email.perl
      pack-objects: move static inline from a header to the sole consumer
      builtin/fsck.c: don't conflate "int" and "enum" in callback

Øystein Walle (2):
      transport: respect verbosity when setting upstream
      add: die if both --dry-run and --interactive are given

Đoàn Trần Công Danh (6):
      mailinfo: load default metainfo_charset lazily
      mailinfo: stop parsing options manually
      mailinfo: warn if CRLF found in decoded base64/QP email
      mailinfo: allow squelching quoted CRLF warning
      mailinfo: allow stripping quoted CR without warning
      am: learn to process quoted lines that ends with CRLF


^ permalink raw reply	[relevance 3%]

* [PATCH 00/52] fix some -Wmissing-field-initializer warnings
@ 2019-05-24 20:28  3% Ramsay Jones
  0 siblings, 0 replies; 200+ results
From: Ramsay Jones @ 2019-05-24 20:28 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Jeff King, Nguyen Thai Ngoc Duy, GIT Mailing-list


[No, I won't be sending 52 patches to the list!]

This series, started last year, has been hanging around because the
time never seemed right to send it to the list. It may still not be
the right time ... :-D

I would like to be able to compile git using '-Wall -Wextra -Werror'
compiler options. In order to see how far away we are from that
possibility, you can build with DEVELOPER=1 along with the additional
settings: 'DEVOPTS=extra-all no-error pedantic'.

That leads to many warnings:

      $ git describe
      v2.22.0-rc1
      $ make >out 2>&1
      $ grep warning out | sed -e 's/.*\[-W/\[-W/' | sort | uniq -c
            9 [-Wempty-body]
         1694 [-Wmissing-field-initializers]
          159 [-Wpedantic]
          945 [-Wsign-compare]
         2821 [-Wunused-parameter]
      $

Note that at the beginning of this cycle, the numbers were quite a bit
smaller (and this series was only 37 patches, rather than 52):

      $ git describe
      v2.21.0
      $ make >out 2>&1
      $ grep warning out | sed -e 's/.*\[-W/\[-W/' | sort | uniq -c
            9 [-Wempty-body]
          759 [-Wmissing-field-initializers]
          925 [-Wsign-compare]
         2732 [-Wunused-parameter]
      $

This series removes the, newly introduced, pedantic warnings and
eliminates all 1371 'missing-field-initializers' warnings that
relate to 'struct option':

      $ cat out-warn-master.stats
            9 [-Wempty-body]
          323 [-Wmissing-field-initializers]
          945 [-Wsign-compare]
         2821 [-Wunused-parameter]
      $ 

Thus, after about six months, I am further away from my target than
when I started! ;-)

This series does not fix any problems or add any new features, so it
is not important (hence the tendency to 'slip'). I don't want to
flood the mailing list with patches that nobody wants, so: is there
any interest in these kinds of patches? If not, I will stop now!
(I have a 2-3 year old branch that addressed the '-Wsign-compare'
warnings, but that is probably beyond salvaging by now :( ).

This series is available from: git://repo.or.cz/git/raj.git with the
branch name 'warn-master'. A trial merge to current 'next' and 'pu'
branches can be found at 'warn-next' and 'warn-pu' branches. (The
merge to 'next' went without problem, and 'pu' only required a fixup
to the builtin/commit patch).

[The 'warn-v2.21' branch shows the previous version of the series.]

What do you think?

Thanks!

ATB,
Ramsay Jones

Ramsay Jones (52):
  parse-options: reformat the OPT_X() macros
  parse-options: move some one-line OPT_X() macros
  parse-options: rename callback parameter from 'f' to 'cb'
  parse-options: add missing field initializers
  list-objects-filter-options: add missing initializer
  ref-filter.h: add missing field initializers
  parse-options: add an OPT_LL_CALLBACK() macro
  parse-options.h: add 'd' parameter to OPT_INTEGER_F()
  parse-options.h: fix some -Wpedantic warnings
  builtin/update-index: fix some -Wmissing-field-initializers warnings
  builtin/log: fix some -Wmissing-field-initializers warnings
  builtin/notes: fix some -Wmissing-field-initializers warnings
  builtin/grep: fix some -Wmissing-field-initializers warnings
  builtin/commit: fix some -Wmissing-field-initializers warnings
  apply.c: fix some -Wmissing-field-initializers warnings
  builtin/rebase: fix some -Wmissing-field-initializers warnings
  builtin/config: add missing field initializers
  test-parse-options: fix some -Wmissing-field-initializers warnings
  builtin/read-tree: fix some -Wmissing-field-initializers warnings
  builtin/merge: fix some -Wmissing-field-initializers warnings
  builtin/fetch: fix some -Wmissing-field-initializers warnings
  builtin/commit-tree: fix some -Wmissing-field-initializers warnings
  builtin/tag: fix an -Wmissing-field-initializers warning
  builtin/push: fix some -Wmissing-field-initializers warnings
  builtin/pack-objects: fix some -Wmissing-field-initializers warnings
  builtin/ls-files: fix some -Wmissing-field-initializers warnings
  builtin/blame: fix some -Wmissing-field-initializers warnings
  builtin/show-ref: fix some -Wmissing-field-initializers warnings
  builtin/show-branch: fix an -Wmissing-field-initializers warning
  builtin/send-pack: fix some -Wmissing-field-initializers warnings
  builtin/pull: fix some -Wmissing-field-initializers warnings
  builtin/fmt-merge-msg: fix some -Wmissing-field-initializers warnings
  builtin/describe: fix some -Wmissing-field-initializers warnings
  builtin/cat-file: fix some -Wmissing-field-initializers warnings
  builtin/shortlog: fix an -Wmissing-field-initializers warning
  builtin/reset: fix an -Wmissing-field-initializers warning
  builtin/remote: fix an -Wmissing-field-initializers warning
  builtin/ls-remote: fix an -Wmissing-field-initializers warning
  builtin/interpret-trailers: fix an -Wmissing-field-initializers warning
  builtin/clean: fix an -Wmissing-field-initializers warning
  builtin/checkout-index: fix an -Wmissing-field-initializers warning
  builtin/checkout: fix an -Wmissing-field-initializers warning
  builtin/branch: fix an -Wmissing-field-initializers warning
  builtin/add: fix an -Wmissing-field-initializers warning
  builtin/write-tree: fix an -Wmissing-field-initializers warning
  builtin/revert: fix an -Wmissing-field-initializers warning
  builtin/name-rev: fix an -Wmissing-field-initializers warning
  builtin/init-db: fix an -Wmissing-field-initializers warning
  builtin/gc: fix an -Wmissing-field-initializers warning
  builtin/clone: fix an -Wmissing-field-initializers warning
  builtin/am: fix an -Wmissing-field-initializers warning
  diff.c: fix an -Wmissing-field-initializers warning

 apply.c                       |  28 ++---
 builtin/add.c                 |   4 +-
 builtin/am.c                  |   6 +-
 builtin/blame.c               |   6 +-
 builtin/branch.c              |   7 +-
 builtin/cat-file.c            |   8 +-
 builtin/checkout-index.c      |   4 +-
 builtin/checkout.c            |   7 +-
 builtin/clean.c               |   5 +-
 builtin/clone.c               |   2 +-
 builtin/commit-tree.c         |  24 ++--
 builtin/commit.c              |  21 ++--
 builtin/config.c              |   2 +-
 builtin/describe.c            |   8 +-
 builtin/fetch.c               |  17 +--
 builtin/fmt-merge-msg.c       |  10 +-
 builtin/gc.c                  |   3 +-
 builtin/grep.c                |  24 ++--
 builtin/init-db.c             |   4 +-
 builtin/interpret-trailers.c  |   4 +-
 builtin/log.c                 |  56 ++++-----
 builtin/ls-files.c            |  12 +-
 builtin/ls-remote.c           |   4 +-
 builtin/merge.c               |  17 +--
 builtin/name-rev.c            |   8 +-
 builtin/notes.c               |  32 ++---
 builtin/pack-objects.c        |  12 +-
 builtin/pull.c                |  16 +--
 builtin/push.c                |  22 ++--
 builtin/read-tree.c           |  19 +--
 builtin/rebase.c              |  69 ++++++-----
 builtin/remote.c              |   5 +-
 builtin/reset.c               |   5 +-
 builtin/revert.c              |   5 +-
 builtin/send-pack.c           |  11 +-
 builtin/shortlog.c            |   4 +-
 builtin/show-branch.c         |  10 +-
 builtin/show-ref.c            |  11 +-
 builtin/tag.c                 |  19 ++-
 builtin/update-index.c        |  61 +++++-----
 builtin/write-tree.c          |   6 +-
 diff.c                        |   4 +-
 list-objects-filter-options.h |   2 +-
 parse-options.h               | 216 ++++++++++++++++++++++------------
 ref-filter.h                  |   2 +-
 t/helper/test-parse-options.c |  16 +--
 46 files changed, 458 insertions(+), 380 deletions(-)

-- 
2.21.0

^ permalink raw reply	[relevance 3%]

* [PATCH v3 0/7] Fix merge restore state
  2022-06-19  6:50  3% ` [PATCH v2 0/6] " Elijah Newren via GitGitGadget
@ 2022-07-21  8:16  3%   ` Elijah Newren via GitGitGadget
  2022-07-22  5:15  3%     ` [PATCH v4 " Elijah Newren via GitGitGadget
      2 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-21  8:16 UTC (permalink / raw)
  To: git
  Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano,
	Ævar Arnfjörð Bjarmason, Elijah Newren,
	Elijah Newren

NOTE: Rebased on master, yet again, because (1) Junio merged his commit to
master separately, and (2) Ævar's intentional duplication of my second
patch[1] later conflicted with other changes I had to make in the same area.
(Which isn't a big deal, but for future reference, it would be nicer to
avoid conflicts by omitting the fixup I had already submitted[2] instead of
intentionally duplicating it).

This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It's grown so much it's hard to
call it simple. Anyway...

Changes since v2:

 * Removed the first two patches, as noted above in the comment about
   rebasing.
 * Inserted new patches 3, 4, and 5 to fix some related bugs. Folks are more
   likely to object to patch 5 than the others; people should probably take
   a look at that one if they have limited time.
 * Dramatically reworded commit messages given the misunderstandings of what
   was being addressed and done. Hopefully it is much clearer what the last
   three patches are doing and what they are not doing, and why.
 * Added several new testcases

[1]
https://lore.kernel.org/git/patch-1.1-7d90f26b73f-20220520T115426Z-avarab@gmail.com/
[2] https://lore.kernel.org/git/xmqqedyyghsc.fsf@gitster.g/ [3]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/

Elijah Newren (7):
  merge-ort-wrappers: make printed message match the one from recursive
  merge-resolve: abort if index does not match HEAD
  merge: do not abort early if one strategy fails to handle the merge
  merge: fix save_state() to work when there are stat-dirty files
  merge: make restore_state() restore staged state too
  merge: ensure we can actually restore pre-merge state
  merge: do not exit restore_state() prematurely

 builtin/merge.c                          | 59 ++++++++++++++++++------
 git-merge-resolve.sh                     | 10 ++++
 merge-ort-wrappers.c                     |  7 ++-
 t/t6402-merge-rename.sh                  |  2 +-
 t/t6424-merge-unrelated-index-changes.sh | 58 +++++++++++++++++++++++
 t/t6439-merge-co-error-msgs.sh           |  1 +
 t/t7607-merge-state.sh                   | 32 +++++++++++++
 7 files changed, 154 insertions(+), 15 deletions(-)
 create mode 100755 t/t7607-merge-state.sh


base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1231

Range-diff vs v2:

 1:  6147e72c309 < -:  ----------- t6424: make sure a failed merge preserves local changes
 2:  230d84f09c8 < -:  ----------- merge: remove unused variable
 -:  ----------- > 1:  e39b2e15ece merge-ort-wrappers: make printed message match the one from recursive
 -:  ----------- > 2:  2810dec7608 merge-resolve: abort if index does not match HEAD
 -:  ----------- > 3:  b41853e3f99 merge: do not abort early if one strategy fails to handle the merge
 3:  89e5e633241 ! 4:  64700338a28 merge: fix save_state() to work when there are racy-dirty files
     @@ Metadata
      Author: Elijah Newren <newren@gmail.com>
      
       ## Commit message ##
     -    merge: fix save_state() to work when there are racy-dirty files
     +    merge: fix save_state() to work when there are stat-dirty files
      
     -    When there are racy-dirty files, but no files are modified,
     +    When there are stat-dirty files, but no files are modified,
          `git stash create` exits with unsuccessful status.  This causes merge
     -    to fail.  Refresh the index first to avoid this problem.
     +    to fail.  Copy some code from sequencer.c's create_autostash to refresh
     +    the index first to avoid this problem.
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     @@ builtin/merge.c: static int save_state(struct object_id *stash)
       	strvec_pushl(&cp.args, "stash", "create", NULL);
       	cp.out = -1;
       	cp.git_cmd = 1;
     +
     + ## t/t6424-merge-unrelated-index-changes.sh ##
     +@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
     + 	test_path_is_missing .git/MERGE_HEAD
     + '
     + 
     ++test_expect_success 'avoid failure due to stat-dirty files' '
     ++	git reset --hard &&
     ++	git checkout B^0 &&
     ++
     ++	# Make "a" be stat-dirty
     ++	test-tool chmtime =+1 a &&
     ++
     ++	# stat-dirty file should not prevent stash creation in builtin/merge.c
     ++	git merge -s resolve -s recursive D^0
     ++'
     ++
     + test_expect_success 'resolve && recursive && ort' '
     + 	git reset --hard &&
     + 	git checkout B^0 &&
 4:  4a8b7c9e06d ! 5:  91c495c770e merge: make restore_state() restore staged state too
     @@ Metadata
       ## Commit message ##
          merge: make restore_state() restore staged state too
      
     -    merge can be invoked with uncommitted changes, including staged changes.
     -    merge is responsible for restoring this state if some of the merge
     -    strategies make changes.  However, it was not restoring staged changes
     -    due to the lack of the "--index" option to "git stash apply".  Add the
     -    option to fix this shortcoming.
     +    There are multiple issues at play here:
     +
     +      1) If `git merge` is invoked with staged changes, it should abort
     +         without doing any merging, and the user's working tree and index
     +         should be the same as before merge was invoked.
     +      2) Merge strategies are responsible for enforcing the index == HEAD
     +         requirement. (See 9822175d2b ("Ensure index matches head before
     +         invoking merge machinery, round N", 2019-08-17) for some history
     +         around this.)
     +      3) Merge strategies can bail saying they are not an appropriate
     +         handler for the merge in question (possibly allowing other
     +         strategies to be used instead).
     +      4) Merge strategies can make changes to the index and working tree,
     +         and have no expectation to clean up after themselves, *even* if
     +         they bail out and say they are not an appropriate handler for
     +         the merge in question.  (The `octopus` merge strategy does this,
     +         for example.)
     +      5) Because of (3) and (4), builtin/merge.c stashes state before
     +         trying merge strategies and restores it afterward.
     +
     +    Unfortunately, if users had staged changes before calling `git merge`,
     +    builtin/merge.c could do the following:
     +
     +       * stash the changes, in order to clean up after the strategies
     +       * try all the merge strategies in turn, each of which report they
     +         cannot function due to the index not matching HEAD
     +       * restore the changes via "git stash apply"
     +
     +    But that last step would have the net effect of unstaging the user's
     +    changes.  Fix this by adding the "--index" option to "git stash apply".
     +    While at it, also squelch the stash apply output; we already report
     +    "Rewinding the tree to pristine..." and don't need a detailed `git
     +    status` report afterwards.
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     @@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
       			  const struct object_id *stash)
       {
      -	const char *args[] = { "stash", "apply", NULL, NULL };
     -+	const char *args[] = { "stash", "apply", "--index", NULL, NULL };
     ++	const char *args[] = { "stash", "apply", "--index", "--quiet",
     ++			       NULL, NULL };
       
       	if (is_null_oid(stash))
       		return;
     @@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
       	reset_hard(head, 1);
       
      -	args[2] = oid_to_hex(stash);
     -+	args[3] = oid_to_hex(stash);
     ++	args[4] = oid_to_hex(stash);
       
       	/*
       	 * It is OK to ignore error here, for example when there was
     +
     + ## t/t6424-merge-unrelated-index-changes.sh ##
     +@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
     + 
     + 	test_seq 0 10 >a &&
     + 	git add a &&
     ++	git rev-parse :a >expect &&
     + 
     + 	sane_unset GIT_TEST_MERGE_ALGORITHM &&
     + 	test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
     +@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
     + 	grep "Trying merge strategy resolve..." output &&
     + 	grep "Trying merge strategy recursive..." output &&
     + 	grep "Trying merge strategy ort..." output &&
     +-	grep "No merge strategy handled the merge." output
     ++	grep "No merge strategy handled the merge." output &&
     ++
     ++	# Changes to "a" should remain staged
     ++	git rev-parse :a >actual &&
     ++	test_cmp expect actual
     + '
     + 
     + test_done
 5:  a03075167c1 ! 6:  887967c1f3f merge: ensure we can actually restore pre-merge state
     @@ Metadata
       ## Commit message ##
          merge: ensure we can actually restore pre-merge state
      
     -    Merge strategies can fail -- not just have conflicts, but give up and
     -    say that they are unable to handle the current type of merge.  However,
     -    they can also make changes to the index and working tree before giving
     -    up; merge-octopus does this, for example.  Currently, we do not expect
     -    the individual strategies to clean up after themselves, but instead
     -    expect builtin/merge.c to do so.  For it to be able to, it needs to save
     -    the state before trying the merge strategy so it can have something to
     -    restore to.  Therefore, remove the shortcut bypassing the save_state()
     -    call.
     +    Merge strategies can:
     +      * succeed with a clean merge
     +      * succeed with a conflicted merge
     +      * fail to handle the given type of merge
     +
     +    If one is thinking in terms of automatic mergeability, they would use
     +    the word "fail" instead of "succeed" for the second bullet, but I am
     +    focusing here on ability of the merge strategy to handle the given
     +    inputs, not on whether the given inputs are mergeable.  The third
     +    category is about the merge strategy failing to know how to handle the
     +    given data; examples include:
     +
     +      * Passing more than 2 branches to 'recursive' or 'ort'
     +      * Passing 2 or fewer branches to 'octopus'
     +      * Trying to do more complicated merges with 'resolve' (I believe
     +        directory/file conflicts will cause it to bail.)
     +      * Octopus running into a merge conflict for any branch OTHER than
     +        the final one (see the "exit 2" codepath of commit 98efc8f3d8
     +        ("octopus: allow manual resolve on the last round.", 2006-01-13))
     +
     +    That final one is particularly interesting, because it shows that the
     +    merge strategy can muck with the index and working tree, and THEN bail
     +    and say "sorry, this strategy cannot handle this type of merge; use
     +    something else".
     +
     +    Further, we do not currently expect the individual strategies to clean
     +    up after themselves, but instead expect builtin/merge.c to do so.  For
     +    it to be able to, it needs to save the state before trying the merge
     +    strategy so it can have something to restore to.  Therefore, remove the
     +    shortcut bypassing the save_state() call.
     +
     +    There is another bug on the restore_state() side of things, so no
     +    testcase will be added until the next commit when we have addressed that
     +    issue as well.
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     @@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
       	 * sync with the head commit.  The strategies are responsible
       	 * to ensure this.
      +	 *
     -+	 * Stash away the local changes so that we can try more than one.
     ++	 * Stash away the local changes so that we can try more than one
     ++	 * and/or recover from merge strategies bailing while leaving the
     ++	 * index and working tree polluted.
       	 */
      -	if (use_strategies_nr == 1 ||
      -	    /*
 6:  0783b48c121 ! 7:  81c40492a62 merge: do not exit restore_state() prematurely
     @@ Commit message
          appropriate function to do the work which would update the in-memory
          index automatically.  For now, just do the simple fix.)
      
     +    Also, add a testcase checking this, one for which the octopus strategy
     +    fails on the first commit it attempts to merge, and thus which it
     +    cannot handle at all and must completely bail on (as per the "exit 2"
     +    code path of commit 98efc8f3d8 ("octopus: allow manual resolve on the
     +    last round.", 2006-01-13)).
     +
          Reported-by: ZheNing Hu <adlternative@gmail.com>
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
       ## builtin/merge.c ##
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,
     - {
     - 	const char *args[] = { "stash", "apply", "--index", NULL, NULL };
     + 	const char *args[] = { "stash", "apply", "--index", "--quiet",
     + 			       NULL, NULL };
       
      -	if (is_null_oid(stash))
      -		return;
     @@ builtin/merge.c: static void restore_state(const struct object_id *head,
      +	if (is_null_oid(stash))
      +		goto refresh_cache;
      +
     - 	args[3] = oid_to_hex(stash);
     + 	args[4] = oid_to_hex(stash);
       
       	/*
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,
     @@ t/t7607-merge-state.sh (new)
      +
      +test_expect_success 'set up custom strategy' '
      +	test_commit --no-tag "Initial" base base &&
     -+git show-ref &&
      +
      +	for b in branch1 branch2 branch3
      +	do
      +		git checkout -b $b main &&
     -+		test_commit --no-tag "Change on $b" base $b
     ++		test_commit --no-tag "Change on $b" base $b || return 1
      +	done &&
      +
      +	git checkout branch1 &&
     -+	test_must_fail git merge branch2 branch3 &&
     ++	# This is a merge that octopus cannot handle.  Note, that it does not
     ++	# just hit conflicts, it completely fails and says that it cannot
     ++	# handle this type of merge.
     ++	test_expect_code 2 git merge branch2 branch3 >output 2>&1 &&
     ++	grep "fatal: merge program failed" output &&
     ++	grep "Should not be doing an octopus" output &&
     ++
     ++	# Make sure we did not leave stray changes around when no appropriate
     ++	# merge strategy was found
      +	git diff --exit-code --name-status &&
      +	test_path_is_missing .git/MERGE_HEAD
      +'

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Aug 2018, #01; Thu, 2)
@ 2018-08-02 23:02  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-08-02 23:02 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ab/checkout-default-remote (2018-06-11) 8 commits
  (merged to 'next' on 2018-07-24 at 6ef645f485)
 + checkout & worktree: introduce checkout.defaultRemote
 + checkout: add advice for ambiguous "checkout <branch>"
 + builtin/checkout.c: use "ret" variable for return
 + checkout: pass the "num_matches" up to callers
 + checkout.c: change "unique" member to "num_matches"
 + checkout.c: introduce an *_INIT macro
 + checkout.h: wrap the arguments to unique_tracking_name()
 + checkout tests: index should be clean after dwim checkout
 (this branch is used by ab/test-must-be-empty.)

 "git checkout" and "git worktree add" learned to honor
 checkout.defaultRemote when auto-vivifying a local branch out of a
 remote tracking branch in a repository with multiple remotes that
 have tracking branches that share the same names.


* bc/object-id (2018-07-16) 16 commits
  (merged to 'next' on 2018-07-24 at 23680778a9)
 + pretty: switch hard-coded constants to the_hash_algo
 + sha1-file: convert constants to uses of the_hash_algo
 + log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
 + diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
 + builtin/merge-recursive: make hash independent
 + builtin/merge: switch to use the_hash_algo
 + builtin/fmt-merge-msg: make hash independent
 + builtin/update-index: simplify parsing of cacheinfo
 + builtin/update-index: convert to using the_hash_algo
 + refs/files-backend: use the_hash_algo for writing refs
 + sha1-name: use the_hash_algo when parsing object names
 + strbuf: allocate space with GIT_MAX_HEXSZ
 + commit: express tree entry constants in terms of the_hash_algo
 + hex: switch to using the_hash_algo
 + tree-walk: replace hard-coded constants with the_hash_algo
 + cache: update object ID functions for the_hash_algo

 Conversion from uchar[40] to struct object_id continues.


* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at 0b83ade721)
 + sequencer: pass absolute GIT_WORK_TREE to exec commands

 "git rebase" started exporting GIT_DIR environment variable and
 exposing it to hook scripts when part of it got rewritten in C.
 Instead of matching the old scripted Porcelains' behaviour,
 compensate by also exporting GIT_WORK_TREE environment as well to
 lessen the damage.  This can harm existing hooks that want to
 operate on different repository, but the current behaviour is
 already broken for them anyway.


* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-24 at 257bb336c6)
 + handle lower case drive letters on Windows

 A test helper update for Windows.


* ds/commit-graph-fsck (2018-07-16) 23 commits
  (merged to 'next' on 2018-07-24 at 6a802adc7a)
 + coccinelle: update commit.cocci
 + commit-graph: update design document
 + gc: automatically write commit-graph files
 + commit-graph: add '--reachable' option
 + commit-graph: use string-list API for input
 + fsck: verify commit-graph
 + commit-graph: verify contents match checksum
 + commit-graph: test for corrupted octopus edge
 + commit-graph: verify commit date
 + commit-graph: verify generation number
 + commit-graph: verify parent list
 + commit-graph: verify root tree OIDs
 + commit-graph: verify objects exist
 + commit-graph: verify corrupt OID fanout and lookup
 + commit-graph: verify required chunks are present
 + commit-graph: verify catches corrupt signature
 + commit-graph: add 'verify' subcommand
 + commit-graph: load a root tree from specific graph
 + commit: force commit to parse from object database
 + commit-graph: parse commit from chosen graph
 + commit-graph: fix GRAPH_MIN_SIZE
 + commit-graph: UNLEAK before die()
 + t5318-commit-graph.sh: use core.commitGraph
 (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)

 "git fsck" learns to make sure the optional commit-graph file is in
 a sane state.


* en/dirty-merge-fixes (2018-07-11) 9 commits
  (merged to 'next' on 2018-07-24 at 7b6ca3507c)
 + merge: fix misleading pre-merge check documentation
 + merge-recursive: enforce rule that index matches head before merging
 + t6044: add more testcases with staged changes before a merge is invoked
 + merge-recursive: fix assumption that head tree being merged is HEAD
 + merge-recursive: make sure when we say we abort that we actually abort
 + t6044: add a testcase for index matching head, when head doesn't match HEAD
 + t6044: verify that merges expected to abort actually abort
 + index_has_changes(): avoid assuming operating on the_index
 + read-cache.c: move index_has_changes() from merge.c

 The recursive merge strategy did not properly ensure there was no
 change between HEAD and the index before performing its operation,
 which has been corrected.


* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
  (merged to 'next' on 2018-07-24 at 75055cb6e1)
 + t6036: add a failed conflict detection case: regular files, different modes
 + t6036: add a failed conflict detection case with conflicting types
 + t6036: add a failed conflict detection case with submodule add/add
 + t6036: add a failed conflict detection case with submodule modify/modify
 + t6036: add a failed conflict detection case with symlink add/add
 + t6036: add a failed conflict detection case with symlink modify/modify

 Tests to cover various conflicting cases have been added for
 merge-recursive.


* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
  (merged to 'next' on 2018-07-24 at b7b3514ef4)
 + t6036: fix broken && chain in sub-shell
 + t6036: add lots of detail for directory/file conflicts in recursive case

 Tests to cover more D/F conflict cases have been added for
 merge-recursive.


* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
  (merged to 'next' on 2018-07-24 at 65c80f72da)
 + t6042: add testcase covering long chains of rename conflicts
 + t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
 + t6042: add testcase covering rename/add/delete conflict type

 Various glitches in the heuristics of merge-recursive strategy have
 been documented in new tests.

 I am not sure if there is a single "correct" answer everybody can
 agree on for each of these "insane" cases, though.


* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
  (merged to 'next' on 2018-07-24 at 6cb7d02298)
 + t7405: verify 'merge --abort' works after submodule/path conflicts
 + t7405: add a directory/submodule conflict
 + t7405: add a file/submodule conflict

 Tests to cover conflict cases that involve submodules have been
 added for merge-recursive.


* es/chain-lint-in-subshell (2018-07-31) 11 commits
  (merged to 'next' on 2018-07-31 at 4ce2a8faa4)
 + t/chainlint.sed: drop extra spaces from regex character class
  (merged to 'next' on 2018-07-24 at 9370bbdfaf)
 + t/chainlint: add chainlint "specialized" test cases
 + t/chainlint: add chainlint "complex" test cases
 + t/chainlint: add chainlint "cuddled" test cases
 + t/chainlint: add chainlint "loop" and "conditional" test cases
 + t/chainlint: add chainlint "nested subshell" test cases
 + t/chainlint: add chainlint "one-liner" test cases
 + t/chainlint: add chainlint "whitespace" test cases
 + t/chainlint: add chainlint "basic" test cases
 + t/Makefile: add machinery to check correctness of chainlint.sed
 + t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
 (this branch uses es/test-fixes.)

 Look for broken "&&" chains that are hidden in subshell, many of
 which have been found and corrected.


* es/test-fixes (2018-07-17) 26 commits
  (merged to 'next' on 2018-07-24 at fd6796a3ef)
 + t5608: fix broken &&-chain
 + t9119: fix broken &&-chains
 + t9000-t9999: fix broken &&-chains
 + t7000-t7999: fix broken &&-chains
 + t6000-t6999: fix broken &&-chains
 + t5000-t5999: fix broken &&-chains
 + t4000-t4999: fix broken &&-chains
 + t3030: fix broken &&-chains
 + t3000-t3999: fix broken &&-chains
 + t2000-t2999: fix broken &&-chains
 + t1000-t1999: fix broken &&-chains
 + t0000-t0999: fix broken &&-chains
 + t9814: simplify convoluted check that command correctly errors out
 + t9001: fix broken "invoke hook" test
 + t7810: use test_expect_code() instead of hand-rolled comparison
 + t7400: fix broken "submodule add/reconfigure --force" test
 + t7201: drop pointless "exit 0" at end of subshell
 + t6036: fix broken "merge fails but has appropriate contents" tests
 + t5505: modernize and simplify hard-to-digest test
 + t5406: use write_script() instead of birthing shell script manually
 + t5405: use test_must_fail() instead of checking exit code manually
 + t/lib-submodule-update: fix "absorbing" test
 + t: drop unnecessary terminating semicolon in subshell
 + t: use sane_unset() rather than 'unset' with broken &&-chain
 + t: use test_write_lines() instead of series of 'echo' commands
 + t: use test_might_fail() instead of manipulating exit code manually
 (this branch is used by es/chain-lint-in-subshell.)

 Test clean-up and corrections.


* is/parsing-line-range (2018-06-15) 2 commits
  (merged to 'next' on 2018-07-24 at a06b453f32)
 + log: prevent error if line range ends past end of file
 + blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.


* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
  (merged to 'next' on 2018-07-24 at 5b15c800db)
 + fsck: downgrade gitmodulesParse default to "info"
 + fsck: split ".gitmodules too large" error from parse failure
 + fsck: silence stderr when parsing .gitmodules
 + config: add options parameter to git_config_from_mem
 + config: add CONFIG_ERROR_SILENT handler
 + config: turn die_on_error into caller-facing enum

 Recent "security fix" to pay attention to contents of ".gitmodules"
 while accepting "git push" was a bit overly strict than necessary,
 which has been adjusted.


* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
  (merged to 'next' on 2018-07-24 at 2ea14c0afb)
 + has_uncommitted_changes(): fall back to empty tree

 "git pull --rebase" on a corrupt HEAD caused a segfault.  In
 general we substitute an empty tree object when running the in-core
 equivalent of the diff-index command, and the codepath has been
 corrected to do so as well to fix this issue.


* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
  (merged to 'next' on 2018-07-24 at 9be51a88dc)
 + block alloc: add validations around cache_entry lifecyle
 + block alloc: allocate cache entries from mem_pool
 + mem-pool: fill out functionality
 + mem-pool: add life cycle management functions
 + mem-pool: only search head block for available space
 + block alloc: add lifecycle APIs for cache_entry structs
 + read-cache: teach make_cache_entry to take object_id
 + read-cache: teach refresh_cache_entry to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 This makes each cache-entry larger by either 4 or 8 bytes, which is
 a bit sad, though.


* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at fb3e653f44)
 + send-email: fix tls AUTH when sending batch

 "git send-email" when using in a batched mode that limits the
 number of messages sent in a single SMTP session lost the contents
 of the variable used to choose between tls/ssl, unable to send the
 second and later batches, which has been fixed.

 This is marked to be merged to 'next' already, but I do not mind
 getting an updated version with an improved log message before that
 happens.


* js/rebase-merge-octopus (2018-07-11) 3 commits
  (merged to 'next' on 2018-07-24 at 14ad8699de)
 + rebase --rebase-merges: adjust man page for octopus support
 + rebase --rebase-merges: add support for octopus merges
 + merge: allow reading the merge commit message from a file

 "git rebase --rebase-merges" mode now handles octopus merges as
 well.


* jt/commit-graph-per-object-store (2018-07-17) 7 commits
  (merged to 'next' on 2018-07-24 at 090d1a4d59)
 + commit-graph: add repo arg to graph readers
 + commit-graph: store graph in struct object_store
 + commit-graph: add free_commit_graph
 + commit-graph: add missing forward declaration
 + object-store: add missing include
 + commit-graph: refactor preparing commit graph
 + Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
 (this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)

 The singleton commit-graph in-core instance is made per in-core
 repository instance.


* jt/fetch-nego-tip (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-24 at a9e299006d)
 + fetch-pack: support negotiation tip whitelist
 (this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)

 "git fetch" learned a new option "--negotiation-tip" to limit the
 set of commits it tells the other end as "have", to reduce wasted
 bandwidth and cycles, which would be helpful when the receiving
 repository has a lot of refs that have little to do with the
 history at the remote it is fetching from.


* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-24 at 8e25a49405)
 + negotiator/skipping: skip commits during fetch
 (this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)

 Add a server-side knob to skip commits in exponential/fibbonacci
 stride in an attempt to cover wider swath of history with a smaller
 number of iterations, potentially accepting a larger packfile
 transfer, instead of going back one commit a time during common
 ancestor discovery during the "git fetch" transaction.


* jt/fetch-pack-negotiator (2018-06-15) 7 commits
  (merged to 'next' on 2018-07-24 at 438efcd6b1)
 + fetch-pack: introduce negotiator API
 + fetch-pack: move common check and marking together
 + fetch-pack: make negotiation-related vars local
 + fetch-pack: use ref adv. to prune "have" sent
 + fetch-pack: directly end negotiation if ACK ready
 + fetch-pack: clear marks before re-marking
 + fetch-pack: split up everything_local()
 (this branch is used by ab/fetch-nego, jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)

 Code restructuring and a small fix to transport protocol v2 during
 fetching.


* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
  (merged to 'next' on 2018-07-24 at 8d7e78a671)
 + tag: don't warn if target is missing but promised
 + revision: tolerate promised targets of tags

 The lazy clone support had a few places where missing but promised
 objects were not correctly tolerated, which have been fixed.


* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
  (merged to 'next' on 2018-07-24 at 71c05d27b6)
 + gc --auto: release pack files before auto packing

 "git gc --auto" opens file descriptors for the packfiles before
 spawning "git repack/prune", which would upset Windows that does
 not want a process to work on a file that is open by another
 process.  The issue has been worked around.


* sb/diff-color-move-more (2018-07-19) 10 commits
  (merged to 'next' on 2018-07-24 at 89c893cab2)
 + diff.c: offer config option to control ws handling in move detection
 + diff.c: add white space mode to move detection that allows indent changes
 + diff.c: factor advance_or_nullify out of mark_color_as_moved
 + diff.c: decouple white space treatment from move detection algorithm
 + diff.c: add a blocks mode for moved code detection
 + diff.c: adjust hash function signature to match hashmap expectation
 + diff.c: do not pass diff options as keydata to hashmap
 + t4015: avoid git as a pipe input
 + xdiff/xdiffi.c: remove unneeded function declarations
 + xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.


* sb/object-store-lookup (2018-06-29) 33 commits
  (merged to 'next' on 2018-07-24 at dd96e29376)
 + commit.c: allow lookup_commit_reference to handle arbitrary repositories
 + commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
 + tag.c: allow deref_tag to handle arbitrary repositories
 + object.c: allow parse_object to handle arbitrary repositories
 + object.c: allow parse_object_buffer to handle arbitrary repositories
 + commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
 + commit.c: allow set_commit_buffer to handle arbitrary repositories
 + commit.c: migrate the commit buffer to the parsed object store
 + commit-slabs: remove realloc counter outside of slab struct
 + commit.c: allow parse_commit_buffer to handle arbitrary repositories
 + tag: allow parse_tag_buffer to handle arbitrary repositories
 + tag: allow lookup_tag to handle arbitrary repositories
 + commit: allow lookup_commit to handle arbitrary repositories
 + tree: allow lookup_tree to handle arbitrary repositories
 + blob: allow lookup_blob to handle arbitrary repositories
 + object: allow lookup_object to handle arbitrary repositories
 + object: allow object_as_type to handle arbitrary repositories
 + tag: add repository argument to deref_tag
 + tag: add repository argument to parse_tag_buffer
 + tag: add repository argument to lookup_tag
 + commit: add repository argument to get_cached_commit_buffer
 + commit: add repository argument to set_commit_buffer
 + commit: add repository argument to parse_commit_buffer
 + commit: add repository argument to lookup_commit
 + commit: add repository argument to lookup_commit_reference
 + commit: add repository argument to lookup_commit_reference_gently
 + tree: add repository argument to lookup_tree
 + blob: add repository argument to lookup_blob
 + object: add repository argument to object_as_type
 + object: add repository argument to parse_object_buffer
 + object: add repository argument to lookup_object
 + object: add repository argument to parse_object
 + Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
 (this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)

 lookup_commit_reference() and friends have been updated to find
 in-core object for a specific in-core repository instance.


* sg/httpd-test-unflake (2018-07-12) 3 commits
  (merged to 'next' on 2018-07-24 at b7df820256)
 + t/lib-httpd: avoid occasional failures when checking access.log
 + t/lib-httpd: add the strip_access_log() helper function
 + t5541: clean up truncating access log

 httpd tests saw occasional breakage due to the way its access log
 gets inspected by the tests, which has been updated to make them
 less flaky.


* tb/grep-only-matching (2018-07-09) 2 commits
  (merged to 'next' on 2018-07-24 at 7e878b9d95)
 + grep.c: teach 'git grep --only-matching'
 + grep.c: extract show_line_header()

 "git grep" learned the "--only-matching" option.

--------------------------------------------------
[New Topics]

* ab/fsck-transfer-updates (2018-07-27) 10 commits
 - fsck: test and document unknown fsck.<msg-id> values
 - fsck: add stress tests for fsck.skipList
 - fsck: test & document {fetch,receive}.fsck.* config fallback
 - fetch: implement fetch.fsck.*
 - transfer.fsckObjects tests: untangle confusing setup
 - config doc: elaborate on fetch.fsckObjects security
 - config doc: elaborate on what transfer.fsckObjects does
 - config doc: unify the description of fsck.* and receive.fsck.*
 - config doc: don't describe *.fetchObjects twice
 - receive.fsck.<msg-id> tests: remove dead code

 The test performed at the receiving end of "git push" to prevent
 bad objects from entering repository can be customized via
 receive.fsck.* configuration variables; we now have gained a
 counterpart to do the same on the "git fetch" side, with
 fetch.fsck.* configuration variables.

 Will merge to 'next'.


* ab/test-must-be-empty (2018-07-30) 1 commit
 - tests: make use of the test_must_be_empty function

 Test updates.

 Will merge to 'next'.


* ab/test-must-be-empty-for-master (2018-07-30) 1 commit
 - tests: make use of the test_must_be_empty function

 Test updates.

 Did anybody spot incorrect conversion in this yet?


* cb/p4-pre-submit-hook (2018-08-01) 1 commit
 - git-p4: add the `p4-pre-submit` hook

 "git p4 submit" learns to ask its own pre-submit hook if it should
 continue with submitting.

 Will merge to 'next'.


* es/rebase-i-author-script-fix (2018-07-31) 4 commits
 - sequencer: don't die() on bogus user-edited timestamp
 - sequencer: fix "rebase -i --root" corrupting author header timestamp
 - sequencer: fix "rebase -i --root" corrupting author header timezone
 - sequencer: fix "rebase -i --root" corrupting author header
 (this branch is used by pw/rebase-i-author-script-fix.)

 The "author-script" file "git rebase -i" creates got broken when
 we started to move the command away from shell script, which is
 getting fixed now.

 Will merge to 'next'.


* hn/highlight-sideband-keywords (2018-07-31) 1 commit
 - sideband: highlight keywords in remote output

 The sideband code learned to optionally paint selected keywords at
 the beginning of incoming lines on the receiving end.


* jn/subtree-test-fixes (2018-07-30) 2 commits
 - subtree test: simplify preparation of expected results
 - subtree test: add missing && to &&-chain

 Test fix.

 Will merge to 'next'.


* ms/http-proto-doc (2018-07-30) 1 commit
 - doc: fix want-capability separator

 Doc fix.

 Will merge to 'next'.


* nd/pack-objects-threading-doc (2018-07-30) 1 commit
 - pack-objects: document about thread synchronization

 Doc fix.

 Will merge to 'next'.


* sb/indent-heuristic-optim (2018-08-01) 1 commit
 - xdiff: reduce indent heuristic overhead

 "git diff --indent-heuristic" had a bad corner case performance.

 Will merge to 'next'.


* ab/fetch-nego (2018-08-01) 3 commits
 - fetch doc: cross-link two new negotiation options
 - negotiator: unknown fetch.negotiationAlgorithm should error out
 - Merge branch 'jt/fetch-nego-tip' into ab/fetch-nego

 Update to a few other topics.

 Will merge to 'next'.


* ab/fetch-tags-noclobber (2018-07-31) 10 commits
 - fetch: stop clobbering existing tags without --force
 - pull doc: fix a long-standing grammar error
 - fetch tests: add a test clobbering tag behavior
 - fetch tests: correct a comment "remove it" -> "remove them"
 - push doc: correct lies about how push refspecs work
 - push tests: assert re-pushing annotated tags
 - push tests: add more testing for forced tag pushing
 - push tests: fix logic error in "push" test assertion
 - push tests: remove redundant 'git push' invocation
 - fetch tests: change "Tag" test tag to "testTag"

 "git fetch" used to apply the same "fast-forward" rule and allow
 tags to move without "--force" option, which made little sense,
 which has been corrected.

 Expecting a reroll.
 cf. <xmqq4lgfcn5a.fsf@gitster-ct.c.googlers.com>
 cf. <xmqqzhy7b7v9.fsf@gitster-ct.c.googlers.com>


* bp/checkout-new-branch-optim (2018-07-31) 1 commit
 - checkout: optimize "git checkout -b <new_branch>"

 "git checkout -b newbranch [HEAD]" should not have to do as much as
 checking out a commit different from HEAD.  An attempt is made to
 optimize this special case.

 Waiting for review comments to be responded.
 cf. <CACsJy8DMEMsDnKZc65K-0EJcm2udXZ7OKY=xoFmX4COM0dSH=g@mail.gmail.com>


* es/mw-to-git-chain-fix (2018-07-31) 1 commit
 - mw-to-git/t9360: fix broken &&-chain

 Test fix.

 Will merge to 'next'.


* jk/merge-subtree-heuristics (2018-08-02) 1 commit
 - score_trees(): fix iteration over trees with missing entries

 The automatic tree-matching in "git merge -s subtree" was broken 5
 years ago and nobody has noticed since then, which is now fixed.

 Will merge to 'next'.


* jt/connectivity-check-after-unshallow (2018-08-01) 1 commit
 - fetch-pack: unify ref in and out param

 Recent update to the transport layer broke ref updates after "git
 fetch", which is now fixed.

 Will merge to 'next'.


* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit
 - remote: make refspec follow the same disambiguation rule as local refs

 "git fetch $there refs/heads/s" ought to fetch the tip of the
 branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
 name is "refs/heads/s" exists at the same time, fetched that one
 instead by mistake.  This has been corrected to honor the usual
 disambiguation rules for abbreviated refnames.

 Will merge to 'next'.


* nd/clone-case-smashing-warning (2018-07-31) 1 commit
 - clone: report duplicate entries on case-insensitive filesystems

 Running "git clone" against a project that contain two files with
 pathnames that differ only in cases on a case insensitive
 filesystem would result in one of the files lost because the
 underlying filesystem is incapable of holding both at the same
 time.  An attempt is made to detect such a case and warn.

 Discussion getting petered out.
 Doing this portably and extending it to UTF-8 normalization issue
 HFS+ has would be costly.

 cf. <20180728095659.GA21450@sigill.intra.peff.net>
 cf. <xmqq1sbh7phx.fsf@gitster-ct.c.googlers.com>


* nd/unpack-trees-with-cache-tree (2018-07-31) 4 commits
 - unpack-trees: cheaper index update when walking by cache-tree
 - unpack-trees: reduce malloc in cache-tree walk
 - unpack-trees: optimize walking same trees with cache-tree
 - unpack-trees.c: add performance tracing

 The unpack_trees() API used in checking out a branch and merging
 walks one or more trees along with the index.  When the cache-tree
 in the index tells us that we are walking a tree whose flattened
 contents is known (i.e. matches a span in the index), as linearly
 scanning a span in the index is much more efficient than having to
 open tree objects recursively and listing their entries, the walk
 can be optimized, which is done in this topic.


* rs/remote-mv-leakfix (2018-08-01) 1 commit
 - remote: clear string_list after use in mv()

 Leakfix.

 Will merge to 'next'.


* sb/config-write-fix (2018-08-01) 3 commits
 - git-config: document accidental multi-line setting in deprecated syntax
 - config: fix case sensitive subsection names on writing
 - t1300: document current behavior of setting options

 Recent update to "git config" broke updating variable in a
 subsection, which has been corrected.

 Not quite?
 cf. <xmqq4lgc1rbv.fsf@gitster-ct.c.googlers.com>


* sb/range-diff-colors (2018-08-01) 9 commits
 - fixup! t3206: add color test for range-diff --dual-color
 - diff.c: rewrite emit_line_0 more understandably
 - diff.c: compute reverse locally in emit_line_0
 - diff: use emit_line_0 once per line
 - diff.c: add set_sign to emit_line_0
 - diff.c: reorder arguments for emit_line_ws_markup
 - diff.c: simplify caller of emit_line_0
 - t3206: add color test for range-diff --dual-color
 - test_decode_color: understand FAINT and ITALIC
 (this branch uses js/range-diff; is tangled with es/format-patch-rangediff.)


* sg/t1404-update-ref-test-timeout (2018-08-01) 1 commit
 - t1404: increase core.packedRefsTimeout to avoid occasional test failure

 An attempt to unflake a test a bit.


* sg/travis-retrieve-trash-upon-failure (2018-08-01) 1 commit
 - travis-ci: include the trash directories of failed tests in the trace log

 The Travis CI scripts were taught to ship back the test data from
 failed tests.

 Will merge to 'next'.


* jt/fetch-follow-fix (2018-08-01) 1 commit
 - fetch-pack: unify ref in and out param

 "git fetch" sometimes failed to update the remote-tracking refs,
 which has been corrected.

 Will merge to 'next'.


* ab/sha1dc (2018-08-02) 1 commit
 - sha1dc: update from upstream

 AIX portability update for SHADC hash, imported from upstream.

 Will merge to 'next'.


* es/want-color-fd-defensive (2018-08-02) 1 commit
 - color: protect against out-of-bounds array access/assignment

 Futureproofing a helper function that can easily misused.

 Will merge to 'next'.


* pw/rebase-i-author-script-fix (2018-08-02) 2 commits
 - sequencer: fix quoting in write_author_script
 - sequencer: handle errors in read_author_ident()
 (this branch uses es/rebase-i-author-script-fix.)

 Recent "git rebase -i" update started to write bogusly formatted
 author-script, with a matching broken reading code.  These are
 being fixed.

 Undecided.
 Is it the list consensus to favor this "with extra code, read the
 script written by bad writer" approach?


* rs/parse-opt-lithelp (2018-08-02) 6 commits
 - parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
 - shortlog: correct option help for -w
 - send-pack: specify --force-with-lease argument help explicitly
 - pack-objects: specify --index-version argument help explicitly
 - difftool: remove angular brackets from argument help
 - add, update-index: fix --chmod argument help

 The parse-options machinery learned to refrain from enclosing
 placeholder string inside a "<bra" and "ket>" pair automatically
 without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
 arguments that are not formatted correctly have been identified and
 fixed.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* ma/wrapped-info (2018-05-28) 2 commits
 - usage: prefix all lines in `vreportf()`, not just the first
 - usage: extract `prefix_suffix_lines()` from `advise()`

 An attempt to help making multi-line messages fed to warning(),
 error(), and friends more easily translatable.

 Will discard and wait for a cleaned-up rewrite.
 cf. <20180529213957.GF7964@sigill.intra.peff.net>

* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2018-07-23) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>

 I just rebased the topic to a newer base as it did not build
 standalone with the base I originally queued the topic on, but
 otherwise there is no update to address any of the review comments
 in the thread above---we are still waiting for a reroll.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* es/diff-color-moved-fix (2018-07-25) 1 commit
  (merged to 'next' on 2018-08-02 at 233bccfbfb)
 + diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"

 One of the "diff --color-moved" mode "dimmed_zebra" that was named
 in an unusual way has been deprecated and replaced by
 "dimmed-zebra".

 Will merge to 'master'.


* pw/add-p-select (2018-07-26) 4 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select modified lines correctly
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Will merge to and cook in 'next'.

 I found the feature to be hard to explain, and may result in more
 end-user complaints, but let's see.


* mk/http-backend-content-length (2018-07-30) 4 commits
 - t5562: avoid non-portable "export FOO=bar" construct
 - http-backend: respect CONTENT_LENGTH for receive-pack
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
 - http-backend: cleanup writing to child process

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.

 Will merge to 'next'.


* ds/commit-graph-with-grafts (2018-07-19) 8 commits
  (merged to 'next' on 2018-08-02 at 0ee624e329)
 + commit-graph: close_commit_graph before shallow walk
 + commit-graph: not compatible with uninitialized repo
 + commit-graph: not compatible with grafts
 + commit-graph: not compatible with replace objects
 + test-repository: properly init repo
 + commit-graph: update design document
 + refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
 + refs.c: migrate internal ref iteration to pass thru repository argument

 The recently introduced commit-graph auxiliary data is incompatible
 with mechanisms such as replace & grafts that "breaks" immutable
 nature of the object reference relationship.  Disable optimizations
 based on its use (and updating existing commit-graph) when these
 incompatible features are in use in the repository.

 Will merge to 'master'.


* jk/core-use-replace-refs (2018-07-18) 3 commits
  (merged to 'next' on 2018-08-02 at 90fb6b1056)
 + add core.usereplacerefs config option
 + check_replace_refs: rename to read_replace_refs
 + check_replace_refs: fix outdated comment

 A new configuration variable core.usereplacerefs has been added,
 primarily to help server installations that want to ignore the
 replace mechanism altogether.

 Will merge to 'master'.


* nd/i18n (2018-07-23) 23 commits
  (merged to 'next' on 2018-08-02 at 904a22a5d1)
 + transport-helper.c: mark more strings for translation
 + transport.c: mark more strings for translation
 + sha1-file.c: mark more strings for translation
 + sequencer.c: mark more strings for translation
 + replace-object.c: mark more strings for translation
 + refspec.c: mark more strings for translation
 + refs.c: mark more strings for translation
 + pkt-line.c: mark more strings for translation
 + object.c: mark more strings for translation
 + exec-cmd.c: mark more strings for translation
 + environment.c: mark more strings for translation
 + dir.c: mark more strings for translation
 + convert.c: mark more strings for translation
 + connect.c: mark more strings for translation
 + config.c: mark more strings for translation
 + commit-graph.c: mark more strings for translation
 + builtin/replace.c: mark more strings for translation
 + builtin/pack-objects.c: mark more strings for translation
 + builtin/grep.c: mark strings for translation
 + builtin/config.c: mark more strings for translation
 + archive-zip.c: mark more strings for translation
 + archive-tar.c: mark more strings for translation
 + Update messages in preparation for i18n

 Many more strings are prepared for l10n.

 Will merge to 'master'.


* sb/histogram-less-memory (2018-07-23) 4 commits
  (merged to 'next' on 2018-08-02 at cfb02aa3b5)
 + xdiff/histogram: remove tail recursion
 + xdiff/xhistogram: move index allocation into find_lcs
 + xdiff/xhistogram: factor out memory cleanup into free_index()
 + xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff

 "git diff --histogram" had a bad memory usage pattern, which has
 been rearranged to reduce the peak usage.

 Will merge to 'master'.


* bb/make-developer-pedantic (2018-07-25) 1 commit
  (merged to 'next' on 2018-08-02 at c738a84b7e)
 + Makefile: add a DEVOPTS flag to get pedantic compilation

 "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
 with -pedantic option, which may catch more problematic program
 constructs and potential bugs.

 Will merge to 'master'.


* bw/clone-ref-prefixes (2018-07-20) 1 commit
  (merged to 'next' on 2018-08-02 at c8ad140ab0)
 + clone: send ref-prefixes when using protocol v2

 The wire-protocol v2 relies on the client to send "ref prefixes" to
 limit the bandwidth spent on the initial ref advertisement.  "git
 clone" when learned to speak v2 forgot to do so, which has been
 corrected.

 Will merge to 'master'.


* bw/fetch-pack-i18n (2018-07-23) 1 commit
  (merged to 'next' on 2018-08-02 at df72001755)
 + fetch-pack: mark die strings for translation

 i18n updates.

 Will merge to 'master'.


* bw/protocol-v2 (2018-07-24) 1 commit
  (merged to 'next' on 2018-08-02 at f4076b3e94)
 + pack-protocol: mention and point to docs for protocol v2

 Doc update.

 Will merge to 'master'.


* ds/reachable (2018-07-20) 18 commits
 - commit-reach: use can_all_from_reach
 - commit-reach: make can_all_from_reach... linear
 - commit-reach: replace ref_newer logic
 - test-reach: test commit_contains
 - test-reach: test can_all_from_reach_with_flags
 - test-reach: test reduce_heads
 - test-reach: test get_merge_bases_many
 - test-reach: test is_descendant_of
 - test-reach: test in_merge_bases
 - test-reach: create new test tool for ref_newer
 - commit-reach: move can_all_from_reach_with_flags
 - upload-pack: generalize commit date cutoff
 - upload-pack: refactor ok_to_give_up()
 - upload-pack: make reachable() more generic
 - commit-reach: move commit_contains from ref-filter
 - commit-reach: move ref_newer from remote.c
 - commit.h: remove method declarations
 - commit-reach: move walk methods from commit.c

 The code for computing history reachability has been shuffled,
 obtained a bunch of new tests to cover them, and then being
 improved.

 Will merge to and cook in 'next'.


* en/merge-recursive-skip-fix (2018-07-27) 2 commits
 - merge-recursive: preserve skip_worktree bit when necessary
 - t3507: add a testcase showing failure with sparse checkout

 When the sparse checkout feature is in use, "git cherry-pick" and
 other mergy operations lost the skip_worktree bit when a path that
 is excluded from checkout requires content level merge, which is
 resolved as the same as the HEAD version, without materializing the
 merge result in the working tree, which made the path appear as
 deleted.  This has been corrected by preserving the skip_worktree
 bit (and not materializing the file in the working tree).

 Will merge to 'next'.


* es/format-patch-interdiff (2018-07-23) 6 commits
 - format-patch: allow --interdiff to apply to a lone-patch
 - log-tree: show_log: make commentary block delimiting reusable
 - interdiff: teach show_interdiff() to indent interdiff
 - format-patch: teach --interdiff to respect -v/--reroll-count
 - format-patch: add --interdiff option to embed diff in cover letter
 - format-patch: allow additional generated content in make_cover_letter()
 (this branch is used by es/format-patch-rangediff.)

 "git format-patch" learned a new "--interdiff" option to explain
 the difference between this version and the previous atttempt in
 the cover letter (or after the tree-dashes as a comment).

 Stuck in review?
 cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>


* es/format-patch-rangediff (2018-07-30) 10 commits
 - format-patch: allow --range-diff to apply to a lone-patch
 - format-patch: add --creation-factor tweak for --range-diff
 - format-patch: teach --range-diff to respect -v/--reroll-count
 - format-patch: extend --range-diff to accept revision range
 - format-patch: add --range-diff option to embed diff in cover letter
 - range-diff: relieve callers of low-level configuration burden
 - range-diff: publish default creation factor
 - range-diff: respect diff_option.file rather than assuming 'stdout'
 - Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
 - Merge branch 'js/range-diff' into es/format-patch-rangediff
 (this branch uses es/format-patch-interdiff and js/range-diff; is tangled with sb/range-diff-colors.)

 "git format-patch" learned a new "--range-diff" option to explain
 the difference between this version and the previous atttempt in
 the cover letter (or after the tree-dashes as a comment).

 Need to wait for the prereq topics to solidify a bit more.


* jk/banned-function (2018-07-26) 5 commits
 - banned.h: mark strncpy() as banned
 - banned.h: mark sprintf() as banned
 - banned.h: mark strcat() as banned
 - automatically ban strcpy()
 - Merge branch 'sb/blame-color' into jk/banned-function

 It is too easy to misuse system API functions such as strcat();
 these selected functions are now forbidden in this codebase and
 will cause a compilation failure.

 Will merge to 'next'.


* jk/size-t (2018-07-24) 6 commits
  (merged to 'next' on 2018-08-02 at 6f861e05f0)
 + strbuf_humanise: use unsigned variables
 + pass st.st_size as hint for strbuf_readlink()
 + strbuf_readlink: use ssize_t
 + strbuf: use size_t for length in intermediate variables
 + reencode_string: use size_t for string lengths
 + reencode_string: use st_add/st_mult helpers

 Code clean-up to use size_t/ssize_t when they are the right type.

 Will merge to 'master'.


* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
  (merged to 'next' on 2018-08-02 at 217ea36a37)
 + t7406: avoid failures solely due to timing issues

 Test fix.

 Will merge to 'master'.


* js/vscode (2018-07-30) 9 commits
 - vscode: let cSpell work on commit messages, too
 - vscode: add a dictionary for cSpell
 - vscode: use 8-space tabs, no trailing ws, etc for Git's source code
 - vscode: wrap commit messages at column 72 by default
 - vscode: only overwrite C/C++ settings
 - mingw: define WIN32 explicitly
 - cache.h: extract enum declaration from inside a struct declaration
 - vscode: hard-code a couple defines
 - contrib: add a script to initialize VS Code configuration

 Add a script (in contrib/) to help users of VSCode work better with
 our codebase.

 Will merge to 'next'.


* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
  (merged to 'next' on 2018-08-02 at d9eabdea95)
 + fetch: send "refs/tags/" prefix upon CLI refspecs
 + t5702: test fetch with multiple refspecs at a time

 The wire-protocol v2 relies on the client to send "ref prefixes" to
 limit the bandwidth spent on the initial ref advertisement.  "git
 fetch $remote branch:branch" that asks tags that point into the
 history leading to the "branch" automatically followed sent to
 narrow prefix and broke the tag following, which has been fixed.

 Will merge to 'master'.


* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
  (merged to 'next' on 2018-08-02 at f3b2bf0fef)
 + pack-objects: fix performance issues on packing large deltas

 In a recent update in 2.18 era, "git pack-objects" started
 producing a larger than necessary packfiles by missing
 opportunities to use large deltas.

 Will cook in 'next'.


* sb/trailers-docfix (2018-07-20) 1 commit
  (merged to 'next' on 2018-08-02 at ba348fafcd)
 + Documentation/git-interpret-trailers: explain possible values

 Doc update.

 Will merge to 'master'.


* sg/coccicheck-updates (2018-07-23) 5 commits
  (merged to 'next' on 2018-08-02 at b5548ff3a9)
 + coccinelle: extract dedicated make target to clean Coccinelle's results
 + coccinelle: put sane filenames into output patches
 + coccinelle: exclude sha1dc source files from static analysis
 + coccinelle: use $(addsuffix) in 'coccicheck' make target
 + coccinelle: mark the 'coccicheck' make target as .PHONY

 Update the way we use Coccinelle to find out-of-style code that
 need to be modernised.

 Will merge to 'master'.


* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
  (merged to 'next' on 2018-08-02 at f5c05b5a2c)
 + t9300: wait for background fast-import process to die after killing it

 Test update.

 Will merge to 'master'.


* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
  (merged to 'next' on 2018-08-02 at 54808a8778)
 + travis-ci: fail if Coccinelle static analysis found something to transform
 + travis-ci: run Coccinelle static analysis with two parallel jobs

 Update the way we run static analysis tool at TravisCI to make it
 easier to use its findings.

 Will merge to 'master'.


* ab/newhash-is-sha256 (2018-07-26) 2 commits
 - doc hash-function-transition: pick SHA-256 as NewHash
 - doc hash-function-transition: note the lack of a changelog

 Documentation update.

 Will merge to 'next'.


* bb/redecl-enum-fix (2018-07-26) 1 commit
 - packfile: ensure that enum object_type is defined

 Compilation fix.

 Will merge to 'next'.


* jh/structured-logging (2018-07-25) 25 commits
 - structured-logging: add config data facility
 - structured-logging: t0420 tests for interacitve child_summary
 - structured-logging: t0420 tests for child process detail events
 - structured-logging: add child process classification
 - structured-logging: add detail-events for child processes
 - structured-logging: add structured logging to remote-curl
 - structured-logging: t0420 tests for aux-data
 - structured-logging: add aux-data for size of sparse-checkout file
 - structured-logging: add aux-data for index size
 - structured-logging: add aux-data facility
 - structured-logging: t0420 tests for timers
 - structured-logging: add timer around preload_index
 - structured-logging: add timer around wt-status functions
 - structured-logging: add timer around do_write_index
 - structured-logging: add timer around do_read_index
 - structured-logging: add timer facility
 - structured-logging: add detail-event for lazy_init_name_hash
 - structured-logging: add detail-event facility
 - structured-logging: t0420 basic tests
 - structured-logging: set sub_command field for checkout command
 - structured-logging: set sub_command field for branch command
 - structured-logging: add session-id to log events
 - structured-logging: add structured logging framework
 - structured-logging: add STRUCTURED_LOGGING=1 to Makefile
 - structured-logging: design document
 (this branch uses jh/json-writer.)

 Will merge to 'next'.


* en/abort-df-conflict-fixes (2018-07-31) 2 commits
 - read-cache: fix directory/file conflict handling in read_index_unmerged()
 - t1015: demonstrate directory/file conflict recovery failures

 "git merge --abort" etc. did not clean things up properly when
 there were conflicted entries in certain order that are involved
 in D/F conflicts.  This has been corrected.

 Will merge to 'next'.


* hs/gpgsm (2018-07-20) 7 commits
  (merged to 'next' on 2018-08-02 at db28bffe4f)
 + gpg-interface t: extend the existing GPG tests with GPGSM
 + gpg-interface: introduce new signature format "x509" using gpgsm
 + gpg-interface: introduce new config to select per gpg format program
 + gpg-interface: do not hardcode the key string len anymore
 + gpg-interface: introduce an abstraction for multiple gpg formats
 + t/t7510: check the validation of the new config gpg.format
 + gpg-interface: add new config to select how to sign a commit

 Teach "git tag -s" etc. a few configuration varaibles (gpg.format
 that can be set to "openpgp" or "x509", and gpg.<format>.program
 that is used to specify what program to use to deal with the format)
 to allow x.509 certs with CMS via "gpgsm" to be used instead of
 openpgp via "gnupg".

 Will merge to 'master'.


* jn/gc-auto (2018-07-17) 3 commits
 - gc: do not return error for prior errors in daemonized mode
 - gc: exit with status 128 on failure
 - gc: improve handling of errors reading gc.log

 "gc --auto" ended up calling exit(-1) upon error, which has been
 corrected to use exit(1).  Also the error reporting behaviour when
 daemonized has been updated to exit with zero status when stopping
 due to a previously discovered error (which implies there is no
 point running gc to improve the situation); we used to exit with
 failure in such a case.

 Stuck in review?
 cf. <20180717201348.GD26218@sigill.intra.peff.net>


* sb/submodule-update-in-c (2018-07-18) 6 commits
 - submodule--helper: introduce new update-module-mode helper
 - builtin/submodule--helper: factor out method to update a single submodule
 - builtin/submodule--helper: store update_clone information in a struct
 - builtin/submodule--helper: factor out submodule updating
 - git-submodule.sh: rename unused variables
 - git-submodule.sh: align error reporting for update mode to use path

 "git submodule update" is getting rewritten piece-by-piece into C.

 Will merge to 'next'.


* sl/commit-dry-run-with-short-output-fix (2018-07-30) 4 commits
 . commit: fix exit code when doing a dry run
 . wt-status: teach wt_status_collect about merges in progress
 . wt-status: rename commitable to committable
 . t7501: add coverage for flags which imply dry runs

 "git commit --dry-run" gave a correct exit status even during a
 conflict resolution toward a merge, but it did not with the
 "--short" option, which has been corrected.

 Seems to break 7512, 3404 and 7060 in 'pu'.


* tg/rerere (2018-07-16) 11 commits
 - rerere: recalculate conflict ID when unresolved conflict is committed
 - rerere: teach rerere to handle nested conflicts
 - rerere: return strbuf from handle path
 - rerere: factor out handle_conflict function
 - rerere: only return whether a path has conflicts or not
 - rerere: fix crash when conflict goes unresolved
 - rerere: add documentation for conflict normalization
 - rerere: mark strings for translation
 - rerere: wrap paths in output in sq
 - rerere: lowercase error messages
 - rerere: unify error messages when read_cache fails

 Fixes to "git rerere" corner cases, especially when conflict
 markers cannot be parsed in the file.

 I am not sure about the "nested" stuff, though.


* jk/ui-color-always-to-auto (2018-07-18) 1 commit
  (merged to 'next' on 2018-08-02 at 1a054baf0e)
 + Documentation: fix --color option formatting

 Doc formatting fix.

 Will merge to 'master'.


* jh/json-writer (2018-07-16) 1 commit
  (merged to 'next' on 2018-08-02 at d841450c7d)
 + json_writer: new routines to create JSON data
 (this branch is used by jh/structured-logging.)

 Preparatory code to later add json output for telemetry data.

 Will merge to 'master'.


* ag/rebase-i-in-c (2018-07-31) 20 commits
 - rebase -i: move rebase--helper modes to rebase--interactive
 - rebase -i: remove git-rebase--interactive.sh
 - rebase--interactive2: rewrite the submodes of interactive rebase in C
 - rebase -i: implement the main part of interactive rebase as a builtin
 - rebase -i: rewrite init_basic_state() in C
 - rebase -i: rewrite write_basic_state() in C
 - rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
 - rebase -i: implement the logic to initialize $revisions in C
 - rebase -i: remove unused modes and functions
 - rebase -i: rewrite complete_action() in C
 - t3404: todo list with commented-out commands only aborts
 - sequencer: change the way skip_unnecessary_picks() returns its result
 - sequencer: refactor append_todo_help() to write its message to a buffer
 - rebase -i: rewrite checkout_onto() in C
 - rebase -i: rewrite setup_reflog_action() in C
 - sequencer: add a new function to silence a command, except if it fails
 - rebase -i: rewrite the edit-todo functionality in C
 - editor: add a function to launch the sequence editor
 - rebase -i: rewrite append_todo_help() in C
 - sequencer: make two functions and an enum from sequencer.c public

 Rewrite of the remaining "rebase -i" machinery in C.

 Will merge to 'next'.


* js/range-diff (2018-07-30) 21 commits
 - range-diff: use dim/bold cues to improve dual color mode
 - range-diff: make --dual-color the default mode
 - range-diff: left-pad patch numbers
 - completion: support `git range-diff`
 - range-diff: populate the man page
 - range-diff --dual-color: fix bogus white-space warning
 - range-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: add the meta color GIT_COLOR_REVERSE
 - range-diff: use color for the commit pairs
 - range-diff: add tests
 - range-diff: do not show "function names" in hunk headers
 - range-diff: adjust the output of the commit pairs
 - range-diff: suppress the diff headers
 - range-diff: indent the diffs just like tbdiff
 - range-diff: right-trim commit messages
 - range-diff: also show the diff between patches
 - range-diff: improve the order of the shown commits
 - range-diff: first rudimentary implementation
 - Introduce `range-diff` to compare iterations of a topic branch
 - linear-assignment: a function to solve least-cost assignment problems
 (this branch is used by es/format-patch-rangediff and sb/range-diff-colors.)

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 It seems there will another hopefully the final reroll coming.
 cf. <nycvar.QRO.7.76.6.1808011800570.71@tvgsbejvaqbjf.bet>


* lt/date-human (2018-07-09) 1 commit
 - Add 'human' date format

 A new date format "--date=human" that morphs its output depending
 on how far the time is from the current time has been introduced.
 "--date=auto" can be used to use this new format when the output is
 goint to the pager or to the terminal and otherwise the default
 format.


* ot/ref-filter-object-info (2018-07-17) 5 commits
 - ref-filter: use oid_object_info() to get object
 - ref-filter: merge get_obj and get_object
 - ref-filter: initialize eaten variable
 - ref-filter: fill empty fields with empty values
 - ref-filter: add info_source to valid_atom

 A few atoms like %(objecttype) and %(objectsize) in the format
 specifier of "for-each-ref --format=<format>" can be filled without
 getting the full contents of the object, but just with the object
 header.  These cases have been optimzied by calling
 oid_object_info() API.

 Will merge to 'next'.


* pk/rebase-in-c (2018-07-30) 3 commits
 - builtin/rebase: support running "git rebase <upstream>"
 - rebase: refactor common shell functions into their own file
 - rebase: start implementing it as a builtin

 Rewrite of the "rebase" machinery in C.

 Will merge to 'next'.


* jk/branch-l-1-repurpose (2018-06-22) 1 commit
 - branch: make "-l" a synonym for "--list"

 Updated plan to repurpose the "-l" option to "git branch".

 Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.


* cc/remote-odb (2018-08-02) 9 commits
 - Documentation/config: add odb.<name>.promisorRemote
 - t0410: test fetching from many promisor remotes
 - Use odb.origin.partialclonefilter instead of core.partialclonefilter
 - Use remote_odb_get_direct() and has_remote_odb()
 - remote-odb: add remote_odb_reinit()
 - remote-odb: implement remote_odb_get_many_direct()
 - remote-odb: implement remote_odb_get_direct()
 - Add initial remote odb support
 - fetch-object: make functions return an error code

 Implement lazy fetches of missing objects to complement the
 experimental partial clone feature.

 I haven't seen much interest in this topic on list.  What's the
 doneness of this thing?

 I do not particularly mind adding code to support a niche feature
 as long as it is cleanly made and it is clear that the feature
 won't negatively affect those who do not use it, so a review from
 that point of view may also be appropriate.


* ds/multi-pack-index (2018-07-20) 23 commits
 - midx: clear midx on repack
 - packfile: skip loading index if in multi-pack-index
 - midx: prevent duplicate packfile loads
 - midx: use midx in approximate_object_count
 - midx: use existing midx when writing new one
 - midx: use midx in abbreviation calculations
 - midx: read objects from multi-pack-index
 - config: create core.multiPackIndex setting
 - midx: write object offsets
 - midx: write object id fanout chunk
 - midx: write object ids in a chunk
 - midx: sort and deduplicate objects from packfiles
 - midx: read pack names into array
 - multi-pack-index: write pack names in chunk
 - multi-pack-index: read packfile list
 - packfile: generalize pack directory list
 - t5319: expand test data
 - multi-pack-index: load into memory
 - midx: write header information to lockfile
 - multi-pack-index: add 'write' verb
 - multi-pack-index: add builtin
 - multi-pack-index: add format details
 - multi-pack-index: add design document

 When there are too many packfiles in a repository (which is not
 recommended), looking up an object in these would require
 consulting many pack .idx files; a new mechanism to have a single
 file that consolidates all of these .idx files is introduced.

 Will merge to and cook in 'next'.


--------------------------------------------------
[Discarded]

* am/sequencer-author-script-fix (2018-07-18) 1 commit
 . sequencer.c: terminate the last line of author-script properly

 The author-script that records the author information created by
 the sequencer machinery lacked the closing single quote on the last
 entry.

 Superseded by another topic.


* jc/push-cas-opt-comment (2018-08-01) 1 commit
 . push: comment on a funny unbalanced option help

 Code clarification.

 Superseded by another topic.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jan 2010, #07; Fri, 22)
@ 2010-01-23  3:28  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2010-01-23  3:28 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.  The ones
marked with '.' do not appear in any of the integration branches, but I am
still holding onto them.

--------------------------------------------------
[Graduated to "master"]

* jc/conflict-marker-size (2010-01-16) 8 commits
  (merged to 'next' on 2010-01-18 at f1f6023)
 + rerere: honor conflict-marker-size attribute
 + rerere: prepare for customizable conflict marker length
 + conflict-marker-size: new attribute
 + rerere: use ll_merge() instead of using xdl_merge()
 + merge-tree: use ll_merge() not xdl_merge()
 + xdl_merge(): allow passing down marker_size in xmparam_t
 + xdl_merge(): introduce xmparam_t for merge specific parameters
 + git_attr(): fix function signature

* ag/maint-apply-too-large-p (2010-01-17) 1 commit
  (merged to 'next' on 2010-01-18 at 8bd106a)
 + builtin-apply.c: Skip filenames without enough components

* ag/patch-header-verify (2010-01-18) 1 commit
  (merged to 'next' on 2010-01-18 at 2cd0ddc)
 + builtin-apply.c: fix the --- and +++ header filename consistency check

* bw/cvsimport (2010-01-19) 3 commits
  (merged to 'next' on 2010-01-19 at 63f4c8d)
 + cvsimport: standarize system() calls to external git tools
 + cvsimport: standarize open() calls to external git tools
 + cvsimport: modernize callouts to git subcommands

* jc/checkout-merge-base (2010-01-19) 1 commit
  (merged to 'next' on 2010-01-19 at 3665110)
 + Fix "checkout A..." synonym for "checkout A...HEAD" on Windows

* jc/maint-refresh-index-is-optional-for-status (2010-01-19) 1 commit
 + status: don't require the repository to be writable

* nd/status-partial-refresh (2010-01-17) 2 commits
  (merged to 'next' on 2010-01-19 at 64f0c0b)
 + rm: only refresh entries that we may touch
  (merged to 'next' on 2010-01-16 at f77bc8f)
 + status: only touch path we may need to check

* ap/merge-backend-opts (2008-07-18) 7 commits
  (merged to 'next' on 2010-01-18 at cb1f6b7)
 + Document that merge strategies can now take their own options
 + Extend merge-subtree tests to test -Xsubtree=dir.
 + Make "subtree" part more orthogonal to the rest of merge-recursive.
 + pull: Fix parsing of -X<option>
 + Teach git-pull to pass -X<option> to git-merge
 + git merge -X<option>
 + git-merge-file --ours, --theirs

* jc/maint-limit-note-output (2010-01-21) 2 commits
  (merged to 'next' on 2010-01-21 at bcb80b9)
 + Fix "log --oneline" not to show notes
  (merged to 'next' on 2010-01-20 at 526bfcc)
 + Fix "log" family not to be too agressive about showing notes

* nd/ls-files-sparse-fix (2010-01-20) 1 commit
  (merged to 'next' on 2010-01-20 at 0f61dbc)
 + Fix memory corruption when .gitignore does not end by \n

* il/branch-set-upstream (2010-01-18) 2 commits
  (merged to 'next' on 2010-01-18 at b9b0993)
 + branch: warn and refuse to set a branch as a tracking branch of itself.
 + Add branch --set-upstream

* il/remote-updates (2010-01-18) 1 commit
  (merged to 'next' on 2010-01-18 at 5c3e805)
 + Add git remote set-url

* il/rev-glob (2010-01-22) 3 commits
  (merged to 'next' on 2010-01-21 at 453a21c)
 + Documentation: improve description of --glob=pattern and friends
  (merged to 'next' on 2010-01-20 at 928ba0a)
 + rev-parse --branches/--tags/--remotes=pattern
 + rev-parse --glob

This is a re-rolled "--namespace=" one.

* jl/submodule-diff (2010-01-18) 4 commits
  (merged to 'next' on 2010-01-20 at 95cb513)
 + Performance optimization for detection of modified submodules
  (merged to 'next' on 2010-01-17 at 525075b)
 + git status: Show uncommitted submodule changes too when enabled
  (merged to 'next' on 2010-01-16 at 0a99e3c)
 + Teach diff that modified submodule directory is dirty
 + Show submodules as modified when they contain a dirty work tree

* js/refer-upstream (2010-01-19) 3 commits
  (merged to 'next' on 2010-01-20 at 5a5547a)
 + Teach @{upstream} syntax to strbuf_branchanme()
 + t1506: more test for @{upstream} syntax
 + Introduce <branch>@{upstream} notation

Updated to teach the new syntax to commands like "checkout" and "merge"
that want to behave better when they know what were given was a branch
name, not a random SHA-1.

* jc/branch-d (2009-12-29) 1 commit
  (merged to 'next' on 2010-01-10 at 61a14b7)
 + branch -d: base the "already-merged" safety on the branch it merges with

--------------------------------------------------
[Will merge to 'master' after a bit more cooking in 'next']

* jc/fix-tree-walk (2009-09-14) 7 commits
  (merged to 'next' on 2010-01-13 at 1c01b87)
 + read-tree --debug-unpack
 + unpack-trees.c: look ahead in the index
 + unpack-trees.c: prepare for looking ahead in the index
 + Aggressive three-way merge: fix D/F case
 + traverse_trees(): handle D/F conflict case sanely
 + more D/F conflict tests
 + tests: move convenience regexp to match object names to test-lib.sh

Resurrected from "Ejected" category.  This is fix for a tricky codepath
and testing and improving before it hits 'master' is greatly appreciated.
(I have been using this in my private build for some time).

--------------------------------------------------
[Cooking]

* jh/notes (2010-01-17) 20 commits
 . builtin-gc: Teach the new --notes option to garbage-collect notes
 . Notes API: gc_notes(): Prune notes that belong to non-existing objects
 . t3305: Verify that removing notes triggers automatic fanout consolidation
 . builtin-notes: Teach -d option for deleting existing notes
 . Teach builtin-notes to remove empty notes
 . Teach notes code to properly preserve non-notes in the notes tree
 . t3305: Verify that adding many notes with git-notes triggers increased fanout
 . t3301: Verify successful annotation of non-commits
 . Builtin-ify git-notes
 . Refactor notes concatenation into a flexible interface for combining notes
 . Notes API: Allow multiple concurrent notes trees with new struct notes_tree
 . Notes API: write_notes_tree(): Store the notes tree in the database
 . Notes API: for_each_note(): Traverse the entire notes tree with a callback
 . Notes API: get_note(): Return the note annotating the given object
 . Notes API: remove_note(): Remove note objects from the notes tree structure
 . Notes API: add_note(): Add note objects to the internal notes tree structure
 . Notes API: init_notes(): Initialize the notes tree from the given notes ref
 . Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef
 . Notes API: get_commit_notes() -> format_note() + remove the commit restriction
 . Minor non-functional fixes to notes.c

Tentatively ejected, as its tests conflict with tests in a higher priority
fix.

* jh/gitweb-cached (2010-01-13) 9 commits
 - gitweb: File based caching layer (from git.kernel.org)
 - gitweb: Convert output to using indirect file handle
 - gitweb: cleanup error message produced by undefined $site_header
 - gitweb: add a get function to compliment print_sort_th
 - gitweb: add a get function to compliment print_local_time
 - gitweb: Makefile improvements
 - gitweb: Add option to force version match
 - gitweb: change die_error to take "extra" argument for extended die information
 - gitweb: Load checking

Replaced with a re-roll.  Update to t9500 is probably needed.

* jc/grep-author-all-match-implicit (2010-01-17) 1 commit
 - "log --author=me --grep=it" should find intersection, not union

^ permalink raw reply	[relevance 3%]

* [PATCH V2 0/7] fix hunk editing with 'commit -p -m'
@ 2014-03-10 18:49  3% Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-10 18:49 UTC (permalink / raw)
  To: git

This patch fixes the fact that hunk editing with 'commit -p -m' does not work:
GIT_EDITOR is set to ':' to indicate to hooks that no editor will be launched,
which result in the 'hunk edit' option not launching the editor (and selecting
the whole hunk).

The fix consists in deferring the GIT_EDITOR override to the hook subprocess,
like it's already done for GIT_INDEX_FILE:
- rename 'run_hook' to 'run_hook_le' and change the first parameter to the environment to set
- add a 'run_hook_ve' variant that take a va_list
- add a new 'run_commit_hook' helper (to set both GIT_EDITOR and GIT_INDEX_FILE)
- the old 'run_hook' functionality is available as 'run_hook_with_custom_index'
  (and marked as deprecated in the last optional patch of this series)

N.B.: the merge builtin 'prepare-commit-msg' hook handling has also been updated
to be consistent; i.e. GIT_EDITOR will not be set to ':' if the '--edit' option
is used.

Benoit Pierre (7):
  merge hook tests: fix missing '&&' in test
  merge hook tests: use 'test_must_fail' instead of '!'
  test patch hunk editing with "commit -p -m"
  commit: fix patch hunk editing with "commit -p -m"
  merge: fix GIT_EDITOR override for commit hook
  merge hook tests: fix and update tests
  run-command: mark run_hook_with_custom_index as deprecated

 builtin/checkout.c                 |  8 +++----
 builtin/clone.c                    |  4 ++--
 builtin/commit.c                   | 35 ++++++++++++++++++++++++------
 builtin/gc.c                       |  2 +-
 builtin/merge.c                    |  6 +++---
 commit.h                           |  3 +++
 run-command.c                      | 44 +++++++++++++++++++++++++++-----------
 run-command.h                      |  7 +++++-
 t/t7505-prepare-commit-msg-hook.sh | 33 ++++++++++++++++++++--------
 t/t7513-commit_-p_-m_hunk_edit.sh  | 34 +++++++++++++++++++++++++++++
 10 files changed, 137 insertions(+), 39 deletions(-)
 create mode 100755 t/t7513-commit_-p_-m_hunk_edit.sh

-- 
1.9.0

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Feb 2022, #02; Wed, 9)
@ 2022-02-10  0:12  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-02-10  0:12 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',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful").  Do not read too much into a topic being in (or not in)
'seen'.  The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

The second batch of topics have been merged.

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']

* ab/cat-file (2022-01-12) 12 commits
  (merged to 'next' on 2022-01-12 at ee4d43041d)
 + cat-file: s/_/-/ in typo'd usage_msg_optf() message
 + cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
  (merged to 'next' on 2022-01-05 at e145efa605)
 + cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
 + object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
 + cat-file: correct and improve usage information
 + cat-file: fix remaining usage bugs
 + cat-file: make --batch-all-objects a CMDMODE
 + cat-file: move "usage" variable to cmd_cat_file()
 + cat-file docs: fix SYNOPSIS and "-h" output
 + parse-options API: add a usage_msg_optf()
 + cat-file tests: test messaging on bad objects/paths
 + cat-file tests: test bad usage

 Assorted updates to "git cat-file", especially "-h".
 source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
 source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>


* ab/config-based-hooks-2 (2022-01-07) 17 commits
  (merged to 'next' on 2022-01-19 at 594b6da22c)
 + run-command: remove old run_hook_{le,ve}() hook API
 + receive-pack: convert push-to-checkout hook to hook.h
 + read-cache: convert post-index-change to use hook.h
 + commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
 + git-p4: use 'git hook' to run hooks
 + send-email: use 'git hook run' for 'sendemail-validate'
 + git hook run: add an --ignore-missing flag
 + hooks: convert worktree 'post-checkout' hook to hook library
 + hooks: convert non-worktree 'post-checkout' hook to hook library
 + merge: convert post-merge to use hook.h
 + am: convert applypatch-msg to use hook.h
 + rebase: convert pre-rebase to use hook.h
 + hook API: add a run_hooks_l() wrapper
 + am: convert {pre,post}-applypatch to use hook.h
 + gc: use hook library for pre-auto-gc hook
 + hook API: add a run_hooks() wrapper
 + hook: add 'run' subcommand

 More "config-based hooks".
 source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>


* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 84da10b057)
 + merge-ort: avoid assuming all renames detected

 The merge-ort misbehaved when merge.renameLimit configuration is
 set too low and failed to find all renames.
 source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>


* en/plug-leaks-in-merge (2022-01-21) 2 commits
  (merged to 'next' on 2022-01-26 at 0cf6aa0a2b)
 + merge: fix memory leaks in cmd_merge()
 + merge-ort: fix memory leak in merge_ort_internal()

 Leakfix.
 source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>


* fs/ssh-signing-crlf (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-19 at 76b86faafb)
 + gpg-interface: trim CR from ssh-keygen

 The code path that verifies signatures made with ssh were made to
 work better on a system with CRLF line endings.
 source: <20220107090735.580225-1-fs@gigacodes.de>


* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
  (merged to 'next' on 2022-01-20 at e7616428eb)
 + fetch: help translators by reusing the same message template
  (merged to 'next' on 2022-01-19 at 0f15147cfa)
 + fetch --negotiate-only: do not update submodules
 + fetch: skip tasks related to fetching objects
 + fetch: use goto cleanup in cmd_fetch()

 "git fetch --negotiate-only" is an internal command used by "git
 push" to figure out which part of our history is missing from the
 other side.  It should never recurse into submodules even when
 fetch.recursesubmodules configuration variable is set, nor it
 should trigger "gc".  The code has been tightened up to ensure it
 only does common ancestry discovery and nothing else.
 source: <20220119000056.58503-1-chooglen@google.com>


* jc/find-header (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 8a13b4f0b3)
 + receive-pack.c: consolidate find header logic

 Code clean-up.
 source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>


* jc/mem-pool-alignment (2022-01-24) 1 commit
  (merged to 'next' on 2022-01-26 at 057b6a78f5)
 + mem-pool: don't assume uintmax_t is aligned enough for all types

 Update the logic to compute alignment requirement for our mem-pool.
 source: <20220123203347.74869-1-jrtc27@jrtc27.com>


* jc/name-rev-stdin (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-19 at a58e05fabe)
 + name-rev.c: use strbuf_getline instead of limited size buffer
 + name-rev: deprecate --stdin in favor of --annotate-stdin

 "git name-rev --stdin" does not behave like usual "--stdin" at
 all.  Start the process of renaming it to "--annotate-stdin".
 source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>


* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
  (merged to 'next' on 2022-01-10 at 329fd6e09a)
 + stable-qsort: avoid using potentially unaligned access
 + compat/qsort_s.c: avoid using potentially unaligned access

 Fix a hand-rolled alloca() imitation that may have violated
 alignment requirement of data being sorted in compatibility
 implementation of qsort_s() and stable qsort().
 source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
 source: <xmqqzgo76xpj.fsf@gitster.g>


* jc/reflog-parse-options (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-12 at 1659e49c4b)
 + builtin/reflog.c: use parse-options api for expire, delete subcommands
 + Merge branch 'ab/reflog-prep' into jc/reflog-parse-options

 Use the parse-options API in "git reflog" command.
 source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>


* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 49d529bfd7)
 + git-p4: fix instantiation of CalledProcessError
 (this branch is used by jh/p4-various-fixups.)

 source: <20220106214156.90967-1-jholdsworth@nvidia.com>


* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
  (merged to 'next' on 2022-01-10 at 54b36b4e66)
 + git-p4: don't print shell commands as python lists
 + git-p4: pass command arguments as lists instead of using shell
 + git-p4: don't select shell mode using the type of the command argument
 (this branch is used by jh/p4-various-fixups.)

 source: <20220106214035.90725-1-jholdsworth@nvidia.com>


* js/sparse-vs-split-index (2022-01-23) 3 commits
  (merged to 'next' on 2022-01-26 at 7443487955)
 + split-index: it really is incompatible with the sparse index
 + t1091: disable split index
 + sparse-index: sparse index is disallowed when split index is active

 Mark in various places in the code that the sparse index and the
 split index features are mutually incompatible.
 source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>


* js/test-unset-trace2-parents (2022-01-20) 1 commit
  (merged to 'next' on 2022-01-20 at ebb085e3e4)
 + test-lib: unset trace2 parent envvars

 Avoid tests that are run under GIT_TRACE2 set from failing
 unnecessarily.
 source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>


* jt/clone-not-quite-empty (2022-01-26) 1 commit
  (merged to 'next' on 2022-01-26 at c3bb39676e)
 + clone: support unusual remote ref configurations

 Cloning from a repository that does not yet have any branches or
 tags but has other refs resulted in a "remote transport reported
 error", which has been corrected.
 source: <20220124180909.2437002-1-jonathantanmy@google.com>


* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
  (merged to 'next' on 2022-01-19 at 3c2df266eb)
 + config: include file if remote URL matches a glob
 + config: make git_config_include() static

 The conditional inclusion mechanism of configuration files using
 "[includeIf <condition>]" learns to base its decision on the
 URL of the remote repository the repository interacts with.
 source: <cover.1642527965.git.jonathantanmy@google.com>


* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
  (merged to 'next' on 2022-01-26 at 5611ce9047)
 + sparse-checkout: create leading directory

 "git sparse-checkout init" failed to write into $GIT_DIR/info
 directory when the repository was created without one, which has
 been corrected to auto-create it.
 source: <20220121174441.3991963-1-jonathantanmy@google.com>


* ms/update-index-racy (2022-01-07) 4 commits
  (merged to 'next' on 2022-01-14 at 705a33f63b)
 + update-index: refresh should rewrite index in case of racy timestamps
 + t7508: add tests capturing racy timestamp handling
 + t7508: fix bogus mtime verification
 + test-lib: introduce API for verifying file mtime

 "git update-index --refresh" has been taught to deal better with
 racy timestamps (just like "git status" already does).
 source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>


* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
  (merged to 'next' on 2022-01-14 at 83a388a7e2)
 + pull --rebase: honor rebase.autostash when fast-forwarding

 "git pull --rebase" ignored the rebase.autostash configuration
 variable when the remote history is a descendant of our history,
 which has been corrected.
 source: <xmqqr19aayxp.fsf@gitster.g>


* po/readme-mention-contributor-hints (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 7e14690eb9)
 + README.md: add CodingGuidelines and a link for Translators

 Doc update.
 source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>


* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
  (merged to 'next' on 2022-01-19 at ea57b2c9a6)
 + builtin add -p: fix hunk splitting
 + t3701: clean up hunk splitting tests

 "git add -p" rewritten in C regressed hunk splitting in some cases,
 which has been corrected.
 source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>


* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-10 at 32497a67d5)
 + apply: use strsets to track symlinks

 "git apply" (ab)used the util pointer of the string-list to keep
 track of how each symbolic link needs to be handled, which has been
 simplified by using strset.
 source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>


* rs/grep-expr-cleanup (2022-01-06) 4 commits
  (merged to 'next' on 2022-01-10 at b70a3bb0fa)
 + grep: use grep_and_expr() in compile_pattern_and()
 + grep: extract grep_binexp() from grep_or_expr()
 + grep: use grep_not_expr() in compile_pattern_not()
 + grep: use grep_or_expr() in compile_pattern_or()

 Code clean-up.
 source: <cover.1641498525.git.me@ttaylorr.com>


* tl/doc-cli-options-first (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 9ec14cfe73)
 + git-cli.txt: clarify "options first and then args"

 We explain that revs come first before the pathspec among command
 line arguments, but did not spell out that dashed options come
 before other args, which has been corrected.
 source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>

--------------------------------------------------
[New Topics]

* ab/t0051-skip-on-non-windows (2022-02-04) 1 commit
 - t0051: use "skip_all" under !MINGW in single-test file

 Conditional test update.

 Will merge to 'next'.
 source: <patch-v2-1.1-1bc93bcba4b-20220204T134208Z-avarab@gmail.com>


* ab/hash-object-leakfix (2022-02-06) 1 commit
 - hash-object: fix a trivial leak in --path

 Trivial leakfix.

 Will merge to 'next'.
 source: <patch-1.1-53863df1455-20220205T000422Z-avarab@gmail.com>


* ab/release-transport-ls-refs-options (2022-02-06) 1 commit
 - ls-remote & transport API: release "struct transport_ls_refs_options"

 Will merge to 'next'.
 source: <patch-1.1-e80e8f64eae-20220205T000809Z-avarab@gmail.com>


* js/bisect-in-c (2022-02-09) 11 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in.
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect: move even the option parsing to `bisect--helper`
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect run: fix the error message

 Final bits of "git bisect.sh" have been rewritten in C.
 source: <pull.1132.git.1643328752.gitgitgadget@gmail.com>


* js/scalar-diagnose (2022-02-06) 6 commits
 - scalar: teach `diagnose` to gather loose objects information
 - scalar: teach `diagnose` to gather packfile info
 - scalar diagnose: include disk space information
 - scalar: add `diagnose`
 - scalar: validate the optional enlistment argument
 - archive: optionally add "virtual" files

 source: <pull.1128.v2.git.1644187146.gitgitgadget@gmail.com>


* js/short-help-outside-repo-fix (2022-02-08) 2 commits
 - t0012: verify that built-ins handle `-h` even without gitdir
 - checkout/fetch/pull/pack-objects: allow `-h` outside a repository

 "git cmd -h" outside a repository should error out cleanly for many
 commands, but instead it hit a BUG(), which has been corrected.

 Will merge to 'next'.
 source: <pull.1139.v2.git.1644319314.gitgitgadget@gmail.com>


* tb/midx-no-bitmap-for-no-objects (2022-02-09) 1 commit
 - midx: prevent writing a .bitmap without any objects

 When there is no object to write .bitmap file for, "git
 multi-pack-index" triggered an error, instead of just skipping,
 which has been corrected.

 Will merge to 'next'.
 source: <abc67d757cb6b244cf54b7b030985180ce134724.1644434802.git.me@ttaylorr.com>


* jc/cat-file-batch-commands (2022-02-08) 3 commits
 . cat-file: add --batch-command mode
 . cat-file: introduce batch_command enum to replace print_contents
 . cat-file: rename cmdmode to transform_mode


 Seems to make tests hang.
 source: <pull.1212.v3.git.git.1644353884.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* je/http-better-error-output (2021-12-03) 1 commit
 . http-backend: give a hint that web browser access is not supported

 When the http-backend program, which is the server-side component
 for the smart HTTP transport, sends a "404 Not found" error, we
 deliberately did not say anything to the requesting client.  We now
 send a message back to the browser to tell the user that they do
 not want to visit the URL via their browser, instead of a totally
 blank page.

 Expecting a reroll.
 Breaks its self tests.
 cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
 source: <20211202102855.23907-1-jengelh@inai.de>


* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
 - fixup! editor: allow for saving/restoring terminal state
 - editor: allow for saving/restoring terminal state
 - terminal: teach save_term to fail when not foreground

 Some editors are reported to leave the terminal in funny state
 after they exit on Windows.  Work it around by saving and restoring
 the terminal state when needed.

 Expecting a reroll.
 cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
 source: <20211202035446.1154-1-carenas@gmail.com>

--------------------------------------------------
[Cooking]

* ar/submodule-update (2022-02-08) 16 commits
 . submodule: move core cmd_update() logic to C
 . submodule--helper: move functions around
 . submodule--helper update-clone: learn --init
 . submodule--helper: remove ensure-core-worktree
 . submodule--helper run-update-procedure: learn --remote
 . submodule--helper run-update-procedure: remove --suboid
 . submodule--helper: reorganize code for sh to C conversion
 . submodule--helper: remove update-module-mode
 . submodule tests: test for init and update failure output
 . submodule--helper: don't use bitfield indirection for parse_options()
 . builtin/submodule--helper.c: rename option variables to "opt"
 . builtin/submodule--helper.c: reformat designated initializers
 . submodule--helper: run update using child process struct
 . submodule--helper: allow setting superprefix for init_submodule()
 . submodule--helper: refactor get_submodule_displaypath()
 . submodule--helper: get remote names from any repository

 Rewrite of "git submodule update" in C.

 Does not seem to play well with other topics in flight.
 source: <20220208083952.35036-1-chooglen@google.com>


* pw/use-in-process-checkout-in-rebase (2022-01-26) 14 commits
 - rebase -m: don't fork git checkout
 - rebase --apply: set ORIG_HEAD correctly
 - rebase --apply: fix reflog
 - reset_head(): take struct rebase_head_opts
 - rebase: cleanup reset_head() calls
 - create_autostash(): remove unneeded parameter
 - reset_head(): make default_reflog_action optional
 - reset_head(): factor out ref updates
 - reset_head(): remove action parameter
 - rebase --apply: don't run post-checkout hook if there is an error
 - rebase: do not remove untracked files on checkout
 - rebase: pass correct arguments to post-checkout hook
 - t5403: refactor rebase post-checkout hook tests
 - rebase: factor out checkout for up to date branch

 Use an internal call to reset_head() helper function instead of
 spawning "git checkout" in "rebase", and update code paths that are
 involved in the change.

 Will merge to 'next'.
 source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>


* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
  (merged to 'next' on 2022-02-04 at d98254efe0)
 + refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
 + sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure

 Remaining code-clean-up.

 Will merge to 'master'.
 source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>


* gh/doc-typos (2022-01-26) 2 commits
  (merged to 'next' on 2022-02-04 at b71e1bc746)
 + Documentation/config/pgp.txt: add missing apostrophe
 + Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>

 Typofix.

 Will merge to 'master'.
 source: <20220126121426.53799-1-greg@hurrell.net>


* jc/doc-log-messages (2022-01-27) 3 commits
  (merged to 'next' on 2022-02-04 at cf136572ce)
 + SubmittingPatches: explain why we care about log messages
 + CodingGuidelines: hint why we value clearly written log messages
 + SubmittingPatches: write problem statement in the log in the present tense

 Update the contributor-facing documents on proposed log messages.

 Will merge to 'master'.
 source: <20220126234205.2923388-1-gitster@pobox.com>


* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
  (merged to 'next' on 2022-02-08 at 95a8a91e97)
 + repo-settings: rename the traditional default fetch.negotiationAlgorithm
 + repo-settings: fix error handling for unknown values
 + repo-settings: fix checking for fetch.negotiationAlgorithm=default

 Fix interaction between fetch.negotiationAlgorithm and
 feature.experimental configuration variables.

 Will merge to 'master'.
 source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>


* en/sparse-checkout-leakfix (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-04 at 10ca176008)
 + sparse-checkout: fix a couple minor memory leaks

 Leakfix.

 Will merge to 'master'.
 source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>


* js/diff-filter-negation-fix (2022-01-28) 3 commits
  (merged to 'next' on 2022-02-08 at fe004a4c2c)
 + diff-filter: be more careful when looking for negative bits
 + diff.c: move the diff filter bits definitions up a bit
 + docs(diff): lose incorrect claim about `diff-files --diff-filter=A`

 "git diff --diff-filter=aR" is now parsed correctly.

 Will merge to 'master'.
 source: <f1f027ad61beb1bd0dee73acbffdee5c0f967e9a.1643371370.git.gitgitgadget@gmail.com>


* js/no-more-legacy-stash (2022-01-27) 4 commits
  (merged to 'next' on 2022-02-08 at 5cecfdbd58)
 + stash: stop warning about the obsolete `stash.useBuiltin` config setting
 + stash: remove documentation for `stash.useBuiltin`
 + add: remove support for `git-legacy-stash`
 + git-sh-setup: remove remnant bits referring to `git-legacy-stash`

 Removal of unused code and doc.

 Will merge to 'master'.
 source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>


* js/scalar-global-options (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-09 at 8af744524c)
 + scalar: accept -C and -c options before the subcommand

 Scalar update.

 Will merge to 'master'.
 source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>


* rc/negotiate-only-typofix (2022-01-28) 1 commit
  (merged to 'next' on 2022-02-04 at 62b947ddbf)
 + fetch: fix negotiate-only error message

 Typofix.

 Will merge to 'master'.
 source: <20220128143602.31842-1-robert@coup.net.nz>


* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
 - receive-pack: check if client is alive before completing the push

 "git push" may be killed by the user when the server side has
 finished receiving all data and is about to commit the result.
 Give the latter a better chance to notice such situation and abort
 processing the ref updates.

 Needs more work?
 cf. <220204.864k5e4yvf.gmgdl@evledraar.gmail.com>
 source: <20220128194811.3396281-1-robin.jarry@6wind.com>


* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at 8665cb204a)
 + patch-id: fix scan_hunk_header on diffs with 1 line of before/after
 + patch-id: fix antipatterns in tests

 Unlike "git apply", "git patch-id" did not handle patches with
 hunks that has only 1 line in either preimage or postimage, which
 has been corrected.

 Will merge to 'master'.
 source: <20220202041945.10077-1-jerry@skydio.com>
 source: <20220202042015.10115-1-jerry@skydio.com>


* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
  (merged to 'next' on 2022-02-04 at 8af6ab286d)
 + fetch --prune: exit with error if pruning fails

 When "git fetch --prune" failed to prune the refs it wanted to
 prune, the command issued error messages but exited with exit
 status 0, which has been corrected.

 Will merge to 'master'.
 source: <20220131133047.1885074-1-t.gummerer@gmail.com>


* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
  (merged to 'next' on 2022-02-08 at 1a8001f83e)
 + perl Git.pm: don't ignore signalled failure in _cmd_close()

 Git.pm update.

 Will merge to 'master'.
 source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>


* ab/object-file-api-updates (2022-02-04) 11 commits
 - object-file API: pass an enum to read_object_with_reference()
 - object-file.c: add a literal version of write_object_file_prepare()
 - object-file API: have hash_object_file() take "enum object_type"
 - object API: rename hash_object_file_literally() to write_*()
 - object-file API: split up and simplify check_object_signature()
 - object API: make check_object_signature() oideq()-like, move docs
 - object API: correct "buf" v.s. "map" mismatch in *.c and *.h
 - object-file API: have write_object_file() take "enum object_type"
 - object-file API: add a format_object_header() function
 - object-file API: return "void", not "int" from hash_object_file()
 - object-file.c: split up declaration of unrelated variables

 Object-file API shuffling.
 source: <cover-v2-00.11-00000000000-20220204T135005Z-avarab@gmail.com>


* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
 - receive-pack: purge temporary data if no command is ready to run

 Check if "receive-pack" will do any ref updates (various conditions
 could reject a push) before received objects are taken out of the
 temporary directory used for quarantine purposes, so that a push
 that is known-to-fail will not leave crufts that a future "gc"
 needs to clean up.

 Will merge to 'next'.
 source: <20220129063538.24038-1-bojun.cbj@gmail.com>


* hn/reftable-tests (2022-01-31) 3 commits
  (merged to 'next' on 2022-02-09 at 5e22946a1f)
 + t5312: prepare for reftable
 + t1405: mark test that checks existence as REFFILES
 + t1405: explictly delete reflogs for reftable

 Prepare more test scripts for the introduction of reftable.

 Will merge to 'master'.
 source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>


* ja/i18n-common-messages (2022-02-04) 4 commits
 - i18n: fix some misformated placeholders in command synopsis
 - i18n: remove from i18n strings that do not hold translatable parts
 - i18n: factorize "invalid value" messages
 - i18n: factorize more 'incompatible options' messages

 Unify more messages to help l10n.

 Will merge to 'next'?
 source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>


* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
  (merged to 'next' on 2022-02-09 at 849450010e)
 + subtree: force merge commit

 When "git subtree" wants to create a merge, it used "git merge" and
 let it be affected by end-user's "merge.ff" configuration, which
 has been corrected.

 Will merge to 'master'.
 source: <20220201172601.262718-1-aclopte@gmail.com>


* ab/complete-show-all-commands (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at be3b7cf4e4)
 + completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
 + completion tests: re-source git-completion.bash in a subshell

 The command line completion script (in contrib/) learns an option
 to complete all Git subcommands, including the ones that are
 normally hidden.

 Will merge to 'master'.
 source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>


* en/merge-tree (2022-02-02) 16 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: allow update messages to be written to different file stream
 - merge-ort: split out a separate display_update_messages() function
 - diff: allow diff_warn_rename_limit to write somewhere besides stderr
 - Introduce a variant of the `warning()` function that takes a `FILE *`
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()
 - Merge branch 'en/remerge-diff' into en/merge-trees
 (this branch uses en/remerge-diff.)

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.
 source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>


* ll/doc-mktree-typofix (2022-02-02) 1 commit
  (merged to 'next' on 2022-02-08 at fe98063f1a)
 + fix typo in git-mktree.txt

 Typofix.

 Will merge to 'master'.
 source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>


* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
  (merged to 'next' on 2022-02-09 at 47631df376)
 + doc: check-ignore: code-quote an exclamation mark

 Typofix.

 Will merge to 'master'.
 source: <20220203101643.1987-1-philipoakley@iee.email>


* sy/diff-usage-typofix (2022-02-02) 1 commit
  (merged to 'next' on 2022-02-04 at 28a4186a44)
 + builtin/diff.c: fix "git-diff" usage string typo

 Typofix.

 Will merge to 'master'.
 source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>


* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
  (merged to 'next' on 2022-02-09 at 8b7ecb4e99)
 + t/lib-read-tree-m-3way: indent with tabs
 + t/lib-read-tree-m-3way: modernize style

 Style updates on a test script helper.

 Will merge to 'master'.
 source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>


* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
  (merged to 'next' on 2022-02-08 at 9922938a6a)
 + compat: auto-detect if zlib has uncompress2()

 Notice older zlib to enable our replacement uncompress2()
 automatically.

 Will merge to 'master'.
 source: <xmqqr18x3s5s.fsf@gitster.g>


* js/apply-partial-clone-filters-recursively (2022-02-09) 1 commit
 - clone, submodule: pass partial clone filters to submodules

 "git clone --filter=... --recurse-submodules" only makes the
 top-level a partial clone, while submodules are fully cloned.  This
 behaviour is changed to pass the same filter down to the submodules.

 Will merge to 'next'?
 source: <690d2316ad518ea4551821b2b3aa652996858475.1644034886.git.steadmon@google.com>


* rs/parse-options-lithelp-help (2022-01-20) 1 commit
  (merged to 'next' on 2022-02-04 at 74bc57e8fa)
 + parse-options: document bracketing of argh

 Comment update.

 Will merge to 'master'.
 source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>


* jh/p4-various-fixups (2022-01-16) 23 commits
 . git-p4: seperate multiple statements onto seperate lines
 . git-p4: move inline comments to line above
 . git-p4: only seperate code blocks by a single empty line
 . git-p4: compare to singletons with "is" and "is not"
 . git-p4: normalize indentation of lines in conditionals
 . git-p4: ensure there is a single space around all operators
 . git-p4: ensure every comment has a single #
 . git-p4: remove spaces between dictionary keys and colons
 . git-p4: remove redundant backslash-continuations inside brackets
 . git-p4: remove extraneous spaces before function arguments
 . git-p4: place a single space after every comma
 . git-p4: removed brackets when assigning multiple return values
 . git-p4: remove spaces around default arguments
 . git-p4: remove padding from lists, tuples and function arguments
 . git-p4: sort and de-duplcate pylint disable list
 . git-p4: remove commented code
 . git-p4: convert descriptive class and function comments into docstrings
 . git-p4: improve consistency of docstring formatting
 . git-p4: indent with 4-spaces
 . git-p4: remove unneeded semicolons from statements
 . git-p4: add blank lines between functions and class definitions
 . Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
 . Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups

 Various cleanups to "git p4".

 Breaks its own test suite.
 source: <20220116160550.514637-1-jholdsworth@nvidia.com>


* rs/bisect-executable-not-found (2022-01-19) 4 commits
 - bisect--helper: double-check run command on exit code 126 and 127
 - bisect: document run behavior with exit codes 126 and 127
 - bisect--helper: release strbuf and strvec on run error
 - bisect--helper: report actual bisect_state() argument on error

 A not-so-common mistake is to write a script to feed "git bisect
 run" without making it executable, in which case all tests will
 exit with 126 or 127 error codes, even on revisions that are marked
 as good.  Try to recoginse this situation and stop iteration early.

 Will merge to 'next'?
 source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>


* ds/sparse-checkout-requires-per-worktree-config (2022-02-08) 6 commits
 - config: make git_configset_get_string_tmp() private
 - worktree: copy sparse-checkout patterns and config on add
 - sparse-checkout: set worktree-config correctly
 - config: add repo_config_set_worktree_gently()
 - worktree: create init_worktree_config()
 - Documentation: add extensions.worktreeConfig details

 "git sparse-checkout" wants to work with per-worktree configration,
 but did not work well in a worktree attached to a bare repository.

 Will merge to 'next'?
 cf. <20220204081336.3194538-1-newren@gmail.com>
 cf. <CAPig+cRrRxuTeByhKkLs_KDaWY8-r4+jrwT83A-r+sBQsmebMw@mail.gmail.com>
 source: <pull.1101.v6.git.1644269583.gitgitgadget@gmail.com>


* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
 - refs: skip hooks when deleting uncovered packed refs
 - refs: do not execute reference-transaction hook on packing refs
 - refs: demonstrate excessive execution of the reference-transaction hook
 - refs: allow skipping the reference-transaction hook
 - refs: allow passing flags when beginning transactions
 - refs: extract packed_refs_delete_refs() to allow control of transaction

 Because a deletion of ref would need to remove it from both the
 loose ref store and the packed ref store, a delete-ref operation
 that logically removes one ref may end up invoking ref-transaction
 hook twice, which has been corrected.

 Will merge to 'next'.
 source: <cover.1642406989.git.ps@pks.im>


* ld/sparse-index-bash-completion (2022-02-08) 3 commits
  (merged to 'next' on 2022-02-08 at ac1e968ab8)
 + completion: handle unusual characters for sparse-checkout
 + completion: improve sparse-checkout cone mode directory completion
 + completion: address sparse-checkout issues

 The command line completion (in contrib/) learns to complete
 arguments give to "git sparse-checkout" command.

 Will merge to 'master'.
 source: <pull.1108.v7.git.1644255105.gitgitgadget@gmail.com>


* bc/clarify-eol-attr (2022-01-12) 2 commits
  (merged to 'next' on 2022-02-04 at dc1db4bd21)
 + docs: correct documentation about eol attribute
 + t0027: add tests for eol without text in .gitattributes

 Doc and test update around the eol attribute.

 Will merge to 'master'.
 source: <20220111021507.531736-1-sandals@crustytoothpaste.net>


* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
  (merged to 'next' on 2022-02-09 at f26a82c66a)
 + git-rev-list: add --exclude-first-parent-only flag

 "git log" and friends learned an option --exclude-first-parent-only
 to propagate UNINTERESTING bit down only along the first-parent
 chain, just like --first-parent option shows commits that lack the
 UNINTERESTING bit only along the first-parent chain.

 Will merge to 'master'.
 source: <20220111213941.30129-1-jerry@skydio.com>


* en/present-despite-skipped (2022-01-14) 6 commits
 - Accelerate clear_skip_worktree_from_present_files() by caching
 - Update documentation related to sparsity and the skip-worktree bit
 - repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
 - unpack-trees: fix accidental loss of user changes
 - t1011: add testcase demonstrating accidental loss of user modifications
 - Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
 (this branch uses vd/sparse-clean-etc.)

 In sparse-checkouts, files mis-marked as missing from the working tree
 could lead to later problems.  Such files were hard to discover, and
 harder to correct.  Automatically detecting and correcting the marking
 of such files has been added to avoid these problems.

 Will merge to 'next'?
 cf. <20220204081336.3194538-1-newren@gmail.com>
 source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>


* bc/csprng-mktemps (2022-01-17) 2 commits
  (merged to 'next' on 2022-02-04 at 2e32375c73)
 + wrapper: use a CSPRNG to generate random file names
 + wrapper: add a helper to generate numbers from a CSPRNG

 Pick a better random number generator and use it when we prepare
 temporary filenames.

 Will merge to 'master'.
 source: <20220117215617.843190-1-sandals@crustytoothpaste.net>


* vd/sparse-clean-etc (2022-01-13) 9 commits
  (merged to 'next' on 2022-02-09 at 5928dbd25e)
 + update-index: reduce scope of index expansion in do_reupdate
 + update-index: integrate with sparse index
 + update-index: add tests for sparse-checkout compatibility
 + checkout-index: integrate with sparse index
 + checkout-index: add --ignore-skip-worktree-bits option
 + checkout-index: expand sparse checkout compatibility tests
 + clean: integrate with sparse index
 + reset: reorder wildcard pathspec conditions
 + reset: fix validation in sparse index test
 (this branch is used by en/present-despite-skipped.)

 "git update-index", "git checkout-index", and "git clean" are
 taught to work better with the sparse checkout feature.

 Will merge to 'master'.
 source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>


* en/remerge-diff (2022-02-02) 11 commits
  (merged to 'next' on 2022-02-08 at 68b9a8a38b)
 + diff-merges: avoid history simplifications when diffing merges
 + merge-ort: mark conflict/warning messages from inner merges as omittable
 + show, log: include conflict/warning messages in --remerge-diff headers
 + diff: add ability to insert additional headers for paths
 + merge-ort: format messages slightly different for use in headers
 + merge-ort: mark a few more conflict messages as omittable
 + merge-ort: capture and print ll-merge warnings in our preferred fashion
 + ll-merge: make callers responsible for showing warnings
 + log: clean unneeded objects during `log --remerge-diff`
 + show, log: provide a --remerge-diff capability
 + Merge branch 'ns/tmp-objdir' into en/remerge-diff
 (this branch is used by en/merge-tree.)

 "git log --remerge-diff" shows the difference from mechanical merge
 result and the merge result that is actually recorded.

 Will merge to 'master'.
 source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>


* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
 - fixup! fetch-pack: parameterize message containing 'ready' keyword
 - fetch-pack: parameterize message containing 'ready' keyword

 L10n support for a few error messages.

 Expecting an ack for fixup.
 source: <20211222075805.19027-1-bagasdotme@gmail.com>


* gc/branch-recurse-submodules (2022-02-04) 7 commits
 - branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
 - branch: add --recurse-submodules option for branch creation
 - builtin/branch: consolidate action-picking logic in cmd_branch()
 - branch: add a dry_run parameter to create_branch()
 - branch: make create_branch() always create a branch
 - branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
 - Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

 "git branch" learned the "--recurse-submodules" option.

 Will merge to 'next'.
 source: <20220129000446.99261-1-chooglen@google.com>


* hn/reftable-coverity-fixes (2022-01-20) 17 commits
  (merged to 'next' on 2022-02-08 at 1baf327a66)
 + reftable: add print functions to the record types
 + reftable: make reftable_record a tagged union
 + reftable: remove outdated file reftable.c
 + reftable: implement record equality generically
 + reftable: make reftable-record.h function signatures const correct
 + reftable: handle null refnames in reftable_ref_record_equal
 + reftable: drop stray printf in readwrite_test
 + reftable: order unittests by complexity
 + reftable: all xxx_free() functions accept NULL arguments
 + reftable: fix resource warning
 + reftable: ignore remove() return value in stack_test.c
 + reftable: check reftable_stack_auto_compact() return value
 + reftable: fix resource leak blocksource.c
 + reftable: fix resource leak in block.c error path
 + reftable: fix OOB stack write in print functions
 + Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
 + Merge branch 'hn/reftable' into hn/reftable-coverity-fixes

 Problems identified by Coverity in the reftable code have been
 corrected.

 Will merge to 'master'.
 source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>


* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
  (merged to 'next' on 2022-02-08 at a8cc333d78)
 + pack-bitmap.c: gracefully fallback after opening pack/MIDX
 + midx: read `RIDX` chunk when present
 + t/lib-bitmap.sh: parameterize tests over reverse index source
 + t5326: move tests to t/lib-bitmap.sh
 + t5326: extract `test_rev_exists`
 + t5326: drop unnecessary setup
 + pack-revindex.c: instrument loading on-disk reverse index
 + midx.c: make changing the preferred pack safe
 + t5326: demonstrate bitmap corruption after permutation

 A bug that made multi-pack bitmap and the object order out-of-sync
 (hence the .midx data gets corrupted) has been fixed.

 Will merge to 'master'.
 source: <cover.1643150456.git.me@ttaylorr.com>


* ab/grep-patterntype (2022-02-04) 9 commits
 - grep: simplify config parsing and option parsing
 - grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
 - grep.h: make "grep_opt.pattern_type_option" use its enum
 - grep API: call grep_config() after grep_init()
 - grep.c: don't pass along NULL callback value
 - built-ins: trust the "prefix" from run_builtin()
 - grep tests: add missing "grep.patternType" config tests
 - log tests: check if grep_config() is called by "log"-like cmds
 - grep.h: remove unused "regex_t regexp" from grep_opt

 Some code clean-up in the "git grep" machinery.

 Looking good, except for the last step.
 Code-wise, it is tempted to call it a victory after squashing the
 fix-up in, but that does not fix the proposed log message, so...

 Expecting a reroll to update its tests, but otherwise looks ready.
 cf. <xmqqv8xui5ah.fsf@gitster.g>
 cf. <xmqqmtj6jkuk.fsf@gitster.g>
 source: <cover-v10-0.9-00000000000-20220204T211534Z-avarab@gmail.com>


* js/use-builtin-add-i (2021-12-01) 2 commits
 - add -i: default to the built-in implementation
 - t2016: require the PERL prereq only when necessary

 "git add -i" was rewritten in C some time ago and has been in
 testing; the reimplementation is now exposed to general public by
 default.

 On hold.

 What's the status of the "known breakage"?
 Are we ready to switch if we wanted to?
 There are known breakages on macOS.
 cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
 source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>


* ab/ambiguous-object-name (2022-01-27) 7 commits
 - object-name: re-use "struct strbuf" in show_ambiguous_object()
 - object-name: iterate ambiguous objects before showing header
 - object-name: show date for ambiguous tag objects
 - object-name: make ambiguous object output translatable
 - object-name: explicitly handle bad tags in show_ambiguous_object()
 - object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
 - object-name tests: add tests for ambiguous object blind spots

 Error output given in response to an ambiguous object name has been
 improved.

 Will merge to 'next'?
 source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>


* tl/ls-tree-oid-only (2022-02-08) 13 commits
 - ls-tree.c: support --object-only option for "git-ls-tree"
 - ls-tree: introduce function "fast_path()"
 - ls-tree.c: introduce "--format" option
 - cocci: allow padding with `strbuf_addf()`
 - ls-tree: introduce struct "show_tree_data"
 - ls-tree: slightly refactor `show_tree()`
 - ls-tree: fix "--name-only" and "--long" combined use bug
 - ls-tree: simplify nesting if/else logic in "show_tree()"
 - ls-tree: rename "retval" to "recurse" in "show_tree()"
 - ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
 - ls-tree: use "enum object_type", not {blob,tree,commit}_type
 - ls-tree: add missing braces to "else" arms
 - ls-tree: remove commented-out code

 "git ls-tree" learns "--oid-only" option, similar to "--name-only",
 and more generalized "--format" option.
 source: <cover.1644319434.git.dyroneteng@gmail.com>


* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
 - fixup! t7527: create test for fsmonitor--daemon
 - fixup! t/perf/p7519: speed up test on Windows
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - fsmonitor: force update index after large responses
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon: periodically truncate list of modified files
 - t/perf/p7519: add fsmonitor--daemon test cases
 - t/perf/p7519: speed up test on Windows
 - t/helper/test-chmtime: skip directories on Windows
 - t/perf: avoid copying builtin fsmonitor files into test repo
 - t7527: create test for fsmonitor--daemon
 - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
 - help: include fsmonitor--daemon feature flag in version info
 - fsmonitor--daemon: implement handle_client callback
 - compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 - compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
 - compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement 'start' command
 - fsmonitor--daemon: implement 'run' command
 - compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 - compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement 'stop' and 'status' commands
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: document builtin fsmonitor
 - fsmonitor: use IPC to query the builtin FSMonitor daemon
 - fsmonitor: config settings are repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - fsmonitor: enhance existing comments

 Built-in fsmonitor (part 2).

 Expecting a reroll.
 Seems that the discussion stalled.
 cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
 source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>


* es/superproject-aware-submodules (2022-02-03) 4 commits
 - submodule: record superproject gitdir during 'update'
 - submodule: record superproject gitdir during absorbgitdirs
 - introduce submodule.superprojectGitDir record
 - t7400-submodule-basic: modernize inspect() helper

 A configuration variable in a submodule points at the location of
 the superproject it is bound to (RFC).
 source: <20220203215914.683922-1-emilyshaffer@google.com>


* ab/only-single-progress-at-once (2022-02-03) 9 commits
 - pack-bitmap-write.c: don't return without stop_progress()
 - progress API: unify stop_progress{,_msg}(), fix trace2 bug
 - progress.c: refactor stop_progress{,_msg}() to use helpers
 - progress.c: use dereferenced "progress" variable, not "(*p_progress)"
 - progress.h: format and be consistent with progress.c naming
 - progress.c tests: test some invalid usage
 - progress.c tests: make start/stop commands on stdin
 - progress.c test helper: add missing braces
 - leak tests: fix a memory leak in "test-progress" helper

 Further tweaks on progress API.

 Will merge to 'next'?
 source: <cover-v9-0.9-00000000000-20220203T213350Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* Re: [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix)
  2010-08-17  7:46  3% ` Ævar Arnfjörð Bjarmason
@ 2010-08-17  8:10  3%   ` Jonathan Nieder
  0 siblings, 0 replies; 200+ results
From: Jonathan Nieder @ 2010-08-17  8:10 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason
  Cc: git, Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

Ævar Arnfjörð Bjarmason wrote:
> On Tue, Aug 17, 2010 at 06:51, Jonathan Nieder <jrnieder@gmail.com> wrote:

>> Patches 8-10 expose functionality used by merge when handling octopus
>> merges.
>
> You mean 9-10, 8 looks good. I don't have the familiarity to comment
> on 9-10.

I would be especially interested in feedback on the interface from
those two. ;-)

Is merge-base the right command to learn --independent?

Is --independent the right name for "reduced parent list"?

Is merge-base --octopus generally useful at all, or should we change
the API for custom octopus strategies (maybe at the same time as
teaching them to declare NO_TRIVIAL and NO_FAST_FORWARD preferences)
to leave the list of merge bases out?

>> Patches 12 and later are ports of various patches to builtin/merge.c.
>> I did the bare minimum to make tests pass. :)
>
> Those also look good to my untrained eye.

Thanks for looking them over.

> How do you run the tests against git-merge.sh? Is there some make
> target to use it instead of git-merge.c, or do you manually move it in
> place?

Ah, yes, I should have made that information more prominent.

To test: remove cmd_merge from the builtins list in git.c,
build git, and then run:

 cp contrib/examples/git-merge.sh .
 make SCRIPT_SH=git-merge.sh git-merge
 cd t && make

> If it's the latter a switch somewhere to run the test suite against
> these .sh alternatives might compliment this series nicely.

Yes, that sounds like an good idea.  Of course most of the retired
scripts are bitrotted by now.

^ permalink raw reply	[relevance 3%]

* [PATCH] merge: Fix English grammar in please-commit-before-merge message.
@ 2015-10-02  4:25  3% Alex Henrie
  0 siblings, 0 replies; 200+ results
From: Alex Henrie @ 2015-10-02  4:25 UTC (permalink / raw)
  To: pyokagan, avarab, gitster, git; +Cc: Alex Henrie

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
---
 advice.c                     | 2 +-
 contrib/examples/git-pull.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/advice.c b/advice.c
index 4965686..4dc5cf1 100644
--- a/advice.c
+++ b/advice.c
@@ -100,7 +100,7 @@ void NORETURN die_conclude_merge(void)
 {
 	error(_("You have not concluded your merge (MERGE_HEAD exists)."));
 	if (advice_resolve_conflict)
-		advise(_("Please, commit your changes before you can merge."));
+		advise(_("Please, commit your changes before merging."));
 	die(_("Exiting because of unfinished merge."));
 }
 
diff --git a/contrib/examples/git-pull.sh b/contrib/examples/git-pull.sh
index e8dc2e0..6b3a03f 100755
--- a/contrib/examples/git-pull.sh
+++ b/contrib/examples/git-pull.sh
@@ -69,7 +69,7 @@ as appropriate to mark resolution and make a commit.")"
 die_merge () {
     if [ $(git config --bool --get advice.resolveConflict || echo true) = "true" ]; then
 	die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).
-Please, commit your changes before you can merge.")"
+Please, commit your changes before merging.")"
     else
 	die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).")"
     fi
-- 
2.6.0

^ permalink raw reply related	[relevance 3%]

* What's cooking in git.git (Aug 2022, #01; Mon, 1)
@ 2022-08-01 22:59  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-08-01 22:59 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.

A handful of topics have graduated to the 'master' track, and half a
dozen topics are now in 'next' to cook.  We are starting Week #4 of
a 12-week cycle.

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']

* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at fbb9414d09)
 + contrib/rerere-train: avoid useless gpg sign in training

 "rerere-train" script (in contrib/) used to honor commit.gpgSign
 while recreating the throw-away merges.
 source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>


* ds/rebase-update-ref (2022-07-19) 13 commits
  (merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
 + sequencer: notify user of --update-refs activity
 + sequencer: ignore HEAD ref under --update-refs
 + rebase: add rebase.updateRefs config option
 + sequencer: rewrite update-refs as user edits todo list
 + rebase: update refs from 'update-ref' commands
 + rebase: add --update-refs option
 + sequencer: add update-ref command
 + sequencer: define array with enum values
 + rebase-interactive: update 'merge' description
 + branch: consider refs under 'update-refs'
 + t2407: test branches currently using apply backend
 + t2407: test bisect and rebase as black-boxes
 + Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range with "--update-refs" option.
 source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
  (merged to 'next' on 2022-07-21 at 008518b4e5)
 + git-p4: refactoring of p4CmdList()
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.
 source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>


* mt/checkout-count-fix (2022-07-14) 3 commits
  (merged to 'next' on 2022-07-22 at 60c73a6b0b)
 + checkout: fix two bugs on the final count of updated entries
 + checkout: show bug about failed entries being included in final report
 + checkout: document bug where delayed checkout counts entries twice
 (this branch is used by mt/rot13-in-c.)

 "git checkout" miscounted the paths it updated, which has been
 corrected.
 source: <cover.1657799213.git.matheus.bernardino@usp.br>


* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-22 at 4004fa75eb)
 + pkt-line.h: move comment closer to the associated code

 In-code comment clarification.
 source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>

--------------------------------------------------
[Stalled]

* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>

--------------------------------------------------
[Cooking]

* tb/cat-file-z (2022-07-22) 2 commits
  (merged to 'next' on 2022-07-28 at 78731f0fdb)
 + builtin/cat-file.c: support NUL-delimited input with `-z`
 + t1006: extract --batch-command inputs to variables

 Operating modes like "--batch" of "git cat-file" command learned to
 take NUL-terminated input, instead of one-item-per-line.

 Will merge to 'master'.
 source: <cover.1658532524.git.me@ttaylorr.com>


* ab/tech-docs-to-help (2022-07-23) 9 commits
 - docs: move multi-pack-index docs to man section 5
 - docs: move http-protocol docs to man section 5
 - docs: move pack format docs to man section 5
 - docs: move protocol-related docs to man section 5
 - docs: move commit-graph format docs to man section 5
 - git docs: add a category for file formats, protocols and interfaces
 - git docs: add a category for user-facing file, repo and command UX
 - git help doc: use "<doc>" instead of "<guide>"
 - help.c: BUG() out if "help --guides" can't remove "git" prefixes

 Expose a lot of "tech docs" via "git help" interface.
 source: <cover-v5-0.9-00000000000-20220721T160721Z-avarab@gmail.com>


* sg/parse-options-subcommand (2022-07-25) 20 commits
 - builtin/worktree.c: let parse-options parse subcommands
 - builtin/stash.c: let parse-options parse subcommands
 - builtin/sparse-checkout.c: let parse-options parse subcommands
 - builtin/remote.c: let parse-options parse subcommands
 - builtin/reflog.c: let parse-options parse subcommands
 - builtin/notes.c: let parse-options parse subcommands
 - builtin/multi-pack-index.c: let parse-options parse subcommands
 - builtin/hook.c: let parse-option parse subcommands
 - builtin/gc.c: let parse-options parse 'git maintenance's subcommands
 - builtin/commit-graph.c: let parse-options parse subcommands
 - builtin/bundle.c: let parse-options parse subcommands
 - parse-options: add support for parsing subcommands
 - parse-options: drop leading space from '--git-completion-helper' output
 - parse-options: clarify the limitations of PARSE_OPT_NODASH
 - parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
 - api-parse-options.txt: fix description of OPT_CMDMODE
 - t0040-parse-options: test parse_options() with various 'parse_opt_flags'
 - t5505-remote.sh: check the behavior without a subcommand
 - t3301-notes.sh: check that default operation mode doesn't take arguments
 - git.c: update NO_PARSEOPT markings

 Introduce the "subcommand" mode to parse-options API and update the
 command line parser of Git commands with subcommands.
 source: <20220725123857.2773963-1-szeder.dev@gmail.com>


* ds/bundle-uri-clone (2022-07-25) 5 commits
 - clone: --bundle-uri cannot be combined with --depth
 - bundle-uri: add support for http(s):// and file://
 - clone: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability

 Implement "git clone --bundle-uri".
 source: <pull.1300.git.1658781277.gitgitgadget@gmail.com>


* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
  (merged to 'next' on 2022-08-01 at 1d4f4c32a6)
 + cmake: support local installations of git

 Fix build procedure for Windows that uses CMake so that it can pick
 up the shell interpreter from local installation location.

 Will merge to 'master'.
 source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>


* ds/decorate-filter-tweak (2022-07-29) 10 commits
 - fetch: use ref_namespaces during prefetch
 - maintenance: stop writing log.excludeDecoration
 - log: create log.decorateFilter=all
 - log: add --decorate-all option
 - log: add default decoration filter
 - log-tree: use ref_namespaces instead of if/else-if
 - refs: use ref_namespaces for replace refs base
 - refs: add array of ref namespaces
 - t4207: test coloring of grafted decorations
 - refs: allow "HEAD" as decoration filter

 The namespaces used by "log --decorate" from "refs/" hierarchy by
 default has been tightened.
 source: <pull.1301.v2.git.1659122979.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 1d2bef98f6)
 + config.c: NULL check when reading protected config

 Fix-up for what has been merged to 'master' recently.

 Will merge to 'master'.
 source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>


* jr/gitweb-title-shortening (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 7528e87220)
 + gitweb: remove title shortening heuristics

 Gitweb had legacy URL shortener that is specific to the way
 projects hosted on kernel.org used to (but no longer) work, which
 has been removed.

 Will merge to 'master'.
 source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll.
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
  (merged to 'next' on 2022-08-01 at 10499943b7)
 + lstat(mingw): correctly detect ENOTDIR scenarios

 Fix to lstat() emulation on Windows.

 Will merge to 'master'.
 source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>


* js/mingw-with-python (2022-07-29) 3 commits
  (merged to 'next' on 2022-08-01 at 73b8f06182)
 + mingw: remove unneeded `NO_CURL` directive
 + mingw: remove unneeded `NO_GETTEXT` directive
 + windows: include the Python bits when building Git for Windows

 Conditionally allow building Python interpreter on Windows

 Will merge to 'master'.
 source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>


* ab/submodule-helper-prep (2022-07-28) 20 commits
 - submodule--helper: fix bad config API usage
 - submodule--helper: don't exit() on failure, return
 - submodule--helper: add skeleton "goto cleanup" to update_submodule()
 - submodule--helper: rename "int res" to "int ret"
 - submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
 - submodule--helper: add "const" to copy of "update_data"
 - submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
 - submodule--helper: stop conflating "sb" in clone_submodule()
 - submodule--helper: convert a strbuf_detach() to xstrfmt()
 - submodule--helper: replace memset() with { 0 }-initialization
 - submodule--helper style: add \n\n after variable declarations
 - submodule--helper style: don't separate declared variables with \n\n
 - submodule--helper: move "resolve-relative-url-test" to a test-tool
 - submodule--helper: move "check-name" to a test-tool
 - submodule--helper: move "is-active" to a test-tool
 - test-tool submodule-config: remove unused "--url" handling
 - submodule--helper: remove unused "list" helper
 - submodule--helper: remove unused "name" helper
 - submodule tests: test for "add <repository> <abs-path>"
 - submodule tests: test usage behavior
 (this branch is used by ab/submodule-helper-leakfix.)

 source: <cover-00.20-00000000000-20220728T161116Z-avarab@gmail.com>


* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
 - docs: add CONFIGURATION sections that fuzzy map to built-ins
 - docs: add CONFIGURATION sections that map to a built-in
 - log docs: de-duplicate configuration sections
 - difftool docs: de-duplicate configuration sections
 - notes docs: de-duplicate configuration sections
 - apply docs: de-duplicate configuration sections
 - send-email docs: de-duplicate configuration sections
 - grep docs: de-duplicate configuration sections
 - docs: add and use include template for config/* includes

 Share the text used to explain configuration variables used by "git
 <subcmd>" in "git help <subcmd>" with the text from "git help config".

 Will merge to 'next'?
 source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>


* jk/struct-zero-init-with-older-gcc (2022-07-31) 1 commit
  (merged to 'next' on 2022-08-01 at cde4f95964)
 + config.mak.dev: squelch -Wno-missing-braces for older gcc

 Older gcc with -Wall complains about the universal zero initializer
 "struct s = { 0 };" idiom, which makes developers' lives
 inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
 build procedure has been tweaked to help these compilers.

 Will merge to 'master'.
 source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>


* js/ort-clean-up-after-failed-merge (2022-07-31) 2 commits
  (merged to 'next' on 2022-08-01 at 0c9f02f3ec)
 + merge-ort: do leave trace2 region even if checkout fails
 + merge-ort: clean up after failed merge

 Plug memory leaks in the failure code path in the "merge-ort" merge
 strategy backend.

 Will merge to 'master'.
 source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>


* js/t5351-freebsd-fix (2022-07-29) 2 commits
  (merged to 'next' on 2022-08-01 at b47609e891)
 + t5351: avoid using `test_cmp` for binary data
 + t5351: avoid relying on `core.fsyncMethod = batch` to be supported

 Some tests assumed that core.fsyncMethod=batch is supported
 everywhere, which broke FreeBSD.

 Will merge to 'master'.
 source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>


* cw/remote-object-info (2022-07-28) 6 commits
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: initialization bug fix
 - fetch-pack: move fetch initialization
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.
 source: <20220728230210.2952731-1-calvinwan@google.com>


* ab/leak-check (2022-07-27) 15 commits
 - CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
 - upload-pack: fix a memory leak in create_pack_file()
 - leak tests: mark passing SANITIZE=leak tests as leak-free
 - leak tests: don't skip some tests under SANITIZE=leak
 - test-lib: have the "check" mode for SANITIZE=leak consider leak logs
 - test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
 - test-lib: simplify by removing test_external
 - tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
 - t/Makefile: don't remove test-results in "clean-except-prove-cache"
 - test-lib: add a SANITIZE=leak logging mode
 - t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
 - test-lib: add a --invert-exit-code switch
 - test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
 - test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
 - test-lib: use $1, not $@ in test_known_broken_{ok,failure}_

 Extend SANITIZE=leak checking and declare more tests "currently leak-free".

 Will merge to 'next'?
 source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>


* jc/string-list-cleanup (2022-07-20) 1 commit
  (merged to 'next' on 2022-07-27 at 858a0b2a28)
 + builtin/remote.c: use the right kind of STRING_LIST_INIT

 Code clean-up.

 Will merge to 'master'.
 source: <xmqq7d471dns.fsf@gitster.g>


* mt/rot13-in-c (2022-07-31) 4 commits
 - tests: use the new C rot13-filter helper to avoid PERL prereq
 - t0021: implementation the rot13-filter.pl script in C
 - t0021: avoid grepping for a Perl-specific string at filter output
 - Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c

 Test portability improvements.
 source: <cover.1659291025.git.matheus.bernardino@usp.br>


* tk/untracked-cache-with-uall (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-25 at b792dd5012)
 + read-cache: make `do_read_index()` always set up `istate->repo`

 Fix for a bug that makes write-tree to fail to write out a
 non-existent index as a tree, introduced in 2.37.

 Will merge to 'master'.
 source: <20220722212232.833188-1-martin.agren@gmail.com>


* ds/midx-with-less-memory (2022-07-27) 4 commits
  (merged to 'next' on 2022-07-27 at 9ac7aed9f6)
 + write_midx_bitmap(): drop unused refs_snapshot parameter
  (merged to 'next' on 2022-07-20 at 250d257c3e)
 + midx: reduce memory pressure while writing bitmaps
 + midx: extract bitmap write setup
 + pack-bitmap-write: use const for hashes

 The codepath to write multi-pack index has been taught to release a
 large chunk of memory that holds an array of objects in the packs,
 as soon as it is done with the array, to reduce memory consumption.

 Will merge to 'master'.
 source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>


* tl/trace2-config-scope (2022-07-22) 2 commits
 - tr2: shows scope unconditionally in addition to key-value pair
 - api-trace2.txt: print config key-value pair

 Tweak trace2 output about configuration variables.

 Expecting a reroll.
 cf. <220722.86fsits91m.gmgdl@evledraar.gmail.com>
 source: <cover.1658472474.git.dyroneteng@gmail.com>


* ab/submodule-helper-leakfix (2022-07-28) 18 commits
 - submodule--helper: fix a configure_added_submodule() leak
 - submodule--helper: free rest of "displaypath" in "struct update_data"
 - submodule--helper: free some "displaypath" in "struct update_data"
 - submodule--helper: fix a memory leak in print_status()
 - submodule--helper: fix a leak in module_add()
 - submodule--helper: fix obscure leak in module_add()
 - submodule--helper: fix "reference" leak
 - submodule--helper: fix a memory leak in get_default_remote_submodule()
 - submodule--helper: fix a leak with repo_clear()
 - submodule--helper: fix "sm_path" and other "module_cb_list" leaks
 - submodule--helper: fix "errmsg_str" memory leak
 - submodule--helper: add and use *_release() functions
 - submodule--helper: don't leak {run,capture}_command() cp.dir argument
 - submodule--helper: "struct pathspec" memory leak in module_update()
 - submodule--helper: fix most "struct pathspec" memory leaks
 - submodule--helper: fix trivial get_default_remote_submodule() leak
 - submodule--helper: fix a leak in "clone_submodule"
 - Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
 (this branch uses ab/submodule-helper-prep.)

 Plugging leaks in submodule--helper.

 Getting there.
 source: <cover-v4-00.17-00000000000-20220728T162442Z-avarab@gmail.com>


* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 8e6237d6b0)
 + fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.

 Will merge to 'master'.
 source: <20220726162712.1774355-1-jonathantanmy@google.com>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 - cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).

 Needs updating, at least for other commands with the same option.
 cf. <xmqq35f2ysd9.fsf@gitster.g>
 source: <20220715092527.1567837-1-mail@beyermatthias.de>


* rs/mergesort (2022-07-17) 10 commits
  (merged to 'next' on 2022-07-27 at 42607a44bb)
 + mergesort: remove llist_mergesort()
 + packfile: use DEFINE_LIST_SORT
 + fetch-pack: use DEFINE_LIST_SORT
 + commit: use DEFINE_LIST_SORT
 + blame: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT_DEBUG
 + mergesort: add macros for typed sort of linked lists
 + mergesort: tighten merge loop
 + mergesort: unify ranks loops

 Make our mergesort implementation type-safe.

 Will merge to 'master'.
 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>


* cw/submodule-merge-messages (2022-07-28) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.
 source: <20220728211221.2913928-1-calvinwan@google.com>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
  (merged to 'next' on 2022-07-25 at e3464c2c1d)
 + commit-graph: fix corrupt upgrade from generation v1 to v2
 + commit-graph: introduce `repo_find_commit_pos_in_graph()`
 + t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Will merge to 'master'.
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Expecting a reroll.
 cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* ac/bitmap-lookup-table (2022-07-20) 6 commits
 - bitmap-lookup-table: add performance tests for lookup table
 - p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Seems to be flaky-broken under SHA-256.
 cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
 source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-18) 4 commits
  (merged to 'next' on 2022-07-27 at 59c4eb32b3)
 + cat-file: add mailmap support
 + ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 + ident: move commit_rewrite_person() to ident.c
 + revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Will merge to 'master'.
 source: <20220718195102.66321-1-siddharthasthana31@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
  (merged to 'next' on 2022-07-25 at 92a39a5ff2)
 + xdiff: introduce XDL_ALLOC_GROW()
 + xdiff: introduce XDL_CALLOC_ARRAY()
 + xdiff: introduce xdl_calloc
 + xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'master'.
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* en/merge-restore-to-pristine (2022-07-22) 8 commits
  (merged to 'next' on 2022-07-27 at daafc50c15)
 + merge: do not exit restore_state() prematurely
 + merge: ensure we can actually restore pre-merge state
 + merge: make restore_state() restore staged state too
 + merge: fix save_state() to work when there are stat-dirty files
 + merge: do not abort early if one strategy fails to handle the merge
 + merge: abort if index does not match HEAD for trivial merges
 + merge-resolve: abort if index does not match HEAD
 + merge-ort-wrappers: make printed message match the one from recursive

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Will merge to 'master'.
 source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-23) 1 commit
  (merged to 'next' on 2022-07-27 at b7301f16ce)
 + ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'master'.
 source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-07-25) 2 commits
 - bundle-uri: add example bundle organization
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>


* mt/doc-config (2022-07-14) 3 commits
 . doc: notes: unify configuration variables definitions
 . doc: apply: unify configuration variables definitions
 . doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Retracted.
 cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2018, #01; Wed, 11)
@ 2018-07-11 19:02  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-11 19:02 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

The tip of 'next' has been rewound and it currently has only 4
topics.  Quite a many topics are cooking in 'pu' and need to be
sifted into good bins (for 'next') and the remainder.  Help is
appreciated in that area ;-)

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* ag/rebase-i-in-c (2018-07-10) 13 commits
 - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
 - rebase -i: implement the logic to initialize the variable $revision in C
 - rebase--interactive: remove unused modes and functions
 - rebase--interactive: rewrite complete_action() in C
 - sequencer: change the way skip_unnecessary_picks() returns its result
 - sequencer: refactor append_todo_help() to write its message to a buffer
 - rebase -i: rewrite checkout_onto() in C
 - rebase -i: rewrite setup_reflog_action() in C
 - sequencer: add a new function to silence a command, except if it fails
 - rebase-interactive: rewrite the edit-todo functionality in C
 - editor: add a function to launch the sequence editor
 - rebase--interactive: rewrite append_todo_help() in C
 - sequencer: make two functions and an enum from sequencer.c public

 Piecemeal rewrite of the remaining "rebase -i" machinery in C.  

 Expecting a reroll.

 The early parts of the series seem solidifying; perhaps with a
 reroll or two, they become 'next' material?


* en/apply-comment-fix (2018-06-28) 1 commit
 - apply: fix grammar error in comment

 Will merge to 'next'.


* en/t5407-rebase-m-fix (2018-06-28) 1 commit
 - t5407: fix test to cover intended arguments

 Will merge to 'next'.


* sb/mailmap (2018-06-29) 1 commit
  (merged to 'next' on 2018-07-11 at d9dc53e374)
 + .mailmap: merge different spellings of names

 Will merge to 'master'.


* sb/object-store-lookup (2018-06-29) 33 commits
 - commit.c: allow lookup_commit_reference to handle arbitrary repositories
 - commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
 - tag.c: allow deref_tag to handle arbitrary repositories
 - object.c: allow parse_object to handle arbitrary repositories
 - object.c: allow parse_object_buffer to handle arbitrary repositories
 - commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
 - commit.c: allow set_commit_buffer to handle arbitrary repositories
 - commit.c: migrate the commit buffer to the parsed object store
 - commit-slabs: remove realloc counter outside of slab struct
 - commit.c: allow parse_commit_buffer to handle arbitrary repositories
 - tag: allow parse_tag_buffer to handle arbitrary repositories
 - tag: allow lookup_tag to handle arbitrary repositories
 - commit: allow lookup_commit to handle arbitrary repositories
 - tree: allow lookup_tree to handle arbitrary repositories
 - blob: allow lookup_blob to handle arbitrary repositories
 - object: allow lookup_object to handle arbitrary repositories
 - object: allow object_as_type to handle arbitrary repositories
 - tag: add repository argument to deref_tag
 - tag: add repository argument to parse_tag_buffer
 - tag: add repository argument to lookup_tag
 - commit: add repository argument to get_cached_commit_buffer
 - commit: add repository argument to set_commit_buffer
 - commit: add repository argument to parse_commit_buffer
 - commit: add repository argument to lookup_commit
 - commit: add repository argument to lookup_commit_reference
 - commit: add repository argument to lookup_commit_reference_gently
 - tree: add repository argument to lookup_tree
 - blob: add repository argument to lookup_blob
 - object: add repository argument to object_as_type
 - object: add repository argument to parse_object_buffer
 - object: add repository argument to lookup_object
 - object: add repository argument to parse_object
 - Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
 (this branch uses sb/object-store-grafts.)

 lookup_commit_reference() and friends have been updated to find
 in-core object for a specific in-core repository instance.

 Will merge to 'next'.


* ag/rebase-p (2018-07-06) 1 commit
 - git-rebase--preserve-merges: fix formatting of todo help message

 The help message shown in the editor to edit todo list in "rebase -p"
 has regressed recently, which has been corrected.

 Will merge to 'next'.


* bb/pedantic (2018-07-09) 8 commits
 - utf8.c: avoid char overflow
 - string-list.c: avoid conversion from void * to function pointer
 - sequencer.c: avoid empty statements at top level
 - convert.c: replace "\e" escapes with "\033".
 - fixup! refs/refs-internal.h: avoid forward declaration of an enum
 - refs/refs-internal.h: avoid forward declaration of an enum
 - fixup! connect.h: avoid forward declaration of an enum
 - connect.h: avoid forward declaration of an enum

 The codebase has been updated to compile cleanly with -pedantic
 option.

 Will merge to 'next'.


* bb/unicode-11-width (2018-07-09) 1 commit
 - unicode: update the width tables to Unicode 11

 The character display width table has been updated to match the
 latest Unicode standard.

 Will merge to 'next'.


* bc/object-id (2018-07-09) 17 commits
 - pretty: switch hard-coded constants to the_hash_algo
 - sha1-file: convert constants to uses of the_hash_algo
 - log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
 - diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
 - builtin/merge-recursive: make hash independent
 - builtin/merge: switch to use the_hash_algo
 - builtin/fmt-merge-msg: make hash independent
 - builtin/update-index: simplify parsing of cacheinfo
 - builtin/update-index: convert to using the_hash_algo
 - refs/files-backend: use the_hash_algo for writing refs
 - commit: increase commit message buffer size
 - sha1-name: use the_hash_algo when parsing object names
 - strbuf: allocate space with GIT_MAX_HEXSZ
 - commit: express tree entry constants in terms of the_hash_algo
 - hex: switch to using the_hash_algo
 - tree-walk: replace hard-coded constants with the_hash_algo
 - cache: update object ID functions for the_hash_algo

 Conversion from uchar[40] to struct object_id continues.

 Expecting a reroll.
 cf. <20180709232656.GA535220@genre.crustytoothpaste.net>


* bc/send-email-auto-cte (2018-07-09) 4 commits
 - docs: correct RFC specifying email line length
 - send-email: automatically determine transfer-encoding
 - send-email: accept long lines with suitable transfer encoding
 - send-email: add an auto option for transfer encoding

 The content-transfer-encoding of the message "git send-email" sends
 out by default was 8bit, which can cause trouble when there is an
 overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
 automatically switch to quoted-printable when there is such a line
 in the payload has been introduced and is made the default.

 Will merge to 'next'.


* en/dirty-merge-fixes (2018-07-11) 9 commits
 - merge: fix misleading pre-merge check documentation
 - merge-recursive: enforce rule that index matches head before merging
 - t6044: add more testcases with staged changes before a merge is invoked
 - merge-recursive: fix assumption that head tree being merged is HEAD
 - merge-recursive: make sure when we say we abort that we actually abort
 - t6044: add a testcase for index matching head, when head doesn't match HEAD
 - t6044: verify that merges expected to abort actually abort
 - index_has_changes(): avoid assuming operating on the_index
 - read-cache.c: move index_has_changes() from merge.c

 The recursive merge strategy did not properly ensure there was no
 change between HEAD and the index before performing its operation,
 which has been corrected.

 Will merge to 'next'.


* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
 - t6036: add a failed conflict detection case: regular files, different modes
 - t6036: add a failed conflict detection case with conflicting types
 - t6036: add a failed conflict detection case with submodule add/add
 - t6036: add a failed conflict detection case with submodule modify/modify
 - t6036: add a failed conflict detection case with symlink add/add
 - t6036: add a failed conflict detection case with symlink modify/modify

 Tests to cover various conflicting cases have been added for
 merge-recursive.

 Will merge to 'next'.


* en/t6036-recursive-corner-cases (2018-07-06) 1 commit
 - t6036: add lots of detail for directory/file conflicts in recursive case

 Tests to cover more D/F conflict cases have been added for
 merge-recursive.

 Will merge to 'next'.


* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
 - t6042: add testcase covering long chains of rename conflicts
 - t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
 - t6042: add testcase covering rename/add/delete conflict type

 Various glitches in the heuristics of merge-recursive strategy have
 been documented in new tests.

 Will merge to 'next'.

 I am not sure if there is a single "correct" answer everybody can
 agree on for each of these "insane" cases, though.


* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
 - t7405: verify 'merge --abort' works after submodule/path conflicts
 - t7405: add a directory/submodule conflict
 - t7405: add a file/submodule conflict

 Tests to cover conflict cases that involve submodules have been
 added for merge-recursive.

 Will merge to 'next'.


* es/test-fixes (2018-07-03) 25 commits
 - t9119: fix broken &&-chains
 - t9000-t9999: fix broken &&-chains
 - t7000-t7999: fix broken &&-chains
 - t6000-t6999: fix broken &&-chains
 - t5000-t5999: fix broken &&-chains
 - t4000-t4999: fix broken &&-chains
 - t3030: fix broken &&-chains
 - t3000-t3999: fix broken &&-chains
 - t2000-t2999: fix broken &&-chains
 - t1000-t1999: fix broken &&-chains
 - t0000-t0999: fix broken &&-chains
 - t9814: simplify convoluted check that command correctly errors out
 - t9001: fix broken "invoke hook" test
 - t7810: use test_expect_code() instead of hand-rolled comparison
 - t7400: fix broken "submodule add/reconfigure --force" test
 - t7201: drop pointless "exit 0" at end of subshell
 - t6036: fix broken "merge fails but has appropriate contents" tests
 - t5505: modernize and simplify hard-to-digest test
 - t5406: use write_script() instead of birthing shell script manually
 - t5405: use test_must_fail() instead of checking exit code manually
 - t/lib-submodule-update: fix "absorbing" test
 - t: drop unnecessary terminating semicolon in subshell
 - t: use sane_unset() rather than 'unset' with broken &&-chain
 - t: use test_write_lines() instead of series of 'echo' commands
 - t: use test_might_fail() instead of manipulating exit code manually

 Test clean-up and corrections.

 Will merge to 'next'.


* jk/empty-pick-fix (2018-07-11) 2 commits
 - sequencer: don't say BUG on bogus input
 - sequencer: handle empty-set cases consistently

 Handling of an empty range by "git cherry-pick" was inconsistent
 depending on how the range ended up to be empty, which has been
 corrected.

 Will merge to 'next'.


* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
 - t5500: prettify non-commit tag tests

 Test modernization.

 Will merge to 'next'.


* jk/for-each-ref-icase (2018-07-03) 3 commits
 - ref-filter: avoid backend filtering with --ignore-case
 - for-each-ref: consistently pass WM_IGNORECASE flag
 - t6300: add a test for --ignore-case

 The "--ignore-case" option of "git for-each-ref" (and its friends)
 did not work correctly, which has been fixed.

 Will merge to 'next'.


* jk/fsck-gitmodules-gently (2018-07-03) 5 commits
 - fsck: silence stderr when parsing .gitmodules
 - fsck: silence stderr when parsing .gitmodules
 - config: add options parameter to git_config_from_mem
 - config: add CONFIG_ERROR_SILENT handler
 - config: turn die_on_error into caller-facing enum

 What's the status of this one?


* js/range-diff (2018-07-09) 20 commits
 - range-diff: make --dual-color the default mode
 - range-diff: left-pad patch numbers
 - completion: support `git range-diff`
 - range-diff: add a man page
 - range-diff --dual-color: work around bogus white-space warning
 - range-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: add the meta color GIT_COLOR_REVERSE
 - range-diff: use color for the commit pairs
 - range-diff: add tests
 - range-diff: do not show "function names" in hunk headers
 - range-diff: adjust the output of the commit pairs
 - range-diff: suppress the diff headers
 - range-diff: indent the diffs just like tbdiff
 - range-diff: right-trim commit messages
 - range-diff: also show the diff between patches
 - range-diff: improve the order of the shown commits
 - range-diff: first rudimentary implementation
 - Introduce `range-diff` to compare iterations of a topic branch
 - linear-assignment: a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 Supersedes js/branch-diff topic that added a similar command under
 a different name.


* jt/commit-graph-per-object-store (2018-07-09) 6 commits
 . commit-graph: add repo arg to graph readers
 . commit-graph: store graph in struct object_store
 . commit-graph: add free_commit_graph
 . commit-graph: add missing forward declaration
 . object-store: add missing include
 . commit-graph: refactor preparing commit graph
 (this branch uses ds/commit-graph-fsck.)

 The singleton commit-graph in-core instance is made per in-core
 repository instance.

 Expecting a reroll, as it breaks 32-bit build.
 cf. https://travis-ci.org/git/git/jobs/402422108
 

* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
 - clone: check connectivity even if clone is partial
 - upload-pack: send refs' objects despite "filter"
 (this branch uses bw/ref-in-want and jt/connectivity-check-after-unshallow.)

 Partial clone support of "git clone" has been updated to correctly
 validate the objects it receives from the other side.  The server
 side has been corrected to send objects that are directly
 requested, even if they may match the filtering criteria (e.g. when
 doing a "lazy blob" partial clone).

 Will merge to 'next'.


* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
 - gc --auto: release pack files before auto packing

 "git gc --auto" opens file descriptors for the packfiles before
 spawning "git repack/prune", which would upset Windows that does
 not want a process to work on a file that is open by another
 process.  The issue has been worked around.

 Will merge to 'next'.


* kn/userdiff-php (2018-07-06) 2 commits
 - userdiff: support new keywords in PHP hunk header
 - t4018: add missing test cases for PHP

 The userdiff pattern for .php has been updated.

 Will merge to 'next'.


* lt/date-human (2018-07-09) 1 commit
 - Add 'human' date format


* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
 - fast-import: do not call diff_delta() with empty buffer

 "git fast-import" has been updated to avoid attempting to create
 delta against a zero-byte-long string, which is pointless.

 Will merge to 'next'.


* ot/ref-filter-object-info (2018-07-09) 4 commits
 . ref-filter: use oid_object_info() to get object
 . ref-filter: merge get_obj and get_object
 . ref-filter: add empty values to technical fields
 . ref-filter: add info_source to valid_atom

 Expecting a reroll, as it breaks compilation with uninitialized var.
 cf. https://travis-ci.org/git/git/jobs/402422102


* pk/rebase-in-c (2018-07-09) 4 commits
 - builtin/rebase: support running "git rebase <upstream>"
 - sequencer: refactor the code to detach HEAD to checkout.c
 - rebase: refactor common shell functions into their own file
 - rebase: start implementing it as a builtin

 Piecemeal rewrite of the "rebase" machinery in C.  

 Expecting a reroll, but it seems that this is getting quite close.
 cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>


* tb/config-default (2018-07-06) 1 commit
 - builtin/config: work around an unsized array forward declaration

 Compilation fix.

 Will merge to 'next'.


* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
 - convert log_ref_write_fd() to use strbuf

 Code clean-up.

 Will merge to 'next'.


* hs/push-cert-check-cleanup (2018-07-11) 2 commits
 - gpg-interface: make parse_gpg_output static and remove from interface header
 - builtin/receive-pack: use check_signature from gpg-interface

 Code clean-up.

 Will merge to 'next'.


* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
 - unpack-trees: do not fail reset because of unmerged skipped entry

 "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
 had trouble working correctly in a sparsely checked out working
 tree after a conflict, which has been corrected.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* jh/json-writer (2018-06-13) 1 commit
 - json_writer: new routines to create JSON data

 Preparatory code to later add json output for unspecified telemetry
 data.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2018-06-13) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>

 I just rebased the topic to a newer base as it did not build
 standalone with the base I originally queued the topic on, but
 otherwise there is no update to address any of the review comments
 in the thread above---we are still waiting for a reroll.


* mk/http-backend-content-length (2018-06-11) 3 commits
 - http-backend: respect CONTENT_LENGTH for receive-pack
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
 - http-backend: cleanup writing to child process

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* ao/config-from-gitmodules (2018-06-26) 6 commits
  (merged to 'next' on 2018-07-11 at 5d88dc6fb7)
 + submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
 + submodule-config: pass repository as argument to config_from_gitmodules
 + submodule-config: make 'config_from_gitmodules' private
 + submodule-config: add helper to get 'update-clone' config from .gitmodules
 + submodule-config: add helper function to get 'fetch' config from .gitmodules
 + config: move config_from_gitmodules to submodule-config.c

 Tighten the API to make it harder to misuse in-tree .gitmodules
 file, even though it shares the same syntax with configuration
 files, to read random configuration items from it.

 Will merge to 'master'.


* as/sequencer-customizable-comment-char (2018-06-28) 1 commit
 - sequencer: use configured comment character

 Honor core.commentchar when preparing the list of commits to replay
 in "rebase -i".

 Needs inter-contributor coordination.
 cf. <e8973797-fc5f-2ca5-1881-5ee66fc8279b@living180.net>


* dj/runtime-prefix (2018-06-26) 1 commit
  (merged to 'next' on 2018-07-11 at 27d99fef94)
 + Makefile: tweak sed invocation

 POSIX portability fix in Makefile to fix a glitch introduced a few
 releases ago.

 Will merge to 'master'.


* ds/commit-graph (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-11 at d579f733ed)
 + commit-graph: fix documentation inconsistencies

 Docfix.

 Will merge to 'master'.


* en/rebase-i-microfixes (2018-06-27) 3 commits
  (merged to 'next' on 2018-07-11 at d913ca0f77)
 + git-rebase--merge: modernize "git-$cmd" to "git $cmd"
 + Fix use of strategy options with interactive rebases
 + t3418: add testcase showing problems with rebase -i and strategy options

 Will merge to 'master'.


* js/enhanced-version-info (2018-06-29) 1 commit
  (merged to 'next' on 2018-07-11 at 815b2ea2bc)
 + Makefile: fix the "built from commit" code

 Build fix.

 Will merge to 'master'.


* js/rebase-recreate-merge (2018-06-27) 1 commit
  (merged to 'next' on 2018-07-11 at eb8f33aaef)
 + rebase: fix documentation formatting

 Docfix.

 Will merge to 'master'.


* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
 - fetch-pack: write shallow, then check connectivity
 (this branch is used by jt/partial-clone-fsck-connectivity; uses bw/ref-in-want.)

 "git fetch" failed to correctly validate the set of objects it
 received when making a shallow history deeper, which has been
 corrected.

 Will merge to 'next'.


* jt/fetch-nego-tip (2018-07-03) 1 commit
 - fetch-pack: support negotiation tip whitelist
 (this branch uses jt/fetch-pack-negotiator.)

 "git fetch" learned a new option "--negotiation-tip" to limit the
 set of commits it tells the other end as "have", to reduce wasted
 bandwidth and cycles, which would be helpful when the receiving
 repository has a lot of refs that have little to do with the
 history at the remote it is fetching from.

 Will merge to 'next'.


* mb/filter-branch-optim (2018-06-26) 1 commit
  (merged to 'next' on 2018-07-11 at e43a0136c2)
 + filter-branch: skip commits present on --state-branch

 "git filter-branch" when used with the "--state-branch" option
 still attempted to rewrite the commits whose filtered result is
 known from the previous attempt (which is recorded on the state
 branch); the command has been corrected not to waste cycles doing
 so.

 Will merge to 'master'.


* ms/core-icase-doc (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-11 at 8f0d71c32d)
 + Documentation: declare "core.ignoreCase" as internal variable

 Clarify that setting core.ignoreCase to deviate from reality would
 not turn a case-incapable filesystem into a case-capable one.

 Will merge to 'master'.


* rj/submodule-fsck-skip (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-11 at 985f88cf7e)
 + fsck: check skiplist for object in fsck_blob()

 "fsck.skipList" did not prevent a blob object listed there from
 being inspected for is contents (e.g. we recently started to
 inspect the contents of ".gitmodules" for certain malicious
 patterns), which has been corrected.

 Will merge to 'master'.


* tb/grep-only-matching (2018-07-09) 2 commits
 - grep.c: teach 'git grep --only-matching'
 - grep.c: extract show_line_header()
 (this branch uses tb/grep-column.)

 "git grep" learned the "--only-matching" option.

 Will merge to 'next'.


* tz/exclude-doc-smallfixes (2018-06-27) 2 commits
  (merged to 'next' on 2018-07-11 at 5134f1ca72)
 + dir.c: fix typos in core.excludesfile comment
 + gitignore.txt: clarify default core.excludesfile path

 Doc updates.

 Will merge to 'master'.


* ld/p423 (2018-06-19) 6 commits
  (merged to 'next' on 2018-06-29 at af76acb664)
 + git-p4: python3: fix octal constants
 + git-p4: python3: use print() function
 + git-p4: python3: basestring workaround
 + git-p4: python3: remove backticks
 + git-p4: python3: replace dict.has_key(k) with "k in dict"
 + git-p4: python3: replace <> with !=

 Code preparation to make "git p4" closer to be usable with Python 3.

 Will merge to 'master'.


* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
  (merged to 'next' on 2018-06-29 at 538337be74)
 + sequencer: do not squash 'reword' commits when we hit conflicts

 Bugfix for "rebase -i" corner case regression.

 Will merge to 'master'.


* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
  (merged to 'next' on 2018-06-29 at 0dffc46ce2)
 + format-patch: clear UNINTERESTING flag before prepare_bases

 Recently added "--base" option to "git format-patch" command did
 not correctly generate prereq patch ids.

 Will merge to 'master'.


* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
  (merged to 'next' on 2018-06-29 at da6f49d292)
 + docs: link to gitsubmodules

 Docfix.

 Will merge to 'master'.


* bw/ref-in-want (2018-06-28) 8 commits
 - fetch-pack: implement ref-in-want
 - fetch-pack: put shallow info in output parameter
 - fetch: refactor to make function args narrower
 - fetch: refactor fetch_refs into two functions
 - fetch: refactor the population of peer ref OIDs
 - upload-pack: test negotiation with changing repository
 - upload-pack: implement ref-in-want
 - test-pkt-line: add unpack-sideband subcommand
 (this branch is used by jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.)

 Protocol v2 has been updated to allow slightly out-of-sync set of
 servers to work together to serve a single client, which would be
 useful with load-balanced servers that talk smart HTTP transport.

 Will merge to 'next'.


* en/rebase-consistency (2018-06-27) 9 commits
 - git-rebase: make --allow-empty-message the default
 - t3401: add directory rename testcases for rebase and am
 - git-rebase.txt: document behavioral differences between modes
 - directory-rename-detection.txt: technical docs on abilities and limitations
 - git-rebase.txt: address confusion between --no-ff vs --force-rebase
 - git-rebase: error out when incompatible options passed
 - t3422: new testcases for checking when incompatible options passed
 - git-rebase.sh: update help messages a bit
 - git-rebase.txt: document incompatible options

 "git rebase" behaved slightly differently depending on which one of
 the three backends gets used; this has been documented and an
 effort to make them more uniform has begun.

 Will merge to 'next'.


* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
  (merged to 'next' on 2018-06-29 at 852857b04e)
 + pack-bitmap: add free function
 + pack-bitmap: remove bitmap_git global variable

 The effort to move globals to per-repository in-core structure
 continues.

 Will merge to 'master'.


* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
 - submodule.c: report the submodule that an error occurs in

 Will merge to 'next'.


* bw/protocol-v2 (2018-06-22) 1 commit
  (merged to 'next' on 2018-06-29 at 78090cc343)
 + protocol-v2 doc: put HTTP headers after request

 Doc fix.

 Will merge to 'master'.


* jk/branch-l-1-repurpose (2018-06-22) 1 commit
 - branch: make "-l" a synonym for "--list"
 (this branch uses jk/branch-l-0-deprecation.)

 Updated plan to repurpose the "-l" option to "git branch".

 Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.


* vs/typofixes (2018-06-22) 1 commit
  (merged to 'next' on 2018-06-29 at 665c8db2f7)
 + Documentation: spelling and grammar fixes

 Doc fix.

 Will merge to 'master'.


* cc/remote-odb (2018-07-06) 10 commits
 - SQUASH??? error: unused variable 'o' [-Werror=unused-variable]
 - Documentation/config: add odb.<name>.promisorRemote
 - t0410: test fetching from many promisor remotes
 - Use odb.origin.partialclonefilter instead of core.partialclonefilter
 - Use remote_odb_get_direct() and has_remote_odb()
 - remote-odb: add remote_odb_reinit()
 - remote-odb: implement remote_odb_get_many_direct()
 - remote-odb: implement remote_odb_get_direct()
 - Add initial remote odb support
 - fetch-object: make functions return an error code

 Needs a reroll.


* ds/multi-pack-index (2018-07-09) 24 commits
 . midx: clear midx on repack
 . packfile: skip loading index if in multi-pack-index
 . midx: prevent duplicate packfile loads
 . midx: use midx in approximate_object_count
 . midx: use existing midx when writing new one
 . midx: use midx in abbreviation calculations
 . midx: read objects from multi-pack-index
 . midx: prepare midxed_git struct
 . config: create core.multiPackIndex setting
 . midx: write object offsets
 . midx: write object id fanout chunk
 . midx: write object ids in a chunk
 . midx: sort and deduplicate objects from packfiles
 . midx: read pack names into array
 . multi-pack-index: write pack names in chunk
 . multi-pack-index: read packfile list
 . packfile: generalize pack directory list
 . multi-pack-index: expand test data
 . multi-pack-index: load into memory
 . midx: write header information to lockfile
 . multi-pack-index: add 'write' verb
 . multi-pack-index: add builtin
 . multi-pack-index: add format details
 . multi-pack-index: add design document

 When there are too many packfiles in a repository (which is not
 recommended), looking up an object in these would require
 consulting many pack .idx files; a new mechanism to have a single
 file that consolidates all of these .idx files is introduced.

 Expecting a reroll to fix documentation build.
 cf. https://travis-ci.org/git/git/jobs/402422110


* tb/grep-column (2018-06-22) 7 commits
  (merged to 'next' on 2018-06-29 at 25dc70426e)
 + contrib/git-jump/git-jump: jump to exact location
 + grep.c: add configuration variables to show matched option
 + builtin/grep.c: add '--column' option to 'git-grep(1)'
 + grep.c: display column number of first match
 + grep.[ch]: extend grep_opt to allow showing matched column
 + grep.c: expose {,inverted} match column in match_line()
 + Documentation/config.txt: camel-case lineNumber for consistency
 (this branch is used by tb/grep-only-matching.)

 "git grep" learned the "--column" option that gives not just the
 line number but the column number of the hit.

 Will merge to 'master'.


* jt/fetch-pack-negotiator (2018-06-15) 7 commits
 - fetch-pack: introduce negotiator API
 - fetch-pack: move common check and marking together
 - fetch-pack: make negotiation-related vars local
 - fetch-pack: use ref adv. to prune "have" sent
 - fetch-pack: directly end negotiation if ACK ready
 - fetch-pack: clear marks before re-marking
 - fetch-pack: split up everything_local()
 (this branch is used by jt/fetch-nego-tip.)

 Code restructuring and a small fix to transport protocol v2 during
 fetching.

 Will merge to 'next'.


* sb/submodule-core-worktree (2018-06-19) 3 commits
  (merged to 'next' on 2018-06-28 at 96e1a8dbd1)
 + submodule deinit: unset core.worktree
 + submodule: ensure core.worktree is set after update
 + submodule: unset core.worktree if no working tree is present

 Originally merged to 'next' on 2018-06-22

 "git submodule" did not correctly adjust core.worktree setting that
 indicates whether/where a submodule repository has its associated
 working tree across various state transitions, which has been
 corrected.

 Will merge to 'master'.


* ds/ewah-cleanup (2018-06-21) 10 commits
  (merged to 'next' on 2018-06-28 at 9cd7c0d54a)
 + ewah: delete unused 'rlwit_discharge_empty()'
 + ewah: drop ewah_serialize_native function
 + ewah: drop ewah_deserialize function
 + ewah_io: delete unused 'ewah_serialize()'
 + ewah_bitmap: delete unused 'ewah_or()'
 + ewah_bitmap: delete unused 'ewah_not()'
 + ewah_bitmap: delete unused 'ewah_and_not()'
 + ewah_bitmap: delete unused 'ewah_and()'
 + ewah/bitmap.c: delete unused 'bitmap_each_bit()'
 + ewah/bitmap.c: delete unused 'bitmap_clear()'

 Originally merged to 'next' on 2018-06-22

 Remove unused function definitions and declarations from ewah
 bitmap subsystem.

 Will merge to 'master'.


* is/parsing-line-range (2018-06-15) 2 commits
 - log: prevent error if line range ends past end of file
 - blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Will merge to 'next'.


* en/merge-recursive-cleanup (2018-06-12) 6 commits
  (merged to 'next' on 2018-06-28 at 1a3646eb7d)
 + merge-recursive: add pointer about unduly complex looking code
 + merge-recursive: rename conflict_rename_*() family of functions
 + merge-recursive: clarify the rename_dir/RENAME_DIR meaning
 + merge-recursive: align labels with their respective code blocks
 + merge-recursive: fix numerous argument alignment issues
 + merge-recursive: fix miscellaneous grammar error in comment

 Originally merged to 'next' on 2018-06-19

 Code cleanup.

 Will merge to 'master'.


* ab/checkout-default-remote (2018-06-11) 8 commits
 - checkout & worktree: introduce checkout.defaultRemote
 - checkout: add advice for ambiguous "checkout <branch>"
 - builtin/checkout.c: use "ret" variable for return
 - checkout: pass the "num_matches" up to callers
 - checkout.c: change "unique" member to "num_matches"
 - checkout.c: introduce an *_INIT macro
 - checkout.h: wrap the arguments to unique_tracking_name()
 - checkout tests: index should be clean after dwim checkout

 "git checkout" and "git worktree add" learned to honor
 checkout.defaultRemote when auto-vivifying a local branch out of a
 remote tracking branch in a repository with multiple remotes that
 have tracking branches that share the same names.

 Will merge to 'next'.


* ds/commit-graph-fsck (2018-06-27) 22 commits
 - commit-graph: update design document
 - gc: automatically write commit-graph files
 - commit-graph: add '--reachable' option
 - commit-graph: use string-list API for input
 - fsck: verify commit-graph
 - commit-graph: verify contents match checksum
 - commit-graph: test for corrupted octopus edge
 - commit-graph: verify commit date
 - commit-graph: verify generation number
 - commit-graph: verify parent list
 - commit-graph: verify root tree OIDs
 - commit-graph: verify objects exist
 - commit-graph: verify corrupt OID fanout and lookup
 - commit-graph: verify required chunks are present
 - commit-graph: verify catches corrupt signature
 - commit-graph: add 'verify' subcommand
 - commit-graph: load a root tree from specific graph
 - commit: force commit to parse from object database
 - commit-graph: parse commit from chosen graph
 - commit-graph: fix GRAPH_MIN_SIZE
 - commit-graph: UNLEAK before die()
 - t5318-commit-graph.sh: use core.commitGraph
 (this branch is used by jt/commit-graph-per-object-store.)

 "git fsck" learns to make sure the optional commit-graph file is in
 a sane state.

 Will merge to 'next'.


* ma/wrapped-info (2018-05-28) 2 commits
 - usage: prefix all lines in `vreportf()`, not just the first
 - usage: extract `prefix_suffix_lines()` from `advise()`

 An attempt to help making multi-line messages fed to warning(),
 error(), and friends more easily translatable.

 Will discard and wait for a cleaned-up rewrite.
 cf. <20180529213957.GF7964@sigill.intra.peff.net>


* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
 - block alloc: add validations around cache_entry lifecyle
 - block alloc: allocate cache entries from mem_pool
 - mem-pool: fill out functionality
 - mem-pool: add life cycle management functions
 - mem-pool: only search head block for available space
 - block alloc: add lifecycle APIs for cache_entry structs
 - read-cache: teach make_cache_entry to take object_id
 - read-cache: teach refresh_cache_entry to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 Will merge to 'next'.

 This makes each cache-entry larger by either 4 or 8 bytes, which is
 a bit sad, though.


* sb/object-store-grafts (2018-05-18) 19 commits
  (merged to 'next' on 2018-06-28 at 02f70d6302)
 + commit: allow lookup_commit_graft to handle arbitrary repositories
 + commit: allow prepare_commit_graft to handle arbitrary repositories
 + shallow: migrate shallow information into the object parser
 + path.c: migrate global git_path_* to take a repository argument
 + cache: convert get_graft_file to handle arbitrary repositories
 + commit: convert read_graft_file to handle arbitrary repositories
 + commit: convert register_commit_graft to handle arbitrary repositories
 + commit: convert commit_graft_pos() to handle arbitrary repositories
 + shallow: add repository argument to is_repository_shallow
 + shallow: add repository argument to check_shallow_file_for_update
 + shallow: add repository argument to register_shallow
 + shallow: add repository argument to set_alternate_shallow_file
 + commit: add repository argument to lookup_commit_graft
 + commit: add repository argument to prepare_commit_graft
 + commit: add repository argument to read_graft_file
 + commit: add repository argument to register_commit_graft
 + commit: add repository argument to commit_graft_pos
 + object: move grafts to object parser
 + object-store: move object access functions to object-store.h
 (this branch is used by sb/object-store-lookup.)

 Originally merged to 'next' on 2018-06-22

 The conversion to pass "the_repository" and then "a_repository"
 throughout the object access API continues.

 Will merge to 'master'.


* sb/diff-color-move-more (2018-06-29) 9 commits
 - diff.c: add white space mode to move detection that allows indent changes
 - diff.c: factor advance_or_nullify out of mark_color_as_moved
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - t4015: avoid git as a pipe input
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.

 Will merge to 'next'.


* jk/branch-l-0-deprecation (2018-06-22) 3 commits
  (merged to 'next' on 2018-06-29 at fac676dfb9)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-repurpose.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step warns when "-l"
 is used as a short-hand for "--create-reflog" and warns about the
 future repurposing of the it when it is used.

 Will merge to 'master'.

--------------------------------------------------
[Discarded]

* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
 . rebase--interactive: rewrite append_todo_help() in C
 . Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
 (this branch is used by ag/rebase-i-rewrite-todo.)

 Stepwise rewriting of the machinery of "rebase -i" into C continues.

 Now part of ag/rebase-i-in-c


* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
 . rebase--interactive: rewrite the edit-todo functionality in C
 . editor: add a function to launch the sequence editor
 . Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
 (this branch uses ag/rebase-i-append-todo-help.)

 Stepwise rewriting of the machinery of "rebase -i" into C continues.

 Now part of ag/rebase-i-in-c


* ab/fetch-tags-noclobber (2018-05-16) 9 commits
 - fixup! push tests: assert re-pushing annotated tags
 - fetch: stop clobbering existing tags without --force
 - fetch tests: add a test clobbering tag behavior
 - fetch tests: correct a comment "remove it" -> "remove them"
 - push doc: correct lies about how push refspecs work
 - push tests: assert re-pushing annotated tags
 - push tests: add more testing for forced tag pushing
 - push tests: fix logic error in "push" test assertion
 - push tests: remove redundant 'git push' invocation

 Discarded per request.
 cf. <87po09cnir.fsf@evledraar.gmail.com>


* nd/use-the-index-compat-less (2018-06-25) 13 commits
 . wt-status.c: stop using index compat macros
 . sha1-name.c: stop using index compat macros
 . sequencer.c: stop using index compat macros
 . revision.c: stop using index compat macros
 . rerere.c: stop using index compat macros
 . merge.c: stop using index compat macros
 . merge-recursive.c: stop using index compat macros
 . entry.c: stop using index compat macros
 . diff.c: stop using index compat macros
 . diff-lib.c: stop using index compat macros
 . check-racy.c: stop using index compat macros
 . blame.c: stop using index compat macros
 . apply.c: stop using index compat macros

 Retracted to be replaced with a more vertical approach where the
 lower-level helper functions are taught to be capable of working on
 an istate instance that is not the_index first, and then upwards to
 support the application layer that wants to work on an arbitrary
 istate instance, as the goal is not a mechanical replacement of
 foo_cache(...) to foo_index(&the_index, ...).


* js/branch-diff (2018-05-16) 19 commits
 . fixup! Add a function to solve least-cost assignment problems
 . completion: support branch-diff
 . branch-diff: add a man page
 . branch-diff --dual-color: work around bogus white-space warning
 . branch-diff: offer to dual-color the diffs
 . diff: add an internal option to dual-color diffs of diffs
 . color: provide inverted colors, too
 . branch-diff: use color for the commit pairs
 . branch-diff: add tests
 . branch-diff: do not show "function names" in hunk headers
 . branch-diff: adjust the output of the commit pairs
 . branch-diff: suppress the diff headers
 . branch-diff: indent the diffs just like tbdiff
 . branch-diff: right-trim commit messages
 . branch-diff: also show the diff between patches
 . branch-diff: improve the order of the shown commits
 . branch-diff: first rudimentary implementation
 . Add a new builtin: branch-diff
 . Add a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

^ permalink raw reply	[relevance 3%]

* Re: [RFC] Git rerere and non-conflicting changes during conflict resolution
  @ 2017-07-25 20:26  3%   ` Junio C Hamano
    0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2017-07-25 20:26 UTC (permalink / raw)
  To: Jeff King; +Cc: Raman Gupta, git

Jeff King <peff@peff.net> writes:

>> 1) Is this a known limitation or is there a reason rerere works in
>> this manner?
>
> Yes, it's known. Rerere works by storing a mapping of conflicted hunks
> to their resolutions. If there's no conflicted hunk, I'm not sure how
> we'd decide what to feed into the mapping to see if there is some
> content to be replaced.

Correct.  

This is not even a limitation but is outside the scope of rerere.
Let's understand that first.

A semantic conflict that requires an evil merge that touches a file
that is not involved in any textual conflict during a merge will
happen even if there is *NO* textual merge conflict.  

Imagine that there is a global variable 'xyzzy' used in many places
in the code, and then a side branch forks from the mainline.  The
mainline renames the variable to 'frotz' in the entire codebase,
while the side branch adds one more place that the variable is used
under its original name.  Then you merge these two branches.  This
will textually merge cleanly if the place the side branch adds a new
mention of 'xyzzy' is textually far from any block of text in the
common ancestor that has been updated on the mainline while these
two branches diverged.

"git checkout mainline && git merge side" will cleanly automerge,
yet the result is not correct.  The new mention of 'xyzzy' added by
the merge needs to be corrected to 'frotz'.

Now we take that as the baseline and further imagine that during the
time these two branches diverged, the mainline also updated some
documentation of something totally unrelated to 'xyzzy' vs 'frotz'
variable.  Perhaps README was updated, or something.  The side
branch also updated the same file in a different way.  This time,
the changes to this same file may result in textual conflict.

"git checkout mainline && git merge side" will result in a conflict,
whose resolution may be recorded by rerere for that file.  It should
be crystal clear that this conflict does *not* have anything to do
with the semantic conflict between 'xyzzy' vs 'frotz'.  

The realization we must draw from the above observation is that what
the "merge-fix" machinery in the Reintegrate script you cited in
your message tries to help, which is the semantic conflict,
fundamentally cannot be tied to any textual merge conflict that may
(or may not) happen.  That is what makes the issue outside the scope
of rerere.

The above is not to say that the need to record and replay such evil
merges to solve semantic conflict does not exist.  Far from it.  It
is just clarifying that it is a wrong approach to try to "teach"
rerere to somehow handle that case as well.

If we wanted to port the "merge-fix" logic, and I do wish it would
happen some day, the update belongs to "git merge".

You were too kind to call the "merge-fix" logic in Reintegrate "the
state of the art", but I am not happy about its limitation.  Here
are the things I wish to have in an ideal version of the "merge-fix"
logic, which does not exist yet:

 * There is a database of "to be cherry-picked" commits, keyed by a
   pair of branch names.  That is, given branches A and B, the
   database will return 0 or more commits that can be cherry-picked.
   The order of branch names in the pair is immaterial, i.e. asking
   the database for cherry-pickable commits keyed by <A, B> and
   keyed by <B, A> will yield the identical set of commits.

 * When merging commit X to commit Y, "git merge" in the ideal world
   does the following:

   - It first does what it currently does, i.e. three-way merge with
     the merge strategy and applying rerere for re-application of an
     earlier resolution of textual conflicts.

   - Then, it looks up the database to find the keys <A, B> where
     A is in X but not in Y, and B is not in X but in Y.
     These commits are cherry-picked and squashed into the result of
     the above.

The intent is that a pair <A, B> represents the mainline and side
branch in the above example, where A renamed 'xyzzy' to 'frotz' and
B added new reference to 'xyzzy'.  And the cherry-pickable commit
found in the database is to tweak the 'xyzzy' B adds into 'frotz'.

I said A and B in the above are branch names, but in the ideal
world, they can be commit object names (possibly in the middle of a
branch), as long as we can reliable update the database's keys every
time "git rebase" etc. rewrites commits.

To populate the database, we'd need a reverse.

 * When merging branch B into branch A (or the other way around) for
   the first time, "git merge" would do what it currently does.

 * The user then concludes the merge to resolve *ONLY* the textual
   conflict, and commit the result.  It is important that no
   additional evil merge to correct for semantic conflicts is done
   in this step.  Note that if the auto-merge cleanly succeeds, this
   step may not even exist.

 * Then the user makes another commit to correct for semantic
   conflicts (aka "merge-fix").

 * Then the user tells Git that semantic conflicts were resolved and
   need to be recorded (just like running "git rerere" manually,
   before "git commit" automatically does it for them these days).
   This will result in the following:

   - The database is updated so that key <A, B> yields the
     "merge-fix" commit;

   - The head is detached at the tip of branch A before the merge;

   - "git merge B" is done again, which _should_ reproduce the state
     immediately after the user committed the "merge-fix";

   - The tip of branch A is reset to the result of the above.

The merge-fix logic in Reintegrate is a poor-man's emulation of the
above ideal.  A value its database yields is not a set of commits,
but a single commit, and instead of getting keyed by a pair of
branch names, the database is keyed by a single branch name
(i.e. recording "I had trouble when merging this branch" without
saying "... to the integration branch that already had this other
branch"), so the look-up does not have to do "A is in X but not in
Y, and B is not in X but in Y".  

It is still usable but the database need to be reorganized every
time the order of topics merged to 'pu' is changed.



^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2018, #02; Wed, 18)
@ 2018-07-18 22:03  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-18 22:03 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively.  As I needed to re-resolve semantic merge conflicts
while reordering some topics (i.e. some that were merged earlier in
'pu' are left in 'pu' while another topic that had interactions with
them and required evil merge to resolve semantic conflicts
leapfrogged to 'next'---the semantic conflict resolution then need
to happen at a different merge than done earlier in 'pu' while
rebuilding today's integration), I didn't have enough time to spend
on new topics posted to the list in the past few days.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* ao/config-from-gitmodules (2018-06-26) 6 commits
  (merged to 'next' on 2018-07-11 at 5d88dc6fb7)
 + submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
 + submodule-config: pass repository as argument to config_from_gitmodules
 + submodule-config: make 'config_from_gitmodules' private
 + submodule-config: add helper to get 'update-clone' config from .gitmodules
 + submodule-config: add helper function to get 'fetch' config from .gitmodules
 + config: move config_from_gitmodules to submodule-config.c

 Tighten the API to make it harder to misuse in-tree .gitmodules
 file, even though it shares the same syntax with configuration
 files, to read random configuration items from it.


* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
  (merged to 'next' on 2018-06-29 at da6f49d292)
 + docs: link to gitsubmodules

 Docfix.


* bw/protocol-v2 (2018-06-22) 1 commit
  (merged to 'next' on 2018-06-29 at 78090cc343)
 + protocol-v2 doc: put HTTP headers after request

 Doc fix.


* dj/runtime-prefix (2018-06-26) 1 commit
  (merged to 'next' on 2018-07-11 at 27d99fef94)
 + Makefile: tweak sed invocation

 POSIX portability fix in Makefile to fix a glitch introduced a few
 releases ago.


* ds/commit-graph (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-11 at d579f733ed)
 + commit-graph: fix documentation inconsistencies

 Docfix.


* ds/ewah-cleanup (2018-06-21) 10 commits
  (merged to 'next' on 2018-06-28 at 9cd7c0d54a)
 + ewah: delete unused 'rlwit_discharge_empty()'
 + ewah: drop ewah_serialize_native function
 + ewah: drop ewah_deserialize function
 + ewah_io: delete unused 'ewah_serialize()'
 + ewah_bitmap: delete unused 'ewah_or()'
 + ewah_bitmap: delete unused 'ewah_not()'
 + ewah_bitmap: delete unused 'ewah_and_not()'
 + ewah_bitmap: delete unused 'ewah_and()'
 + ewah/bitmap.c: delete unused 'bitmap_each_bit()'
 + ewah/bitmap.c: delete unused 'bitmap_clear()'

 Originally merged to 'next' on 2018-06-22

 Remove unused function definitions and declarations from ewah
 bitmap subsystem.


* en/merge-recursive-cleanup (2018-06-12) 6 commits
  (merged to 'next' on 2018-06-28 at 1a3646eb7d)
 + merge-recursive: add pointer about unduly complex looking code
 + merge-recursive: rename conflict_rename_*() family of functions
 + merge-recursive: clarify the rename_dir/RENAME_DIR meaning
 + merge-recursive: align labels with their respective code blocks
 + merge-recursive: fix numerous argument alignment issues
 + merge-recursive: fix miscellaneous grammar error in comment

 Originally merged to 'next' on 2018-06-19

 Code cleanup.


* en/rebase-i-microfixes (2018-06-27) 3 commits
  (merged to 'next' on 2018-07-11 at d913ca0f77)
 + git-rebase--merge: modernize "git-$cmd" to "git $cmd"
 + Fix use of strategy options with interactive rebases
 + t3418: add testcase showing problems with rebase -i and strategy options

 Will merge to 'master'.


* jk/branch-l-0-deprecation (2018-06-22) 3 commits
  (merged to 'next' on 2018-06-29 at fac676dfb9)
 + branch: deprecate "-l" option
 + t: switch "branch -l" to "branch --create-reflog"
 + t3200: unset core.logallrefupdates when testing reflog creation
 (this branch is used by jk/branch-l-1-repurpose.)

 The "-l" option in "git branch -l" is an unfortunate short-hand for
 "--create-reflog", but many users, both old and new, somehow expect
 it to be something else, perhaps "--list".  This step warns when "-l"
 is used as a short-hand for "--create-reflog" and warns about the
 future repurposing of the it when it is used.


* js/enhanced-version-info (2018-06-29) 1 commit
  (merged to 'next' on 2018-07-11 at 815b2ea2bc)
 + Makefile: fix the "built from commit" code

 Build fix.


* js/rebase-recreate-merge (2018-06-27) 1 commit
  (merged to 'next' on 2018-07-11 at eb8f33aaef)
 + rebase: fix documentation formatting

 Docfix.


* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
  (merged to 'next' on 2018-06-29 at 852857b04e)
 + pack-bitmap: add free function
 + pack-bitmap: remove bitmap_git global variable

 The effort to move globals to per-repository in-core structure
 continues.


* ld/p423 (2018-06-19) 6 commits
  (merged to 'next' on 2018-06-29 at af76acb664)
 + git-p4: python3: fix octal constants
 + git-p4: python3: use print() function
 + git-p4: python3: basestring workaround
 + git-p4: python3: remove backticks
 + git-p4: python3: replace dict.has_key(k) with "k in dict"
 + git-p4: python3: replace <> with !=

 Code preparation to make "git p4" closer to be usable with Python 3.


* mb/filter-branch-optim (2018-06-26) 1 commit
  (merged to 'next' on 2018-07-11 at e43a0136c2)
 + filter-branch: skip commits present on --state-branch

 "git filter-branch" when used with the "--state-branch" option
 still attempted to rewrite the commits whose filtered result is
 known from the previous attempt (which is recorded on the state
 branch); the command has been corrected not to waste cycles doing
 so.


* ms/core-icase-doc (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-11 at 8f0d71c32d)
 + Documentation: declare "core.ignoreCase" as internal variable

 Clarify that setting core.ignoreCase to deviate from reality would
 not turn a case-incapable filesystem into a case-capable one.


* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
  (merged to 'next' on 2018-06-29 at 538337be74)
 + sequencer: do not squash 'reword' commits when we hit conflicts

 Bugfix for "rebase -i" corner case regression.


* sb/mailmap (2018-06-29) 1 commit
  (merged to 'next' on 2018-07-11 at d9dc53e374)
 + .mailmap: merge different spellings of names

 Will merge to 'master'.


* sb/object-store-grafts (2018-05-18) 19 commits
  (merged to 'next' on 2018-06-28 at 02f70d6302)
 + commit: allow lookup_commit_graft to handle arbitrary repositories
 + commit: allow prepare_commit_graft to handle arbitrary repositories
 + shallow: migrate shallow information into the object parser
 + path.c: migrate global git_path_* to take a repository argument
 + cache: convert get_graft_file to handle arbitrary repositories
 + commit: convert read_graft_file to handle arbitrary repositories
 + commit: convert register_commit_graft to handle arbitrary repositories
 + commit: convert commit_graft_pos() to handle arbitrary repositories
 + shallow: add repository argument to is_repository_shallow
 + shallow: add repository argument to check_shallow_file_for_update
 + shallow: add repository argument to register_shallow
 + shallow: add repository argument to set_alternate_shallow_file
 + commit: add repository argument to lookup_commit_graft
 + commit: add repository argument to prepare_commit_graft
 + commit: add repository argument to read_graft_file
 + commit: add repository argument to register_commit_graft
 + commit: add repository argument to commit_graft_pos
 + object: move grafts to object parser
 + object-store: move object access functions to object-store.h
 (this branch is used by jt/commit-graph-per-object-store and sb/object-store-lookup.)

 Originally merged to 'next' on 2018-06-22

 The conversion to pass "the_repository" and then "a_repository"
 throughout the object access API continues.


* sb/submodule-core-worktree (2018-06-19) 3 commits
  (merged to 'next' on 2018-06-28 at 96e1a8dbd1)
 + submodule deinit: unset core.worktree
 + submodule: ensure core.worktree is set after update
 + submodule: unset core.worktree if no working tree is present

 Originally merged to 'next' on 2018-06-22

 "git submodule" did not correctly adjust core.worktree setting that
 indicates whether/where a submodule repository has its associated
 working tree across various state transitions, which has been
 corrected.


* tb/grep-column (2018-06-22) 7 commits
  (merged to 'next' on 2018-06-29 at 25dc70426e)
 + contrib/git-jump/git-jump: jump to exact location
 + grep.c: add configuration variables to show matched option
 + builtin/grep.c: add '--column' option to 'git-grep(1)'
 + grep.c: display column number of first match
 + grep.[ch]: extend grep_opt to allow showing matched column
 + grep.c: expose {,inverted} match column in match_line()
 + Documentation/config.txt: camel-case lineNumber for consistency
 (this branch is used by tb/grep-only-matching.)

 "git grep" learned the "--column" option that gives not just the
 line number but the column number of the hit.


* tz/exclude-doc-smallfixes (2018-06-27) 2 commits
  (merged to 'next' on 2018-07-11 at 5134f1ca72)
 + dir.c: fix typos in core.excludesfile comment
 + gitignore.txt: clarify default core.excludesfile path

 Doc updates.


* vs/typofixes (2018-06-22) 1 commit
  (merged to 'next' on 2018-06-29 at 665c8db2f7)
 + Documentation: spelling and grammar fixes

 Doc fix.


* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
  (merged to 'next' on 2018-06-29 at 0dffc46ce2)
 + format-patch: clear UNINTERESTING flag before prepare_bases

 Recently added "--base" option to "git format-patch" command did
 not correctly generate prereq patch ids.

--------------------------------------------------
[New Topics]

* am/sequencer-author-script-fix (2018-07-18) 1 commit
 - sequencer.c: terminate the last line of author-script properly

 The author-script that records the author information created by
 the sequencer machinery lacked the closing single quote on the last
 entry.

 Fixing this alone may or may not break the reader that may have
 been compensating for this bogus writer.  I think I saw another fix
 to the same source file posted today---if we are fixing, we should
 fix them all at the same time to keep the reader and the writer in
 sync.


* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
 - sequencer: pass absolute GIT_WORK_TREE to exec commands

 "git rebase" started exporting GIT_DIR environment variable and
 exposing it to hook scripts when part of it got rewritten in C.
 Instead of matching the old scripted Porcelains' behaviour,
 compensate by also exporting GIT_WORK_TREE environment as well to
 lessen the damage.  This can harm existing hooks that want to
 operate on different repository, but the current behaviour is
 already broken for them anyway.

 Will merge to 'next'.


* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
 - handle lower case drive letters on Windows

 A test helper update for Windows.

 Will merge to 'next'.


* en/abort-df-conflict-fixes (2018-07-16) 2 commits
 - read-cache: fix directory/file conflict handling in read_index_unmerged()
 - t1015: demonstrate directory/file conflict recovery failures

 "git merge --abort" etc. did not clean things up properly when
 there were conflicted entries in certain order that are involved
 in D/F conflicts.  This has been corrected.

 This may have to be rebased on an older maintenance track before
 moving forward.


* es/chain-lint-in-subshell (2018-07-17) 10 commits
 - t/chainlint: add chainlint "specialized" test cases
 - t/chainlint: add chainlint "complex" test cases
 - t/chainlint: add chainlint "cuddled" test cases
 - t/chainlint: add chainlint "loop" and "conditional" test cases
 - t/chainlint: add chainlint "nested subshell" test cases
 - t/chainlint: add chainlint "one-liner" test cases
 - t/chainlint: add chainlint "whitespace" test cases
 - t/chainlint: add chainlint "basic" test cases
 - t/Makefile: add machinery to check correctness of chainlint.sed
 - t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
 (this branch uses es/test-fixes.)

 Look for broken "&&" chains that are hidden in subshell, many of
 which have been found and corrected.

 Will merge to 'next'.


* es/test-lint-one-shot-export (2018-07-16) 5 commits
  (merged to 'next' on 2018-07-18 at 26a6124963)
 + t/check-non-portable-shell: detect "FOO=bar shell_func"
 + t/check-non-portable-shell: make error messages more compact
 + t/check-non-portable-shell: stop being so polite
 + t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
 + Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export
 (this branch uses jc/t3404-one-shot-export-fix.)

 Look for broken use of "vAR=VAL shell_func" in test scripts as part
 of test-lint.

 Will merge to 'master'.


* hs/gpgsm (2018-07-18) 7 commits
 - gpg-interface t: extend the existing GPG tests with GPGSM
 - gpg-interface: introduce new signature format "x509" using gpgsm
 - gpg-interface: introduce new config to select per gpg format program
 - gpg-interface: do not hardcode the key string len anymore
 - gpg-interface: introduce an abstraction for multiple gpg formats
 - t/t7510: check the validation of the new config gpg.format
 - gpg-interface: add new config to select how to sign a commit
 (this branch uses hs/push-cert-check-cleanup.)

 Teach "git tag -s" etc. a few configuration varaibles (gpg.format
 that can be set to "openpgp" or "x509", and gpg.<format>.program
 that is used to specify what program to use to deal with the format)
 to allow x.509 certs with CMS via "gpgsm" to be used instead of
 openpgp via "gnupg".

 I think this round is mostly ready, except for a minor nit in the
 last step.  I do not mind merging this to 'next' and leave fixing
 of the test to a later clean-up.


* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-18 at e15a79dca7)
 + t3404: fix use of "VAR=VAL cmd" with a shell function
 (this branch is used by es/test-lint-one-shot-export.)

 Correct a broken use of "VAR=VAL shell_func" in a test.

 Will merge to 'master'.


* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
 - has_uncommitted_changes(): fall back to empty tree

 "git pull --rebase" on a corrupt HEAD caused a segfault.  In
 general we substitute an empty tree object when running the in-core
 equivalent of the diff-index command, and the codepath has been
 corrected to do so as well to fix this issue.

 Will merge to 'next'.


* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
 - send-email: fix tls AUTH when sending batch

 "git send-email" when using in a batched mode that limits the
 number of messages sent in a single SMTP session lost the contents
 of the variable used to choose between tls/ssl, unable to send the
 second and later batches, which has been fixed.

 Will merge to 'next'.

 This is marked to be merged to 'next' already, but I do not mind
 getting an updated version with an improved log message before that
 happens.


* jn/gc-auto (2018-07-17) 3 commits
 - gc: do not return error for prior errors in daemonized mode
 - gc: exit with status 128 on failure
 - gc: improve handling of errors reading gc.log

 "gc --auto" ended up calling exit(-1) upon error, which has been
 corrected to use exit(1).  Also the error reporting behaviour when
 daemonized has been updated to exit with zero status when stopping
 due to a previously discovered error (which implies there is no
 point running gc to improve the situation); we used to exit with
 failure in such a case.

 Under discussion.
 cf. <20180717201348.GD26218@sigill.intra.peff.net>


* js/rebase-merge-octopus (2018-07-11) 3 commits
 - rebase --rebase-merges: adjust man page for octopus support
 - rebase --rebase-merges: add support for octopus merges
 - merge: allow reading the merge commit message from a file

 "git rebase --rebase-merges" mode now handles octopus merges as
 well.

 Will merge to 'next'.


* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
 - negotiator/skipping: skip commits during fetch
 (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)

 Add a server-side knob to skip commits in exponential/fibbonacci
 stride in an attempt to cover wider swath of history with a smaller
 number of iterations, potentially accepting a larger packfile
 transfer, instead of going back one commit a time during common
 ancestor discovery during the "git fetch" transaction.

 Will merge to 'next'.


* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
 - tag: don't warn if target is missing but promised
 - revision: tolerate promised targets of tags
 (this branch uses bw/ref-in-want, jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.)

 The lazy clone support had a few places where missing but promised
 objects were not correctly tolerated, which have been fixed.

 Will merge to 'next'.


* nd/command-list (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at 77ed2a3914)
 + vcbuild/README: update to accommodate for missing common-cmds.h

 Build doc update for Windows.

 Will merge to 'master'.


* sb/blame-color (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at c319268502)
 + blame: prefer xsnprintf to strcpy for colors

 Code clean-up.

 Will merge to 'master'.


* sb/submodule-update-in-c (2018-07-17) 6 commits
 - submodule--helper: introduce new update-module-mode helper
 - builtin/submodule--helper: factor out method to update a single submodule
 - builtin/submodule--helper: store update_clone information in a struct
 - builtin/submodule--helper: factor out submodule updating
 - git-submodule.sh: rename unused variables
 - git-submodule.sh: align error reporting for update mode to use path

 "git submodule update" is getting rewritten piece-by-piece into C.

 It seems to pass its own self-tests standalone, but seems to break
 horribly when merged to 'pu'.


* sg/httpd-test-unflake (2018-07-12) 3 commits
 - t/lib-httpd: avoid occasional failures when checking access.log
 - t/lib-httpd: add the strip_access_log() helper function
 - t5541: clean up truncating access log

 httpd tests saw occasional breakage due to the way its access log
 gets inspected by the tests, which has been updated to make them
 less flaky.

 Will merge to 'next'.


* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits
 - commit: fix exit code for --short/--porcelain
 - wt-status: teach wt_status_collect about merges in progress
 - t7501: add merge conflict tests for dry run

 Under discussion.
 cf. <xmqqpnzlpyux.fsf@gitster-ct.c.googlers.com>


* tg/rerere (2018-07-16) 11 commits
 - rerere: recalculate conflict ID when unresolved conflict is committed
 - rerere: teach rerere to handle nested conflicts
 - rerere: return strbuf from handle path
 - rerere: factor out handle_conflict function
 - rerere: only return whether a path has conflicts or not
 - rerere: fix crash when conflict goes unresolved
 - rerere: add documentation for conflict normalization
 - rerere: mark strings for translation
 - rerere: wrap paths in output in sq
 - rerere: lowercase error messages
 - rerere: unify error messages when read_cache fails


* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit
  (merged to 'next' on 2018-07-18 at 334d2420c0)
 + sha1-name.c: for ":/", find detached HEAD commits

 "git rev-parse ':/substring'" did not consider the history leading
 only to HEAD when looking for a commit with the given substring,
 when the HEAD is detached.  This has been fixed.

 Will merge to 'master'.


* jk/ui-color-always-to-auto (2018-07-18) 1 commit
 - Documentation: fix --color option formatting

--------------------------------------------------
[Stalled]

* pw/add-p-select (2018-03-16) 3 commits
 - add -p: optimize line selection for short hunks
 - add -p: allow line selection to be inverted
 - add -p: select individual hunk lines

 "git add -p" interactive interface learned to let users choose
 individual added/removed lines to be used in the operation, instead
 of accepting or rejecting a whole hunk.

 Expecting a reroll to reignite the discussion.
 cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>


* hn/bisect-first-parent (2018-04-21) 1 commit
 - bisect: create 'bisect_flags' parameter in find_bisection()

 Preliminary code update to allow passing more flags down the
 bisection codepath in the future.

 We do not add random code that does not have real users to our
 codebase, so let's have it wait until such a real code materializes
 before too long.


* av/fsmonitor-updates (2018-01-04) 6 commits
 - fsmonitor: use fsmonitor data in `git diff`
 - fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
 - fsmonitor: make output of test-dump-fsmonitor more concise
 - fsmonitor: update helper tool, now that flags are filled later
 - fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
 - dir.c: update comments to match argument name

 Code clean-up on fsmonitor integration, plus optional utilization
 of the fsmonitor data in diff-files.

 Waiting for an update.
 cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>


* pb/bisect-helper-2 (2018-06-13) 8 commits
 - t6030: make various test to pass GETTEXT_POISON tests
 - bisect--helper: `bisect_start` shell function partially in C
 - bisect--helper: `get_terms` & `bisect_terms` shell function in C
 - bisect--helper: `bisect_next_check` shell function in C
 - bisect--helper: `check_and_set_terms` shell function in C
 - wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
 - bisect--helper: `bisect_write` shell function in C
 - bisect--helper: `bisect_reset` shell function in C

 Expecting a reroll.
 cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>

 I just rebased the topic to a newer base as it did not build
 standalone with the base I originally queued the topic on, but
 otherwise there is no update to address any of the review comments
 in the thread above---we are still waiting for a reroll.


* mk/http-backend-content-length (2018-06-11) 3 commits
 - http-backend: respect CONTENT_LENGTH for receive-pack
 - http-backend: respect CONTENT_LENGTH as specified by rfc3875
 - http-backend: cleanup writing to child process

 The http-backend (used for smart-http transport) used to slurp the
 whole input until EOF, without paying attention to CONTENT_LENGTH
 that is supplied in the environment and instead expecting the Web
 server to close the input stream.  This has been fixed.


* jk/drop-ancient-curl (2017-08-09) 5 commits
 - http: #error on too-old curl
 - curl: remove ifdef'd code never used with curl >=7.19.4
 - http: drop support for curl < 7.19.4
 - http: drop support for curl < 7.16.0
 - http: drop support for curl < 7.11.1

 Some code in http.c that has bitrot is being removed.

 Expecting a reroll.


* mk/use-size-t-in-zlib (2017-08-10) 1 commit
 . zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

 Needs resurrecting by making sure the fix is good and still applies
 (or adjusted to today's codebase).

--------------------------------------------------
[Cooking]

* jh/json-writer (2018-07-16) 1 commit
 - json_writer: new routines to create JSON data

 Preparatory code to later add json output for telemetry data.

 A series on top that adds telemetry data exists but hasn't been
 picked up yet.


* ag/rebase-i-in-c (2018-07-10) 13 commits
 - rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
 - rebase -i: implement the logic to initialize the variable $revision in C
 - rebase--interactive: remove unused modes and functions
 - rebase--interactive: rewrite complete_action() in C
 - sequencer: change the way skip_unnecessary_picks() returns its result
 - sequencer: refactor append_todo_help() to write its message to a buffer
 - rebase -i: rewrite checkout_onto() in C
 - rebase -i: rewrite setup_reflog_action() in C
 - sequencer: add a new function to silence a command, except if it fails
 - rebase-interactive: rewrite the edit-todo functionality in C
 - editor: add a function to launch the sequence editor
 - rebase--interactive: rewrite append_todo_help() in C
 - sequencer: make two functions and an enum from sequencer.c public

 Piecemeal rewrite of the remaining "rebase -i" machinery in C.

 Expecting a reroll.

 The early parts of the series seem solidifying; perhaps with a
 reroll or two, they become 'next' material?


* en/apply-comment-fix (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-18 at 31d818f17d)
 + apply: fix grammar error in comment

 Will merge to 'master'.


* en/t5407-rebase-m-fix (2018-06-28) 1 commit
  (merged to 'next' on 2018-07-18 at 459875daeb)
 + t5407: fix test to cover intended arguments

 Will merge to 'master'.


* sb/object-store-lookup (2018-06-29) 33 commits
 - commit.c: allow lookup_commit_reference to handle arbitrary repositories
 - commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
 - tag.c: allow deref_tag to handle arbitrary repositories
 - object.c: allow parse_object to handle arbitrary repositories
 - object.c: allow parse_object_buffer to handle arbitrary repositories
 - commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
 - commit.c: allow set_commit_buffer to handle arbitrary repositories
 - commit.c: migrate the commit buffer to the parsed object store
 - commit-slabs: remove realloc counter outside of slab struct
 - commit.c: allow parse_commit_buffer to handle arbitrary repositories
 - tag: allow parse_tag_buffer to handle arbitrary repositories
 - tag: allow lookup_tag to handle arbitrary repositories
 - commit: allow lookup_commit to handle arbitrary repositories
 - tree: allow lookup_tree to handle arbitrary repositories
 - blob: allow lookup_blob to handle arbitrary repositories
 - object: allow lookup_object to handle arbitrary repositories
 - object: allow object_as_type to handle arbitrary repositories
 - tag: add repository argument to deref_tag
 - tag: add repository argument to parse_tag_buffer
 - tag: add repository argument to lookup_tag
 - commit: add repository argument to get_cached_commit_buffer
 - commit: add repository argument to set_commit_buffer
 - commit: add repository argument to parse_commit_buffer
 - commit: add repository argument to lookup_commit
 - commit: add repository argument to lookup_commit_reference
 - commit: add repository argument to lookup_commit_reference_gently
 - tree: add repository argument to lookup_tree
 - blob: add repository argument to lookup_blob
 - object: add repository argument to object_as_type
 - object: add repository argument to parse_object_buffer
 - object: add repository argument to lookup_object
 - object: add repository argument to parse_object
 - Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
 (this branch is used by jt/commit-graph-per-object-store.)

 lookup_commit_reference() and friends have been updated to find
 in-core object for a specific in-core repository instance.

 Will merge to 'next'.


* ag/rebase-p (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at c36ebba99b)
 + git-rebase--preserve-merges: fix formatting of todo help message

 The help message shown in the editor to edit todo list in "rebase -p"
 has regressed recently, which has been corrected.

 Will merge to 'master'.


* bb/pedantic (2018-07-09) 8 commits
  (merged to 'next' on 2018-07-18 at e9d075e8ed)
 + utf8.c: avoid char overflow
 + string-list.c: avoid conversion from void * to function pointer
 + sequencer.c: avoid empty statements at top level
 + convert.c: replace "\e" escapes with "\033".
 + fixup! refs/refs-internal.h: avoid forward declaration of an enum
 + refs/refs-internal.h: avoid forward declaration of an enum
 + fixup! connect.h: avoid forward declaration of an enum
 + connect.h: avoid forward declaration of an enum

 The codebase has been updated to compile cleanly with -pedantic
 option.

 Will merge to 'master'.


* bb/unicode-11-width (2018-07-09) 1 commit
  (merged to 'next' on 2018-07-18 at 075648ed37)
 + unicode: update the width tables to Unicode 11

 The character display width table has been updated to match the
 latest Unicode standard.

 Will merge to 'master'.


* bc/object-id (2018-07-16) 16 commits
 - pretty: switch hard-coded constants to the_hash_algo
 - sha1-file: convert constants to uses of the_hash_algo
 - log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
 - diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
 - builtin/merge-recursive: make hash independent
 - builtin/merge: switch to use the_hash_algo
 - builtin/fmt-merge-msg: make hash independent
 - builtin/update-index: simplify parsing of cacheinfo
 - builtin/update-index: convert to using the_hash_algo
 - refs/files-backend: use the_hash_algo for writing refs
 - sha1-name: use the_hash_algo when parsing object names
 - strbuf: allocate space with GIT_MAX_HEXSZ
 - commit: express tree entry constants in terms of the_hash_algo
 - hex: switch to using the_hash_algo
 - tree-walk: replace hard-coded constants with the_hash_algo
 - cache: update object ID functions for the_hash_algo

 Conversion from uchar[40] to struct object_id continues.

 Will merge to 'next'.


* bc/send-email-auto-cte (2018-07-09) 4 commits
  (merged to 'next' on 2018-07-18 at d16c2a301a)
 + docs: correct RFC specifying email line length
 + send-email: automatically determine transfer-encoding
 + send-email: accept long lines with suitable transfer encoding
 + send-email: add an auto option for transfer encoding

 The content-transfer-encoding of the message "git send-email" sends
 out by default was 8bit, which can cause trouble when there is an
 overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
 automatically switch to quoted-printable when there is such a line
 in the payload has been introduced and is made the default.

 Will merge to 'master'.


* en/dirty-merge-fixes (2018-07-11) 9 commits
 - merge: fix misleading pre-merge check documentation
 - merge-recursive: enforce rule that index matches head before merging
 - t6044: add more testcases with staged changes before a merge is invoked
 - merge-recursive: fix assumption that head tree being merged is HEAD
 - merge-recursive: make sure when we say we abort that we actually abort
 - t6044: add a testcase for index matching head, when head doesn't match HEAD
 - t6044: verify that merges expected to abort actually abort
 - index_has_changes(): avoid assuming operating on the_index
 - read-cache.c: move index_has_changes() from merge.c

 The recursive merge strategy did not properly ensure there was no
 change between HEAD and the index before performing its operation,
 which has been corrected.

 Will merge to 'next'.


* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
 - t6036: add a failed conflict detection case: regular files, different modes
 - t6036: add a failed conflict detection case with conflicting types
 - t6036: add a failed conflict detection case with submodule add/add
 - t6036: add a failed conflict detection case with submodule modify/modify
 - t6036: add a failed conflict detection case with symlink add/add
 - t6036: add a failed conflict detection case with symlink modify/modify

 Tests to cover various conflicting cases have been added for
 merge-recursive.

 Will merge to 'next'.


* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
 - t6036: fix broken && chain in sub-shell
 - t6036: add lots of detail for directory/file conflicts in recursive case

 Tests to cover more D/F conflict cases have been added for
 merge-recursive.

 Will merge to 'next'.


* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
 - t6042: add testcase covering long chains of rename conflicts
 - t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
 - t6042: add testcase covering rename/add/delete conflict type

 Various glitches in the heuristics of merge-recursive strategy have
 been documented in new tests.

 Will merge to 'next'.

 I am not sure if there is a single "correct" answer everybody can
 agree on for each of these "insane" cases, though.


* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
 - t7405: verify 'merge --abort' works after submodule/path conflicts
 - t7405: add a directory/submodule conflict
 - t7405: add a file/submodule conflict

 Tests to cover conflict cases that involve submodules have been
 added for merge-recursive.

 Will merge to 'next'.


* es/test-fixes (2018-07-17) 26 commits
 - t5608: fix broken &&-chain
 - t9119: fix broken &&-chains
 - t9000-t9999: fix broken &&-chains
 - t7000-t7999: fix broken &&-chains
 - t6000-t6999: fix broken &&-chains
 - t5000-t5999: fix broken &&-chains
 - t4000-t4999: fix broken &&-chains
 - t3030: fix broken &&-chains
 - t3000-t3999: fix broken &&-chains
 - t2000-t2999: fix broken &&-chains
 - t1000-t1999: fix broken &&-chains
 - t0000-t0999: fix broken &&-chains
 - t9814: simplify convoluted check that command correctly errors out
 - t9001: fix broken "invoke hook" test
 - t7810: use test_expect_code() instead of hand-rolled comparison
 - t7400: fix broken "submodule add/reconfigure --force" test
 - t7201: drop pointless "exit 0" at end of subshell
 - t6036: fix broken "merge fails but has appropriate contents" tests
 - t5505: modernize and simplify hard-to-digest test
 - t5406: use write_script() instead of birthing shell script manually
 - t5405: use test_must_fail() instead of checking exit code manually
 - t/lib-submodule-update: fix "absorbing" test
 - t: drop unnecessary terminating semicolon in subshell
 - t: use sane_unset() rather than 'unset' with broken &&-chain
 - t: use test_write_lines() instead of series of 'echo' commands
 - t: use test_might_fail() instead of manipulating exit code manually
 (this branch is used by es/chain-lint-in-subshell.)

 Test clean-up and corrections.

 Will merge to 'next'.


* jk/empty-pick-fix (2018-07-11) 2 commits
  (merged to 'next' on 2018-07-18 at 43bfa862f2)
 + sequencer: don't say BUG on bogus input
 + sequencer: handle empty-set cases consistently

 Handling of an empty range by "git cherry-pick" was inconsistent
 depending on how the range ended up to be empty, which has been
 corrected.

 Will merge to 'master'.


* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at d06c6f1665)
 + t5500: prettify non-commit tag tests

 Test modernization.

 Will merge to 'master'.


* jk/for-each-ref-icase (2018-07-03) 3 commits
  (merged to 'next' on 2018-07-18 at 4c86d62adb)
 + ref-filter: avoid backend filtering with --ignore-case
 + for-each-ref: consistently pass WM_IGNORECASE flag
 + t6300: add a test for --ignore-case

 The "--ignore-case" option of "git for-each-ref" (and its friends)
 did not work correctly, which has been fixed.

 Will merge to 'master'.


* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
 - fsck: downgrade gitmodulesParse default to "info"
 - fsck: split ".gitmodules too large" error from parse failure
 - fsck: silence stderr when parsing .gitmodules
 - config: add options parameter to git_config_from_mem
 - config: add CONFIG_ERROR_SILENT handler
 - config: turn die_on_error into caller-facing enum

 Recent "security fix" to pay attention to contents of ".gitmodules"
 while accepting "git push" was a bit overly strict than necessary,
 which has been adjusted.

 Will merge to 'next'.


* js/range-diff (2018-07-09) 20 commits
 - range-diff: make --dual-color the default mode
 - range-diff: left-pad patch numbers
 - completion: support `git range-diff`
 - range-diff: add a man page
 - range-diff --dual-color: work around bogus white-space warning
 - range-diff: offer to dual-color the diffs
 - diff: add an internal option to dual-color diffs of diffs
 - color: add the meta color GIT_COLOR_REVERSE
 - range-diff: use color for the commit pairs
 - range-diff: add tests
 - range-diff: do not show "function names" in hunk headers
 - range-diff: adjust the output of the commit pairs
 - range-diff: suppress the diff headers
 - range-diff: indent the diffs just like tbdiff
 - range-diff: right-trim commit messages
 - range-diff: also show the diff between patches
 - range-diff: improve the order of the shown commits
 - range-diff: first rudimentary implementation
 - Introduce `range-diff` to compare iterations of a topic branch
 - linear-assignment: a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

 Supersedes js/branch-diff topic that added a similar command under
 a different name.


* jt/commit-graph-per-object-store (2018-07-17) 7 commits
 - commit-graph: add repo arg to graph readers
 - commit-graph: store graph in struct object_store
 - commit-graph: add free_commit_graph
 - commit-graph: add missing forward declaration
 - object-store: add missing include
 - commit-graph: refactor preparing commit graph
 - Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
 (this branch uses ds/commit-graph-fsck and sb/object-store-lookup.)

 The singleton commit-graph in-core instance is made per in-core
 repository instance.

 Will merge to 'next'.


* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
  (merged to 'next' on 2018-07-18 at 968fd9c9f0)
 + clone: check connectivity even if clone is partial
 + upload-pack: send refs' objects despite "filter"
 (this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow.)

 Partial clone support of "git clone" has been updated to correctly
 validate the objects it receives from the other side.  The server
 side has been corrected to send objects that are directly
 requested, even if they may match the filtering criteria (e.g. when
 doing a "lazy blob" partial clone).

 Will merge to 'master'.


* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
 - gc --auto: release pack files before auto packing

 "git gc --auto" opens file descriptors for the packfiles before
 spawning "git repack/prune", which would upset Windows that does
 not want a process to work on a file that is open by another
 process.  The issue has been worked around.

 Will merge to 'next'.


* kn/userdiff-php (2018-07-06) 2 commits
  (merged to 'next' on 2018-07-18 at 9a533dc33a)
 + userdiff: support new keywords in PHP hunk header
 + t4018: add missing test cases for PHP

 The userdiff pattern for .php has been updated.

 Will merge to 'master'.


* lt/date-human (2018-07-09) 1 commit
 - Add 'human' date format


* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at eb393871f4)
 + fast-import: do not call diff_delta() with empty buffer

 "git fast-import" has been updated to avoid attempting to create
 delta against a zero-byte-long string, which is pointless.

 Will merge to 'master'.


* ot/ref-filter-object-info (2018-07-17) 5 commits
 - ref-filter: use oid_object_info() to get object
 - ref-filter: merge get_obj and get_object
 - ref-filter: initialize eaten variable
 - ref-filter: fill empty fields with empty values
 - ref-filter: add info_source to valid_atom

 A few atoms like %(objecttype) and %(objectsize) in the format
 specifier of "for-each-ref --format=<format>" can be filled without
 getting the full contents of the object, but just with the object
 header.  These cases have been optimzied by calling
 oid_object_info() API.

 What's the doneness of this one?


* pk/rebase-in-c (2018-07-09) 4 commits
 - builtin/rebase: support running "git rebase <upstream>"
 - sequencer: refactor the code to detach HEAD to checkout.c
 - rebase: refactor common shell functions into their own file
 - rebase: start implementing it as a builtin

 Piecemeal rewrite of the "rebase" machinery in C.

 Expecting a reroll, but it seems that this is getting quite close.
 cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>


* tb/config-default (2018-07-06) 1 commit
  (merged to 'next' on 2018-07-18 at 7994476f6f)
 + builtin/config: work around an unsized array forward declaration

 Compilation fix.

 Will merge to 'master'.


* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
  (merged to 'next' on 2018-07-18 at 25a3a99528)
 + convert log_ref_write_fd() to use strbuf

 Code clean-up.

 Will merge to 'master'.


* hs/push-cert-check-cleanup (2018-07-11) 2 commits
  (merged to 'next' on 2018-07-18 at 1ed25fbd77)
 + gpg-interface: make parse_gpg_output static and remove from interface header
 + builtin/receive-pack: use check_signature from gpg-interface
 (this branch is used by hs/gpgsm.)

 Code clean-up.

 Will merge to 'master'.


* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
  (merged to 'next' on 2018-07-18 at d2a6d2684d)
 + unpack-trees: do not fail reset because of unmerged skipped entry

 "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
 had trouble working correctly in a sparsely checked out working
 tree after a conflict, which has been corrected.

 Will merge to 'master'.


* as/sequencer-customizable-comment-char (2018-07-16) 1 commit
  (merged to 'next' on 2018-07-18 at 4163e23f29)
 + sequencer: use configured comment character

 Honor core.commentchar when preparing the list of commits to replay
 in "rebase -i".

 Will merge to 'master'.


* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-18 at 8e7ee889c3)
 + fetch-pack: write shallow, then check connectivity
 (this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want.)

 "git fetch" failed to correctly validate the set of objects it
 received when making a shallow history deeper, which has been
 corrected.

 Will merge to 'master'.


* jt/fetch-nego-tip (2018-07-03) 1 commit
 - fetch-pack: support negotiation tip whitelist
 (this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)

 "git fetch" learned a new option "--negotiation-tip" to limit the
 set of commits it tells the other end as "have", to reduce wasted
 bandwidth and cycles, which would be helpful when the receiving
 repository has a lot of refs that have little to do with the
 history at the remote it is fetching from.

 Will merge to 'next'.


* rj/submodule-fsck-skip (2018-07-03) 1 commit
  (merged to 'next' on 2018-07-11 at 985f88cf7e)
 + fsck: check skiplist for object in fsck_blob()

 "fsck.skipList" did not prevent a blob object listed there from
 being inspected for is contents (e.g. we recently started to
 inspect the contents of ".gitmodules" for certain malicious
 patterns), which has been corrected.

 Will merge to 'master'.


* tb/grep-only-matching (2018-07-09) 2 commits
 - grep.c: teach 'git grep --only-matching'
 - grep.c: extract show_line_header()

 "git grep" learned the "--only-matching" option.

 Will merge to 'next'.


* bw/ref-in-want (2018-06-28) 8 commits
  (merged to 'next' on 2018-07-18 at 7e9f8db37c)
 + fetch-pack: implement ref-in-want
 + fetch-pack: put shallow info in output parameter
 + fetch: refactor to make function args narrower
 + fetch: refactor fetch_refs into two functions
 + fetch: refactor the population of peer ref OIDs
 + upload-pack: test negotiation with changing repository
 + upload-pack: implement ref-in-want
 + test-pkt-line: add unpack-sideband subcommand
 (this branch is used by jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.)

 Protocol v2 has been updated to allow slightly out-of-sync set of
 servers to work together to serve a single client, which would be
 useful with load-balanced servers that talk smart HTTP transport.

 Will merge to 'master'.


* en/rebase-consistency (2018-06-27) 9 commits
  (merged to 'next' on 2018-07-18 at d597206c79)
 + git-rebase: make --allow-empty-message the default
 + t3401: add directory rename testcases for rebase and am
 + git-rebase.txt: document behavioral differences between modes
 + directory-rename-detection.txt: technical docs on abilities and limitations
 + git-rebase.txt: address confusion between --no-ff vs --force-rebase
 + git-rebase: error out when incompatible options passed
 + t3422: new testcases for checking when incompatible options passed
 + git-rebase.sh: update help messages a bit
 + git-rebase.txt: document incompatible options

 "git rebase" behaved slightly differently depending on which one of
 the three backends gets used; this has been documented and an
 effort to make them more uniform has begun.

 Will merge to 'master'.


* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
  (merged to 'next' on 2018-07-18 at 9e213ad1aa)
 + submodule.c: report the submodule that an error occurs in

 Will merge to 'master'.


* jk/branch-l-1-repurpose (2018-06-22) 1 commit
 - branch: make "-l" a synonym for "--list"

 Updated plan to repurpose the "-l" option to "git branch".

 Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.


* cc/remote-odb (2018-07-16) 9 commits
 - Documentation/config: add odb.<name>.promisorRemote
 - t0410: test fetching from many promisor remotes
 - Use odb.origin.partialclonefilter instead of core.partialclonefilter
 - Use remote_odb_get_direct() and has_remote_odb()
 - remote-odb: add remote_odb_reinit()
 - remote-odb: implement remote_odb_get_many_direct()
 - remote-odb: implement remote_odb_get_direct()
 - Add initial remote odb support
 - fetch-object: make functions return an error code


* ds/multi-pack-index (2018-07-12) 23 commits
 - midx: clear midx on repack
 - packfile: skip loading index if in multi-pack-index
 - midx: prevent duplicate packfile loads
 - midx: use midx in approximate_object_count
 - midx: use existing midx when writing new one
 - midx: use midx in abbreviation calculations
 - midx: read objects from multi-pack-index
 - config: create core.multiPackIndex setting
 - midx: write object offsets
 - midx: write object id fanout chunk
 - midx: write object ids in a chunk
 - midx: sort and deduplicate objects from packfiles
 - midx: read pack names into array
 - multi-pack-index: write pack names in chunk
 - multi-pack-index: read packfile list
 - packfile: generalize pack directory list
 - t5319: expand test data
 - multi-pack-index: load into memory
 - midx: write header information to lockfile
 - multi-pack-index: add 'write' verb
 - multi-pack-index: add builtin
 - multi-pack-index: add format details
 - multi-pack-index: add design document

 When there are too many packfiles in a repository (which is not
 recommended), looking up an object in these would require
 consulting many pack .idx files; a new mechanism to have a single
 file that consolidates all of these .idx files is introduced.

 What's the doneness of this one?  I vaguely recall that there was
 an objection against the concept as a whole (i.e. there is a way
 with less damage to gain the same object-abbrev performance); has
 it (and if anything else, they) been resolved in satisfactory
 fashion?


* jt/fetch-pack-negotiator (2018-06-15) 7 commits
 - fetch-pack: introduce negotiator API
 - fetch-pack: move common check and marking together
 - fetch-pack: make negotiation-related vars local
 - fetch-pack: use ref adv. to prune "have" sent
 - fetch-pack: directly end negotiation if ACK ready
 - fetch-pack: clear marks before re-marking
 - fetch-pack: split up everything_local()
 (this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)

 Code restructuring and a small fix to transport protocol v2 during
 fetching.

 Will merge to 'next'.


* is/parsing-line-range (2018-06-15) 2 commits
 - log: prevent error if line range ends past end of file
 - blame: prevent error if range ends past end of file

 Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
 take has been tweaked.

 Will merge to 'next'.


* ab/checkout-default-remote (2018-06-11) 8 commits
 - checkout & worktree: introduce checkout.defaultRemote
 - checkout: add advice for ambiguous "checkout <branch>"
 - builtin/checkout.c: use "ret" variable for return
 - checkout: pass the "num_matches" up to callers
 - checkout.c: change "unique" member to "num_matches"
 - checkout.c: introduce an *_INIT macro
 - checkout.h: wrap the arguments to unique_tracking_name()
 - checkout tests: index should be clean after dwim checkout

 "git checkout" and "git worktree add" learned to honor
 checkout.defaultRemote when auto-vivifying a local branch out of a
 remote tracking branch in a repository with multiple remotes that
 have tracking branches that share the same names.

 Will merge to 'next'.


* ds/commit-graph-fsck (2018-07-16) 23 commits
 - coccinelle: update commit.cocci
 - commit-graph: update design document
 - gc: automatically write commit-graph files
 - commit-graph: add '--reachable' option
 - commit-graph: use string-list API for input
 - fsck: verify commit-graph
 - commit-graph: verify contents match checksum
 - commit-graph: test for corrupted octopus edge
 - commit-graph: verify commit date
 - commit-graph: verify generation number
 - commit-graph: verify parent list
 - commit-graph: verify root tree OIDs
 - commit-graph: verify objects exist
 - commit-graph: verify corrupt OID fanout and lookup
 - commit-graph: verify required chunks are present
 - commit-graph: verify catches corrupt signature
 - commit-graph: add 'verify' subcommand
 - commit-graph: load a root tree from specific graph
 - commit: force commit to parse from object database
 - commit-graph: parse commit from chosen graph
 - commit-graph: fix GRAPH_MIN_SIZE
 - commit-graph: UNLEAK before die()
 - t5318-commit-graph.sh: use core.commitGraph
 (this branch is used by jt/commit-graph-per-object-store.)

 "git fsck" learns to make sure the optional commit-graph file is in
 a sane state.

 Will merge to 'next'.


* ma/wrapped-info (2018-05-28) 2 commits
 - usage: prefix all lines in `vreportf()`, not just the first
 - usage: extract `prefix_suffix_lines()` from `advise()`

 An attempt to help making multi-line messages fed to warning(),
 error(), and friends more easily translatable.

 Will discard and wait for a cleaned-up rewrite.
 cf. <20180529213957.GF7964@sigill.intra.peff.net>


* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
 - block alloc: add validations around cache_entry lifecyle
 - block alloc: allocate cache entries from mem_pool
 - mem-pool: fill out functionality
 - mem-pool: add life cycle management functions
 - mem-pool: only search head block for available space
 - block alloc: add lifecycle APIs for cache_entry structs
 - read-cache: teach make_cache_entry to take object_id
 - read-cache: teach refresh_cache_entry to take istate

 For a large tree, the index needs to hold many cache entries
 allocated on heap.  These cache entries are now allocated out of a
 dedicated memory pool to amortize malloc(3) overhead.

 Will merge to 'next'.

 This makes each cache-entry larger by either 4 or 8 bytes, which is
 a bit sad, though.


* sb/diff-color-move-more (2018-07-17) 9 commits
 - diff.c: add white space mode to move detection that allows indent changes
 - diff.c: factor advance_or_nullify out of mark_color_as_moved
 - diff.c: decouple white space treatment from move detection algorithm
 - diff.c: add a blocks mode for moved code detection
 - diff.c: adjust hash function signature to match hashmap expectation
 - diff.c: do not pass diff options as keydata to hashmap
 - t4015: avoid git as a pipe input
 - xdiff/xdiffi.c: remove unneeded function declarations
 - xdiff/xdiff.h: remove unused flags

 "git diff --color-moved" feature has further been tweaked.

 Will merge to 'next'.

--------------------------------------------------
[Discarded]

* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
 . rebase--interactive: rewrite append_todo_help() in C
 . Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
 (this branch is used by ag/rebase-i-rewrite-todo.)

 Stepwise rewriting of the machinery of "rebase -i" into C continues.

 Now part of ag/rebase-i-in-c


* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
 . rebase--interactive: rewrite the edit-todo functionality in C
 . editor: add a function to launch the sequence editor
 . Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
 (this branch uses ag/rebase-i-append-todo-help.)

 Stepwise rewriting of the machinery of "rebase -i" into C continues.

 Now part of ag/rebase-i-in-c


* ab/fetch-tags-noclobber (2018-05-16) 9 commits
 - fixup! push tests: assert re-pushing annotated tags
 - fetch: stop clobbering existing tags without --force
 - fetch tests: add a test clobbering tag behavior
 - fetch tests: correct a comment "remove it" -> "remove them"
 - push doc: correct lies about how push refspecs work
 - push tests: assert re-pushing annotated tags
 - push tests: add more testing for forced tag pushing
 - push tests: fix logic error in "push" test assertion
 - push tests: remove redundant 'git push' invocation

 Discarded per request.
 cf. <87po09cnir.fsf@evledraar.gmail.com>


* nd/use-the-index-compat-less (2018-06-25) 13 commits
 . wt-status.c: stop using index compat macros
 . sha1-name.c: stop using index compat macros
 . sequencer.c: stop using index compat macros
 . revision.c: stop using index compat macros
 . rerere.c: stop using index compat macros
 . merge.c: stop using index compat macros
 . merge-recursive.c: stop using index compat macros
 . entry.c: stop using index compat macros
 . diff.c: stop using index compat macros
 . diff-lib.c: stop using index compat macros
 . check-racy.c: stop using index compat macros
 . blame.c: stop using index compat macros
 . apply.c: stop using index compat macros

 Retracted to be replaced with a more vertical approach where the
 lower-level helper functions are taught to be capable of working on
 an istate instance that is not the_index first, and then upwards to
 support the application layer that wants to work on an arbitrary
 istate instance, as the goal is not a mechanical replacement of
 foo_cache(...) to foo_index(&the_index, ...).


* js/branch-diff (2018-05-16) 19 commits
 . fixup! Add a function to solve least-cost assignment problems
 . completion: support branch-diff
 . branch-diff: add a man page
 . branch-diff --dual-color: work around bogus white-space warning
 . branch-diff: offer to dual-color the diffs
 . diff: add an internal option to dual-color diffs of diffs
 . color: provide inverted colors, too
 . branch-diff: use color for the commit pairs
 . branch-diff: add tests
 . branch-diff: do not show "function names" in hunk headers
 . branch-diff: adjust the output of the commit pairs
 . branch-diff: suppress the diff headers
 . branch-diff: indent the diffs just like tbdiff
 . branch-diff: right-trim commit messages
 . branch-diff: also show the diff between patches
 . branch-diff: improve the order of the shown commits
 . branch-diff: first rudimentary implementation
 . Add a new builtin: branch-diff
 . Add a function to solve least-cost assignment problems

 "git tbdiff" that lets us compare individual patches in two
 iterations of a topic has been rewritten and made into a built-in
 command.

^ permalink raw reply	[relevance 3%]

* [PATCH 0/6] fix hunk editing with 'commit -p -m'
@ 2014-03-06 14:50  3% Benoit Pierre
  0 siblings, 0 replies; 200+ results
From: Benoit Pierre @ 2014-03-06 14:50 UTC (permalink / raw)
  To: git

This patch fixes the fact that hunk editing with 'commit -p -m' does not work:
GIT_EDITOR is set to ':' to indicate to hooks that no editor will be launched,
which result in the 'hunk edit' option not launching the editor (and selecting
the whole hunk).

The fix consists in deferring the GIT_EDITOR override to the hook subprocess,
like it's already done for GIT_INDEX_FILE:
- modify 'run_hook' so the first parameter is the environment to set
- add a 'run_hook_v' variant that take a va_list
- add a new 'run_commit_hook' helper (to set both GIT_EDITOR and GIT_INDEX_FILE)

N.B.: the merge builtin 'prepare-commit-msg' hook handling has also been updated
to be consistent; i.e. GIT_EDITOR will not be set to ':' if the '--edit' option
is used.

Benoit Pierre (6):
  test patch hunk editing with "commit -p -m"
  commit: fix patch hunk editing with "commit -p -m"
  merge: fix GIT_EDITOR override for commit hook
  merge hook tests: fix and update tests
  merge hook tests: fix missing '&&' in test
  merge hook tests: use 'test_must_fail' instead of '!'

 builtin/commit.c                   | 35 ++++++++++++++++++++++++++++-------
 builtin/merge.c                    |  4 ++--
 commit.h                           |  3 +++
 run-command.c                      | 27 +++++++++++++++------------
 run-command.h                      |  3 ++-
 t/t7505-prepare-commit-msg-hook.sh | 23 +++++++++++++++++++----
 t/t7513-commit_-p_-m_hunk_edit.sh  | 37 +++++++++++++++++++++++++++++++++++++
 7 files changed, 106 insertions(+), 26 deletions(-)
 create mode 100755 t/t7513-commit_-p_-m_hunk_edit.sh

-- 
1.9.0

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc0
@ 2022-04-04 20:43  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-04 20:43 UTC (permalink / raw)
  To: git; +Cc: git-packagers

An early preview release Git v2.36.0-rc0 is now available for
testing at the usual places.  It is comprised of 661 non-merge
commits since v2.35.0, contributed by 80 people, 25 of which are
new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.36.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Ævar Arnfjörð Bjarmason, Alex Henrie, Atharva Raykar,
  Bagas Sanjaya, Beat Bolli, brian m. carlson, Christian Couder,
  Daniel Hahler, Derrick Stolee, Elia Pinto, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Fabian Stelzer, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Matt Cooper, Michael J Gruber, Neeraj Singh,
  Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
  Ramkumar Ramachandra, René Scharfe, Shourya Shukla, SZEDER
  Gábor, Tao Klerks, Taylor Blau, Teng Long, Thomas Gummerer,
  Thomas Koutcher, Tilman Vogel, Todd Zullinger, and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (4):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (2):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules

Junio C Hamano (31):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (2):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent

Victoria Dye (29):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (183):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01


^ permalink raw reply	[relevance 3%]

* [PATCH v4 0/2] normalize & fix merge "up to date" messages
  @ 2021-05-02  5:14  3% ` Eric Sunshine
    0 siblings, 1 reply; 200+ results
From: Eric Sunshine @ 2021-05-02  5:14 UTC (permalink / raw)
  To: git; +Cc: Josh Soref, Junio C Hamano, Elijah Newren, Eric Sunshine

This is a re-roll of Josh Soref's v3[1] which fixes swapped components
of an "Already up to date" message emitted by builtin/merge. This
re-roll additionally normalizes punctuation of "Already up to date"
messages throughout the project.

I kept Josh as author of patch [2/2] but completely rewrote the commit
message to refocus it is a simple fix for a nearly 13 year old bug.

[1]: https://lore.kernel.org/git/pull.934.v3.git.1619052906768.gitgitgadget@gmail.com/

Eric Sunshine (1):
  merge(s): apply consistent punctuation to "up to date" messages

Josh Soref (1):
  merge: fix swapped "up to date" message components

 builtin/merge.c      | 14 +++++++++-----
 merge-ort-wrappers.c |  2 +-
 merge-recursive.c    |  2 +-
 notes-merge.c        |  2 +-
 4 files changed, 12 insertions(+), 8 deletions(-)

Range-diff against v3:
-:  ---------- > 1:  3f96947e3a merge(s): apply consistent punctuation to "up to date" messages
1:  8cd2b8c335 ! 2:  5885b18b7f git-merge: rewrite already up to date message
    @@ Metadata
     Author: Josh Soref <jsoref@gmail.com>
     
      ## Commit message ##
    -    git-merge: rewrite already up to date message
    +    merge: fix swapped "up to date" message components
     
    -    Usually, it is easier to read a message if it makes its primary
    -    point first, before giving a parenthetical note.
    +    The rewrite of git-merge from shell to C in 1c7b76be7d (Build in merge,
    +    2008-07-07) accidentally transformed the message:
     
    -    Possible messages before include:
    -    ` (nothing to squash)Already up to date.
    -    `
    -    and
    -    `Already up to date. Yeeah!
    -    `
    +        Already up-to-date. (nothing to squash)
     
    -    After:
    -    `Already up to date (nothing to squash).
    -    `
    -    and
    -    `Already up to date.
    -    `
    +    to:
     
    -    Localizations now have two easy to understand translatable strings.
    -    (All localizations of the previous strings are broken.)
    +        (nothing to squash)Already up-to-date.
    +
    +    due to reversed printf() arguments. This problem has gone unnoticed
    +    despite being touched over the years by 7f87aff22c (Teach/Fix pull/fetch
    +    -q/-v options, 2008-11-15) and bacec47845 (i18n: git-merge basic
    +    messages, 2011-02-22), and tangentially by bef4830e88 (i18n: merge: mark
    +    messages for translation, 2016-06-17) and 7560f547e6 (treewide: correct
    +    several "up-to-date" to "up to date", 2017-08-23).
    +
    +    Fix it by restoring the message to its intended order. While at it, help
    +    translators out by avoiding "sentence Lego".
    +
    +    [es: rewrote commit message]
     
         Co-authored-by: Eric Sunshine <sunshine@sunshineco.com>
         Signed-off-by: Josh Soref <jsoref@gmail.com>
    +    Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
     
      ## builtin/merge.c ##
     @@ builtin/merge.c: static void restore_state(const struct object_id *head,
    @@ builtin/merge.c: static void restore_state(const struct object_id *head,
     -		printf("%s%s\n", squash ? _(" (nothing to squash)") : "", msg);
     +	if (verbosity >= 0) {
     +		if (squash)
    -+			puts(_("Already up to date (nothing to squash)."));
    ++			puts(_("Already up to date. (nothing to squash)"));
     +		else
     +			puts(_("Already up to date."));
     +	}
    @@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
      			}
      		}
      		if (up_to_date) {
    --			finish_up_to_date(_("Already up to date. Yeeah!"));
    +-			finish_up_to_date(_("Already up to date."));
     +			finish_up_to_date();
      			goto done;
      		}
-- 
2.31.1.607.g51e8a6a459


^ permalink raw reply	[relevance 3%]

* [PATCH v4 0/7] Fix merge restore state
  2022-07-21  8:16  3%   ` [PATCH v3 0/7] " Elijah Newren via GitGitGadget
@ 2022-07-22  5:15  3%     ` Elijah Newren via GitGitGadget
  2022-07-23  1:53  3%       ` [PATCH v5 0/8] " Elijah Newren via GitGitGadget
  0 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-22  5:15 UTC (permalink / raw)
  To: git; +Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
	Elijah Newren

This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It's grown so much it's hard to
call it simple. Anyway...

Changes since v3:

 * Removed some accidental &nbsp; characters from a commit message
 * Made use of the error() function to simplify the first patch

[1]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/

Elijah Newren (7):
  merge-ort-wrappers: make printed message match the one from recursive
  merge-resolve: abort if index does not match HEAD
  merge: do not abort early if one strategy fails to handle the merge
  merge: fix save_state() to work when there are stat-dirty files
  merge: make restore_state() restore staged state too
  merge: ensure we can actually restore pre-merge state
  merge: do not exit restore_state() prematurely

 builtin/merge.c                          | 59 ++++++++++++++++++------
 git-merge-resolve.sh                     | 10 ++++
 merge-ort-wrappers.c                     |  4 +-
 t/t6402-merge-rename.sh                  |  2 +-
 t/t6424-merge-unrelated-index-changes.sh | 58 +++++++++++++++++++++++
 t/t6439-merge-co-error-msgs.sh           |  1 +
 t/t7607-merge-state.sh                   | 32 +++++++++++++
 7 files changed, 150 insertions(+), 16 deletions(-)
 create mode 100755 t/t7607-merge-state.sh


base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1231

Range-diff vs v3:

 1:  e39b2e15ece ! 1:  bd36d16c8d9 merge-ort-wrappers: make printed message match the one from recursive
     @@ Commit message
          being processed by another function that made additional changes:
            * It added an implicit "error: " prefix
            * It added an implicit trailing newline
     -
     -    Add these things, but do so in a couple extra steps to avoid having
     -    translators need to translate another not-quite-identical string.
     +    We can get these things by making use of the error() function.
      
          Signed-off-by: Elijah Newren <newren@gmail.com>
      
     @@ merge-ort-wrappers.c: static int unclean(struct merge_options *opt, struct tree
       
       	if (head && repo_index_has_changes(opt->repo, head, &sb)) {
      -		fprintf(stderr, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     -+		struct strbuf err = STRBUF_INIT;
     -+		strbuf_addstr(&err, "error: ");
     -+		strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n  %s"),
     - 		    sb.buf);
     -+		strbuf_addch(&err, '\n');
     -+		fputs(err.buf, stderr);
     -+		strbuf_release(&err);
     +-		    sb.buf);
     ++		error(_("Your local changes to the following files would be overwritten by merge:\n  %s"),
     ++		      sb.buf);
       		strbuf_release(&sb);
       		return -1;
       	}
 2:  2810dec7608 = 2:  b79f44e54b9 merge-resolve: abort if index does not match HEAD
 3:  b41853e3f99 = 3:  02930448ea1 merge: do not abort early if one strategy fails to handle the merge
 4:  64700338a28 = 4:  daf8d224160 merge: fix save_state() to work when there are stat-dirty files
 5:  91c495c770e ! 5:  f401bd5ad0d merge: make restore_state() restore staged state too
     @@ Commit message
          Unfortunately, if users had staged changes before calling `git merge`,
          builtin/merge.c could do the following:
      
     -       * stash the changes, in order to clean up after the strategies
     -       * try all the merge strategies in turn, each of which report they
     +       * stash the changes, in order to clean up after the strategies
     +       * try all the merge strategies in turn, each of which report they
               cannot function due to the index not matching HEAD
     -       * restore the changes via "git stash apply"
     +       * restore the changes via "git stash apply"
      
          But that last step would have the net effect of unstaging the user's
          changes.  Fix this by adding the "--index" option to "git stash apply".
 6:  887967c1f3f = 6:  ad5354c219c merge: ensure we can actually restore pre-merge state
 7:  81c40492a62 = 7:  6212d572604 merge: do not exit restore_state() prematurely

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (May 2011, #03; Fri, 6)
@ 2011-05-06 23:22  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2011-05-06 23:22 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with '-' are
only in 'pu' while commits prefixed with '+' are in 'next'.

The main part of this cycle is expected to run thru May, aiming for a
feature freeze in early June.

We are late in the week #2 of this cycle.

--------------------------------------------------
[Graduated to "master"]

* aw/maint-rebase-i-p-no-ff (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 9a159a5)
 + git-rebase--interactive.sh: preserve-merges fails on merges created with no-ff

* cj/p4merge (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 7197ef3)
 + Pass empty file to p4merge where no base is suitable.

* gr/cvsimport-alternative-cvspass-location (2011-05-01) 1 commit
  (merged to 'next' on 2011-05-02 at 5a89e3e)
 + Look for password in both CVS and CVSNT password files.

* im/hashcmp-optim (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at f131195)
 + hashcmp(): inline memcmp() by hand to optimize

* jc/fix-diff-files-unmerged (2011-04-22) 4 commits
  (merged to 'next' on 2011-04-28 at f1f837c)
 + diff-files: show unmerged entries correctly
 + diff: remove often unused parameters from diff_unmerge()
 + diff.c: return filepair from diff_unmerge()
 + test: use $_z40 from test-lib
 (this branch is used by jc/add-delete-default and jc/fix-add-u-unmerged.)

* jk/format-patch-quote-special-in-from (2011-04-08) 1 commit
  (merged to 'next' on 2011-04-28 at 587f2d4)
 + pretty: quote rfc822 specials in email addresses

* jk/merge-one-file-working-tree (2011-04-29) 2 commits
  (merged to 'next' on 2011-05-02 at 308fe21)
 + merge-one-file: fix broken merges with alternate work trees
 + add tests for merge-index / merge-one-file

* jn/run-command-error-failure (2011-04-20) 2 commits
  (merged to 'next' on 2011-04-26 at a1f171e)
 + run-command: handle short writes and EINTR in die_child
 + tests: check error message from run_command

* js/blame-parsename (2011-05-05) 2 commits
  (merged to 'next' on 2011-05-05 at 1d5e505)
 + t/annotate-tests: Use echo & cat instead of sed
  (merged to 'next' on 2011-04-29 at 5fde945)
 + blame: tolerate bogus e-mail addresses a bit better

* js/info-man-path (2011-05-02) 2 commits
  (merged to 'next' on 2011-05-02 at 20a15dd)
 + Documentation: clarify meaning of --html-path, --man-path, and --info-path
 + git: add --info-path and --man-path options

* mg/alias-expose-prefix (2011-04-27) 2 commits
  (merged to 'next' on 2011-05-02 at 1c01d3a)
 + handle_alias: provide GIT_PREFIX to !alias
 + t1020: test !alias in subdirectory

* mg/diff-uiconfig-doc (2011-04-27) 1 commit
  (merged to 'next' on 2011-05-02 at 579a515)
 + config.txt,diff-options.txt: porcelain vs. plumbing for color.diff

* nd/struct-pathspec (2011-04-05) 5 commits
  (merged to 'next' on 2011-04-25 at 65dbe80)
 + pathspec: rename per-item field has_wildcard to use_wildcard
 + Improve tree_entry_interesting() handling code
 + Convert read_tree{,_recursive} to support struct pathspec
 + Reimplement read_tree_recursive() using tree_entry_interesting()
 + Merge branch 'en/object-list-with-pathspec' into 'nd/struct-pathspec'

* sg/completion-cleanup (2011-04-28) 2 commits
 + completion: remove unnecessary _get_comp_words_by_ref() invocations
 + completion: don't modify the $cur variable in completion functions
 (this branch is used by sg/completion-updates.)

--------------------------------------------------
[New Topics]

* sr/maint-fast-import-tighten-option-parsing (2011-05-05) 1 commit
 - fast-import: fix option parser for no-arg options

Will merge to "next".

* jc/advice-about-to-lose-commit (2011-05-06) 1 commit
 - checkout: honor advice.detachedHead when reattaching to a branch

A weather-balloon.

* mg/merge-ff-config (2011-05-06) 2 commits
 - merge: introduce merge.ff configuration variable
 - Merge branch 'jc/maint-branch-mergeoptions' into mg/merge-ff-config
 (this branch uses jc/maint-branch-mergeoptions.)

--------------------------------------------------
[Stalled]

* kk/maint-prefix-in-config-mak (2011-05-04) 3 commits
 - config.mak.in: allow "configure --sysconfdir=/else/where"
 - Makefile: allow sysconfdir to be used from configure
  (merged to 'next' on 2011-05-02 at c747ba3)
 + Honor $(prefix) set in config.mak* when defining ETC_GIT* and sysconfdir

J6t is unhappy that sysconfdir is ignored in relocatable case. Although I
personally do not think that is a problem, as it has never been an issue,
let's see what others think.

* jn/gitweb-js (2011-04-28) 13 commits
 - gitweb: Make JavaScript ability to adjust timezones configurable
 - gitweb.js: Add UI for selecting common timezone to display dates
 - gitweb: JavaScript ability to adjust time based on timezone
 - gitweb: Unify the way long timestamp is displayed
 - gitweb: Refactor generating of long dates into format_timestamp_html
 - gitweb.js: Provide getElementsByClassName method (if it not exists)
 - gitweb.js: Introduce code to handle cookies from JavaScript
 - gitweb.js: Extract and improve datetime handling
 - gitweb.js: Provide default values for padding in padLeftStr and padLeft
 - gitweb.js: Update and improve comments in JavaScript files
 - gitweb: Split JavaScript for maintability, combining on build
 - Remove gitweb/gitweb.cgi and other legacy targets from main Makefile
 - git-instaweb: Simplify build dependency on gitweb

Rerolled.  Waiting for comments.

* jn/ctags-more (2011-04-29) 3 commits
 - gitweb: Optional grouping of projects by category
 - gitweb: Modularized git_get_project_description to be more generic
 - gitweb: Split git_project_list_body in two functions
 (this branch uses jn/ctags.)

Waiting for comments.

* jc/dotdot-is-parent-directory (2011-05-02) 1 commit
 - specifying ranges: we did not mean to make ".." an empty set

Updated documentation.

* mg/diff-stat-count (2011-05-03) 2 commits
 - diff-options.txt: describe --stat-{width,name-width,count}
 - diff: introduce --stat-count to limit the stat lines

There was a miscounting spotted.  Need another round.

* jc/require-work-tree-exists (2011-05-04) 1 commit
 - require-work-tree wants more than what its name says

Make "git pull" run from a random place work as long as GIT_DIR and
GIT_WORK_TREE are set up correctly.  I am not absolutely sure if that
is a sane use case, though.

* jc/add-delete-default (2011-04-19) 1 commit
 - git add: notice removal of tracked paths by default
 (this branch uses jc/fix-add-u-unmerged.)

* jk/maint-merge-rename-create (2011-03-25) 3 commits
 - merge: turn on rewrite detection
 - merge: handle renames with replacement content
 - t3030: fix accidental success in symlink rename

Peff wanted to reroll this.

* rr/rerere-clear-libify (2011-04-13) 1 commit
 - rerere: Expose an API corresponding to 'clear' functionality

Jonathan had good comments on moving the garbage collection interface as
well. Perhaps needs a re-roll.

* jc/index-pack (2011-02-25) 5 commits
 - index-pack --verify: read anomalous offsets from v2 idx file
 - write_idx_file: need_large_offset() helper function
 - index-pack: --verify
 - write_idx_file: introduce a struct to hold idx customization options
 - index-pack: group the delta-base array entries also by type

Still a WIP. Need to put histogram output into index-pack --verify to
really kill verify-pack.

* jk/tag-contains (2010-07-05) 4 commits
 - Why is "git tag --contains" so slow?
 - default core.clockskew variable to one day
 - limit "contains" traversals based on commit timestamp
 - tag: speed up --contains calculation

The idea of the bottom one is probably Ok, except that the use of object
flags needs to be rethought, or at least the helper needs to be moved to
builtin/tag.c to make it clear that it should not be used outside the
current usage context.

--------------------------------------------------
[Cooking]

* mk/grep-pcre (2011-05-05) 3 commits
 - grep: Put calls to fixmatch() and regmatch() into patmatch()
 - contrib/completion: --line-number to git grep
 - Documentation: Add --line-number to git-grep synopsis

This is without the real PCRE integration.  The above three looked
reasonable clean-ups regardless.

Will merge to "next".

* vh/config-interactive-singlekey-doc (2011-05-05) 5 commits
  (merged to 'next' on 2011-05-06 at 46b522c)
 + git-reset.txt: better docs for '--patch'
 + git-checkout.txt: better docs for '--patch'
 + git-stash.txt: better docs for '--patch'
 + git-add.txt: document 'interactive.singlekey'
 + config.txt: 'interactive.singlekey; is used by...

* jc/maint-branch-mergeoptions (2011-05-04) 1 commit
 - merge: fix branch.<name>.mergeoptions
 (this branch is used by mg/merge-ff-config.)

Fix branch.<name>.mergeoptions that does not override merge.<option>; this
is needed for the "merge.ff" configuration topic to correctly work.

* jn/ctags (2011-04-29) 3 commits
  (merged to 'next' on 2011-05-06 at 5c574ff)
 + gitweb: Mark matched 'ctag' / contents tag (?by_tag=foo)
 + gitweb: Change the way "content tags" ('ctags') are handled
 + gitweb: Restructure projects list generation
 (this branch is used by jn/ctags-more.)

* dm/http-cleanup (2011-05-05) 4 commits
  (merged to 'next' on 2011-05-06 at 711ff78)
 + t5541-http-push: add test for chunked
 + http-push: refactor curl_easy_setup madness
 + http-push: use const for strings in signatures
 + http: make curl callbacks match contracts from curl header

* sg/completion-updates (2011-04-28) 1 commit
  (merged to 'next' on 2011-05-02 at 0fd443a)
 + completion: don't declare 'local words' to make zsh happy

* jc/maint-add-p-overlapping-hunks (2011-04-06) 4 commits
  (merged to 'next' on 2011-05-02 at e57b66f)
 + "add -p": work-around an old laziness that does not coalesce hunks
 + add--interactive.perl: factor out repeated --recount option
 + t3701: Editing a split hunk in an "add -p" session
 + add -p: 'q' should really quit

Probably needs tests.

* ld/p4-preserve-user-names (2011-04-21) 1 commit
  (merged to 'next' on 2011-04-29 at 25116c8)
 + git-p4: add option to preserve user names

Luke wants to update this, so will not be merging to "master" until the
update settles down.

* jh/dirstat-lines (2011-04-29) 8 commits
  (merged to 'next' on 2011-04-29 at a302674)
 + Mark dirstat error messages for translation
 + Improve error handling when parsing dirstat parameters
 + New --dirstat=lines mode, doing dirstat analysis based on diffstat
 + Allow specifying --dirstat cut-off percentage as a floating point number
 + Add config variable for specifying default --dirstat behavior
 + Refactor --dirstat parsing; deprecate --cumulative and --dirstat-by-file
 + Make --dirstat=0 output directories that contribute < 0.1% of changes
 + Add several testcases for --dirstat and friends

Will merge to "master" by the end of week #3.

* jn/setup-revisions-glob-and-friends-passthru (2011-04-21) 2 commits
  (merged to 'next' on 2011-04-28 at 6006cc4)
 + revisions: allow --glob and friends in parse_options-enabled commands
 + revisions: split out handle_revision_pseudo_opt function

Will merge to "master" by the end of week #3.

* cn/log-parse-opt (2011-04-14) 1 commit
  (merged to 'next' on 2011-04-28 at 02f2eac)
 + log: convert to parse-options

Will merge to "master" by the end of week #3.

* jc/fix-add-u-unmerged (2011-04-20) 1 commit
  (merged to 'next' on 2011-04-28 at f7ed821)
 + Fix "add -u" that sometimes fails to resolve unmerged paths
 (this branch is used by jc/add-delete-default.)

Will merge to "master" by the end of week #3.

* js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix (2011-05-05) 2 commits
 + send-pack: unbreak push over stateless rpc
 + send-pack: avoid deadlock when pack-object dies early
 (this branch is used by js/maint-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #3.

* js/maint-send-pack-stateless-rpc-deadlock-fix (2011-05-05) 2 commits
  (merged to 'next' on 2011-05-05 at 3f4ffb9)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
  (merged to 'next' on 2011-04-28 at db7e04a)
 + Merge branch 'js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix' into js/maint-send-pack-stateless-rpc-deadlock-fix
 (this branch uses js/maint-1.6.6-send-pack-stateless-rpc-deadlock-fix.)

Will merge to "master" by the end of week #3.

* jc/magic-pathspec (2011-04-06) 3 commits
  (merged to 'next' on 2011-04-25 at 788cd46)
 + magic pathspec: add ":(icase)path" to match case insensitively
 + magic pathspec: futureproof shorthand form
 + magic pathspec: add tentative ":/path/from/top/level" pathspec support

Thanks to Peff, Duy, and Michael for helping to whip the syntax and the
basic semantics into a not-so-horrible shape.  Duy wanted to add tests.

Will merge to "master" by the end of week #3.

^ permalink raw reply	[relevance 3%]

* Re: [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area
  @ 2008-08-24  1:58  3%       ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2008-08-24  1:58 UTC (permalink / raw)
  To: Miklos Vajna; +Cc: Paolo Bonzini, Jeff King, git

Junio C Hamano <gitster@pobox.com> writes:

> The primary logic of the merge, however, had an assumption that the
> process never read the index in-core, and write_cache_as_tree() call it
> makes from write_tree_trivial() will always read from the on-disk index
> the strategies created and write it out as a tree.  This assumption is now
> broken by the above fix.  It now calls discard_cache() before calling
> write_tree_trivial() when it wants to write the on-disk index as a tree to
> fix this issue.

By the way, in the medium term, if we are serious about making an internal
call to merge_recursive() from cmd_merge(), I think we may be better off
making it the responsibility for try_merge_strategy() to leave an
committable state in the in-core index (aka "the_index") when they return
with 0 (success) status.  After calling external ones via the run_command
interface, it should do a read_cache() (after calling discard_cache() if
needed); if it calls merge_recursive(), hopefully you already have the
committable state in the in-core index.

That way, when automerge succeeds, write_tree_trivial() can write that
in-core index out and create the tree object to be committed. The
callchain to use merge_recursive() can avoid having to write to the
on-disk index, read it again and write out the tree from it.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0
@ 2022-04-18 16:27  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-18 16:27 UTC (permalink / raw)
  To: git; +Cc: git-packagers

The latest feature release Git v2.36.0 is now available at the
usual places.  It is comprised of 717 non-merge commits since
v2.35.0, contributed by 96 people, 26 of which are new faces [*].

This release contains the same fixes as the recent maintenance
releases to address CVE-2022-24765 as well.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.36.0'
tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun, COGONI
  Guillaume, David Cantrell, Des Preston, Hongyi Zhao, Jason Yundt,
  Jayati Shrivastava, Jaydeep Das, Jaydeep P Das, Jose Lopes,
  Justin Donnelly, Kraymer, Liginity Lee, Matheus Felipe, Matheus
  Valadares, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Daniel Santos, Derrick Stolee, Elia Pinto, Elijah Newren,
  Emily Shaffer, Emir SARI, Eric Sunshine, Fabian Stelzer,
  Fangyi Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob
  Keller, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
  Zhang, Jessica Clarke, Jiang Xin, Joel Holdsworth, Johannes
  Altmanninger, Johannes Schindelin, Johannes Sixt, John Cai,
  Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio
  C Hamano, Kevin Willford, Lessley Dennington, Marc Strapetz,
  Martin Ågren, Matt Cooper, Matthias Rüster, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Peter Krefting, Philip Oakley,
  Philippe Blain, Phillip Szelat, Phillip Wood, Ralf Thielow,
  Ramkumar Ramachandra, Randall S. Becker, René Scharfe, Shourya
  Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau, Teng Long,
  Thomas Gummerer, Thomas Koutcher, Tilman Vogel, Todd Zullinger,
  Trần Ngọc Quân, Victoria Dye, Yi-Jyun Pan, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.36 Release Notes
======================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.

 * With the fixes for CVE-2022-24765 that are common with versions of
   Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
   been taught not to recognise repositories owned by other users, in
   order to avoid getting affected by their config files and hooks.
   You can list the path to the safe/trusted repositories that may be
   owned by others on a multi-valued configuration variable
   `safe.directory` to override this behaviour, or use '*' to declare
   that you trust anything.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A user can forget to make a script file executable before giving
   it to "git bisect run".  In such a case, all tests will exit with
   126 or 127 error codes, even on revisions that are marked as good.
   Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (3):
      fetch-pack: parameterize message containing 'ready' keyword
      l10n: po-id for 2.36 (round 1)
      l10n: po-id for 2.36 (round 2)

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (4):
      mingw: avoid fallback for {local,gm}time_r()
      git-compat-util: really support openssl as a source of entropy
      config.mak.dev: workaround gcc 12 bug affecting "pedantic" CI job
      config.mak.dev: alternative workaround to gcc 12 warning in http.c

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

Daniel Santos (3):
      l10n: pt_PT: update Portuguese translation
      l10n: pt_PT: update TEAMS file
      l10n: pt_PT: update Portuguese translation

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (47):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact
      t0033: add tests for safe.directory
      setup: opt-out of check with safe.directory=*

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Emir SARI (2):
      l10n: tr: v2.36.0 round 1
      l10n: tr: v2.36.0 round 2

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (4):
      submodule-helper: fix usage string
      l10n: Update zh_CN repo link
      l10n: zh_CN v2.36.0 round 1
      l10n: zh_CN v2.36.0 round 2

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (7):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis
      l10n: fr: v2.36 round 1
      i18n: fix some badly formatted i18n strings
      l10n: fr: v2.36 round 2

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Jiang Xin (2):
      l10n: git.pot: v2.36.0 round 1 (192 new, 106 removed)
      l10n: git.pot: v2.36.0 round 2 (4 new, 3 removed)

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (24):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      GIT-VERSION-GEN: bump to v2.33.1
      Add a function to determine whether a path is owned by the current user
      setup_git_directory(): add an owner check for the top-level directory
      cocci: allow padding with `strbuf_addf()`
      Fix `GIT_CEILING_DIRECTORIES` with `C:\` and the likes
      Git 2.30.3
      Git 2.31.2
      Git 2.32.1
      Git 2.33.2
      Git 2.34.2
      Git 2.35.2

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (40):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1
      Git 2.36-rc2
      Git 2.30.4
      Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'"
      Revert "fetch: increase test coverage of fetches"
      RelNotes: clarify "bisect run unexecutable" tweak
      RelNotes: mention safe.directory
      RelNotes: revert the description on the reverted topics
      Git 2.36

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matheus Valadares (1):
      setup: fix safe.directory key not being checked

Matt Cooper (1):
      index-pack: clarify the breached limit

Matthias Rüster (1):
      l10n: de.po: Update German translation

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Peter Krefting (1):
      l10n: sv.po: Update Swedish translation (5282t0f0u)

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Trần Ngọc Quân (1):
      l10n: vi(5285t): v2.36.0 round 2

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

Yi-Jyun Pan (1):
      l10n: zh_TW: v2.36.0 round 2

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules


^ permalink raw reply	[relevance 3%]

* What's in git.git (stable)
@ 2006-12-06 21:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-12-06 21:18 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

* The 'maint' branch has produced a new release 1.4.4.2

* In the 'master' branch:

  - we now officially favor 'remotes' information to be in
    $GIT_DIR/config, and 'git clone' records origin in there,
    not in $GIT_DIR/remotes/origin (thanks to Andy Parkins).

  - "git send-pack $URL :refs/heads/$branch" can be used to
    delete a remote branch (so does "git push $URL :$ref" over
    git native protocols).

  - built-in shortlog lets you directly say "git shortlog
    v2.6.18..master", instead of piping an output from the
    corresponding "git log v2.6.18..master" into it.

  - git-svn updates
  - gitweb updates
  - gitk updates
  - bash completion updates

The shortlog since the last announcement for 'master' is:

Alex Riesen (2):
      git-blame: fix rev parameter handling.
      Make perl/ build procedure ActiveState friendly.

Andreas Ericsson (2):
      ls-files: Give hints when errors happen.
      git-diff: Introduce --index and deprecate --cached.

Andy Parkins (3):
      Use .git/config for storing "origin" shortcut repository
      Document git-repo-config --bool/--int options.
      De-emphasise the symbolic link documentation.

David Miller (1):
      Pass -M to diff in request-pull

Eric Wong (10):
      git-svn: use ~/.subversion config files when using SVN:: libraries
      git-svn: enable delta transfers during fetches when using SVN:: libs
      git-svn: update tests for recent changes
      git-svn: error out when the SVN connection fails during a fetch
      git-svn: fix output reporting from the delta fetcher
      git-svn: color support for the log command
      git-svn: documentation updates
      git-svn: fix multi-init
      git-svn: avoid fetching files twice in the same revision
      git-svn: avoid network timeouts for long-running fetches

Han-Wen Nienhuys (1):
      ident.c: Trim hint printed when gecos is empty.

J. Bruce Fields (1):
      cvs-migration: improved section titles, better push/commit explanation

Jakub Narebski (4):
      gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
      git-clone: Rename --use-immingled-remote option to --no-separate-remote
      Document git-diff whitespace flags -b and -w
      gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view

Jim Meyering (1):
      Set permissions of each new file before "cvs add"ing it.

Johannes Schindelin (10):
      Build in shortlog
      shortlog: do not crash on parsing "[PATCH"
      shortlog: read mailmap from ./.mailmap again
      shortlog: handle email addresses case-insensitively
      shortlog: fix "-n"
      shortlog: use pager
      sha1_object_info(): be consistent with read_sha1_file()
      git-mv: search more precisely for source directory in index
      diff -b: ignore whitespace at end of line
      cvs-migration document: make the need for "push" more obvious

Junio C Hamano (24):
      Store peeled refs in packed-refs file.
      remove merge-recursive-old
      git-merge: make it usable as the first class UI
      merge: allow merging into a yet-to-be-born branch.
      Store peeled refs in packed-refs (take 2).
      git-fetch: reuse ls-remote result.
      git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
      git-fetch: allow glob pattern in refspec
      Allow git push to delete remote ref.
      git-shortlog: fix common repository prefix abbreviation.
      git-shortlog: make common repository prefix configurable with .mailmap
      git-fetch: allow forcing glob pattern in refspec
      fetch-pack: do not barf when duplicate re patterns are given
      git-merge: tighten error checking.
      git-merge: do not leak rev-parse output used for checking internally.
      cvsimport: style fixup.
      git blame -C: fix output format tweaks when crossing file boundary.
      tutorial: talk about user.name early and don't start with commit -a
      git-merge: fix confusion between tag and branch
      receive-pack: do not insist on fast-forward outside refs/heads/
      unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
      git-reset to remove "$GIT_DIR/MERGE_MSG"
      git-merge: squelch needless error message.
      git-merge: fix "fix confusion between tag and branch" for real

Michael Loeffler (1):
      git-fetch: ignore dereferenced tags in expand_refs_wildcard

Nicolas Pitre (2):
      builtin git-shortlog is broken
      pack-objects: remove redundent status information

Paul Mackerras (1):
      gitk: Fix enabling/disabling of menu items on Mac OS X

René Scharfe (1):
      shortlog: remove range check

Sean Estabrooks (1):
      Update documentation to remove incorrect GIT_DIFF_OPTS example.

Shawn O. Pearce (15):
      Teach git-completion.bash how to complete git-merge.
      Hide plumbing/transport commands from bash completion.
      Teach bash how to complete options for git-name-rev.
      Add current branch in PS1 support to git-completion.bash.
      Teach bash how to complete git-format-patch.
      Teach bash how to complete git-cherry-pick.
      Teach bash how to complete git-rebase.
      Teach bash about git log/show/whatchanged options.
      Support bash completion of refs/remote.
      Teach bash about git-repo-config.
      Support --strategy=x completion in addition to --strategy x.
      Cache the list of merge strategies and available commands during load.
      Teach bash about git-am/git-apply and their whitespace options.
      Teach bash how to complete long options for git-commit.
      Fix broken bash completion of local refs.


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc1
@ 2022-04-08 23:30  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-08 23:30 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.36.0-rc1 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.35.0, contributed by 85 people, 25 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.36.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.35.0 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
  Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
  Todd Zullinger, and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.0 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (1):
      git-compat-util: really support openssl as a source of entropy

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (33):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sequencer, stash: fix running from worktree subdir
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (1):
      submodule-helper: fix usage string

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (4):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (32):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Git 2.35.1
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #08; Fri, 29)
@ 2022-07-29 23:18  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-29 23:18 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.

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']

* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at f77cd40c29)
 + trace2: only include "fsync" events if we git_fsync()

 Omit fsync-related trace2 entries when their values are all zero.
 source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>


* ds/doc-wo-whitelist (2022-07-19) 5 commits
  (merged to 'next' on 2022-07-20 at ec51c6269a)
 + transport.c: avoid "whitelist"
 + t: avoid "whitelist"
 + git.txt: remove redundant language
 + git-cvsserver: clarify directory list
 + daemon: clarify directory arguments

 Avoid "white/black-list" in documentation and code comments.
 source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>


* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at d38b649b18)
 + compat/win32: correct for incorrect compiler warning

 Workaround for a false positive compiler warning.
 source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-19 at bcc29d823d)
 + commit-graph: pass repo_settings instead of repository

 API tweak to make it easier to run fuzz testing on commit-graph parser.
 source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>


* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at eebd316ef6)
 + osx-keychain: fix compiler warning

 Workaround for a compiler warning against use of die() in
 osx-keychain (in contrib/).
 source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>


* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at c259b61b0e)
 + config/core.txt: fix minor issues for `core.sparseCheckoutCone`

 Docfix.
 source: <20220718100530.2068354-1-martin.agren@gmail.com>


* ma/t4200-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at 710d0cafd9)
 + t4200: drop irrelevant code

 Test fix.
 source: <20220718154322.2177166-1-martin.agren@gmail.com>


* mb/config-document-include (2022-07-17) 1 commit
  (merged to 'next' on 2022-07-19 at 8267b80aa2)
 + config.txt: document include, includeIf

 Add missing documentation for "include" and "includeIf" features in
 "git config" file format, which incidentally teaches the command
 line completion to include them in its offerings.
 source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>


* mb/p4-fixes (2022-07-20) 2 commits
  (merged to 'next' on 2022-07-20 at 7942d72b1c)
 + git-p4: fix error handling in P4Unshelve.renameBranch()
 + git-p4: fix typo in P4Submit.applyCommit()

 Fix a few issues in "git p4".
 source: <pull.1297.v2.git.git.1658343330.gitgitgadget@gmail.com>


* mb/p4-utf16-crlf (2022-07-20) 1 commit
  (merged to 'next' on 2022-07-20 at c2fedd2fc2)
 + git-p4: fix CR LF handling for utf16 files

 "git p4" working on UTF-16 files on Windows did not implement
 CRLF-to-LF conversion correctly, which has been corrected.
 source: <pull.1294.v2.git.git.1658341065221.gitgitgadget@gmail.com>


* sg/index-format-doc-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at ccc384be5e)
 + index-format.txt: remove outdated list of supported extensions

 Docfix.
 source: <20220718085640.7395-1-szeder.dev@gmail.com>


* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
  (merged to 'next' on 2022-07-19 at 3f9565653a)
 + pack-bitmap.c: continue looping when first MIDX bitmap is found
 + pack-bitmap.c: using error() instead of silently returning -1
 + pack-bitmap.c: do not ignore error when opening a bitmap file
 + pack-bitmap.c: rename "idx_name" to "bitmap_name"
 + pack-bitmap.c: mark more strings for translations
 + pack-bitmap.c: fix formatting of error messages

 Tweak various messages that come from the pack-bitmap codepaths.
 source: <cover.1658159745.git.dyroneteng@gmail.com>


* vd/scalar-doc (2022-07-18) 2 commits
  (merged to 'next' on 2022-07-20 at fab0234da4)
 + scalar: convert README.md into a technical design doc
 + scalar: reword command documentation to clarify purpose

 Doc update.
 source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>

--------------------------------------------------
[New Topics]

* tb/cat-file-z (2022-07-22) 2 commits
  (merged to 'next' on 2022-07-28 at 78731f0fdb)
 + builtin/cat-file.c: support NUL-delimited input with `-z`
 + t1006: extract --batch-command inputs to variables

 Operating modes like "--batch" of "git cat-file" command learned to
 take NUL-terminated input, instead of one-item-per-line.

 Will merge to 'master'.
 source: <cover.1658532524.git.me@ttaylorr.com>


* ab/tech-docs-to-help (2022-07-23) 9 commits
 - docs: move multi-pack-index docs to man section 5
 - docs: move http-protocol docs to man section 5
 - docs: move pack format docs to man section 5
 - docs: move protocol-related docs to man section 5
 - docs: move commit-graph format docs to man section 5
 - git docs: add a category for file formats, protocols and interfaces
 - git docs: add a category for user-facing file, repo and command UX
 - git help doc: use "<doc>" instead of "<guide>"
 - help.c: BUG() out if "help --guides" can't remove "git" prefixes

 Expose a lot of "tech docs" via "git help" interface.
 source: <cover-v5-0.9-00000000000-20220721T160721Z-avarab@gmail.com>


* sg/parse-options-subcommand (2022-07-25) 20 commits
 - builtin/worktree.c: let parse-options parse subcommands
 - builtin/stash.c: let parse-options parse subcommands
 - builtin/sparse-checkout.c: let parse-options parse subcommands
 - builtin/remote.c: let parse-options parse subcommands
 - builtin/reflog.c: let parse-options parse subcommands
 - builtin/notes.c: let parse-options parse subcommands
 - builtin/multi-pack-index.c: let parse-options parse subcommands
 - builtin/hook.c: let parse-option parse subcommands
 - builtin/gc.c: let parse-options parse 'git maintenance's subcommands
 - builtin/commit-graph.c: let parse-options parse subcommands
 - builtin/bundle.c: let parse-options parse subcommands
 - parse-options: add support for parsing subcommands
 - parse-options: drop leading space from '--git-completion-helper' output
 - parse-options: clarify the limitations of PARSE_OPT_NODASH
 - parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
 - api-parse-options.txt: fix description of OPT_CMDMODE
 - t0040-parse-options: test parse_options() with various 'parse_opt_flags'
 - t5505-remote.sh: check the behavior without a subcommand
 - t3301-notes.sh: check that default operation mode doesn't take arguments
 - git.c: update NO_PARSEOPT markings

 Introduce the "subcommand" mode to parse-options API and update the
 command line parser of Git commands with subcommands.
 source: <20220725123857.2773963-1-szeder.dev@gmail.com>


* ds/bundle-uri-clone (2022-07-25) 5 commits
 - clone: --bundle-uri cannot be combined with --depth
 - bundle-uri: add support for http(s):// and file://
 - clone: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability

 Implement "git clone --bundle-uri".
 source: <pull.1300.git.1658781277.gitgitgadget@gmail.com>


* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
 - cmake: support local installations of git

 Fix build procedure for Windows that uses CMake so that it can pick
 up the shell interpreter from local installation location.

 Will merge to 'next'.
 source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>


* ds/decorate-filter-tweak (2022-07-29) 10 commits
 - fetch: use ref_namespaces during prefetch
 - maintenance: stop writing log.excludeDecoration
 - log: create log.decorateFilter=all
 - log: add --decorate-all option
 - log: add default decoration filter
 - log-tree: use ref_namespaces instead of if/else-if
 - refs: use ref_namespaces for replace refs base
 - refs: add array of ref namespaces
 - t4207: test coloring of grafted decorations
 - refs: allow "HEAD" as decoration filter

 The namespaces used by "log --decorate" from "refs/" hierarchy by
 default has been tightened.
 source: <pull.1301.v2.git.1659122979.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 1d2bef98f6)
 + config.c: NULL check when reading protected config

 Fix-up for what has been merged to 'master' recently.

 Will merge to 'master'.
 source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>


* jr/gitweb-title-shortening (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 7528e87220)
 + gitweb: remove title shortening heuristics

 Gitweb had legacy URL shortener that is specific to the way
 projects hosted on kernel.org used to (but no longer) work, which
 has been removed.

 Will merge to 'master'.
 source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>


* es/doc-creation-factor-fix (2022-07-28) 2 commits
 - range-diff: clarify --creation-factor=<factor>
 - format-patch: clarify --creation-factor=<factor>

 Expecting a reroll.
 source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>


* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
 - lstat(mingw): correctly detect ENOTDIR scenarios

 Fix to lstat() emulation on Windows.

 Will merge to 'next'.
 source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>


* js/mingw-with-python (2022-07-29) 3 commits
 - mingw: remove unneeded `NO_CURL` directive
 - mingw: remove unneeded `NO_GETTEXT` directive
 - windows: include the Python bits when building Git for Windows

 Conditionally allow building Python interpreter on Windows

 Will merge to 'next'.
 source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>


* ab/submodule-helper-prep (2022-07-28) 20 commits
 - submodule--helper: fix bad config API usage
 - submodule--helper: don't exit() on failure, return
 - submodule--helper: add skeleton "goto cleanup" to update_submodule()
 - submodule--helper: rename "int res" to "int ret"
 - submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
 - submodule--helper: add "const" to copy of "update_data"
 - submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
 - submodule--helper: stop conflating "sb" in clone_submodule()
 - submodule--helper: convert a strbuf_detach() to xstrfmt()
 - submodule--helper: replace memset() with { 0 }-initialization
 - submodule--helper style: add \n\n after variable declarations
 - submodule--helper style: don't separate declared variables with \n\n
 - submodule--helper: move "resolve-relative-url-test" to a test-tool
 - submodule--helper: move "check-name" to a test-tool
 - submodule--helper: move "is-active" to a test-tool
 - test-tool submodule-config: remove unused "--url" handling
 - submodule--helper: remove unused "list" helper
 - submodule--helper: remove unused "name" helper
 - submodule tests: test for "add <repository> <abs-path>"
 - submodule tests: test usage behavior
 (this branch is used by ab/submodule-helper-leakfix.)

 source: <cover-00.20-00000000000-20220728T161116Z-avarab@gmail.com>


* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
 - docs: add CONFIGURATION sections that fuzzy map to built-ins
 - docs: add CONFIGURATION sections that map to a built-in
 - log docs: de-duplicate configuration sections
 - difftool docs: de-duplicate configuration sections
 - notes docs: de-duplicate configuration sections
 - apply docs: de-duplicate configuration sections
 - send-email docs: de-duplicate configuration sections
 - grep docs: de-duplicate configuration sections
 - docs: add and use include template for config/* includes

 Share the text used to explain configuration variables used by "git
 <subcmd>" in "git help <subcmd>" with the text from "git help config".

 Will merge to 'next'?
 source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>


* jk/struct-zero-init-with-older-gcc (2022-07-29) 1 commit
 - config.mak.dev: squelch -Wno-missing-braces for older gcc

 Older gcc with -Wall complains about the universal zero initializer
 "struct s = { 0 };" idiom, which makes developers' lives
 inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
 build procedure has been tweaked to help them with thes compilers.

 Will merge to 'next'.
 source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>


* js/ort-clean-up-after-failed-merge (2022-07-29) 2 commits
 - merge-ort: do leave trace2 region even if checkout fails
 - merge-ort: clean up after failed merge

 Plug memory leaks in the failure code path in the "merge-ort" merge
 strategy backend.

 Will merge to 'next'?
 source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>


* js/t5351-freebsd-fix (2022-07-29) 2 commits
 - t5351: avoid using `test_cmp` for binary data
 - t5351: avoid relying on `core.fsyncMethod = batch` to be supported

 Some tests assumed that core.fsyncMethod=batch is supported
 everywhere, which broke FreeBSD.

 Will merge to 'next'.
 source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>

--------------------------------------------------
[Cooking]

* cw/remote-object-info (2022-07-28) 6 commits
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - protocol-caps: initialization bug fix
 - fetch-pack: move fetch initialization
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.
 source: <20220728230210.2952731-1-calvinwan@google.com>


* ab/leak-check (2022-07-27) 15 commits
 - CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
 - upload-pack: fix a memory leak in create_pack_file()
 - leak tests: mark passing SANITIZE=leak tests as leak-free
 - leak tests: don't skip some tests under SANITIZE=leak
 - test-lib: have the "check" mode for SANITIZE=leak consider leak logs
 - test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
 - test-lib: simplify by removing test_external
 - tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
 - t/Makefile: don't remove test-results in "clean-except-prove-cache"
 - test-lib: add a SANITIZE=leak logging mode
 - t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
 - test-lib: add a --invert-exit-code switch
 - test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
 - test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
 - test-lib: use $1, not $@ in test_known_broken_{ok,failure}_

 Plugging more leaks.
 source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>


* jc/string-list-cleanup (2022-07-20) 1 commit
  (merged to 'next' on 2022-07-27 at 858a0b2a28)
 + builtin/remote.c: use the right kind of STRING_LIST_INIT

 Code clean-up.

 Will merge to 'master'.
 source: <xmqq7d471dns.fsf@gitster.g>


* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-22 at 4004fa75eb)
 + pkt-line.h: move comment closer to the associated code

 In-code comment clarification.

 Will merge to 'master'.
 source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>


* mt/rot13-in-c (2022-07-24) 2 commits
 - t/t0021: convert the rot13-filter.pl script to C
 - Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
 (this branch uses mt/checkout-count-fix.)

 Test portability improvements.

 Needs review.
 source: <f38f722de7c3323207eda5ea632b5acd3765c285.1658675222.git.matheus.bernardino@usp.br>


* tk/untracked-cache-with-uall (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-25 at b792dd5012)
 + read-cache: make `do_read_index()` always set up `istate->repo`

 Fix for a bug that makes write-tree to fail to write out a
 non-existent index as a tree, introduced in 2.37.

 Will merge to 'master'.
 source: <20220722212232.833188-1-martin.agren@gmail.com>


* ds/midx-with-less-memory (2022-07-27) 4 commits
  (merged to 'next' on 2022-07-27 at 9ac7aed9f6)
 + write_midx_bitmap(): drop unused refs_snapshot parameter
  (merged to 'next' on 2022-07-20 at 250d257c3e)
 + midx: reduce memory pressure while writing bitmaps
 + midx: extract bitmap write setup
 + pack-bitmap-write: use const for hashes

 The codepath to write multi-pack index has been taught to release a
 large chunk of memory that holds an array of objects in the packs,
 as soon as it is done with the array, to reduce memory consumption.

 Will merge to 'master'.
 source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>


* tl/trace2-config-scope (2022-07-22) 2 commits
 - tr2: shows scope unconditionally in addition to key-value pair
 - api-trace2.txt: print config key-value pair

 Tweak trace2 output about configuration variables.

 Expecting a reroll.
 cf. <220722.86fsits91m.gmgdl@evledraar.gmail.com>
 source: <cover.1658472474.git.dyroneteng@gmail.com>


* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at fbb9414d09)
 + contrib/rerere-train: avoid useless gpg sign in training

 "rerere-train" script (in contrib/) used to honor commit.gpgSign
 while recreating the throw-away merges.

 Will merge to 'master'.
 source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>


* ab/submodule-helper-leakfix (2022-07-28) 18 commits
 - submodule--helper: fix a configure_added_submodule() leak
 - submodule--helper: free rest of "displaypath" in "struct update_data"
 - submodule--helper: free some "displaypath" in "struct update_data"
 - submodule--helper: fix a memory leak in print_status()
 - submodule--helper: fix a leak in module_add()
 - submodule--helper: fix obscure leak in module_add()
 - submodule--helper: fix "reference" leak
 - submodule--helper: fix a memory leak in get_default_remote_submodule()
 - submodule--helper: fix a leak with repo_clear()
 - submodule--helper: fix "sm_path" and other "module_cb_list" leaks
 - submodule--helper: fix "errmsg_str" memory leak
 - submodule--helper: add and use *_release() functions
 - submodule--helper: don't leak {run,capture}_command() cp.dir argument
 - submodule--helper: "struct pathspec" memory leak in module_update()
 - submodule--helper: fix most "struct pathspec" memory leaks
 - submodule--helper: fix trivial get_default_remote_submodule() leak
 - submodule--helper: fix a leak in "clone_submodule"
 - Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
 (this branch uses ab/submodule-helper-prep.)

 Plugging leaks in submodule--helper.

 Getting there.
 source: <cover-v4-00.17-00000000000-20220728T162442Z-avarab@gmail.com>


* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
  (merged to 'next' on 2022-07-28 at 8e6237d6b0)
 + fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.

 Will merge to 'master'.
 source: <20220726162712.1774355-1-jonathantanmy@google.com>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 - cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).

 Needs updating, at least for other commands with the same option.
 cf. <xmqq35f2ysd9.fsf@gitster.g>
 source: <20220715092527.1567837-1-mail@beyermatthias.de>


* rs/mergesort (2022-07-17) 10 commits
  (merged to 'next' on 2022-07-27 at 42607a44bb)
 + mergesort: remove llist_mergesort()
 + packfile: use DEFINE_LIST_SORT
 + fetch-pack: use DEFINE_LIST_SORT
 + commit: use DEFINE_LIST_SORT
 + blame: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT
 + test-mergesort: use DEFINE_LIST_SORT_DEBUG
 + mergesort: add macros for typed sort of linked lists
 + mergesort: tighten merge loop
 + mergesort: unify ranks loops

 Make our mergesort implementation type-safe.

 Will merge to 'master'.
 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>


* cw/submodule-merge-messages (2022-07-28) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.
 source: <20220728211221.2913928-1-calvinwan@google.com>


* mt/checkout-count-fix (2022-07-14) 3 commits
  (merged to 'next' on 2022-07-22 at 60c73a6b0b)
 + checkout: fix two bugs on the final count of updated entries
 + checkout: show bug about failed entries being included in final report
 + checkout: document bug where delayed checkout counts entries twice
 (this branch is used by mt/rot13-in-c.)

 "git checkout" miscounted the paths it updated, which has been
 corrected.

 Will merge to 'master'.
 source: <cover.1657799213.git.matheus.bernardino@usp.br>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
  (merged to 'next' on 2022-07-25 at e3464c2c1d)
 + commit-graph: fix corrupt upgrade from generation v1 to v2
 + commit-graph: introduce `repo_find_commit_pos_in_graph()`
 + t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Will merge to 'master'.
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Expecting a reroll.
 cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* ac/bitmap-lookup-table (2022-07-20) 6 commits
 - bitmap-lookup-table: add performance tests for lookup table
 - p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Seems to be flaky-broken under SHA-256.
 cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
 source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
  (merged to 'next' on 2022-07-21 at 008518b4e5)
 + git-p4: refactoring of p4CmdList()
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-18) 4 commits
  (merged to 'next' on 2022-07-27 at 59c4eb32b3)
 + cat-file: add mailmap support
 + ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 + ident: move commit_rewrite_person() to ident.c
 + revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Will merge to 'master'.
 source: <20220718195102.66321-1-siddharthasthana31@gmail.com>


* ds/rebase-update-ref (2022-07-19) 13 commits
  (merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
 + sequencer: notify user of --update-refs activity
 + sequencer: ignore HEAD ref under --update-refs
 + rebase: add rebase.updateRefs config option
 + sequencer: rewrite update-refs as user edits todo list
 + rebase: update refs from 'update-ref' commands
 + rebase: add --update-refs option
 + sequencer: add update-ref command
 + sequencer: define array with enum values
 + rebase-interactive: update 'merge' description
 + branch: consider refs under 'update-refs'
 + t2407: test branches currently using apply backend
 + t2407: test bisect and rebase as black-boxes
 + Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Will merge to 'master'.
 source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
  (merged to 'next' on 2022-07-25 at 92a39a5ff2)
 + xdiff: introduce XDL_ALLOC_GROW()
 + xdiff: introduce XDL_CALLOC_ARRAY()
 + xdiff: introduce xdl_calloc
 + xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'master'.
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* en/merge-restore-to-pristine (2022-07-22) 8 commits
  (merged to 'next' on 2022-07-27 at daafc50c15)
 + merge: do not exit restore_state() prematurely
 + merge: ensure we can actually restore pre-merge state
 + merge: make restore_state() restore staged state too
 + merge: fix save_state() to work when there are stat-dirty files
 + merge: do not abort early if one strategy fails to handle the merge
 + merge: abort if index does not match HEAD for trivial merges
 + merge-resolve: abort if index does not match HEAD
 + merge-ort-wrappers: make printed message match the one from recursive

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Will merge to 'master'.
 source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-23) 1 commit
  (merged to 'next' on 2022-07-27 at b7301f16ce)
 + ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'master'.
 source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-07-25) 2 commits
 - bundle-uri: add example bundle organization
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>


* mt/doc-config (2022-07-14) 3 commits
 . doc: notes: unify configuration variables definitions
 . doc: apply: unify configuration variables definitions
 . doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Retracted.
 cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.36.0-rc2
@ 2022-04-12 17:03  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-12 17:03 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.36.0-rc2 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.35.2, contributed by 85 people, 25 of which are new faces [*].

It is a day earlier than scheduled; it contains the same fix for
CVE-2022-24765 in the maintenance releases released today.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.36.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.35.2 are as follows.
Welcome to the Git development community!

  Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
  COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
  Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
  Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
  Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
  Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
  Shubham Mishra, and Waleed Khan.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
  Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
  Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
  Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
  Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
  Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
  Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
  Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
  Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
  Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
  Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
  Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
  Todd Zullinger, and Victoria Dye.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git 2.36 Release Notes (draft)
==============================

Updates since Git 2.35
----------------------

Backward compatibility warts

 * "git name-rev --stdin" has been deprecated and issues a warning
   when used; use "git name-rev --annotate-stdin" instead.

 * "git clone --filter=... --recurse-submodules" only makes the
   top-level a partial clone, while submodules are fully cloned.  This
   behaviour is changed to pass the same filter down to the submodules.


Note to those who build from the source

 * Since Git 2.31, our source assumed that the compiler you use to
   build Git supports variadic macros, with an easy-to-use escape
   hatch to allow compilation without variadic macros with an request
   to report that you had to use the escape hatch to the list.
   Because we haven't heard from anybody who actually needed to use
   the escape hatch, it has been removed, making support of variadic
   macros a hard requirement.


UI, Workflows & Features

 * Assorted updates to "git cat-file", especially "-h".

 * The command line completion (in contrib/) learns to complete
   arguments to give to "git sparse-checkout" command.

 * "git log --remerge-diff" shows the difference from mechanical merge
   result and the result that is actually recorded in a merge commit.

 * "git log" and friends learned an option --exclude-first-parent-only
   to propagate UNINTERESTING bit down only along the first-parent
   chain, just like --first-parent option shows commits that lack the
   UNINTERESTING bit only along the first-parent chain.

 * The command line completion script (in contrib/) learned to
   complete all Git subcommands, including the ones that are normally
   hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.

 * "git branch" learned the "--recurse-submodules" option.

 * A not-so-common mistake is to write a script to feed "git bisect
   run" without making it executable, in which case all tests will
   exit with 126 or 127 error codes, even on revisions that are marked
   as good.  Try to recognize this situation and stop iteration early.

 * When "index-pack" dies due to incoming data exceeding the maximum
   allowed input size, include the value of the limit in the error
   message.

 * The error message given by "git switch HEAD~4" has been clarified
   to suggest the "--detach" option that is required.

 * In sparse-checkouts, files mis-marked as missing from the working tree
   could lead to later problems.  Such files were hard to discover, and
   harder to correct.  Automatically detecting and correcting the marking
   of such files has been added to avoid these problems.

 * "git cat-file" learns "--batch-command" mode, which is a more
   flexible interface than the existing "--batch" or "--batch-check"
   modes, to allow different kinds of inquiries made.

 * The level of verbose output from the ort backend during inner merge
   has been aligned to that of the recursive backend.

 * "git remote rename A B", depending on the number of remote-tracking
   refs involved, takes long time renaming them.  The command has been
   taught to show progress bar while making the user wait.

 * Bundle file format gets extended to allow a partial bundle,
   filtered by similar criteria you would give when making a
   partial/lazy clone.

 * A new built-in userdiff driver for kotlin has been added.

 * "git repack" learned a new configuration to disable triggering of
   age-old "update-server-info" command, which is rarely useful these
   days.

 * "git stash" does not allow subcommands it internally runs as its
   implementation detail, except for "git reset", to emit messages;
   now "git reset" part has also been squelched.

 * "git ls-tree" learns "--oid-only" option, similar to "--name-only",
   and more generalized "--format" option.

 * "git fetch --refetch" learned to fetch everything without telling
   the other side what we already have, which is useful when you
   cannot trust what you have in the local object store.

 * "git branch" gives hint when branch tracking cannot be established
   because fetch refspecs from multiple remote repositories overlap.

 * "git worktree list --porcelain" did not c-quote pathnames and lock
   reasons with unsafe bytes correctly, which is worked around by
   introducing NUL terminated output format with "-z".


Performance, Internal Implementation, Development Support etc.

 * "git apply" (ab)used the util pointer of the string-list to keep
   track of how each symbolic link needs to be handled, which has been
   simplified by using strset.

 * Fix a hand-rolled alloca() imitation that may have violated
   alignment requirement of data being sorted in compatibility
   implementation of qsort_s() and stable qsort().

 * Use the parse-options API in "git reflog" command.

 * The conditional inclusion mechanism of configuration files using
   "[includeIf <condition>]" learns to base its decision on the
   URL of the remote repository the repository interacts with.
   (merge 399b198489 jt/conditional-config-on-remote-url later to maint).

 * "git name-rev --stdin" does not behave like usual "--stdin" at
   all.  Start the process of renaming it to "--annotate-stdin".
   (merge a2585719b3 jc/name-rev-stdin later to maint).

 * "git update-index", "git checkout-index", and "git clean" are
   taught to work better with the sparse checkout feature.

 * Use an internal call to reset_head() helper function instead of
   spawning "git checkout" in "rebase", and update code paths that are
   involved in the change.

 * Messages "ort" merge backend prepares while dealing with conflicted
   paths were unnecessarily confusing since it did not differentiate
   inner merges and outer merges.

 * Small modernization of the rerere-train script (in contrib/).

 * Use designated initializers we started using in mid 2017 in more
   parts of the codebase that are relatively quiescent.

 * Improve failure case behaviour of xdiff library when memory
   allocation fails.

 * General clean-up in reftable implementation, including
   clarification of the API documentation, tightening the code to
   honor documented length limit, etc.

 * Remove the escape hatch we added when we introduced the weather
   balloon to use variadic macros unconditionally, to make it official
   that we now have a hard dependency on the feature.

 * Makefile refactoring with a bit of suffixes rule stripping to
   optimize the runtime overhead.

 * "git stash drop" is reimplemented as an internal call to
   reflog_delete() function, instead of invoking "git reflog delete"
   via run_command() API.

 * Count string_list items in size_t, not "unsigned int".

 * The single-key interactive operation used by "git add -p" has been
   made more robust.

 * Remove unneeded <meta http-equiv=content-type...> from gitweb
   output.

 * "git name-rev" learned to use the generation numbers when setting
   the lower bound of searching commits used to explain the revision,
   when available, instead of committer time.

 * Replace core.fsyncObjectFiles with two new configuration variables,
   core.fsync and core.fsyncMethod.

 * Updates to refs traditionally weren't fsync'ed, but we can
   configure using core.fsync variable to do so.

 * "git reflog" command now uses parse-options API to parse its
   command line options.


Fixes since v2.35
-----------------

 * "rebase" and "stash" in secondary worktrees are broken in
   Git 2.35.0, which has been corrected.

 * "git pull --rebase" ignored the rebase.autostash configuration
   variable when the remote history is a descendant of our history,
   which has been corrected.
   (merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).

 * "git update-index --refresh" has been taught to deal better with
   racy timestamps (just like "git status" already does).
   (merge 2ede073fd2 ms/update-index-racy later to maint).

 * Avoid tests that are run under GIT_TRACE2 set from failing
   unnecessarily.
   (merge 944d808e42 js/test-unset-trace2-parents later to maint).

 * The merge-ort misbehaved when merge.renameLimit configuration is
   set too low and failed to find all renames.
   (merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).

 * We explain that revs come first before the pathspec among command
   line arguments, but did not spell out that dashed options come
   before other args, which has been corrected.
   (merge c11f95010c tl/doc-cli-options-first later to maint).

 * "git add -p" rewritten in C regressed hunk splitting in some cases,
   which has been corrected.
   (merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).

 * "git fetch --negotiate-only" is an internal command used by "git
   push" to figure out which part of our history is missing from the
   other side.  It should never recurse into submodules even when
   fetch.recursesubmodules configuration variable is set, nor it
   should trigger "gc".  The code has been tightened up to ensure it
   only does common ancestry discovery and nothing else.
   (merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).

 * The code path that verifies signatures made with ssh were made to
   work better on a system with CRLF line endings.
   (merge caeef01ea7 fs/ssh-signing-crlf later to maint).

 * "git sparse-checkout init" failed to write into $GIT_DIR/info
   directory when the repository was created without one, which has
   been corrected to auto-create it.
   (merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).

 * Cloning from a repository that does not yet have any branches or
   tags but has other refs resulted in a "remote transport reported
   error", which has been corrected.
   (merge dccea605b6 jt/clone-not-quite-empty later to maint).

 * Mark in various places in the code that the sparse index and the
   split index features are mutually incompatible.
   (merge 451b66c533 js/sparse-vs-split-index later to maint).

 * Update the logic to compute alignment requirement for our mem-pool.
   (merge e38bcc66d8 jc/mem-pool-alignment later to maint).

 * Pick a better random number generator and use it when we prepare
   temporary filenames.
   (merge 47efda967c bc/csprng-mktemps later to maint).

 * Update the contributor-facing documents on proposed log messages.
   (merge cdba0295b0 jc/doc-log-messages later to maint).

 * When "git fetch --prune" failed to prune the refs it wanted to
   prune, the command issued error messages but exited with exit
   status 0, which has been corrected.
   (merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).

 * Problems identified by Coverity in the reftable code have been
   corrected.
   (merge 01033de49f hn/reftable-coverity-fixes later to maint).

 * A bug that made multi-pack bitmap and the object order out-of-sync,
   making the .midx data corrupt, has been fixed.
   (merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).

 * The build procedure has been taught to notice older version of zlib
   and enable our replacement uncompress2() automatically.
   (merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).

 * Interaction between fetch.negotiationAlgorithm and
   feature.experimental configuration variables has been corrected.
   (merge 714edc620c en/fetch-negotiation-default-fix later to maint).

 * "git diff --diff-filter=aR" is now parsed correctly.
   (merge 75408ca949 js/diff-filter-negation-fix later to maint).

 * When "git subtree" wants to create a merge, it used "git merge" and
   let it be affected by end-user's "merge.ff" configuration, which
   has been corrected.
   (merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).

 * Unlike "git apply", "git patch-id" did not handle patches with
   hunks that has only 1 line in either preimage or postimage, which
   has been corrected.
   (merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).

 * "receive-pack" checks if it will do any ref updates (various
   conditions could reject a push) before received objects are taken
   out of the temporary directory used for quarantine purposes, so
   that a push that is known-to-fail will not leave crufts that a
   future "gc" needs to clean up.
   (merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).

 * Because a deletion of ref would need to remove it from both the
   loose ref store and the packed ref store, a delete-ref operation
   that logically removes one ref may end up invoking ref-transaction
   hook twice, which has been corrected.
   (merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).

 * When there is no object to write .bitmap file for, "git
   multi-pack-index" triggered an error, instead of just skipping,
   which has been corrected.
   (merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).

 * "git cmd -h" outside a repository should error out cleanly for many
   commands, but instead it hit a BUG(), which has been corrected.
   (merge 87ad07d735 js/short-help-outside-repo-fix later to maint).

 * "working tree" and "per-worktree ref" were in glossary, but
   "worktree" itself wasn't, which has been corrected.
   (merge 2df5387ed0 jc/glossary-worktree later to maint).

 * L10n support for a few error messages.
   (merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).

 * Test modernization.
   (merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).

 * "git log --graph --graph" used to leak a graph structure, and there
   was no way to countermand "--graph" that appear earlier on the
   command line.  A "--no-graph" option has been added and resource
   leakage has been plugged.

 * Error output given in response to an ambiguous object name has been
   improved.
   (merge 3a73c1dfaf ab/ambiguous-object-name later to maint).

 * "git sparse-checkout" wants to work with per-worktree configuration,
   but did not work well in a worktree attached to a bare repository.
   (merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).

 * Setting core.untrackedCache to true failed to add the untracked
   cache extension to the index.

 * Workaround we have for versions of PCRE2 before their version 10.36
   were in effect only for their versions newer than 10.36 by mistake,
   which has been corrected.
   (merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).

 * Document Taylor as a new member of Git PLC at SFC.  Welcome.
   (merge e8d56ca863 tb/coc-plc-update later to maint).

 * "git checkout -b branch/with/multi/level/name && git stash" only
   recorded the last level component of the branch name, which has
   been corrected.

 * "git fetch" can make two separate fetches, but ref updates coming
   from them were in two separate ref transactions under "--atomic",
   which has been corrected.

 * Check the return value from parse_tree_indirect() to turn segfaults
   into calls to die().
   (merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).

 * Newer version of GPGSM changed its output in a backward
   incompatible way to break our code that parses its output.  It also
   added more processes our tests need to kill when cleaning up.
   Adjustments have been made to accommodate these changes.
   (merge b0b70d54c4 fs/gpgsm-update later to maint).

 * The untracked cache newly computed weren't written back to the
   on-disk index file when there is no other change to the index,
   which has been corrected.

 * "git config -h" did not describe the "--type" option correctly.
   (merge 5445124fad mf/fix-type-in-config-h later to maint).

 * The way generation number v2 in the commit-graph files are
   (not) handled has been corrected.
   (merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).

 * The method to trigger malloc check used in our tests no longer work
   with newer versions of glibc.
   (merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).

 * When "git fetch --recurse-submodules" grabbed submodule commits
   that would be needed to recursively check out newly fetched commits
   in the superproject, it only paid attention to submodules that are
   in the current checkout of the superproject.  We now do so for all
   submodules that have been run "git submodule init" on.

 * "git rebase $base $non_branch_commit", when $base is an ancestor or
   the $non_branch_commit, modified the current branch, which has been
   corrected.

 * When "shallow" information is updated, we forgot to update the
   in-core equivalent, which has been corrected.

 * When creating a loose object file, we didn't report the exact
   filename of the file we failed to fsync, even though the
   information was readily available, which has been corrected.

 * "git am" can read from the standard input when no mailbox is given
   on the command line, but the end-user gets no indication when it
   happens, making Git appear stuck.
   (merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).

 * "git mv" failed to refresh the cached stat information for the
   entry it moved.
   (merge b7f9130a06 vd/mv-refresh-stat later to maint).

 * Fix for CVE-2022-24765 has been merged up from 2.35.2 and others.

 * Other code cleanup, docfix, build fix, etc.
   (merge cfc5cf428b jc/find-header later to maint).
   (merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
   (merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
   (merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
   (merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
   (merge 6046f7a91c en/plug-leaks-in-merge later to maint).
   (merge 8c591dbfce bc/clarify-eol-attr later to maint).
   (merge 518e15db74 rs/parse-options-lithelp-help later to maint).
   (merge cbac0076ef gh/doc-typos later to maint).
   (merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
   (merge 2826ffad8c rc/negotiate-only-typofix later to maint).
   (merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
   (merge 74f3390dde sy/diff-usage-typofix later to maint).
   (merge 45d0212a71 ll/doc-mktree-typofix later to maint).
   (merge e9b272e4c1 js/no-more-legacy-stash later to maint).
   (merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
   (merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
   (merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
   (merge d17294a05e ab/hash-object-leakfix later to maint).
   (merge b8403129d3 jd/t0015-modernize later to maint).
   (merge 332acc248d ds/mailmap later to maint).
   (merge 04bf052eef ab/grep-patterntype later to maint).
   (merge 6ee36364eb ab/diff-free-more later to maint).
   (merge 63a36017fe nj/read-tree-doc-reffix later to maint).
   (merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
   (merge c614beb933 ep/t6423-modernize later to maint).
   (merge 57be9c6dee ab/reflog-prep-fix later to maint).
   (merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
   (merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
   (merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).

----------------------------------------------------------------

Changes since v2.35.2 are as follows:

Abhradeep Chakraborty (2):
      amend remaining usage strings according to style guide
      partial-clone: add a partial-clone test case

Adam Dinwoodie (2):
      configure.ac: fix HAVE_SYNC_FILE_RANGE definition
      t9902: split test to run on appropriate systems

Alex Henrie (3):
      log: fix memory leak if --graph is passed multiple times
      log: add a --no-graph option
      switch: mention the --detach option when dying due to lack of a branch

Atharva Raykar (5):
      submodule--helper: get remote names from any repository
      submodule--helper: refactor get_submodule_displaypath()
      submodule--helper: allow setting superprefix for init_submodule()
      submodule--helper: run update using child process struct
      submodule: move core cmd_update() logic to C

Bagas Sanjaya (1):
      fetch-pack: parameterize message containing 'ready' keyword

COGONI Guillaume (3):
      t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
      tests: allow testing if a path is truly a file or a directory
      tests: make the code more readable

Carlo Marcelo Arenas Belón (1):
      git-compat-util: really support openssl as a source of entropy

Chen Bojun (1):
      receive-pack: purge temporary data if no command is ready to run

David Cantrell (1):
      completion: tab completion of filenames for 'git restore'

Derrick Stolee (45):
      Documentation: add extensions.worktreeConfig details
      worktree: create init_worktree_config()
      config: add repo_config_set_worktree_gently()
      sparse-checkout: set worktree-config correctly
      worktree: copy sparse-checkout patterns and config on add
      config: make git_configset_get_string_tmp() private
      mailmap: change primary address for Derrick Stolee
      dir: force untracked cache with core.untrackedCache
      worktree: combine two translatable messages
      worktree: extract copy_filtered_worktree_config()
      worktree: extract copy_sparse_checkout()
      worktree: extract checkout_worktree()
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      worktree: use 'worktree' over 'working tree'
      test-read-graph: include extra post-parse info
      t5318: extract helpers to lib-commit-graph.sh
      commit-graph: fix ordering bug in generation numbers
      commit-graph: start parsing generation v2 (again)
      commit-graph: fix generation number v2 overflow values
      commit-graph: declare bankruptcy on GDAT chunks
      index-pack: document and test the --promisor option
      list-objects-filter-options: create copy helper
      revision: put object filter into struct rev_info
      pack-objects: use rev.filter when possible
      pack-bitmap: drop filter in prepare_bitmap_walk()
      list-objects: consolidate traverse_commit_list[_filtered]
      MyFirstObjectWalk: update recommended usage
      bundle: parse filter capability
      rev-list: move --filter parsing into revision.c
      bundle: create filtered bundles
      bundle: unbundle promisor packs
      clone: fail gracefully when cloning filtered bundle
      maintenance: fix synopsis in documentation
      list-objects-filter: remove CL_ARG__FILTER
      pack-objects: move revs out of get_object_list()
      pack-objects: parse --filter directly into revs.filter
      bundle: move capabilities to end of 'verify'
      bundle: output hash information in 'verify'
      t7700: check post-condition in kept-pack test
      test-lib-functions: remove test_subcommand_inexact

Des Preston (1):
      worktree: include repair cmd in usage

Elia Pinto (8):
      test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
      t6423-merge-rename-directories.sh: use the $(...) construct
      attr.c: delete duplicate include
      builtin/gc.c: delete duplicate include
      builtin/sparse-checkout.c: delete duplicate include
      builtin/stash.c: delete duplicate include
      t/helper/test-run-command.c: delete duplicate include
      attr.h: remove duplicate struct definition

Elijah Newren (32):
      t1011: add testcase demonstrating accidental loss of user modifications
      unpack-trees: fix accidental loss of user changes
      repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
      Update documentation related to sparsity and the skip-worktree bit
      Accelerate clear_skip_worktree_from_present_files() by caching
      merge-ort: avoid assuming all renames detected
      merge-ort: fix memory leak in merge_ort_internal()
      merge: fix memory leaks in cmd_merge()
      sparse-checkout: fix a couple minor memory leaks
      repo-settings: fix checking for fetch.negotiationAlgorithm=default
      repo-settings: fix error handling for unknown values
      repo-settings: rename the traditional default fetch.negotiationAlgorithm
      show, log: provide a --remerge-diff capability
      log: clean unneeded objects during `log --remerge-diff`
      ll-merge: make callers responsible for showing warnings
      merge-ort: capture and print ll-merge warnings in our preferred fashion
      merge-ort: mark a few more conflict messages as omittable
      merge-ort: format messages slightly different for use in headers
      diff: add ability to insert additional headers for paths
      show, log: include conflict/warning messages in --remerge-diff headers
      merge-ort: mark conflict/warning messages from inner merges as omittable
      diff-merges: avoid history simplifications when diffing merges
      merge-ort: make informational messages from recursive merges clearer
      sparse-checkout: correct reapply's handling of options
      sparse-checkout: correctly set non-cone mode when expected
      sparse-checkout: pay attention to prefix for {set, add}
      sparse-checkout: error or warn when given individual files
      sparse-checkout: reject arguments in cone-mode that look like patterns
      merge-ort: fix small memory leak in detect_and_process_renames()
      merge-ort: fix small memory leak in unique_path()
      merge-ort: exclude messages from inner merges by default
      repo_read_index: add config to expect files outside sparse patterns

Emily Shaffer (14):
      hook: add 'run' subcommand
      gc: use hook library for pre-auto-gc hook
      am: convert {pre,post}-applypatch to use hook.h
      rebase: convert pre-rebase to use hook.h
      am: convert applypatch-msg to use hook.h
      merge: convert post-merge to use hook.h
      hooks: convert non-worktree 'post-checkout' hook to hook library
      hooks: convert worktree 'post-checkout' hook to hook library
      send-email: use 'git hook run' for 'sendemail-validate'
      git-p4: use 'git hook' to run hooks
      commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
      read-cache: convert post-index-change to use hook.h
      receive-pack: convert push-to-checkout hook to hook.h
      run-command: remove old run_hook_{le,ve}() hook API

Fabian Stelzer (2):
      gpg-interface: trim CR from ssh-keygen
      gpg-interface/gpgsm: fix for v2.3

Fangyi Zhou (1):
      submodule-helper: fix usage string

Glen Choo (39):
      fetch: use goto cleanup in cmd_fetch()
      fetch: skip tasks related to fetching objects
      fetch --negotiate-only: do not update submodules
      branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
      branch: make create_branch() always create a branch
      branch: add a dry_run parameter to create_branch()
      builtin/branch: consolidate action-picking logic in cmd_branch()
      branch: add --recurse-submodules option for branch creation
      branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
      stash: strip "refs/heads/" with skip_prefix
      checkout, clone: die if tree cannot be parsed
      submodule--helper: remove update-module-mode
      submodule--helper: reorganize code for sh to C conversion
      submodule--helper run-update-procedure: remove --suboid
      submodule--helper run-update-procedure: learn --remote
      submodule--helper update-clone: learn --init
      submodule--helper: remove ensure-core-worktree
      submodule update: add tests for --filter
      submodule--helper update-clone: check for --filter and --init
      t5526: introduce test helper to assert on fetches
      t5526: stop asserting on stderr literally
      t5526: create superproject commits with test helper
      submodule: make static functions read submodules from commits
      submodule: inline submodule_commits() into caller
      submodule: store new submodule commits oid_array in a struct
      submodule: extract get_fetch_task()
      submodule: move logic into fetch_task_create()
      submodule update: use die_message()
      submodule--helper: teach update_data more options
      submodule--helper: reduce logic in run_update_procedure()
      submodule--helper: remove forward declaration
      fetch: fetch unpopulated, changed submodules
      submodule: fix latent check_has_commit() bug
      branch: support more tracking modes when recursing
      branch: give submodule updating advice before exit
      branch --set-upstream-to: be consistent when advising
      branch: remove negative exit code
      branch: rework comments for future developers
      branch.c: simplify advice-and-die sequence

Greg Hurrell (2):
      Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
      Documentation/config/pgp.txt: add missing apostrophe

Han-Wen Nienhuys (27):
      reftable: fix OOB stack write in print functions
      reftable: fix resource leak in block.c error path
      reftable: fix resource leak blocksource.c
      reftable: check reftable_stack_auto_compact() return value
      reftable: ignore remove() return value in stack_test.c
      reftable: fix resource warning
      reftable: all xxx_free() functions accept NULL arguments
      reftable: order unittests by complexity
      reftable: drop stray printf in readwrite_test
      reftable: handle null refnames in reftable_ref_record_equal
      reftable: make reftable-record.h function signatures const correct
      reftable: implement record equality generically
      reftable: remove outdated file reftable.c
      reftable: make reftable_record a tagged union
      reftable: add print functions to the record types
      t1405: explictly delete reflogs for reftable
      t1405: mark test that checks existence as REFFILES
      t5312: prepare for reftable
      t1410: use test-tool ref-store to inspect reflogs
      t1410: mark bufsize boundary test as REFFILES
      Documentation: object_id_len goes up to 31
      reftable: reject 0 object_id_len
      reftable: add a test that verifies that writing empty keys fails
      reftable: avoid writing empty keys at the block layer
      reftable: ensure that obj_id_len is >= 2 on writing
      reftable: add test for length of disambiguating prefix
      reftable: rename writer_stats to reftable_writer_stats

Jacob Keller (1):
      name-rev: use generation numbers if available

Jason Yundt (2):
      comment: fix typo
      gitweb: remove invalid http-equiv="content-type"

Jayati Shrivastava (1):
      sequencer: use reverse_commit_list() helper

Jaydeep Das (1):
      t/t0015-hash.sh: remove unnecessary '\' at line end

Jaydeep P Das (1):
      userdiff: add builtin diff driver for kotlin language.

Jean-Noël Avila (5):
      i18n: factorize more 'incompatible options' messages
      i18n: factorize "invalid value" messages
      i18n: remove from i18n strings that do not hold translatable parts
      i18n: fix some misformated placeholders in command synopsis
      i18n: fix some badly formatted i18n strings

Jeff Hostetler (30):
      fsmonitor: enhance existing comments, clarify trivial response handling
      fsmonitor-ipc: create client routines for git-fsmonitor--daemon
      fsmonitor: config settings are repository-specific
      fsmonitor: use IPC to query the builtin FSMonitor daemon
      fsmonitor: document builtin fsmonitor
      fsmonitor--daemon: add a built-in fsmonitor daemon
      fsmonitor--daemon: implement 'stop' and 'status' commands
      compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
      compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
      fsmonitor--daemon: implement 'run' command
      fsmonitor--daemon: implement 'start' command
      fsmonitor--daemon: add pathname classification
      fsmonitor--daemon: define token-ids
      fsmonitor--daemon: create token-based changed path cache
      compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
      compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
      compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
      fsmonitor--daemon: implement handle_client callback
      help: include fsmonitor--daemon feature flag in version info
      t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
      t7527: create test for fsmonitor--daemon
      t/perf: avoid copying builtin fsmonitor files into test repo
      t/helper/test-chmtime: skip directories on Windows
      t/perf/p7519: fix coding style
      t/perf/p7519: speed up test on Windows
      t/perf/p7519: add fsmonitor--daemon test cases
      fsmonitor--daemon: periodically truncate list of modified files
      fsmonitor--daemon: use a cookie file to sync with file system
      fsmonitor: force update index after large responses
      t7527: test status with untracked-cache and fsmonitor--daemon

Jerry Zhang (3):
      git-rev-list: add --exclude-first-parent-only flag
      patch-id: fix antipatterns in tests
      patch-id: fix scan_hunk_header on diffs with 1 line of before/after

Jessica Clarke (1):
      mem-pool: don't assume uintmax_t is aligned enough for all types

Joel Holdsworth (4):
      git-p4: don't select shell mode using the type of the command argument
      git-p4: pass command arguments as lists instead of using shell
      git-p4: don't print shell commands as python lists
      git-p4: fix instantiation of CalledProcessError

Johannes Schindelin (14):
      sparse-index: sparse index is disallowed when split index is active
      t1091: disable split index
      split-index: it really is incompatible with the sparse index
      git-sh-setup: remove remnant bits referring to `git-legacy-stash`
      add: remove support for `git-legacy-stash`
      stash: remove documentation for `stash.useBuiltin`
      stash: stop warning about the obsolete `stash.useBuiltin` config setting
      docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
      diff.c: move the diff filter bits definitions up a bit
      diff-filter: be more careful when looking for negative bits
      scalar: accept -C and -c options before the subcommand
      checkout/fetch/pull/pack-objects: allow `-h` outside a repository
      t0012: verify that built-ins handle `-h` even without gitdir
      cocci: allow padding with `strbuf_addf()`

John Cai (15):
      receive-pack.c: consolidate find header logic
      name-rev: deprecate --stdin in favor of --annotate-stdin
      name-rev.c: use strbuf_getline instead of limited size buffer
      builtin/reflog.c: use parse-options api for expire, delete subcommands
      name-rev: replace --stdin with --annotate-stdin in synopsis
      cat-file: rename cmdmode to transform_mode
      cat-file: introduce batch_mode enum to replace print_contents
      cat-file: add remove_timestamp helper
      cat-file: add --batch-command mode
      stash: add tests to ensure reflog --rewrite --updatref behavior
      reflog: libify delete reflog function and helpers
      stash: call reflog_delete() in reflog.c
      cat-file: skip expanding default format
      rebase: use test_commit helper in setup
      rebase: set REF_HEAD_DETACH in checkout_up_to_date()

Jonathan Tan (6):
      config: make git_config_include() static
      config: include file if remote URL matches a glob
      sparse-checkout: create leading directory
      clone: support unusual remote ref configurations
      ls-files: support --recurse-submodules --stage
      shallow: reset commit grafts when shallow is reset

Josh Steadmon (3):
      test-lib: unset trace2 parent envvars
      clone, submodule: pass partial clone filters to submodules
      ls-tree: `-l` should not imply recursive listing

Junio C Hamano (32):
      compat/qsort_s.c: avoid using potentially unaligned access
      fetch: help translators by reusing the same message template
      Start post 2.35 cycle
      SubmittingPatches: write problem statement in the log in the present tense
      CodingGuidelines: hint why we value clearly written log messages
      SubmittingPatches: explain why we care about log messages
      Name the next one 2.36 to prepare for 2.35.1
      The first batch
      The second batch for 2.36
      glossary: describe "worktree"
      The third batch
      The fourth batch
      The fifth batch
      The sixth batch
      The seventh batch
      The eighth batch
      rerere-train: two fixes to the use of "git show -s"
      am/apply: warn if we end up reading patches from terminal
      The ninth batch
      The tenth batch
      The eleventh batch
      The twelfth batch
      The thirteenth batch
      The 14th batch
      reset: show --no-refresh in the short-help
      The 15th batch
      The 16th batch
      The 17th batch
      CodingGuidelines: give deadline for "for (int i = 0; ..."
      Git 2.36-rc0
      Git 2.36-rc1
      Git 2.36-rc2

Justin Donnelly (4):
      git-prompt: rename `upstream` to `upstream_type`
      git-prompt: make upstream state indicator location consistent
      git-prompt: make long upstream state indicator consistent
      git-prompt: put upstream comments together

Lessley Dennington (3):
      completion: address sparse-checkout issues
      completion: improve sparse-checkout cone mode directory completion
      completion: handle unusual characters for sparse-checkout

Liginity Lee (1):
      fix typo in git-mktree.txt

Marc Strapetz (4):
      test-lib: introduce API for verifying file mtime
      t7508: fix bogus mtime verification
      t7508: add tests capturing racy timestamp handling
      update-index: refresh should rewrite index in case of racy timestamps

Martin Ågren (1):
      git-ls-tree.txt: fix the name of "%(objectsize:padded)"

Matheus Felipe (1):
      config: correct "--type" option in "git config -h" output

Matt Cooper (1):
      index-pack: clarify the breached limit

Michael J Gruber (2):
      test-lib: declare local variables as local
      tests: demonstrate "show --word-diff --color-moved" regression

Neeraj Singh (10):
      wrapper: make inclusion of Windows csprng header tightly scoped
      core.fsyncmethod: add writeout-only mode
      core.fsync: introduce granular fsync control infrastructure
      core.fsync: add configuration parsing
      core.fsync: new option to harden the index
      core.fsync: documentation and user-friendly aggregate options
      core.fsync: fix incorrect expression for default configuration
      trace2: add stats for fsync operations
      core.fsyncmethod: correctly camel-case warning message
      object-file: pass filename to fsync_or_die

Nihal Jere (1):
      Documentation: git-read-tree: separate links using commas

Patrick Steinhardt (24):
      refs: extract packed_refs_delete_refs() to allow control of transaction
      refs: allow passing flags when beginning transactions
      refs: allow skipping the reference-transaction hook
      refs: demonstrate excessive execution of the reference-transaction hook
      refs: do not execute reference-transaction hook on packing refs
      refs: skip hooks when deleting uncovered packed refs
      fetch-pack: use commit-graph when computing cutoff
      fetch: skip computing output width when not printing anything
      fetch: increase test coverage of fetches
      fetch: backfill tags before setting upstream
      fetch: control lifecycle of FETCH_HEAD in a single place
      fetch: report errors when backfilling tags fails
      refs: add interface to iterate over queued transactional updates
      fetch: make `--atomic` flag cover backfilling of tags
      fetch: make `--atomic` flag cover pruning of refs
      upload-pack: look up "want" lines via commit-graph
      fetch: avoid lookup of commits when not appending to FETCH_HEAD
      refs: add ability for backends to special-case reading of symbolic refs
      remote: read symbolic refs via `refs_read_symbolic_ref()`
      refs/files-backend: optimize reading of symbolic refs
      t5503: simplify setup of test which exercises failure of backfill
      repack: refactor to avoid double-negation of update-server-info
      repack: add config to skip updating server info
      core.fsync: new option to harden references

Philip Oakley (2):
      README.md: add CodingGuidelines and a link for Translators
      doc: check-ignore: code-quote an exclamation mark

Philippe Blain (1):
      pull --rebase: honor rebase.autostash when fast-forwarding

Phillip Wood (29):
      t3701: clean up hunk splitting tests
      builtin add -p: fix hunk splitting
      rebase: factor out checkout for up to date branch
      t5403: refactor rebase post-checkout hook tests
      rebase: pass correct arguments to post-checkout hook
      rebase: do not remove untracked files on checkout
      rebase --apply: don't run post-checkout hook if there is an error
      reset_head(): remove action parameter
      reset_head(): factor out ref updates
      reset_head(): make default_reflog_action optional
      create_autostash(): remove unneeded parameter
      rebase: cleanup reset_head() calls
      reset_head(): take struct rebase_head_opts
      rebase --apply: fix reflog
      rebase --apply: set ORIG_HEAD correctly
      rebase -m: don't fork git checkout
      xdiff: fix a memory leak
      xdiff: handle allocation failure in patience diff
      xdiff: refactor a function
      xdiff: handle allocation failure when merging
      terminal: always reset terminal when reading without echo
      terminal: pop signal handler when terminal is restored
      terminal: set VMIN and VTIME in non-canonical mode
      add -p: disable stdin buffering when interactive.singlekey is set
      terminal: use flags for save_term()
      terminal: don't assume stdin is /dev/tty
      terminal: work around macos poll() bug
      terminal: restore settings on SIGTSTP
      worktree: add -z option for list subcommand

René Scharfe (10):
      grep: use grep_or_expr() in compile_pattern_or()
      grep: use grep_not_expr() in compile_pattern_not()
      apply: use strsets to track symlinks
      stable-qsort: avoid using potentially unaligned access
      bisect--helper: report actual bisect_state() argument on error
      bisect--helper: release strbuf and strvec on run error
      bisect: document run behavior with exit codes 126 and 127
      bisect--helper: double-check run command on exit code 126 and 127
      parse-options: document bracketing of argh
      grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround

Robert Coup (8):
      fetch: fix negotiate-only error message
      fetch-negotiator: add specific noop initializer
      fetch-pack: add refetch
      builtin/fetch-pack: add --refetch option
      fetch: add --refetch option
      t5615-partial-clone: add test for fetch --refetch
      fetch: after refetch, encourage auto gc repacking
      docs: mention --refetch fetch option

SZEDER Gábor (1):
      reflog: fix 'show' subcommand's argv

Shaoxuan Yuan (4):
      builtin/diff.c: fix "git-diff" usage string typo
      t/lib-read-tree-m-3way: modernize style
      t/lib-read-tree-m-3way: indent with tabs
      t0001: replace "test [-d|-f]" with test_path_is_* functions

Shubham Mishra (3):
      t0003: avoid pipes with Git on LHS
      t0001-t0028: avoid pipes with Git on LHS
      t0030-t0050: avoid pipes with Git on LHS

Tao Klerks (6):
      t7519: avoid file to index mtime race for untracked cache
      t7519: populate untracked cache before test
      untracked-cache: write index when populating empty untracked cache
      t/helper/test-chmtime: update mingw to support chmtime on directories
      t7063: mtime-mangling instead of delays in untracked cache testing
      tracking branches: add advice to ambiguous refspec error

Taylor Blau (15):
      grep: extract grep_binexp() from grep_or_expr()
      grep: use grep_and_expr() in compile_pattern_and()
      t5326: demonstrate bitmap corruption after permutation
      midx.c: make changing the preferred pack safe
      pack-revindex.c: instrument loading on-disk reverse index
      t5326: drop unnecessary setup
      t5326: extract `test_rev_exists`
      t5326: move tests to t/lib-bitmap.sh
      t/lib-bitmap.sh: parameterize tests over reverse index source
      midx: read `RIDX` chunk when present
      pack-bitmap.c: gracefully fallback after opening pack/MIDX
      midx: prevent writing a .bitmap without any objects
      CODE_OF_CONDUCT.md: update PLC members list
      builtin/remote.c: parse options in 'rename'
      builtin/remote.c: show progress when renaming remote references

Teng Long (6):
      git-cli.txt: clarify "options first and then args"
      ls-tree: rename "retval" to "recurse" in "show_tree()"
      ls-tree: simplify nesting if/else logic in "show_tree()"
      ls-tree: fix "--name-only" and "--long" combined use bug
      ls-tree: slightly refactor `show_tree()`
      ls-tree: support --object-only option for "git-ls-tree"

Thomas Gummerer (1):
      fetch --prune: exit with error if pruning fails

Thomas Koutcher (1):
      subtree: force merge commit

Todd Zullinger (3):
      t/lib-gpg: reload gpg components after updating trustlist
      t/lib-gpg: kill all gpg components, not just gpg-agent
      doc: replace "--" with {litdd} in credential-cache/fsmonitor

Victoria Dye (30):
      reset: fix validation in sparse index test
      reset: reorder wildcard pathspec conditions
      clean: integrate with sparse index
      checkout-index: expand sparse checkout compatibility tests
      checkout-index: add --ignore-skip-worktree-bits option
      checkout-index: integrate with sparse index
      update-index: add tests for sparse-checkout compatibility
      update-index: integrate with sparse index
      update-index: reduce scope of index expansion in do_reupdate
      sparse-index: prevent repo root from becoming sparse
      status: fix nested sparse directory diff in sparse index
      read-tree: explicitly disallow prefixes with a leading '/'
      read-tree: expand sparse checkout test coverage
      read-tree: integrate with sparse index
      read-tree: narrow scope of index expansion for '--prefix'
      read-tree: make two-way merge sparse-aware
      read-tree: make three-way merge sparse-aware
      reset: revise index refresh advice
      reset: introduce --[no-]refresh option to --mixed
      reset: replace '--quiet' with '--no-refresh' in performance advice
      reset: suppress '--no-refresh' advice if logging is silenced
      stash: make internal resets quiet and refresh index
      t1092: add sparse directory before cone in test repo
      unpack-trees: increment cache_bottom for sparse directories
      Revert "unpack-trees: improve performance of next_cache_entry"
      reset: do not make '--quiet' disable index refresh
      reset: remove 'reset.quiet' config option
      reset: remove 'reset.refresh' config option
      mv: refresh stat info for moved entry
      contrib/scalar: fix 'all' target in Makefile

brian m. carlson (6):
      t0027: add tests for eol without text in .gitattributes
      docs: correct documentation about eol attribute
      wrapper: add a helper to generate numbers from a CSPRNG
      wrapper: use a CSPRNG to generate random file names
      doc: clarify interaction between 'eol' and text=auto
      block-sha1: remove use of obsolete x86 assembly

Ævar Arnfjörð Bjarmason (186):
      cat-file tests: test bad usage
      cat-file tests: test messaging on bad objects/paths
      parse-options API: add a usage_msg_optf()
      cat-file docs: fix SYNOPSIS and "-h" output
      cat-file: move "usage" variable to cmd_cat_file()
      cat-file: make --batch-all-objects a CMDMODE
      cat-file: fix remaining usage bugs
      cat-file: correct and improve usage information
      object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
      cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
      hook API: add a run_hooks() wrapper
      hook API: add a run_hooks_l() wrapper
      git hook run: add an --ignore-missing flag
      cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
      cat-file: s/_/-/ in typo'd usage_msg_optf() message
      compat: auto-detect if zlib has uncompress2()
      sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
      refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
      object-name tests: add tests for ambiguous object blind spots
      object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
      object-name: explicitly handle bad tags in show_ambiguous_object()
      object-name: make ambiguous object output translatable
      object-name: show date for ambiguous tag objects
      object-name: iterate ambiguous objects before showing header
      object-name: re-use "struct strbuf" in show_ambiguous_object()
      perl Git.pm: don't ignore signalled failure in _cmd_close()
      completion tests: re-source git-completion.bash in a subshell
      completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
      leak tests: fix a memory leak in "test-progress" helper
      progress.c test helper: add missing braces
      progress.c tests: make start/stop commands on stdin
      progress.c tests: test some invalid usage
      progress.h: format and be consistent with progress.c naming
      progress.c: use dereferenced "progress" variable, not "(*p_progress)"
      progress.c: refactor stop_progress{,_msg}() to use helpers
      progress API: unify stop_progress{,_msg}(), fix trace2 bug
      pack-bitmap-write.c: don't return without stop_progress()
      t0051: use "skip_all" under !MINGW in single-test file
      hash-object: fix a trivial leak in --path
      ls-remote & transport API: release "struct transport_ls_refs_options"
      grep.h: remove unused "regex_t regexp" from grep_opt
      log tests: check if grep_config() is called by "log"-like cmds
      grep tests: create a helper function for "BRE" or "ERE"
      grep tests: add missing "grep.patternType" config tests
      built-ins: trust the "prefix" from run_builtin()
      grep.c: don't pass along NULL callback value
      grep API: call grep_config() after grep_init()
      grep.h: make "grep_opt.pattern_type_option" use its enum
      grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
      grep: simplify config parsing and option parsing
      cache.h: remove always unused show_date_human() declaration
      date API: create a date.h, split from cache.h
      date API: provide and use a DATE_MODE_INIT
      date API: add basic API docs
      date API: add and use a date_mode_release()
      diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
      diff.[ch]: have diff_free() free options->parseopts
      hook tests: test for exact "pre-push" hook input
      hook tests: use a modern style for "pre-push" tests
      git-compat-util.h: clarify GCC v.s. C99-specific in comment
      C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
      help doc: add missing "]" to "[-a|--all]"
      help.c: use puts() instead of printf{,_ln}() for consistency
      help tests: test "git" and "git help [-a|-g] spacing
      help.c: split up list_all_cmds_help() function
      help: note the option name on option incompatibility
      help: correct usage & behavior of "git help --all"
      help: error if [-a|-g|-c] and [-i|-m|-w] are combined
      help: add --no-[external-commands|aliases] for use with --all
      help: don't print "\n" before single-section output
      imap-send.c: use designated initializers for "struct imap_server_conf"
      trace2: use designated initializers for "struct tr2_tgt"
      trace2: use designated initializers for "struct tr2_dst"
      object-file: use designated initializers for "struct git_hash_algo"
      archive-*.c: use designated initializers for "struct archiver"
      userdiff.c: use designated initializers for "struct userdiff_driver"
      convert.c: use designated initializers for "struct stream_filter*"
      refspec.c: use designated initializers for "struct refspec_item"
      fast-import.c: use designated initializers for "partial" struct assignments
      object-file.c: split up declaration of unrelated variables
      object-file API: return "void", not "int" from hash_object_file()
      object-file API: add a format_object_header() function
      object-file API: have write_object_file() take "enum object_type"
      object API: correct "buf" v.s. "map" mismatch in *.c and *.h
      object API docs: move check_object_signature() docs to cache.h
      object API users + docs: check <0, not !0 with check_object_signature()
      object-file API: split up and simplify check_object_signature()
      object API: rename hash_object_file_literally() to write_*()
      object-file API: have hash_object_file() take "enum object_type"
      object-file.c: add a literal version of write_object_file_prepare()
      object-file API: pass an enum to read_object_with_reference()
      test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
      test-lib: correct and assert TEST_DIRECTORY overriding
      test-lib: make $GIT_BUILD_DIR an absolute path
      test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
      scalar Makefile: use "The default target of..." pattern
      Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
      Makefile: disable GNU make built-in wildcard rules
      Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
      Makefile: move ".SUFFIXES" rule to shared.mak
      Makefile: move $(comma), $(empty) and $(space) to shared.mak
      Makefile: add "$(QUIET)" boilerplate to shared.mak
      Makefiles: add and use wildcard "mkdir -p" template
      log tests: fix "abort tests early" regression in ff37a60c369
      index-pack: fix memory leaks
      merge-base: free() allocated "struct commit **" list
      diff.c: free "buf" in diff_words_flush()
      urlmatch.c: add and use a *_release() function
      remote-curl.c: free memory in cmd_main()
      bundle: call strvec_clear() on allocated strvec
      transport: stop needlessly copying bundle header references
      submodule--helper: fix trivial leak in module_add()
      commit-graph: fix memory leak in misused string_list API
      commit-graph: stop fill_oids_from_packs() progress on error and free()
      lockfile API users: simplify and don't leak "path"
      range-diff: plug memory leak in common invocation
      range-diff: plug memory leak in read_patches()
      repository.c: free the "path cache" in repo_clear()
      submodule tests: test for init and update failure output
      submodule--helper: don't use bitfield indirection for parse_options()
      gettext API users: don't explicitly cast ngettext()'s "n"
      string-list API: change "nr" and "alloc" to "size_t"
      merge: don't run post-hook logic on --no-verify
      hooks: fix an obscure TOCTOU "did we just run a hook?" race
      tests: change some 'test $(git) = "x"' to test_cmp
      tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
      read-tree tests: check "diff-files" exit code on failure
      diff tests: don't ignore "git diff" exit code
      diff tests: don't ignore "git diff" exit code in "read" loop
      apply tests: use "test_must_fail" instead of ad-hoc pattern
      merge tests: use "test_must_fail" instead of ad-hoc pattern
      rev-parse tests: don't ignore "git reflog" exit code
      notes tests: don't ignore "git" exit code
      diff tests: don't ignore "git rev-list" exit code
      rev-list tests: don't hide abort() in "test_expect_failure"
      gettext tests: don't ignore "test-tool regex" exit code
      apply tests: don't ignore "git ls-files" exit code, drop sub-shell
      checkout tests: don't ignore "git <cmd>" exit code
      rev-list simplify tests: don't ignore "git" exit code
      list-objects: handle NULL function pointers
      reflog: don't be noisy on empty reflogs
      builtin/submodule--helper.c: rename option struct to "opt"
      test-lib-functions: add and use a "test_hook" wrapper
      hook tests: turn exit code assertions into a loop
      http tests: don't rely on "hook/post-update.sample"
      tests: assume the hooks are disabled by default
      bugreport tests: tighten up "git bugreport -s hooks" test
      fetch+push tests: use "test_hook" and "test_when_finished" pattern
      gc + p4 tests: use "test_hook", remove sub-shells
      tests: change "cat && chmod +x" to use "test_hook"
      tests: change "mkdir -p && write_script" to use "test_hook"
      tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
      diff.c: fix a double-free regression in a18d66cefb
      refs: use designated initializers for "struct ref_storage_be"
      refs: use designated initializers for "struct ref_iterator_vtable"
      misc *.c: use designated initializers for struct assignments
      packed-backend: remove stub BUG(...) functions
      refs debug: add a wrapper for "read_symbolic_ref"
      tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
      proc-receive hook tests: use "test_hook" instead of "write_script"
      http tests: use "test_hook" for "smart" and "dumb" http tests
      reflog.c: indent argument lists
      reflog: refactor cmd_reflog() to "if" branches
      reflog tests: add missing "git reflog exists" tests
      reflog: move "usage" variables and use macros
      git reflog [expire|delete]: make -h output consistent with SYNOPSIS
      reflog exists: use parse_options() API
      Makefile: use ' ', not non-existing $(wspfx_SQ)
      ls-tree tests: add tests for --name-status
      ls-tree: remove commented-out code
      ls-tree: add missing braces to "else" arms
      ls-tree: use "enum object_type", not {blob,tree,commit}_type
      ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
      ls-tree: introduce struct "show_tree_data"
      ls-tree: introduce "--format" option
      ls-tree: detect and error on --name-only --name-status
      ls-tree: split up "fast path" callbacks
      hooks: fix "invoked hook" regression in a8cc5943338
      reflog: convert to parse_options() API
      reflog [show]: display sensible -h output
      test-lib: have --immediate emit valid TAP on failure
      pack-objects: lazily set up "struct rev_info", don't leak
      reftable: make assignments portable to AIX xlc v12.01
      Documentation/Makefile: fix "make info" regression in dad9cd7d518
      Documentation: add --batch-command to cat-file synopsis
      ls-tree doc: document interaction with submodules



^ permalink raw reply	[relevance 3%]

* Re: [RFC] Git rerere and non-conflicting changes during conflict resolution
  @ 2017-07-26  7:14  3%       ` Junio C Hamano
  2017-07-27 21:01  3%         ` Junio C Hamano
  2017-07-26  8:06  3%       ` Junio C Hamano
  1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2017-07-26  7:14 UTC (permalink / raw)
  To: Jeff King; +Cc: Raman Gupta, git

Jeff King <peff@peff.net> writes:

> From the user's perspective, calling X "rerere" would probably be OK[1].
> But from an implementation perspective (and to keep the existing
> plumbing available and unchanged), it probably makes sense to call it
> something else, and have it run both rerere and a new plumbing command
> to do the merge-fix work (or call it nothing, and assume that users will
> either touch the plumbing directly or will use "git merge" to trigger
> both).
> ...
> I think it should be its own plumbing tool that merge calls alongside
> rerere. ;)

As long as we use the database keyed with <A,B> and take the merge
base into account, "git am" and "git cherry-pick" would not be able
to use the merge-fix machinery, so in that sense, calling X "rerere"
would not be OK, but I agree with your general sentiment about the
UI visible to the end users.  Just like "rerere" started with a
small step to avoid automating things too much and then later became
almost invisible for normal cases because we managed to automate it
reasonably well and integrate it into mergy operations, we may be
able to do the same for merge-fix machinery.  My "this belongs to
'merge'" is primarily coming from it---it might be reusable in other
mergy operations with some fundamental changes, but I envision that
the primarly and only user of that X would initially be 'merge'.

> Not having thought too hard about it yet, this containing relationship
> seems like the right direction. I guess you'd do the lookup by computing
> the merge-base M of <X,Y> (which we already know anyway), walking M..X
> and looking for any entries which mention those commits (in either A or
> B slots of the entry), and then similarly narrowing it according to
> M..Y.

Yes, every time I look at the Reintegrate script, I try to think of
an efficient implementation but do not find anything better than the
left-right walk over X...Y range, so that is my conclusion after
having thought about it very hard as well ;-)

> What if instead of commit hashes we used patch ids?

Now you may be onto something.  While we aim at the ultimately automated
ideal that would catch the maximal cases, for the earlier 'xyzzy
turns into frotz' example, the minimal cue to identify one side of
the pair that keys the "change this new instance of xyzzy into
frotz, too" merge-fix is a hunk like this:

    -const char *xyzzy;
    +const char *frotz;

It does not matter what other changes also appear in the same
commit, and my original "branch name" is way too broad, and my
previous "ideal" which is "a single problematic commit" is still
broader than necessary.  Well, patch-id identifies the entire change
contained in a single commit, so it is still too broad, but if we
can narrow it down to a single hunk like that, perhaps we can use it
as one side of the key.

And the other side of the key is naturally a hunk like this:

    +	printf("%s\n", xyzzy);

i.e. a new use of xyzzy appears where it didn't exist before.  And
when we merge two branches, one of which has one half of the key
(i.e. "const char *xyzzy;" turned into "const char *frotz"), and the
other has the other half of the key (i.e. "printf xyzzy" is added),
then we'd apply a patch that tells us to do this:

    -	printf("%s\n", xyzzy);
    +	printf("%s\n", frotz);

i.e. that patch would be the value in the database keyed by the pair
of two previous hunks.

> I think it's asking a lot for users to handle the textual conflicts and
> semantic ones separately. It would be nice if we could tell them apart
> automatically (and I think we can based on what isn't part of the
> conflict resolution).

After thinking about this a bit more, I realized that it is possible
to mechanically sift a human generated resolution that has both
textual conflict resolution (which will be handled by "rerere") and
semantic one (which needs the merge-fix machinery) into two, without
requiring the user to make two separate commits.

The key trick is that "rerere" is capable of recording and replaying
semantic conflict resolution made to a file that happens to have
textual conflict just fine.  Because rerere database records the
preimage (i.e. with conflict markers) and postimage (i.e. the final
resolution for the file) as an entire file contents, it can do 3-way
merge for parts of the same file that is away from any conflicted
region.

If you tell contrib/rerere-train.sh to learn from "pu^{/^Merge
branch 'bp/fsmonitor' into pu}", you'll see what I mean.

  $ git show "pu^{/^Merge branch 'bp/fsmonitor' into pu}" compat/bswap.h

shows the result of such resolution.  Early part of the combined
diff shown by the above command comes from textual conflict
resolution, but there is a new implementation of inline version of
get_be64 that has become necessary but did not exist in either of
the branches getting merged, which is shown as an evil merge.

So the way to automatically sift an existing merge into textual
conflict resolution (i.e. automatable with "rerere") and semantic
evil merge-fix is to first try to recreate the merge and enumerate
the paths that get conflicts.  Then resolve these paths by grabbing
the resolved result for these paths that get textual conflicts out
of the original merge.  That gives us the textual part (we can run
"git rerere" at this point to store the resolution away to the
rerere database---which is essentially what contrib/rerere-train
does).

There will be difference between the result of the above and the
original merge commit.  The paths that are different are all outside
these conflicted paths, and they are what we want in the second
commit, i.e. the semantic evil merge-fix, which will be the value
for the merge-fix database.

So that part is easily automatable.  

It is much harder to come up with a way to index into the merge-fix
database.  We can "punt" and use the same index scheme as the
Reintegrate script (i.e. key it with the name of the branch being
merged, which can be read from the original merge) as the initial
approximation, and that would already be much better than what
Reintegrate script currently does, in that the recording part is
much more automated (in the workflow I use the Reintegrate script,
the side that records a merge-fix initially is entirely manual).




^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Feb 2022, #01; Thu, 3)
@ 2022-02-04  5:22  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-02-04  5:22 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',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful").  Do not read too much into a topic being in (or not in)
'seen'.  The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

Will merge a bunch of topics as the first batch in this cycle down
to 'master' (aka 'main'), hopefully tomorrow.

Many topics have sketchy or even empty topic description in the list
below; help to fill them in is very much appreciated ;-)

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']

* en/keep-cwd (2022-01-26) 1 commit
  (merged to 'next' on 2022-01-26 at b2518a683c)
 + sequencer, stash: fix running from worktree subdir

 Fix a regression in 2.35 that roke the use of "rebase" and "stash"
 in a secondary worktree.
 source: <pull.1205.git.git.1643161426138.gitgitgadget@gmail.com>

--------------------------------------------------
[New Topics]

* jt/clone-not-quite-empty (2022-01-26) 1 commit
  (merged to 'next' on 2022-01-26 at c3bb39676e)
 + clone: support unusual remote ref configurations

 Cloning from a repository that does not yet have any branches or
 tags but has other refs resulted in a "remote transport reported
 error", which has been corrected.

 Will merge to 'master'.
 source: <20220124180909.2437002-1-jonathantanmy@google.com>


* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
 - refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
 - sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure

 Remaining code-clean-up.

 Will merge to 'next'. 
 source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>


* gh/doc-typos (2022-01-26) 2 commits
 - Documentation/config/pgp.txt: add missing apostrophe
 - Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>

 Typofix.

 Will merge to 'next'.
 source: <20220126121426.53799-1-greg@hurrell.net>


* jc/doc-log-messages (2022-01-27) 3 commits
 - SubmittingPatches: explain why we care about log messages
 - CodingGuidelines: hint why we value clearly written log messages
 - SubmittingPatches: write problem statement in the log in the present tense

 Update the contributor-facing documents on proposed log messages.

 Will merge to 'next'?
 source: <20220126234205.2923388-1-gitster@pobox.com>


* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
 - repo-settings: rename the traditional default fetch.negotiationAlgorithm
 - repo-settings: fix error handling for unknown values
 - repo-settings: fix checking for fetch.negotiationAlgorithm=default

 Fix interaction between fetch.negotiationAlgorithm and
 feature.experimental configuration variables.

 Will merge to 'next'.
 source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>


* en/sparse-checkout-leakfix (2022-01-28) 1 commit
 - sparse-checkout: fix a couple minor memory leaks

 Leakfix.

 Will merge to 'next'.
 source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>


* js/diff-filter-negation-fix (2022-01-28) 3 commits
 - diff-filter: be more careful when looking for negative bits
 - diff.c: move the diff filter bits definitions up a bit
 - docs(diff): lose incorrect claim about `diff-files --diff-filter=A`

 "git diff --diff-filter=aR" is now parsed correctly.

 Will merge to 'next'.
 source: <pull.1127.v3.git.1643371370.gitgitgadget@gmail.com>


* js/no-more-legacy-stash (2022-01-27) 4 commits
 - stash: stop warning about the obsolete `stash.useBuiltin` config setting
 - stash: remove documentation for `stash.useBuiltin`
 - add: remove support for `git-legacy-stash`
 - git-sh-setup: remove remnant bits referring to `git-legacy-stash`

 Removal of unused code and doc.

 Will merge to 'next'.
 source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>


* js/scalar-global-options (2022-01-28) 1 commit
 - scalar: accept -C and -c options before the subcommand

 Scalar update.

 Will merge to 'next'.
 source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>


* rc/negotiate-only-typofix (2022-01-28) 1 commit
 - fetch: fix negotiate-only error message

 Typofix.

 Will merge to 'next'.
 source: <20220128143602.31842-1-robert@coup.net.nz>


* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
 - receive-pack: check if client is alive before completing the push

 "git push" may be killed by the user when the server side has
 finished receiving all data and is about to commit the result.
 Give the latter a better chance to notice such situation and abort
 processing the ref updates.

 Will merge to 'next'?
 source: <20220128194811.3396281-1-robin.jarry@6wind.com>


* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
 - patch-id: fix scan_hunk_header on diffs with 1 line of before/after
 - patch-id: fix antipatterns in tests

 Unlike "git apply", "git patch-id" did not handle patches with
 hunks that has only 1 line in either preimage or postimage, which
 has been corrected.

 Will merge to 'next'.
 source: <20220202041945.10077-1-jerry@skydio.com>
 source: <20220202042015.10115-1-jerry@skydio.com>


* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
 - fetch --prune: exit with error if pruning fails

 When "git fetch --prune" failed to prune the refs it wanted to
 prune, the command issued error messages but exited with exit
 status 0, which has been corrected.

 Will merge to 'next'.
 source: <20220131133047.1885074-1-t.gummerer@gmail.com>


* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
 - perl Git.pm: don't ignore signalled failure in _cmd_close()

 Git.pm update.

 Will merge to 'next'.
 source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>


* ab/object-file-api-updates (2022-02-01) 10 commits
 - object-file API: pass an enum to read_object_with_reference()
 - object-file.c: add a literal version of write_object_file_prepare()
 - object-file API: replace check_object_signature() with stream_*
 - object-file API: have hash_object_file() take "enum object_type"
 - object-file API: replace some use of check_object_signature()
 - object-file API: provide a hash_object_file_oideq()
 - object-file API: have write_object_file() take "enum object_type"
 - object-file API: add a format_object_header() function
 - object-file API: return "void", not "int" from hash_object_file()
 - object-file.c: split up declaration of unrelated variables

 source: <cover-00.10-00000000000-20220201T144803Z-avarab@gmail.com>


* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
 - receive-pack: purge temporary data if no command is ready to run

 Check if "receive-pack" will do any ref updates (various conditions
 could reject a push) before received objects are taken out of the
 temporary directory used for quarantine purposes, so that a push
 that is known-to-fail will not leave crufts that a future "gc"
 needs to clean up.

 Will merge to 'next'?
 source: <20220129063538.24038-1-bojun.cbj@gmail.com>


* hn/reftable-tests (2022-01-31) 3 commits
 - t5312: prepare for reftable
 - t1405: mark test that checks existence as REFFILES
 - t1405: explictly delete reflogs for reftable

 Prepare more test scripts for the introduction of reftable.

 Will merge to 'next'.
 source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>


* ja/i18n-common-messages (2022-01-31) 5 commits
 - i18n: fix some misformated placeholders in command synopsis
 - i18n: remove from i18n strings that do not hold translatable parts
 - i18n: factorize "invalid value" messages
 - SQUASH???
 - i18n: factorize more 'incompatible options' messages

 Unify more messages to help l10n.

 Will merge to 'next' after squashing the fix-up in.
 source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>


* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
 - subtree: force merge commit

 When "git subtree" wants to create a merge, it used "git merge" and
 let it be affected by end-user's "merge.ff" configuration, which
 has been corrected.

 Will merge to 'next'.
 source: <20220201172601.262718-1-aclopte@gmail.com>


* ab/complete-show-all-commands (2022-02-02) 2 commits
 - completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
 - completion tests: re-source git-completion.bash in a subshell

 The command line completion script (in contrib/) learns an option
 to complete all Git subcommands, including the ones that are
 normally hidden.

 Will merge to 'next'.
 source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>


* en/merge-tree (2022-02-02) 16 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: allow update messages to be written to different file stream
 - merge-ort: split out a separate display_update_messages() function
 - diff: allow diff_warn_rename_limit to write somewhere besides stderr
 - Introduce a variant of the `warning()` function that takes a `FILE *`
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()
 - Merge branch 'en/remerge-diff' into en/merge-trees
 (this branch uses en/remerge-diff.)

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>


* ll/doc-mktree-typofix (2022-02-02) 1 commit
 - fix typo in git-mktree.txt

 Typofix.

 Will merge to 'next'.
 source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>

* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
 - doc: check-ignore: code-quote an exclamation mark

 Typofix.

 Will merge to 'next'.
 source: <20220203101643.1987-1-philipoakley@iee.email>


* sy/diff-usage-typofix (2022-02-02) 1 commit
 - builtin/diff.c: fix "git-diff" usage string typo

 Typofix.

 Will merge to 'next'.
 source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>


* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
 - t/lib-read-tree-m-3way: indent with tabs
 - t/lib-read-tree-m-3way: modernize style

 Style updates on a test script helper.

 Will merge to 'next'.
 source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>

--------------------------------------------------
[Stalled]

* je/http-better-error-output (2021-12-03) 1 commit
 . http-backend: give a hint that web browser access is not supported

 When the http-backend program, which is the server-side component
 for the smart HTTP transport, sends a "404 Not found" error, we
 deliberately did not say anything to the requesting client.  We now
 send a message back to the browser to tell the user that they do
 not want to visit the URL via their browser, instead of a totally
 blank page.

 Expecting a reroll.
 Breaks its self tests.
 cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
 source: <20211202102855.23907-1-jengelh@inai.de>


* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
 - fixup! editor: allow for saving/restoring terminal state
 - editor: allow for saving/restoring terminal state
 - terminal: teach save_term to fail when not foreground

 Some editors are reported to leave the terminal in funny state
 after they exit on Windows.  Work it around by saving and restoring
 the terminal state when needed.

 Expecting a reroll.
 cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
 source: <20211202035446.1154-1-carenas@gmail.com>


* ar/submodule-update (2022-01-28) 9 commits
 . submodule: move core cmd_update() logic to C
 . submodule tests: test for init and update failure output
 . submodule--helper: don't use bitfield indirection for parse_options()
 . builtin/submodule--helper.c: rename option variables to "opt"
 . builtin/submodule--helper.c: reformat designated initializers
 . submodule--helper: run update using child process struct
 . submodule--helper: allow setting superprefix for init_submodule()
 . submodule--helper: refactor get_submodule_displaypath()
 . submodule--helper: get remote names from any repository

 Rewrite of "git submodule update" in C.
 source: <cover-v5-0.9-00000000000-20220128T125206Z-avarab@gmail.com>

--------------------------------------------------
[Cooking]

* jc/mem-pool-alignment (2022-01-24) 1 commit
  (merged to 'next' on 2022-01-26 at 057b6a78f5)
 + mem-pool: don't assume uintmax_t is aligned enough for all types

 Update the logic to compute alignment requirement for our mem-pool.

 Will merge to 'master'.
 source: <20220123203347.74869-1-jrtc27@jrtc27.com>


* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
 - compat: auto-detect if zlib has uncompress2()

 Notice older zlib to enable our replacement uncompress2()
 automatically.

 Will merge to 'next'.
 source: <xmqqr18x3s5s.fsf@gitster.g>


* en/plug-leaks-in-merge (2022-01-21) 2 commits
  (merged to 'next' on 2022-01-26 at 0cf6aa0a2b)
 + merge: fix memory leaks in cmd_merge()
 + merge-ort: fix memory leak in merge_ort_internal()

 Leakfix.

 Will merge to 'master'.
 source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>


* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
 - clone, submodule: pass partial clone filters to submodules

 "git clone --filter=... --recurse-submodules" only makes the
 top-level a partial clone, while submodules are fully cloned.  This
 behaviour is changed to pass the same filter down to the submodules.

 It is unclear passing all filters down is a good idea.  It
 definitely is contrary to the project norm to flip the default
 instead of starting the new behaviour as an optional behaviour.
 cf. <xmqqsftgbkvm.fsf@gitster.g>
 source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>


* js/sparse-vs-split-index (2022-01-23) 3 commits
  (merged to 'next' on 2022-01-26 at 7443487955)
 + split-index: it really is incompatible with the sparse index
 + t1091: disable split index
 + sparse-index: sparse index is disallowed when split index is active

 Mark in various places in the code that the sparse index and the
 split index features are mutually incompatible.

 Will merge to 'master'.
 source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>


* js/test-unset-trace2-parents (2022-01-20) 1 commit
  (merged to 'next' on 2022-01-20 at ebb085e3e4)
 + test-lib: unset trace2 parent envvars

 Avoid tests that are run under GIT_TRACE2 set from failing
 unnecessarily.

 Will merge to 'master'.
 source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>


* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
  (merged to 'next' on 2022-01-26 at 5611ce9047)
 + sparse-checkout: create leading directory

 "git sparse-checkout init" failed to write into $GIT_DIR/info
 directory when the repository was created without one, which has
 been corrected to auto-create it.

 Will merge to 'master'.
 source: <20220121174441.3991963-1-jonathantanmy@google.com>


* rs/parse-options-lithelp-help (2022-01-20) 1 commit
 - parse-options: document bracketing of argh

 Comment update.

 Will merge to 'next'.
 source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>


* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 84da10b057)
 + merge-ort: avoid assuming all renames detected

 The merge-ort misbehaved when merge.renameLimit configuration is
 set too low and failed to find all renames.

 Will merge to 'master'.
 source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>


* jh/p4-various-fixups (2022-01-16) 23 commits
 . git-p4: seperate multiple statements onto seperate lines
 . git-p4: move inline comments to line above
 . git-p4: only seperate code blocks by a single empty line
 . git-p4: compare to singletons with "is" and "is not"
 . git-p4: normalize indentation of lines in conditionals
 . git-p4: ensure there is a single space around all operators
 . git-p4: ensure every comment has a single #
 . git-p4: remove spaces between dictionary keys and colons
 . git-p4: remove redundant backslash-continuations inside brackets
 . git-p4: remove extraneous spaces before function arguments
 . git-p4: place a single space after every comma
 . git-p4: removed brackets when assigning multiple return values
 . git-p4: remove spaces around default arguments
 . git-p4: remove padding from lists, tuples and function arguments
 . git-p4: sort and de-duplcate pylint disable list
 . git-p4: remove commented code
 . git-p4: convert descriptive class and function comments into docstrings
 . git-p4: improve consistency of docstring formatting
 . git-p4: indent with 4-spaces
 . git-p4: remove unneeded semicolons from statements
 . git-p4: add blank lines between functions and class definitions
 . Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
 . Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
 (this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)

 Various cleanups to "git p4".

 Breaks its own test suite.
 source: <20220116160550.514637-1-jholdsworth@nvidia.com>


* po/readme-mention-contributor-hints (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 7e14690eb9)
 + README.md: add CodingGuidelines and a link for Translators

 Doc update.

 Will merge to 'master'.
 source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>


* tl/doc-cli-options-first (2022-01-17) 1 commit
  (merged to 'next' on 2022-01-19 at 9ec14cfe73)
 + git-cli.txt: clarify "options first and then args"

 We explain that revs come first before the pathspec among command
 line arguments, but did not spell out that dashed options come
 before other args, which has been corrected.

 Will merge to 'master'.
 source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>


* rs/bisect-executable-not-found (2022-01-19) 4 commits
 - bisect--helper: double-check run command on exit code 126 and 127
 - bisect: document run behavior with exit codes 126 and 127
 - bisect--helper: release strbuf and strvec on run error
 - bisect--helper: report actual bisect_state() argument on error

 A not-so-common mistake is to write a script to feed "git bisect
 run" without making it executable, in which case all tests will
 exit with 126 or 127 error codes, even on revisions that are marked
 as good.  Try to recoginse this situation and stop iteration early.

 Will merge to 'next'?
 source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>


* ds/sparse-checkout-requires-per-worktree-config (2022-01-31) 5 commits
 - worktree: copy sparse-checkout patterns and config on add
 - sparse-checkout: set worktree-config correctly
 - config: add repo_config_set_worktree_gently()
 - worktree: create init_worktree_config()
 - Documentation: add extensions.worktreeConfig details

 "git sparse-checkout" wants to work with per-worktree configration,
 but did not work well in a worktree attached to a bare repository.

 What's the doneness of this one?
 source: <pull.1101.v5.git.1643641259.gitgitgadget@gmail.com>


* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
  (merged to 'next' on 2022-01-19 at ea57b2c9a6)
 + builtin add -p: fix hunk splitting
 + t3701: clean up hunk splitting tests

 "git add -p" rewritten in C regressed hunk splitting in some cases,
 which has been corrected.

 Will merge to 'master'.
 source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>


* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
  (merged to 'next' on 2022-01-20 at e7616428eb)
 + fetch: help translators by reusing the same message template
  (merged to 'next' on 2022-01-19 at 0f15147cfa)
 + fetch --negotiate-only: do not update submodules
 + fetch: skip tasks related to fetching objects
 + fetch: use goto cleanup in cmd_fetch()

 "git fetch --negotiate-only" is an internal command used by "git
 push" to figure out which part of our history is missing from the
 other side.  It should never recurse into submodules even when
 fetch.recursesubmodules configuration variable is set, nor it
 should trigger "gc".  The code has been tightened up to ensure it
 only does common ancestry discovery and nothing else.

 Will merge to 'master'.
 source: <20220119000056.58503-1-chooglen@google.com>


* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 49d529bfd7)
 + git-p4: fix instantiation of CalledProcessError
 (this branch is used by jh/p4-various-fixups.)

 Will merge to 'master'.
 source: <20220106214156.90967-1-jholdsworth@nvidia.com>


* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
  (merged to 'next' on 2022-01-10 at 54b36b4e66)
 + git-p4: don't print shell commands as python lists
 + git-p4: pass command arguments as lists instead of using shell
 + git-p4: don't select shell mode using the type of the command argument
 (this branch is used by jh/p4-various-fixups.)

 Will merge to 'master'.
 source: <20220106214035.90725-1-jholdsworth@nvidia.com>


* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
  (merged to 'next' on 2022-01-14 at 83a388a7e2)
 + pull --rebase: honor rebase.autostash when fast-forwarding

 "git pull --rebase" ignored the rebase.autostash configuration
 variable when the remote history is a descendant of our history,
 which has been corrected.

 Will merge to 'master'.
 source: <xmqqr19aayxp.fsf@gitster.g>


* rs/grep-expr-cleanup (2022-01-06) 4 commits
  (merged to 'next' on 2022-01-10 at b70a3bb0fa)
 + grep: use grep_and_expr() in compile_pattern_and()
 + grep: extract grep_binexp() from grep_or_expr()
 + grep: use grep_not_expr() in compile_pattern_not()
 + grep: use grep_or_expr() in compile_pattern_or()

 Code clean-up.

 Will merge to 'master'.
 source: <cover.1641498525.git.me@ttaylorr.com>


* fs/ssh-signing-crlf (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-19 at 76b86faafb)
 + gpg-interface: trim CR from ssh-keygen

 The code path that verifies signatures made with ssh were made to
 work better on a system with CRLF line endings.

 Will merge to 'master'.
 source: <20220107090735.580225-1-fs@gigacodes.de>


* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
  (merged to 'next' on 2022-01-10 at 329fd6e09a)
 + stable-qsort: avoid using potentially unaligned access
 + compat/qsort_s.c: avoid using potentially unaligned access

 Fix a hand-rolled alloca() imitation that may have violated
 alignment requirement of data being sorted in compatibility
 implementation of qsort_s() and stable qsort().

 Will merge to 'master'.
 source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
 source: <xmqqzgo76xpj.fsf@gitster.g>


* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
 - refs: skip hooks when deleting uncovered packed refs
 - refs: do not execute reference-transaction hook on packing refs
 - refs: demonstrate excessive execution of the reference-transaction hook
 - refs: allow skipping the reference-transaction hook
 - refs: allow passing flags when beginning transactions
 - refs: extract packed_refs_delete_refs() to allow control of transaction

 Because a deletion of ref would need to remove it from both the
 loose ref store and the packed ref store, a delete-ref operation
 that logically removes one ref may end up invoking ref-transaction
 hook twice, which has been corrected.

 Will merge to 'next'?
 source: <cover.1642406989.git.ps@pks.im>


* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
  (merged to 'next' on 2022-01-10 at 32497a67d5)
 + apply: use strsets to track symlinks

 "git apply" (ab)used the util pointer of the string-list to keep
 track of how each symbolic link needs to be handled, which has been
 simplified by using strset.

 Will merge to 'master'.
 source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>


* ld/sparse-index-bash-completion (2022-02-03) 3 commits
 . completion: handle unusual characters for sparse-checkout
 . completion: improve sparse-checkout cone mode directory completion
 . completion: address sparse-checkout issues

 The command line completion (in contrib/) learns to complete
 arguments give to "git sparse-checkout" command.

 Seems to break CI.
 source: <pull.1108.v5.git.1643921091.gitgitgadget@gmail.com>


* bc/clarify-eol-attr (2022-01-12) 2 commits
 - docs: correct documentation about eol attribute
 - t0027: add tests for eol without text in .gitattributes

 Doc and test update around the eol attribute.

 Will merge to 'next'.
 source: <20220111021507.531736-1-sandals@crustytoothpaste.net>


* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
 - git-rev-list: add --exclude-first-parent-only flag

 "git log" and friends learned an option --exclude-first-parent-only
 to propagate UNINTERESTING bit down only along the first-parent
 chain, just like --first-parent option shows commits that lack the
 UNINTERESTING bit only along the first-parent chain.

 Will merge to 'next'.
 source: <20220111213941.30129-1-jerry@skydio.com>


* en/present-despite-skipped (2022-01-14) 6 commits
 - Accelerate clear_skip_worktree_from_present_files() by caching
 - Update documentation related to sparsity and the skip-worktree bit
 - repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
 - unpack-trees: fix accidental loss of user changes
 - t1011: add testcase demonstrating accidental loss of user modifications
 - Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
 (this branch uses vd/sparse-clean-etc.)

 In sparse-checkouts, files mis-marked as missing from the working tree
 could lead to later problems.  Such files were hard to discover, and
 harder to correct.  Automatically detecting and correcting the marking
 of such files has been added to avoid these problems.

 Will merge to 'next'?
 source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>


* bc/csprng-mktemps (2022-01-17) 2 commits
 - wrapper: use a CSPRNG to generate random file names
 - wrapper: add a helper to generate numbers from a CSPRNG

 Pick a better random number generator and use it when we prepare
 temporary filenames.

 Will merge to 'next'?
 Are we solving the right problem?
 cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
 source: <20220117215617.843190-1-sandals@crustytoothpaste.net>


* jc/reflog-parse-options (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-12 at 1659e49c4b)
 + builtin/reflog.c: use parse-options api for expire, delete subcommands
 + Merge branch 'ab/reflog-prep' into jc/reflog-parse-options

 Use the parse-options API in "git reflog" command.

 Will merge to 'master'.
 source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>


* vd/sparse-clean-etc (2022-01-13) 9 commits
 - update-index: reduce scope of index expansion in do_reupdate
 - update-index: integrate with sparse index
 - update-index: add tests for sparse-checkout compatibility
 - checkout-index: integrate with sparse index
 - checkout-index: add --ignore-skip-worktree-bits option
 - checkout-index: expand sparse checkout compatibility tests
 - clean: integrate with sparse index
 - reset: reorder wildcard pathspec conditions
 - reset: fix validation in sparse index test
 (this branch is used by en/present-despite-skipped.)

 "git update-index", "git checkout-index", and "git clean" are
 taught to work better with the sparse checkout feature.

 Will merge to 'next'.
 source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>


* ms/update-index-racy (2022-01-07) 4 commits
  (merged to 'next' on 2022-01-14 at 705a33f63b)
 + update-index: refresh should rewrite index in case of racy timestamps
 + t7508: add tests capturing racy timestamp handling
 + t7508: fix bogus mtime verification
 + test-lib: introduce API for verifying file mtime

 "git update-index --refresh" has been taught to deal better with
 racy timestamps (just like "git status" already does).

 Will merge to 'master'.
 source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>


* jc/find-header (2022-01-06) 1 commit
  (merged to 'next' on 2022-01-10 at 8a13b4f0b3)
 + receive-pack.c: consolidate find header logic

 Code clean-up.

 Will merge to 'master'.
 source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>


* jc/name-rev-stdin (2022-01-10) 2 commits
  (merged to 'next' on 2022-01-19 at a58e05fabe)
 + name-rev.c: use strbuf_getline instead of limited size buffer
 + name-rev: deprecate --stdin in favor of --annotate-stdin

 "git name-rev --stdin" does not behave like usual "--stdin" at
 all.  Start the process of renaming it to "--annotate-stdin".

 Will merge to 'master'.
 source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>


* en/remerge-diff (2022-02-02) 11 commits
 - diff-merges: avoid history simplifications when diffing merges
 - merge-ort: mark conflict/warning messages from inner merges as omittable
 - show, log: include conflict/warning messages in --remerge-diff headers
 - diff: add ability to insert additional headers for paths
 - merge-ort: format messages slightly different for use in headers
 - merge-ort: mark a few more conflict messages as omittable
 - merge-ort: capture and print ll-merge warnings in our preferred fashion
 - ll-merge: make callers responsible for showing warnings
 - log: clean unneeded objects during `log --remerge-diff`
 - show, log: provide a --remerge-diff capability
 - Merge branch 'ns/tmp-objdir' into en/remerge-diff
 (this branch is used by en/merge-tree.)

 "git log --remerge-diff" shows the difference from mechanical merge
 result and the merge result that is actually recorded.

 Will merge to 'next'?
 source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>


* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
 - fixup! fetch-pack: parameterize message containing 'ready' keyword
 - fetch-pack: parameterize message containing 'ready' keyword

 L10n support for a few error messages.

 Expecting an ack for fixup.
 source: <20211222075805.19027-1-bagasdotme@gmail.com>


* gc/branch-recurse-submodules (2022-02-01) 7 commits
 - branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
 - branch: add --recurse-submodules option for branch creation
 - builtin/branch: consolidate action-picking logic in cmd_branch()
 - branch: add a dry_run parameter to create_branch()
 - branch: make create_branch() always create a branch
 - branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
 - Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules

 "git branch" learned the "--recurse-submodules" option.

 Will merge to 'next'.
 source: <20220129000446.99261-1-chooglen@google.com>


* hn/reftable-coverity-fixes (2022-01-20) 17 commits
 - reftable: add print functions to the record types
 - reftable: make reftable_record a tagged union
 - reftable: remove outdated file reftable.c
 - reftable: implement record equality generically
 - reftable: make reftable-record.h function signatures const correct
 - reftable: handle null refnames in reftable_ref_record_equal
 - reftable: drop stray printf in readwrite_test
 - reftable: order unittests by complexity
 - reftable: all xxx_free() functions accept NULL arguments
 - reftable: fix resource warning
 - reftable: ignore remove() return value in stack_test.c
 - reftable: check reftable_stack_auto_compact() return value
 - reftable: fix resource leak blocksource.c
 - reftable: fix resource leak in block.c error path
 - reftable: fix OOB stack write in print functions
 - Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
 - Merge branch 'hn/reftable' into hn/reftable-coverity-fixes

 Problems identified by Coverity in the reftable code have been
 corrected.

 Will merge to 'next'.
 source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>


* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
 - pack-bitmap.c: gracefully fallback after opening pack/MIDX
 - midx: read `RIDX` chunk when present
 - t/lib-bitmap.sh: parameterize tests over reverse index source
 - t5326: move tests to t/lib-bitmap.sh
 - t5326: extract `test_rev_exists`
 - t5326: drop unnecessary setup
 - pack-revindex.c: instrument loading on-disk reverse index
 - midx.c: make changing the preferred pack safe
 - t5326: demonstrate bitmap corruption after permutation

 A bug that made multi-pack bitmap and the object order out-of-sync
 (hence the .midx data gets corrupted) has been fixed.

 Will merge to 'next'.
 source: <cover.1643150456.git.me@ttaylorr.com>


* pw/fix-some-issues-in-reset-head (2022-01-26) 14 commits
 - rebase -m: don't fork git checkout
 - rebase --apply: set ORIG_HEAD correctly
 - rebase --apply: fix reflog
 - reset_head(): take struct rebase_head_opts
 - rebase: cleanup reset_head() calls
 - create_autostash(): remove unneeded parameter
 - reset_head(): make default_reflog_action optional
 - reset_head(): factor out ref updates
 - reset_head(): remove action parameter
 - rebase --apply: don't run post-checkout hook if there is an error
 - rebase: do not remove untracked files on checkout
 - rebase: pass correct arguments to post-checkout hook
 - t5403: refactor rebase post-checkout hook tests
 - rebase: factor out checkout for up to date branch

 Use an internal call to reset_head() helper function instead of
 spawning "git checkout" in "rebase", and update code paths that are
 involved in the change.

 Will merge to 'next'?
 May want to rename the topic branch to "pw/use-in-process-checkout-in-rebase"
 or something before doing so.
 source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>


* ab/cat-file (2022-01-12) 12 commits
  (merged to 'next' on 2022-01-12 at ee4d43041d)
 + cat-file: s/_/-/ in typo'd usage_msg_optf() message
 + cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
  (merged to 'next' on 2022-01-05 at e145efa605)
 + cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
 + object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
 + cat-file: correct and improve usage information
 + cat-file: fix remaining usage bugs
 + cat-file: make --batch-all-objects a CMDMODE
 + cat-file: move "usage" variable to cmd_cat_file()
 + cat-file docs: fix SYNOPSIS and "-h" output
 + parse-options API: add a usage_msg_optf()
 + cat-file tests: test messaging on bad objects/paths
 + cat-file tests: test bad usage

 Assorted updates to "git cat-file", especially "-h".

 Will merge to 'master'.
 source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
 source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>


* ab/grep-patterntype (2022-01-27) 10 commits
 - SQUASH???
 - grep: simplify config parsing and option parsing
 - grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
 - grep.h: make "grep_opt.pattern_type_option" use its enum
 - grep API: call grep_config() after grep_init()
 - grep.c: don't pass along NULL callback value
 - built-ins: trust the "prefix" from run_builtin()
 - grep tests: add missing "grep.patternType" config tests
 - log tests: check if grep_config() is called by "log"-like cmds
 - grep.h: remove unused "regex_t regexp" from grep_opt

 Some code clean-up in the "git grep" machinery.

 Looking good, except for the last step.
 Code-wise, it is tempted to call it a victory after squashing the
 fix-up in, but that does not fix the proposed log message, so...
 source: <cover-v9-0.9-00000000000-20220127T115058Z-avarab@gmail.com>


* js/use-builtin-add-i (2021-12-01) 2 commits
 - add -i: default to the built-in implementation
 - t2016: require the PERL prereq only when necessary

 "git add -i" was rewritten in C some time ago and has been in
 testing; the reimplementation is now exposed to general public by
 default.

 On hold.
 There are known breakages on macOS.
 cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
 source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>


* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
  (merged to 'next' on 2022-01-19 at 3c2df266eb)
 + config: include file if remote URL matches a glob
 + config: make git_config_include() static

 The conditional inclusion mechanism of configuration files using
 "[includeIf <condition>]" learns to base its decision on the
 URL of the remote repository the repository interacts with.

 Will merge to 'master'.
 source: <cover.1642527965.git.jonathantanmy@google.com>


* ab/ambiguous-object-name (2022-01-27) 7 commits
 - object-name: re-use "struct strbuf" in show_ambiguous_object()
 - object-name: iterate ambiguous objects before showing header
 - object-name: show date for ambiguous tag objects
 - object-name: make ambiguous object output translatable
 - object-name: explicitly handle bad tags in show_ambiguous_object()
 - object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
 - object-name tests: add tests for ambiguous object blind spots

 Error output given in response to an ambiguous object name has been
 improved.

 What's the doneness of this thing?
 source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>


* tl/ls-tree-oid-only (2022-01-13) 9 commits
 - ls-tree.c: introduce "--format" option
 - cocci: allow padding with `strbuf_addf()`
 - ls-tree.c: introduce struct "show_tree_data"
 - ls-tree.c: support --object-only option for "git-ls-tree"
 - ls-tree: optimize naming and handling of "return" in show_tree()
 - ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
 - ls-tree: use "enum object_type", not {blob,tree,commit}_type
 - ls-tree: add missing braces to "else" arms
 - ls-tree: remove commented-out code

 "git ls-tree" learns "--oid-only" option, similar to "--name-only",
 and more generalized "--format" option.

 Will merge to 'next'?
 source: <cover.1641978175.git.dyroneteng@gmail.com>


* ab/config-based-hooks-2 (2022-01-07) 17 commits
  (merged to 'next' on 2022-01-19 at 594b6da22c)
 + run-command: remove old run_hook_{le,ve}() hook API
 + receive-pack: convert push-to-checkout hook to hook.h
 + read-cache: convert post-index-change to use hook.h
 + commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
 + git-p4: use 'git hook' to run hooks
 + send-email: use 'git hook run' for 'sendemail-validate'
 + git hook run: add an --ignore-missing flag
 + hooks: convert worktree 'post-checkout' hook to hook library
 + hooks: convert non-worktree 'post-checkout' hook to hook library
 + merge: convert post-merge to use hook.h
 + am: convert applypatch-msg to use hook.h
 + rebase: convert pre-rebase to use hook.h
 + hook API: add a run_hooks_l() wrapper
 + am: convert {pre,post}-applypatch to use hook.h
 + gc: use hook library for pre-auto-gc hook
 + hook API: add a run_hooks() wrapper
 + hook: add 'run' subcommand

 More "config-based hooks".

 Will merge to 'master'.
 source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>


* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
 - fixup! t7527: create test for fsmonitor--daemon
 - fixup! t/perf/p7519: speed up test on Windows
 - t7527: test status with untracked-cache and fsmonitor--daemon
 - fsmonitor: force update index after large responses
 - fsmonitor--daemon: use a cookie file to sync with file system
 - fsmonitor--daemon: periodically truncate list of modified files
 - t/perf/p7519: add fsmonitor--daemon test cases
 - t/perf/p7519: speed up test on Windows
 - t/helper/test-chmtime: skip directories on Windows
 - t/perf: avoid copying builtin fsmonitor files into test repo
 - t7527: create test for fsmonitor--daemon
 - t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
 - help: include fsmonitor--daemon feature flag in version info
 - fsmonitor--daemon: implement handle_client callback
 - compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 - compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
 - compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 - fsmonitor--daemon: create token-based changed path cache
 - fsmonitor--daemon: define token-ids
 - fsmonitor--daemon: add pathname classification
 - fsmonitor--daemon: implement 'start' command
 - fsmonitor--daemon: implement 'run' command
 - compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 - compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 - fsmonitor--daemon: implement 'stop' and 'status' commands
 - fsmonitor--daemon: add a built-in fsmonitor daemon
 - fsmonitor: document builtin fsmonitor
 - fsmonitor: use IPC to query the builtin FSMonitor daemon
 - fsmonitor: config settings are repository-specific
 - fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 - fsmonitor: enhance existing comments

 Built-in fsmonitor (part 2).

 Expecting a reroll.
 Seems that the discussion stalled.
 cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
 source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>


* es/superproject-aware-submodules (2021-11-18) 5 commits
 - submodule: use config to find superproject worktree
 - submodule: record superproject gitdir during 'update'
 - submodule: record superproject gitdir during absorbgitdirs
 - introduce submodule.superprojectGitDir record
 - t7400-submodule-basic: modernize inspect() helper

 A configuration variable in a submodule points at the location of
 the superproject it is bound to (RFC).

 Expecting a reroll.
 cf. <20211117234300.2598132-1-jonathantanmy@google.com>
 source: <20211117005701.371808-1-emilyshaffer@google.com>


* ab/only-single-progress-at-once (2022-01-07) 7 commits
 - *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
 - pack-bitmap-write.c: don't return without stop_progress()
 - progress.c: add temporary variable from progress struct
 - progress.c tests: test some invalid usage
 - progress.c tests: make start/stop commands on stdin
 - progress.c test helper: add missing braces
 - leak tests: fix a memory leak in "test-progress" helper

 Further tweaks on progress API.

 Getting there.
 source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>

^ permalink raw reply	[relevance 3%]

* What's in git.git (stable)
  @ 2007-04-22  6:22  3%   ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2007-04-22  6:22 UTC (permalink / raw)
  To: git

The latest maintenance release v1.5.1.2 is out.

Tonight's 'master' contains 64-bit index, core subproject
support, and gitattributes (but not the controversial "filter"
part).  As I promised I'd do something about attributes some
time ago (I think it was during v1.5.1 stabilization period), I
am reasonably happy with the state of 'master' right now.  The
other two major topics are also nice, unexpected bonus toward
v1.5.2 from my point of view.

Please expect stabilization cycle for v1.5.2 to start soon.

----------------------------------------------------------------

* The 'maint' branch has these fixes since the last
  announcement; these are all contained in v1.5.1.2, the latest
  maintenance release.

 Andrew Ruder (4):
  Update git-archive documentation
  Update git-cherry-pick documentation
  Fix unmatched emphasis tag in git-tutorial
  Update git-config documentation

 Andy Whitcroft (1):
  fix up strtoul_ui error handling

 Eric Wong (1):
  perl: install private Error.pm if the site version is older than our own

 Junio C Hamano (2):
  git-clone: fix dumb protocol transport to clone from pack-pruned ref
  GIT 1.5.1.2

 Sam Vilain (1):
  git-tar-tree: complete deprecation conversion message


* The 'master' branch has these since the last announcement
  in addition to the above.

 Alex Riesen (2):
  Tests for core subproject support
  Simplify calling of CR/LF conversion routines

 Alexandre Julliard (1):
  git.el: Add a commit description to the reflog.

 Aneesh Kumar K.V (1):
  gitview: annotation support

 Brian Gernhardt (1):
  Remove case-sensitive file in t3030-merge-recursive.

 James Bowes (1):
  Document git-check-attr

 Julian Phillips (1):
  refs.c: add a function to sort a ref list, rather then sorting on add

 Junio C Hamano (30):
  git-fetch--tool pick-rref
  git-fetch: use fetch--tool pick-rref to avoid local fetch from alternate
  Add basic infrastructure to assign attributes to paths
  Define 'crlf' attribute.
  Teach 'diff' about 'diff' attribute.
  Fix 'crlf' attribute semantics.
  Fix 'diff' attribute semantics.
  Makefile: add patch-ids.h back in.
  attribute macro support
  Define a built-in attribute macro "binary".
  Change attribute negation marker from '!' to '-'.
  Make sure quickfetch is not fooled with a previous, incomplete fetch.
  Allow more than true/false to attributes.
  merge-recursive: separate out xdl_merge() interface.
  Allow specifying specialized merge-backend per path.
  Add a demonstration/test of customized merge.
  Custom low-level merge driver support.
  Allow the default low-level merge driver to be configured.
  Custom low-level merge driver: change the configuration scheme.
  Allow low-level driver to specify different behaviour during internal merge.
  Fix funny types used in attribute value representation
  Counto-fix in merge-recursive
  Simplify code to find recursive merge driver.
  Documentation: support manual section (5) - file formats.
  Update 'crlf' attribute semantics.
  Document gitattributes(5)
  git-add -u: match the index with working tree.
  Fix bogus linked-list management for user defined merge drivers.
  convert.c: restructure the attribute checking part.
  lockfile: record the primary process.

 Linus Torvalds (21):
  diff-lib: use ce_mode_from_stat() rather than messing with modes manually
  Avoid overflowing name buffer in deep directory structures
  Add 'resolve_gitlink_ref()' helper function
  Add "S_IFDIRLNK" file mode infrastructure for git links
  Teach "fsck" not to follow subproject links
  Teach core object handling functions about gitlinks
  Fix thinko in subproject entry sorting
  Teach directory traversal about subprojects
  Teach git-update-index about gitlinks
  Don't show gitlink directories when we want "other" files
  Teach git list-objects logic not to follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix gitlink index entry filesystem matching
  Teach git list-objects logic to not follow gitlinks
  Teach "git-read-tree -u" to check out submodules as a directory
  Fix some "git ls-files -o" fallout from gitlinks
  Expose subprojects as special files to "git diff" machinery
  Use proper object allocators for unknown object nodes too
  Clean up object creation to use more common code
  Fix working directory errno handling when unlinking a directory
  Fix a copy-n-paste bug in the object decorator code.

 Nicolas Pitre (27):
  get rid of num_packed_objects()
  make overflow test on delta base offset work regardless of variable size
  add overflow tests on pack offset variables
  compute a CRC32 for each object as stored in a pack
  compute object CRC32 with index-pack
  pack-objects: learn about pack index version 2
  index-pack: learn about pack index version 2
  sha1_file.c: learn about index version 2
  show-index.c: learn about index v2
  pack-redundant.c: learn about index v2
  allow forcing index v2 and 64-bit offset treshold
  validate reused pack data with CRC when possible
  simple random data generator for tests
  use test-genrandom in tests instead of /dev/urandom
  tests for various pack index features
  clean up add_object_entry()
  pack-objects: optimize preferred base handling a bit
  pack-objects: equal objects in size should delta against newer objects
  pack-objects: rework check_delta_limit usage
  pack-objects: clean up list sorting
  pack-objects: get rid of reuse_cached_pack
  pack-objects: get rid of create_final_object_list()
  pack-objects: make in_pack_header_size a variable of its own
  add get_size_from_delta()
  pack-objects: better check_object() performances
  pack-objects: remove obsolete comments
  document --index-version for index-pack and pack-objects

 Shawn O. Pearce (2):
  Contribute a fairly paranoid update hook
  Kill the useless progress meter in merge-recursive

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.19.0-rc0
@ 2018-08-20 22:13  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-08-20 22:13 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.19.0-rc0 is now available for
testing at the usual places.  It is comprised of 707 non-merge
commits since v2.18.0, contributed by 60 people, 14 of which are
new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.19.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.18.0 are as follows.
Welcome to the Git development community!

  Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
  Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
  Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Sebastian Kisela,
  Vladimir Parfinenko, and William Chargin.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
  R. Sedeño, Anthony Sottile, Antonio Ospite, Beat Bolli, Ben
  Peart, Brandon Williams, brian m. carlson, Christian Couder,
  Derrick Stolee, Elijah Newren, Eric Sunshine, Han-Wen Nienhuys,
  Jameson Miller, Jeff Hostetler, Jeff King, Johannes Schindelin,
  Johannes Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
  Kim Gybels, Kirill Smelkov, Luis Marsano, Łukasz Stelmach,
  Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
  Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya,
  Phillip Wood, Prathamesh Chavan, Ramsay Jones, René Scharfe,
  Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas Rast, Tobias
  Klauser, Todd Zullinger, Ville Skyttä, and Xiaolong Ye.

----------------------------------------------------------------

Git 2.19 Release Notes (draft)
==============================

Updates since v2.18
-------------------

UI, Workflows & Features

 * "git diff" compares the index and the working tree.  For paths
   added with intent-to-add bit, the command shows the full contents
   of them as added, but the paths themselves were not marked as new
   files.  They are now shown as new by default.

   "git apply" learned the "--intent-to-add" option so that an
   otherwise working-tree-only application of a patch will add new
   paths to the index marked with the "intent-to-add" bit.

 * "git grep" learned the "--column" option that gives not just the
   line number but the column number of the hit.

 * The "-l" option in "git branch -l" is an unfortunate short-hand for
   "--create-reflog", but many users, both old and new, somehow expect
   it to be something else, perhaps "--list".  This step warns when "-l"
   is used as a short-hand for "--create-reflog" and warns about the
   future repurposing of the it when it is used.

 * The userdiff pattern for .php has been updated.

 * The content-transfer-encoding of the message "git send-email" sends
   out by default was 8bit, which can cause trouble when there is an
   overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
   automatically switch to quoted-printable when there is such a line
   in the payload has been introduced and is made the default.

 * "git checkout" and "git worktree add" learned to honor
   checkout.defaultRemote when auto-vivifying a local branch out of a
   remote tracking branch in a repository with multiple remotes that
   have tracking branches that share the same names.
   (merge 8d7b558bae ab/checkout-default-remote later to maint).

 * "git grep" learned the "--only-matching" option.

 * "git rebase --rebase-merges" mode now handles octopus merges as
   well.

 * Add a server-side knob to skip commits in exponential/fibbonacci
   stride in an attempt to cover wider swath of history with a smaller
   number of iterations, potentially accepting a larger packfile
   transfer, instead of going back one commit a time during common
   ancestor discovery during the "git fetch" transaction.
   (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).

 * A new configuration variable core.usereplacerefs has been added,
   primarily to help server installations that want to ignore the
   replace mechanism altogether.

 * Teach "git tag -s" etc. a few configuration variables (gpg.format
   that can be set to "openpgp" or "x509", and gpg.<format>.program
   that is used to specify what program to use to deal with the format)
   to allow x.509 certs with CMS via "gpgsm" to be used instead of
   openpgp via "gnupg".

 * Many more strings are prepared for l10n.

 * "git p4 submit" learns to ask its own pre-submit hook if it should
   continue with submitting.

 * The test performed at the receiving end of "git push" to prevent
   bad objects from entering repository can be customized via
   receive.fsck.* configuration variables; we now have gained a
   counterpart to do the same on the "git fetch" side, with
   fetch.fsck.* configuration variables.

 * "git pull --rebase=interactive" learned "i" as a short-hand for
   "interactive".

 * "git instaweb" has been adjusted to run better with newer Apache on
   RedHat based distros.

 * "git range-diff" is a reimplementation of "git tbdiff" that lets us
   compare individual patches in two iterations of a topic.

 * The sideband code learned to optionally paint selected keywords at
   the beginning of incoming lines on the receiving end.


Performance, Internal Implementation, Development Support etc.

 * The bulk of "git submodule foreach" has been rewritten in C.

 * The in-core "commit" object had an all-purpose "void *util" field,
   which was tricky to use especially in library-ish part of the
   code.  All of the existing uses of the field has been migrated to a
   more dedicated "commit-slab" mechanism and the field is eliminated.

 * A less often used command "git show-index" has been modernized.
   (merge fb3010c31f jk/show-index later to maint).

 * The conversion to pass "the_repository" and then "a_repository"
   throughout the object access API continues.

 * Continuing with the idea to programatically enumerate various
   pieces of data required for command line completion, teach the
   codebase to report the list of configuration variables
   subcommands care about to help complete them.

 * Separate "rebase -p" codepath out of "rebase -i" implementation to
   slim down the latter and make it easier to manage.

 * Make refspec parsing codepath more robust.

 * Some flaky tests have been fixed.

 * Continuing with the idea to programmatically enumerate various
   pieces of data required for command line completion, the codebase
   has been taught to enumerate options prefixed with "--no-" to
   negate them.

 * Build and test procedure for netrc credential helper (in contrib/)
   has been updated.

 * The conversion to pass "the_repository" and then "a_repository"
   throughout the object access API continues.

 * Remove unused function definitions and declarations from ewah
   bitmap subsystem.

 * Code preparation to make "git p4" closer to be usable with Python 3.

 * Tighten the API to make it harder to misuse in-tree .gitmodules
   file, even though it shares the same syntax with configuration
   files, to read random configuration items from it.

 * "git fast-import" has been updated to avoid attempting to create
   delta against a zero-byte-long string, which is pointless.

 * The codebase has been updated to compile cleanly with -pedantic
   option.
   (merge 2b647a05d7 bb/pedantic later to maint).

 * The character display width table has been updated to match the
   latest Unicode standard.
   (merge 570951eea2 bb/unicode-11-width later to maint).

 * test-lint now looks for broken use of "VAR=VAL shell_func" in test
   scripts.

 * Conversion from uchar[40] to struct object_id continues.

 * Recent "security fix" to pay attention to contents of ".gitmodules"
   while accepting "git push" was a bit overly strict than necessary,
   which has been adjusted.

 * "git fsck" learns to make sure the optional commit-graph file is in
   a sane state.

 * "git diff --color-moved" feature has further been tweaked.

 * Code restructuring and a small fix to transport protocol v2 during
   fetching.

 * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
   take has been tweaked.

 * lookup_commit_reference() and friends have been updated to find
   in-core object for a specific in-core repository instance.

 * Various glitches in the heuristics of merge-recursive strategy have
   been documented in new tests.

 * "git fetch" learned a new option "--negotiation-tip" to limit the
   set of commits it tells the other end as "have", to reduce wasted
   bandwidth and cycles, which would be helpful when the receiving
   repository has a lot of refs that have little to do with the
   history at the remote it is fetching from.

 * For a large tree, the index needs to hold many cache entries
   allocated on heap.  These cache entries are now allocated out of a
   dedicated memory pool to amortize malloc(3) overhead.

 * Tests to cover various conflicting cases have been added for
   merge-recursive.

 * Tests to cover conflict cases that involve submodules have been
   added for merge-recursive.

 * Look for broken "&&" chains that are hidden in subshell, many of
   which have been found and corrected.

 * The singleton commit-graph in-core instance is made per in-core
   repository instance.

 * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
   with -pedantic option, which may catch more problematic program
   constructs and potential bugs.

 * Preparatory code to later add json output for telemetry data has
   been added.

 * Update the way we use Coccinelle to find out-of-style code that
   need to be modernised.

 * It is too easy to misuse system API functions such as strcat();
   these selected functions are now forbidden in this codebase and
   will cause a compilation failure.

 * Add a script (in contrib/) to help users of VSCode work better with
   our codebase.

 * The Travis CI scripts were taught to ship back the test data from
   failed tests.
   (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).

 * The parse-options machinery learned to refrain from enclosing
   placeholder string inside a "<bra" and "ket>" pair automatically
   without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
   arguments that are not formatted correctly have been identified and
   fixed.
   (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).

 * Noiseword "extern" has been removed from function decls in the
   header files.

 * A few atoms like %(objecttype) and %(objectsize) in the format
   specifier of "for-each-ref --format=<format>" can be filled without
   getting the full contents of the object, but just with the object
   header.  These cases have been optimized by calling
   oid_object_info() API (instead of reading and inspecting the data).

 * The end result of documentation update has been made to be
   inspected more easily to help developers.

 * The API to iterate over all objects learned to optionally list
   objects in the order they appear in packfiles, which helps locality
   of access if the caller accesses these objects while as objects are
   enumerated.

 * Improve built-in facility to catch broken &&-chain in the tests.

 * The more library-ish parts of the codebase learned to work on the
   in-core index-state instance that is passed in by their callers,
   instead of always working on the singleton "the_index" instance.

 * A test prerequisite defined by various test scripts with slightly
   different semantics has been consolidated into a single copy and
   made into a lazily defined one.
   (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).

 * After a partial clone, repeated fetches from promisor remote would
   have accumulated many packfiles marked with .promisor bit without
   getting them coalesced into fewer packfiles, hurting performance.
   "git repack" now learned to repack them.


Fixes since v2.18
-----------------

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, and the completion script (in contrib/)
   has been taught about it.
   (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).

 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
   point that is newer than the existing history used to end up
   grabbing the entire history.  Such a request now errors out.
   (merge e34de73c56 nd/reject-empty-shallow-request later to maint).

 * Fix for 2.17-era regression around `core.safecrlf`.
   (merge 6cb09125be as/safecrlf-quiet-fix later to maint).

 * The recent addition of "partial clone" experimental feature kicked
   in when it shouldn't, namely, when there is no partial-clone filter
   defined even if extensions.partialclone is set.
   (merge cac1137dc4 jh/partial-clone later to maint).

 * "git send-pack --signed" (hence "git push --signed" over the http
   transport) did not read user ident from the config mechanism to
   determine whom to sign the push certificate as, which has been
   corrected.
   (merge d067d98887 ms/send-pack-honor-config later to maint).

 * "git fetch-pack --all" used to unnecessarily fail upon seeing an
   annotated tag that points at an object other than a commit.
   (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).

 * When user edits the patch in "git add -p" and the user's editor is
   set to strip trailing whitespaces indiscriminately, an empty line
   that is unchanged in the patch would become completely empty
   (instead of a line with a sole SP on it).  The code introduced in
   Git 2.17 timeframe failed to parse such a patch, but now it learned
   to notice the situation and cope with it.
   (merge f4d35a6b49 pw/add-p-recount later to maint).

 * The code to try seeing if a fetch is necessary in a submodule
   during a fetch with --recurse-submodules got confused when the path
   to the submodule was changed in the range of commits in the
   superproject, sometimes showing "(null)".  This has been corrected.

 * "git submodule" did not correctly adjust core.worktree setting that
   indicates whether/where a submodule repository has its associated
   working tree across various state transitions, which has been
   corrected.
   (merge 984cd77ddb sb/submodule-core-worktree later to maint).

 * Bugfix for "rebase -i" corner case regression.
   (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).

 * Recently added "--base" option to "git format-patch" command did
   not correctly generate prereq patch ids.
   (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).

 * POSIX portability fix in Makefile to fix a glitch introduced a few
   releases ago.
   (merge 6600054e9b dj/runtime-prefix later to maint).

 * "git filter-branch" when used with the "--state-branch" option
   still attempted to rewrite the commits whose filtered result is
   known from the previous attempt (which is recorded on the state
   branch); the command has been corrected not to waste cycles doing
   so.
   (merge 709cfe848a mb/filter-branch-optim later to maint).

 * Clarify that setting core.ignoreCase to deviate from reality would
   not turn a case-incapable filesystem into a case-capable one.
   (merge 48294b512a ms/core-icase-doc later to maint).

 * "fsck.skipList" did not prevent a blob object listed there from
   being inspected for is contents (e.g. we recently started to
   inspect the contents of ".gitmodules" for certain malicious
   patterns), which has been corrected.
   (merge fb16287719 rj/submodule-fsck-skip later to maint).

 * "git checkout --recurse-submodules another-branch" did not report
   in which submodule it failed to update the working tree, which
   resulted in an unhelpful error message.
   (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).

 * "git rebase" behaved slightly differently depending on which one of
   the three backends gets used; this has been documented and an
   effort to make them more uniform has begun.
   (merge b00bf1c9a8 en/rebase-consistency later to maint).

 * The "--ignore-case" option of "git for-each-ref" (and its friends)
   did not work correctly, which has been fixed.
   (merge e674eb2528 jk/for-each-ref-icase later to maint).

 * "git fetch" failed to correctly validate the set of objects it
   received when making a shallow history deeper, which has been
   corrected.
   (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).

 * Partial clone support of "git clone" has been updated to correctly
   validate the objects it receives from the other side.  The server
   side has been corrected to send objects that are directly
   requested, even if they may match the filtering criteria (e.g. when
   doing a "lazy blob" partial clone).
   (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).

 * Handling of an empty range by "git cherry-pick" was inconsistent
   depending on how the range ended up to be empty, which has been
   corrected.
   (merge c5e358d073 jk/empty-pick-fix later to maint).

 * "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
   had trouble working correctly in a sparsely checked out working
   tree after a conflict, which has been corrected.
   (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).

 * Correct a broken use of "VAR=VAL shell_func" in a test.
   (merge 650161a277 jc/t3404-one-shot-export-fix later to maint).

 * "git rev-parse ':/substring'" did not consider the history leading
   only to HEAD when looking for a commit with the given substring,
   when the HEAD is detached.  This has been fixed.
   (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).

 * Build doc update for Windows.
   (merge ede8d89bb1 nd/command-list later to maint).

 * core.commentchar is now honored when preparing the list of commits
   to replay in "rebase -i".

 * "git pull --rebase" on a corrupt HEAD caused a segfault.  In
   general we substitute an empty tree object when running the in-core
   equivalent of the diff-index command, and the codepath has been
   corrected to do so as well to fix this issue.
   (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).

 * httpd tests saw occasional breakage due to the way its access log
   gets inspected by the tests, which has been updated to make them
   less flaky.
   (merge e8b3b2e275 sg/httpd-test-unflake later to maint).

 * Tests to cover more D/F conflict cases have been added for
   merge-recursive.

 * "git gc --auto" opens file descriptors for the packfiles before
   spawning "git repack/prune", which would upset Windows that does
   not want a process to work on a file that is open by another
   process.  The issue has been worked around.
   (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).

 * The recursive merge strategy did not properly ensure there was no
   change between HEAD and the index before performing its operation,
   which has been corrected.
   (merge 55f39cf755 en/dirty-merge-fixes later to maint).

 * "git rebase" started exporting GIT_DIR environment variable and
   exposing it to hook scripts when part of it got rewritten in C.
   Instead of matching the old scripted Porcelains' behaviour,
   compensate by also exporting GIT_WORK_TREE environment as well to
   lessen the damage.  This can harm existing hooks that want to
   operate on different repository, but the current behaviour is
   already broken for them anyway.
   (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).

 * "git send-email" when using in a batched mode that limits the
   number of messages sent in a single SMTP session lost the contents
   of the variable used to choose between tls/ssl, unable to send the
   second and later batches, which has been fixed.
   (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).

 * The lazy clone support had a few places where missing but promised
   objects were not correctly tolerated, which have been fixed.

 * One of the "diff --color-moved" mode "dimmed_zebra" that was named
   in an unusual way has been deprecated and replaced by
   "dimmed-zebra".
   (merge e3f2f5f9cd es/diff-color-moved-fix later to maint).

 * The wire-protocol v2 relies on the client to send "ref prefixes" to
   limit the bandwidth spent on the initial ref advertisement.  "git
   clone" when learned to speak v2 forgot to do so, which has been
   corrected.
   (merge 402c47d939 bw/clone-ref-prefixes later to maint).

 * "git diff --histogram" had a bad memory usage pattern, which has
   been rearranged to reduce the peak usage.
   (merge 79cb2ebb92 sb/histogram-less-memory later to maint).

 * Code clean-up to use size_t/ssize_t when they are the right type.
   (merge 7726d360b5 jk/size-t later to maint).

 * The wire-protocol v2 relies on the client to send "ref prefixes" to
   limit the bandwidth spent on the initial ref advertisement.  "git
   fetch $remote branch:branch" that asks tags that point into the
   history leading to the "branch" automatically followed sent to
   narrow prefix and broke the tag following, which has been fixed.
   (merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).

 * When the sparse checkout feature is in use, "git cherry-pick" and
   other mergy operations lost the skip_worktree bit when a path that
   is excluded from checkout requires content level merge, which is
   resolved as the same as the HEAD version, without materializing the
   merge result in the working tree, which made the path appear as
   deleted.  This has been corrected by preserving the skip_worktree
   bit (and not materializing the file in the working tree).
   (merge 2b75fb601c en/merge-recursive-skip-fix later to maint).

 * The "author-script" file "git rebase -i" creates got broken when
   we started to move the command away from shell script, which is
   getting fixed now.
   (merge 5522bbac20 es/rebase-i-author-script-fix later to maint).

 * The automatic tree-matching in "git merge -s subtree" was broken 5
   years ago and nobody has noticed since then, which is now fixed.
   (merge 2ec4150713 jk/merge-subtree-heuristics later to maint).

 * "git fetch $there refs/heads/s" ought to fetch the tip of the
   branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
   name is "refs/heads/s" exists at the same time, fetched that one
   instead by mistake.  This has been corrected to honor the usual
   disambiguation rules for abbreviated refnames.
   (merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).

 * Futureproofing a helper function that can easily be misused.
   (merge 65bb21e77e es/want-color-fd-defensive later to maint).

 * The http-backend (used for smart-http transport) used to slurp the
   whole input until EOF, without paying attention to CONTENT_LENGTH
   that is supplied in the environment and instead expecting the Web
   server to close the input stream.  This has been fixed.
   (merge eebfe40962 mk/http-backend-content-length later to maint).

 * "git merge --abort" etc. did not clean things up properly when
   there were conflicted entries in the index in certain order that
   are involved in D/F conflicts.  This has been corrected.
   (merge ad3762042a en/abort-df-conflict-fixes later to maint).

 * "git diff --indent-heuristic" had a bad corner case performance.
   (merge 301ef85401 sb/indent-heuristic-optim later to maint).

 * The "--exec" option to "git rebase --rebase-merges" placed the exec
   commands at wrong places, which has been corrected.

 * "git verify-tag" and "git verify-commit" have been taught to use
   the exit status of underlying "gpg --verify" to signal bad or
   untrusted signature they found.
   (merge 4e5dc9ca17 jc/gpg-status later to maint).

 * "git mergetool" stopped and gave an extra prompt to continue after
   the last path has been handled, which did not make much sense.
   (merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).

 * Among the three codepaths we use O_APPEND to open a file for
   appending, one used for writing GIT_TRACE output requires O_APPEND
   implementation that behaves sensibly when multiple processes are
   writing to the same file.  POSIX emulation used in the Windows port
   has been updated to improve in this area.
   (merge d641097589 js/mingw-o-append later to maint).

 * "git pull --rebase -v" in a repository with a submodule barfed as
   an intermediate process did not understand what "-v(erbose)" flag
   meant, which has been fixed.
   (merge e84c3cf3dc sb/pull-rebase-submodule later to maint).

 * Recent update to "git config" broke updating variable in a
   subsection, which has been corrected.
   (merge bff7df7a87 sb/config-write-fix later to maint).

 * When "git rebase -i" is told to squash two or more commits into
   one, it labeled the log message for each commit with its number.
   It correctly called the first one "1st commit", but the next one
   was "commit #1", which was off-by-one.  This has been corrected.
   (merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).

 * "git rebase -i", when a 'merge <branch>' insn in its todo list
   fails, segfaulted, which has been (minimally) corrected.
   (merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).

 * "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
   though we won't be in a cherry-pick session after it returns, which
   has been corrected.
   (merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).

 * Code cleanup, docfix, build fix, etc.
   (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
   (merge 037714252f jc/clean-after-sanity-tests later to maint).
   (merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
   (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
   (merge bb4d000e87 bw/protocol-v2 later to maint).
   (merge 928f0ab4ba vs/typofixes later to maint).
   (merge d7f590be84 en/rebase-i-microfixes later to maint).
   (merge 81d395cc85 js/rebase-recreate-merge later to maint).
   (merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
   (merge a9aa3c0927 ds/commit-graph later to maint).
   (merge 5cf8e06474 js/enhanced-version-info later to maint).
   (merge 6aaded5509 tb/config-default later to maint).
   (merge 022d2ac1f3 sb/blame-color later to maint).
   (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
   (merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
   (merge 1e83b9bfdd sb/trailers-docfix later to maint).
   (merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
   (merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
   (merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
   (merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
   (merge fe583c6c7a rs/remote-mv-leakfix later to maint).
   (merge 69885ab015 en/t3031-title-fix later to maint).
   (merge 8578037bed nd/config-blame-sort later to maint).
   (merge 8ad169c4ba hn/config-in-code-comment later to maint).
   (merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
   (merge a8132410ee js/typofixes later to maint).
   (merge 388d0ff6e5 en/update-index-doc later to maint).
   (merge e05aa688dd jc/update-index-doc later to maint).
   (merge 10c600172c sg/t5310-empty-input-fix later to maint).
   (merge 5641eb9465 jh/partial-clone-doc later to maint).
   (merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).

----------------------------------------------------------------

Changes since v2.18.0 are as follows:

Aaron Schrab (1):
      sequencer: use configured comment character

Alban Gruin (4):
      rebase: introduce a dedicated backend for --preserve-merges
      rebase: strip unused code in git-rebase--preserve-merges.sh
      rebase: use the new git-rebase--preserve-merges.sh
      rebase: remove -p code from git-rebase--interactive.sh

Alejandro R. Sedeño (1):
      Makefile: tweak sed invocation

Aleksandr Makarov (1):
      for-each-ref: consistently pass WM_IGNORECASE flag

Andrei Rybak (2):
      Documentation: fix --color option formatting
      t4150: fix broken test for am --scissors

Anthony Sottile (1):
      config.c: fix regression for core.safecrlf false

Antonio Ospite (6):
      config: move config_from_gitmodules to submodule-config.c
      submodule-config: add helper function to get 'fetch' config from .gitmodules
      submodule-config: add helper to get 'update-clone' config from .gitmodules
      submodule-config: make 'config_from_gitmodules' private
      submodule-config: pass repository as argument to config_from_gitmodules
      submodule-config: reuse config_from_gitmodules in repo_read_gitmodules

Beat Bolli (10):
      builtin/config: work around an unsized array forward declaration
      unicode: update the width tables to Unicode 11
      connect.h: avoid forward declaration of an enum
      refs/refs-internal.h: avoid forward declaration of an enum
      convert.c: replace "\e" escapes with "\033".
      sequencer.c: avoid empty statements at top level
      string-list.c: avoid conversion from void * to function pointer
      utf8.c: avoid char overflow
      Makefile: add a DEVOPTS flag to get pedantic compilation
      packfile: ensure that enum object_type is defined

Ben Peart (3):
      convert log_ref_write_fd() to use strbuf
      handle lower case drive letters on Windows
      t3507: add a testcase showing failure with sparse checkout

Brandon Williams (15):
      commit: convert commit_graft_pos() to handle arbitrary repositories
      commit: convert register_commit_graft to handle arbitrary repositories
      commit: convert read_graft_file to handle arbitrary repositories
      test-pkt-line: add unpack-sideband subcommand
      docs: link to gitsubmodules
      upload-pack: implement ref-in-want
      upload-pack: test negotiation with changing repository
      fetch: refactor the population of peer ref OIDs
      fetch: refactor fetch_refs into two functions
      fetch: refactor to make function args narrower
      fetch-pack: put shallow info in output parameter
      fetch-pack: implement ref-in-want
      clone: send ref-prefixes when using protocol v2
      fetch-pack: mark die strings for translation
      pack-protocol: mention and point to docs for protocol v2

Chen Bin (1):
      git-p4: add the `p4-pre-submit` hook

Christian Couder (1):
      t9104: kosherly remove remote refs

Derrick Stolee (43):
      ref-filter: fix outdated comment on in_commit_list
      commit: add generation number to struct commit
      commit-graph: compute generation numbers
      commit: use generations in paint_down_to_common()
      commit-graph: always load commit-graph information
      ref-filter: use generation number for --contains
      commit: use generation numbers for in_merge_bases()
      commit: add short-circuit to paint_down_to_common()
      commit: use generation number in remove_redundant()
      merge: check config before loading commits
      commit-graph.txt: update design document
      commit-graph: fix UX issue when .lock file exists
      ewah/bitmap.c: delete unused 'bitmap_clear()'
      ewah/bitmap.c: delete unused 'bitmap_each_bit()'
      ewah_bitmap: delete unused 'ewah_and()'
      ewah_bitmap: delete unused 'ewah_and_not()'
      ewah_bitmap: delete unused 'ewah_not()'
      ewah_bitmap: delete unused 'ewah_or()'
      ewah_io: delete unused 'ewah_serialize()'
      t5318-commit-graph.sh: use core.commitGraph
      commit-graph: UNLEAK before die()
      commit-graph: fix GRAPH_MIN_SIZE
      commit-graph: parse commit from chosen graph
      commit: force commit to parse from object database
      commit-graph: load a root tree from specific graph
      commit-graph: add 'verify' subcommand
      commit-graph: verify catches corrupt signature
      commit-graph: verify required chunks are present
      commit-graph: verify corrupt OID fanout and lookup
      commit-graph: verify objects exist
      commit-graph: verify root tree OIDs
      commit-graph: verify parent list
      commit-graph: verify generation number
      commit-graph: verify commit date
      commit-graph: test for corrupted octopus edge
      commit-graph: verify contents match checksum
      fsck: verify commit-graph
      commit-graph: use string-list API for input
      commit-graph: add '--reachable' option
      gc: automatically write commit-graph files
      commit-graph: update design document
      commit-graph: fix documentation inconsistencies
      coccinelle: update commit.cocci

Elijah Newren (63):
      t6036, t6042: use test_create_repo to keep tests independent
      t6036, t6042: use test_line_count instead of wc -l
      t6036, t6042: prefer test_path_is_file, test_path_is_missing
      t6036, t6042: prefer test_cmp to sequences of test
      t6036: prefer test_when_finished to manual cleanup in following test
      merge-recursive: fix miscellaneous grammar error in comment
      merge-recursive: fix numerous argument alignment issues
      merge-recursive: align labels with their respective code blocks
      merge-recursive: clarify the rename_dir/RENAME_DIR meaning
      merge-recursive: rename conflict_rename_*() family of functions
      merge-recursive: add pointer about unduly complex looking code
      git-rebase.txt: document incompatible options
      git-rebase.sh: update help messages a bit
      t3422: new testcases for checking when incompatible options passed
      git-rebase: error out when incompatible options passed
      git-rebase.txt: address confusion between --no-ff vs --force-rebase
      directory-rename-detection.txt: technical docs on abilities and limitations
      git-rebase.txt: document behavioral differences between modes
      t3401: add directory rename testcases for rebase and am
      git-rebase: make --allow-empty-message the default
      t3418: add testcase showing problems with rebase -i and strategy options
      Fix use of strategy options with interactive rebases
      git-rebase--merge: modernize "git-$cmd" to "git $cmd"
      apply: fix grammar error in comment
      t5407: fix test to cover intended arguments
      read-cache.c: move index_has_changes() from merge.c
      index_has_changes(): avoid assuming operating on the_index
      t6044: verify that merges expected to abort actually abort
      t6036: add a failed conflict detection case with symlink modify/modify
      t6036: add a failed conflict detection case with symlink add/add
      t6036: add a failed conflict detection case with submodule modify/modify
      t6036: add a failed conflict detection case with submodule add/add
      t6036: add a failed conflict detection case with conflicting types
      t6042: add testcase covering rename/add/delete conflict type
      t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
      t6042: add testcase covering long chains of rename conflicts
      t6036: add lots of detail for directory/file conflicts in recursive case
      t6036: add a failed conflict detection case: regular files, different modes
      t6044: add a testcase for index matching head, when head doesn't match HEAD
      merge-recursive: make sure when we say we abort that we actually abort
      merge-recursive: fix assumption that head tree being merged is HEAD
      t6044: add more testcases with staged changes before a merge is invoked
      merge-recursive: enforce rule that index matches head before merging
      merge: fix misleading pre-merge check documentation
      t7405: add a file/submodule conflict
      t7405: add a directory/submodule conflict
      t7405: verify 'merge --abort' works after submodule/path conflicts
      merge-recursive: preserve skip_worktree bit when necessary
      t1015: demonstrate directory/file conflict recovery failures
      read-cache: fix directory/file conflict handling in read_index_unmerged()
      t3031: update test description to mention desired behavior
      t7406: fix call that was failing for the wrong reason
      t7406: simplify by using diff --name-only instead of diff --raw
      t7406: avoid having git commands upstream of a pipe
      t7406: prefer test_* helper functions to test -[feds]
      t7406: avoid using test_must_fail for commands other than git
      git-update-index.txt: reword possibly confusing example
      Add missing includes and forward declarations
      alloc: make allocate_alloc_state and clear_alloc_state more consistent
      Move definition of enum branch_track from cache.h to branch.h
      urlmatch.h: fix include guard
      compat/precompose_utf8.h: use more common include guard style
      Remove forward declaration of an enum

Eric Sunshine (53):
      t: use test_might_fail() instead of manipulating exit code manually
      t: use test_write_lines() instead of series of 'echo' commands
      t: use sane_unset() rather than 'unset' with broken &&-chain
      t: drop unnecessary terminating semicolon in subshell
      t/lib-submodule-update: fix "absorbing" test
      t5405: use test_must_fail() instead of checking exit code manually
      t5406: use write_script() instead of birthing shell script manually
      t5505: modernize and simplify hard-to-digest test
      t6036: fix broken "merge fails but has appropriate contents" tests
      t7201: drop pointless "exit 0" at end of subshell
      t7400: fix broken "submodule add/reconfigure --force" test
      t7810: use test_expect_code() instead of hand-rolled comparison
      t9001: fix broken "invoke hook" test
      t9814: simplify convoluted check that command correctly errors out
      t0000-t0999: fix broken &&-chains
      t1000-t1999: fix broken &&-chains
      t2000-t2999: fix broken &&-chains
      t3000-t3999: fix broken &&-chains
      t3030: fix broken &&-chains
      t4000-t4999: fix broken &&-chains
      t5000-t5999: fix broken &&-chains
      t6000-t6999: fix broken &&-chains
      t7000-t7999: fix broken &&-chains
      t9000-t9999: fix broken &&-chains
      t9119: fix broken &&-chains
      t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
      t/check-non-portable-shell: stop being so polite
      t/check-non-portable-shell: make error messages more compact
      t/check-non-portable-shell: detect "FOO=bar shell_func"
      t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
      t/Makefile: add machinery to check correctness of chainlint.sed
      t/chainlint: add chainlint "basic" test cases
      t/chainlint: add chainlint "whitespace" test cases
      t/chainlint: add chainlint "one-liner" test cases
      t/chainlint: add chainlint "nested subshell" test cases
      t/chainlint: add chainlint "loop" and "conditional" test cases
      t/chainlint: add chainlint "cuddled" test cases
      t/chainlint: add chainlint "complex" test cases
      t/chainlint: add chainlint "specialized" test cases
      diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
      mw-to-git/t9360: fix broken &&-chain
      t/chainlint.sed: drop extra spaces from regex character class
      sequencer: fix "rebase -i --root" corrupting author header
      sequencer: fix "rebase -i --root" corrupting author header timezone
      sequencer: fix "rebase -i --root" corrupting author header timestamp
      sequencer: don't die() on bogus user-edited timestamp
      color: protect against out-of-bounds reads and writes
      chainlint: match arbitrary here-docs tags rather than hard-coded names
      chainlint: match 'quoted' here-doc tags
      chainlint: recognize multi-line $(...) when command cuddled with "$("
      chainlint: let here-doc and multi-line string commence on same line
      chainlint: recognize multi-line quoted strings more robustly
      chainlint: add test of pathological case which triggered false positive

Han-Wen Nienhuys (2):
      config: document git config getter return value
      sideband: highlight keywords in remote sideband output

Henning Schild (9):
      builtin/receive-pack: use check_signature from gpg-interface
      gpg-interface: make parse_gpg_output static and remove from interface header
      gpg-interface: add new config to select how to sign a commit
      t/t7510: check the validation of the new config gpg.format
      gpg-interface: introduce an abstraction for multiple gpg formats
      gpg-interface: do not hardcode the key string len anymore
      gpg-interface: introduce new config to select per gpg format program
      gpg-interface: introduce new signature format "x509" using gpgsm
      gpg-interface t: extend the existing GPG tests with GPGSM

Isabella Stephens (2):
      blame: prevent error if range ends past end of file
      log: prevent error if line range ends past end of file

Jameson Miller (8):
      read-cache: teach refresh_cache_entry to take istate
      read-cache: teach make_cache_entry to take object_id
      block alloc: add lifecycle APIs for cache_entry structs
      mem-pool: only search head block for available space
      mem-pool: add life cycle management functions
      mem-pool: fill out functionality
      block alloc: allocate cache entries from mem_pool
      block alloc: add validations around cache_entry lifecyle

Jeff Hostetler (1):
      json_writer: new routines to create JSON data

Jeff King (48):
      make show-index a builtin
      show-index: update documentation for index v2
      fetch-pack: don't try to fetch peel values with --all
      ewah: drop ewah_deserialize function
      ewah: drop ewah_serialize_native function
      t3200: unset core.logallrefupdates when testing reflog creation
      t: switch "branch -l" to "branch --create-reflog"
      branch: deprecate "-l" option
      config: turn die_on_error into caller-facing enum
      config: add CONFIG_ERROR_SILENT handler
      config: add options parameter to git_config_from_mem
      fsck: silence stderr when parsing .gitmodules
      t6300: add a test for --ignore-case
      ref-filter: avoid backend filtering with --ignore-case
      t5500: prettify non-commit tag tests
      sequencer: handle empty-set cases consistently
      sequencer: don't say BUG on bogus input
      has_uncommitted_changes(): fall back to empty tree
      fsck: split ".gitmodules too large" error from parse failure
      fsck: downgrade gitmodulesParse default to "info"
      blame: prefer xsnprintf to strcpy for colors
      check_replace_refs: fix outdated comment
      check_replace_refs: rename to read_replace_refs
      add core.usereplacerefs config option
      reencode_string: use st_add/st_mult helpers
      reencode_string: use size_t for string lengths
      strbuf: use size_t for length in intermediate variables
      strbuf_readlink: use ssize_t
      pass st.st_size as hint for strbuf_readlink()
      strbuf_humanise: use unsigned variables
      automatically ban strcpy()
      banned.h: mark strcat() as banned
      banned.h: mark sprintf() as banned
      banned.h: mark strncpy() as banned
      score_trees(): fix iteration over trees with missing entries
      add a script to diff rendered documentation
      t5552: suppress upload-pack trace output
      for_each_*_object: store flag definitions in a single location
      for_each_*_object: take flag arguments as enum
      for_each_*_object: give more comprehensive docstrings
      for_each_packed_object: support iterating in pack-order
      t1006: test cat-file --batch-all-objects with duplicates
      cat-file: rename batch_{loose,packed}_object callbacks
      cat-file: support "unordered" output for --batch-all-objects
      cat-file: use oidset check-and-insert
      cat-file: split batch "buf" into two variables
      cat-file: use a single strbuf for all output
      for_each_*_object: move declarations to object-store.h

Johannes Schindelin (41):
      Makefile: fix the "built from commit" code
      merge: allow reading the merge commit message from a file
      rebase --rebase-merges: add support for octopus merges
      rebase --rebase-merges: adjust man page for octopus support
      vcbuild/README: update to accommodate for missing common-cmds.h
      t7406: avoid failures solely due to timing issues
      contrib: add a script to initialize VS Code configuration
      vscode: hard-code a couple defines
      cache.h: extract enum declaration from inside a struct declaration
      mingw: define WIN32 explicitly
      vscode: only overwrite C/C++ settings
      vscode: wrap commit messages at column 72 by default
      vscode: use 8-space tabs, no trailing ws, etc for Git's source code
      vscode: add a dictionary for cSpell
      vscode: let cSpell work on commit messages, too
      pull --rebase=<type>: allow single-letter abbreviations for the type
      t3430: demonstrate what -r, --autosquash & --exec should do
      git-compat-util.h: fix typo
      remote-curl: remove spurious period
      rebase --exec: make it work with --rebase-merges
      linear-assignment: a function to solve least-cost assignment problems
      Introduce `range-diff` to compare iterations of a topic branch
      range-diff: first rudimentary implementation
      range-diff: improve the order of the shown commits
      range-diff: also show the diff between patches
      range-diff: right-trim commit messages
      range-diff: indent the diffs just like tbdiff
      range-diff: suppress the diff headers
      range-diff: adjust the output of the commit pairs
      range-diff: do not show "function names" in hunk headers
      range-diff: use color for the commit pairs
      color: add the meta color GIT_COLOR_REVERSE
      diff: add an internal option to dual-color diffs of diffs
      range-diff: offer to dual-color the diffs
      range-diff --dual-color: skip white-space warnings
      range-diff: populate the man page
      completion: support `git range-diff`
      range-diff: left-pad patch numbers
      range-diff: make --dual-color the default mode
      range-diff: use dim/bold cues to improve dual color mode
      chainlint: fix for core.autocrlf=true

Johannes Sixt (1):
      mingw: enable atomic O_APPEND

Jonathan Nieder (11):
      object: add repository argument to grow_object_hash
      object: move grafts to object parser
      commit: add repository argument to commit_graft_pos
      commit: add repository argument to register_commit_graft
      commit: add repository argument to read_graft_file
      commit: add repository argument to prepare_commit_graft
      commit: add repository argument to lookup_commit_graft
      subtree test: add missing && to &&-chain
      subtree test: simplify preparation of expected results
      doc hash-function-transition: pick SHA-256 as NewHash
      partial-clone: render design doc using asciidoc

Jonathan Tan (28):
      list-objects: check if filter is NULL before using
      fetch-pack: split up everything_local()
      fetch-pack: clear marks before re-marking
      fetch-pack: directly end negotiation if ACK ready
      fetch-pack: use ref adv. to prune "have" sent
      fetch-pack: make negotiation-related vars local
      fetch-pack: move common check and marking together
      fetch-pack: introduce negotiator API
      pack-bitmap: remove bitmap_git global variable
      pack-bitmap: add free function
      fetch-pack: write shallow, then check connectivity
      fetch-pack: support negotiation tip whitelist
      upload-pack: send refs' objects despite "filter"
      clone: check connectivity even if clone is partial
      revision: tolerate promised targets of tags
      tag: don't warn if target is missing but promised
      negotiator/skipping: skip commits during fetch
      commit-graph: refactor preparing commit graph
      object-store: add missing include
      commit-graph: add missing forward declaration
      commit-graph: add free_commit_graph
      commit-graph: store graph in struct object_store
      commit-graph: add repo arg to graph readers
      t5702: test fetch with multiple refspecs at a time
      fetch: send "refs/tags/" prefix upon CLI refspecs
      fetch-pack: unify ref in and out param
      repack: refactor setup of pack-objects cmd
      repack: repack promisor objects if -a or -A is set

Josh Steadmon (1):
      protocol-v2 doc: put HTTP headers after request

Jules Maselbas (1):
      send-email: fix tls AUTH when sending batch

Junio C Hamano (18):
      tests: clean after SANITY tests
      ewah: delete unused 'rlwit_discharge_empty()'
      Prepare to start 2.19 cycle
      First batch for 2.19 cycle
      Second batch for 2.19 cycle
      fixup! connect.h: avoid forward declaration of an enum
      fixup! refs/refs-internal.h: avoid forward declaration of an enum
      t3404: fix use of "VAR=VAL cmd" with a shell function
      Third batch for 2.19 cycle
      Fourth batch for 2.19 cycle
      remote: make refspec follow the same disambiguation rule as local refs
      Fifth batch for 2.19 cycle
      update-index: there no longer is `apply --index-info`
      gpg-interface: propagate exit status from gpg back to the callers
      Sixth batch for 2.19 cycle
      Seventh batch for 2.19 cycle
      sideband: do not read beyond the end of input
      Git 2.19-rc0

Kana Natsuno (2):
      t4018: add missing test cases for PHP
      userdiff: support new keywords in PHP hunk header

Kim Gybels (1):
      gc --auto: release pack files before auto packing

Kirill Smelkov (1):
      fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits

Luis Marsano (2):
      git-credential-netrc: use in-tree Git.pm for tests
      git-credential-netrc: fix exit status when tests fail

Luke Diamand (6):
      git-p4: python3: replace <> with !=
      git-p4: python3: replace dict.has_key(k) with "k in dict"
      git-p4: python3: remove backticks
      git-p4: python3: basestring workaround
      git-p4: python3: use print() function
      git-p4: python3: fix octal constants

Marc Strapetz (1):
      Documentation: declare "core.ignoreCase" as internal variable

Martin Ågren (1):
      refspec: initalize `refspec_item` in `valid_fetch_refspec()`

Masaya Suzuki (2):
      builtin/send-pack: populate the default configs
      doc: fix want-capability separator

Max Kirillov (4):
      http-backend: cleanup writing to child process
      http-backend: respect CONTENT_LENGTH as specified by rfc3875
      unpack-trees: do not fail reset because of unmerged skipped entry
      http-backend: respect CONTENT_LENGTH for receive-pack

Michael Barabanov (1):
      filter-branch: skip commits present on --state-branch

Mike Hommey (1):
      fast-import: do not call diff_delta() with empty buffer

Nguyễn Thái Ngọc Duy (98):
      commit-slab.h: code split
      commit-slab: support shared commit-slab
      blame: use commit-slab for blame suspects instead of commit->util
      describe: use commit-slab for commit names instead of commit->util
      shallow.c: use commit-slab for commit depth instead of commit->util
      sequencer.c: use commit-slab to mark seen commits
      sequencer.c: use commit-slab to associate todo items to commits
      revision.c: use commit-slab for show_source
      bisect.c: use commit-slab for commit weight instead of commit->util
      name-rev: use commit-slab for rev-name instead of commit->util
      show-branch: use commit-slab for commit-name instead of commit->util
      show-branch: note about its object flags usage
      log: use commit-slab in prepare_bases() instead of commit->util
      merge: use commit-slab in merge remote desc instead of commit->util
      commit.h: delete 'util' field in struct commit
      diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
      diff: turn --ita-invisible-in-index on by default
      t2203: add a test about "diff HEAD" case
      apply: add --intent-to-add
      parse-options: option to let --git-completion-helper show negative form
      completion: suppress some -no- options
      Add and use generic name->id mapping code for color slot parsing
      grep: keep all colors in an array
      fsck: factor out msg_id_info[] lazy initialization code
      help: add --config to list all available config
      fsck: produce camelCase config key names
      advice: keep config name in camelCase in advice_config[]
      am: move advice.amWorkDir parsing back to advice.c
      completion: drop the hard coded list of config vars
      completion: keep other config var completion in camelCase
      completion: support case-insensitive config vars
      log-tree: allow to customize 'grafted' color
      completion: complete general config vars in two steps
      upload-pack: reject shallow requests that would return nothing
      completion: collapse extra --no-.. options
      Update messages in preparation for i18n
      archive-tar.c: mark more strings for translation
      archive-zip.c: mark more strings for translation
      builtin/config.c: mark more strings for translation
      builtin/grep.c: mark strings for translation
      builtin/pack-objects.c: mark more strings for translation
      builtin/replace.c: mark more strings for translation
      commit-graph.c: mark more strings for translation
      config.c: mark more strings for translation
      connect.c: mark more strings for translation
      convert.c: mark more strings for translation
      dir.c: mark more strings for translation
      environment.c: mark more strings for translation
      exec-cmd.c: mark more strings for translation
      object.c: mark more strings for translation
      pkt-line.c: mark more strings for translation
      refs.c: mark more strings for translation
      refspec.c: mark more strings for translation
      replace-object.c: mark more strings for translation
      sequencer.c: mark more strings for translation
      sha1-file.c: mark more strings for translation
      transport.c: mark more strings for translation
      transport-helper.c: mark more strings for translation
      pack-objects: document about thread synchronization
      apply.h: drop extern on func declaration
      attr.h: drop extern from function declaration
      blame.h: drop extern on func declaration
      cache-tree.h: drop extern from function declaration
      convert.h: drop 'extern' from function declaration
      diffcore.h: drop extern from function declaration
      diff.h: remove extern from function declaration
      line-range.h: drop extern from function declaration
      rerere.h: drop extern from function declaration
      repository.h: drop extern from function declaration
      revision.h: drop extern from function declaration
      submodule.h: drop extern from function declaration
      config.txt: reorder blame stuff to keep config keys sorted
      Makefile: add missing dependency for command-list.h
      diff.c: move read_index() code back to the caller
      cache-tree: wrap the_index based wrappers with #ifdef
      attr: remove an implicit dependency on the_index
      convert.c: remove an implicit dependency on the_index
      dir.c: remove an implicit dependency on the_index in pathspec code
      preload-index.c: use the right index instead of the_index
      ls-files: correct index argument to get_convert_attr_ascii()
      unpack-trees: remove 'extern' on function declaration
      unpack-trees: add a note about path invalidation
      unpack-trees: don't shadow global var the_index
      unpack-trees: convert clear_ce_flags* to avoid the_index
      unpack-trees: avoid the_index in verify_absent()
      pathspec.c: use the right index instead of the_index
      submodule.c: use the right index instead of the_index
      entry.c: use the right index instead of the_index
      attr: remove index from git_attr_set_direction()
      grep: use the right index instead of the_index
      archive.c: avoid access to the_index
      archive-*.c: use the right repository
      resolve-undo.c: use the right index instead of the_index
      apply.c: pass struct apply_state to more functions
      apply.c: make init_apply_state() take a struct repository
      apply.c: remove implicit dependency on the_index
      blame.c: remove implicit dependency on the_index
      cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD

Nicholas Guriev (1):
      mergetool: don't suggest to continue after last file

Olga Telezhnaya (5):
      ref-filter: add info_source to valid_atom
      ref-filter: fill empty fields with empty values
      ref-filter: initialize eaten variable
      ref-filter: merge get_obj and get_object
      ref-filter: use oid_object_info() to get object

Phillip Wood (5):
      add -p: fix counting empty context lines in edited patches
      sequencer: do not squash 'reword' commits when we hit conflicts
      rebase -i: fix numbering in squash message
      t3430: add conflicting commit
      rebase -i: fix SIGSEGV when 'merge <branch>' fails

Prathamesh Chavan (4):
      submodule foreach: correct '$path' in nested submodules from a subdirectory
      submodule foreach: document '$sm_path' instead of '$path'
      submodule foreach: document variable '$displaypath'
      submodule: port submodule subcommand 'foreach' from shell to C

Ramsay Jones (3):
      fsck: check skiplist for object in fsck_blob()
      t6036: fix broken && chain in sub-shell
      t5562: avoid non-portable "export FOO=bar" construct

René Scharfe (7):
      remote: clear string_list after use in mv()
      add, update-index: fix --chmod argument help
      difftool: remove angular brackets from argument help
      pack-objects: specify --index-version argument help explicitly
      send-pack: specify --force-with-lease argument help explicitly
      shortlog: correct option help for -w
      parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP

SZEDER Gábor (19):
      update-ref --stdin: use skip_prefix()
      t7510-signed-commit: use 'test_must_fail'
      tests: make forging GPG signed commits and tags more robust
      t5541: clean up truncating access log
      t/lib-httpd: add the strip_access_log() helper function
      t/lib-httpd: avoid occasional failures when checking access.log
      t5608: fix broken &&-chain
      t9300: wait for background fast-import process to die after killing it
      travis-ci: run Coccinelle static analysis with two parallel jobs
      travis-ci: fail if Coccinelle static analysis found something to transform
      coccinelle: mark the 'coccicheck' make target as .PHONY
      coccinelle: use $(addsuffix) in 'coccicheck' make target
      coccinelle: exclude sha1dc source files from static analysis
      coccinelle: put sane filenames into output patches
      coccinelle: extract dedicated make target to clean Coccinelle's results
      travis-ci: include the trash directories of failed tests in the trace log
      t5318: use 'test_cmp_bin' to compare commit-graph files
      t5318: avoid unnecessary command substitutions
      t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test

Sebastian Kisela (2):
      git-instaweb: support Fedora/Red Hat apache module path
      git-instaweb: fix apache2 config with apache >= 2.4

Stefan Beller (87):
      repository: introduce parsed objects field
      object: add repository argument to create_object
      alloc: add repository argument to alloc_blob_node
      alloc: add repository argument to alloc_tree_node
      alloc: add repository argument to alloc_commit_node
      alloc: add repository argument to alloc_tag_node
      alloc: add repository argument to alloc_object_node
      alloc: add repository argument to alloc_report
      alloc: add repository argument to alloc_commit_index
      object: allow grow_object_hash to handle arbitrary repositories
      object: allow create_object to handle arbitrary repositories
      alloc: allow arbitrary repositories for alloc functions
      object-store: move object access functions to object-store.h
      shallow: add repository argument to set_alternate_shallow_file
      shallow: add repository argument to register_shallow
      shallow: add repository argument to check_shallow_file_for_update
      shallow: add repository argument to is_repository_shallow
      cache: convert get_graft_file to handle arbitrary repositories
      path.c: migrate global git_path_* to take a repository argument
      shallow: migrate shallow information into the object parser
      commit: allow prepare_commit_graft to handle arbitrary repositories
      commit: allow lookup_commit_graft to handle arbitrary repositories
      refs/packed-backend.c: close fd of empty file
      submodule--helper: plug mem leak in print_default_remote
      sequencer.c: plug leaks in do_pick_commit
      submodule: fix NULL correctness in renamed broken submodules
      t5526: test recursive submodules when fetching moved submodules
      submodule: unset core.worktree if no working tree is present
      submodule: ensure core.worktree is set after update
      submodule deinit: unset core.worktree
      submodule.c: report the submodule that an error occurs in
      sequencer.c: plug mem leak in git_sequencer_config
      .mailmap: merge different spellings of names
      object: add repository argument to parse_object
      object: add repository argument to lookup_object
      object: add repository argument to parse_object_buffer
      object: add repository argument to object_as_type
      blob: add repository argument to lookup_blob
      tree: add repository argument to lookup_tree
      commit: add repository argument to lookup_commit_reference_gently
      commit: add repository argument to lookup_commit_reference
      commit: add repository argument to lookup_commit
      commit: add repository argument to parse_commit_buffer
      commit: add repository argument to set_commit_buffer
      commit: add repository argument to get_cached_commit_buffer
      tag: add repository argument to lookup_tag
      tag: add repository argument to parse_tag_buffer
      tag: add repository argument to deref_tag
      object: allow object_as_type to handle arbitrary repositories
      object: allow lookup_object to handle arbitrary repositories
      blob: allow lookup_blob to handle arbitrary repositories
      tree: allow lookup_tree to handle arbitrary repositories
      commit: allow lookup_commit to handle arbitrary repositories
      tag: allow lookup_tag to handle arbitrary repositories
      tag: allow parse_tag_buffer to handle arbitrary repositories
      commit.c: allow parse_commit_buffer to handle arbitrary repositories
      commit-slabs: remove realloc counter outside of slab struct
      commit.c: migrate the commit buffer to the parsed object store
      commit.c: allow set_commit_buffer to handle arbitrary repositories
      commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
      object.c: allow parse_object_buffer to handle arbitrary repositories
      object.c: allow parse_object to handle arbitrary repositories
      tag.c: allow deref_tag to handle arbitrary repositories
      commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
      commit.c: allow lookup_commit_reference to handle arbitrary repositories
      xdiff/xdiff.h: remove unused flags
      xdiff/xdiffi.c: remove unneeded function declarations
      t4015: avoid git as a pipe input
      diff.c: do not pass diff options as keydata to hashmap
      diff.c: adjust hash function signature to match hashmap expectation
      diff.c: add a blocks mode for moved code detection
      diff.c: decouple white space treatment from move detection algorithm
      diff.c: factor advance_or_nullify out of mark_color_as_moved
      diff.c: add white space mode to move detection that allows indent changes
      diff.c: offer config option to control ws handling in move detection
      xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
      xdiff/xhistogram: factor out memory cleanup into free_index()
      xdiff/xhistogram: move index allocation into find_lcs
      Documentation/git-interpret-trailers: explain possible values
      xdiff/histogram: remove tail recursion
      t1300: document current behavior of setting options
      xdiff: reduce indent heuristic overhead
      config: fix case sensitive subsection names on writing
      git-config: document accidental multi-line setting in deprecated syntax
      git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
      t7410: update to new style
      builtin/submodule--helper: remove stray new line

Taylor Blau (9):
      Documentation/config.txt: camel-case lineNumber for consistency
      grep.c: expose {,inverted} match column in match_line()
      grep.[ch]: extend grep_opt to allow showing matched column
      grep.c: display column number of first match
      builtin/grep.c: add '--column' option to 'git-grep(1)'
      grep.c: add configuration variables to show matched option
      contrib/git-jump/git-jump: jump to exact location
      grep.c: extract show_line_header()
      grep.c: teach 'git grep --only-matching'

Thomas Rast (1):
      range-diff: add tests

Tobias Klauser (1):
      git-rebase--preserve-merges: fix formatting of todo help message

Todd Zullinger (4):
      git-credential-netrc: minor whitespace cleanup in test script
      git-credential-netrc: make "all" default target of Makefile
      gitignore.txt: clarify default core.excludesfile path
      dir.c: fix typos in core.excludesfile comment

Ville Skyttä (1):
      Documentation: spelling and grammar fixes

Vladimir Parfinenko (1):
      rebase: fix documentation formatting

William Chargin (2):
      sha1-name.c: for ":/", find detached HEAD commits
      t: factor out FUNNYNAMES as shared lazy prereq

Xiaolong Ye (1):
      format-patch: clear UNINTERESTING flag before prepare_bases

brian m. carlson (21):
      send-email: add an auto option for transfer encoding
      send-email: accept long lines with suitable transfer encoding
      send-email: automatically determine transfer-encoding
      docs: correct RFC specifying email line length
      sequencer: pass absolute GIT_WORK_TREE to exec commands
      cache: update object ID functions for the_hash_algo
      tree-walk: replace hard-coded constants with the_hash_algo
      hex: switch to using the_hash_algo
      commit: express tree entry constants in terms of the_hash_algo
      strbuf: allocate space with GIT_MAX_HEXSZ
      sha1-name: use the_hash_algo when parsing object names
      refs/files-backend: use the_hash_algo for writing refs
      builtin/update-index: convert to using the_hash_algo
      builtin/update-index: simplify parsing of cacheinfo
      builtin/fmt-merge-msg: make hash independent
      builtin/merge: switch to use the_hash_algo
      builtin/merge-recursive: make hash independent
      diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
      log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
      sha1-file: convert constants to uses of the_hash_algo
      pretty: switch hard-coded constants to the_hash_algo

Ævar Arnfjörð Bjarmason (36):
      checkout tests: index should be clean after dwim checkout
      checkout.h: wrap the arguments to unique_tracking_name()
      checkout.c: introduce an *_INIT macro
      checkout.c: change "unique" member to "num_matches"
      checkout: pass the "num_matches" up to callers
      builtin/checkout.c: use "ret" variable for return
      checkout: add advice for ambiguous "checkout <branch>"
      checkout & worktree: introduce checkout.defaultRemote
      refspec: s/refspec_item_init/&_or_die/g
      refspec: add back a refspec_item_init() function
      doc hash-function-transition: note the lack of a changelog
      receive.fsck.<msg-id> tests: remove dead code
      config doc: don't describe *.fetchObjects twice
      config doc: unify the description of fsck.* and receive.fsck.*
      config doc: elaborate on what transfer.fsckObjects does
      config doc: elaborate on fetch.fsckObjects security
      transfer.fsckObjects tests: untangle confusing setup
      fetch: implement fetch.fsck.*
      fsck: test & document {fetch,receive}.fsck.* config fallback
      fsck: add stress tests for fsck.skipList
      fsck: test and document unknown fsck.<msg-id> values
      tests: make use of the test_must_be_empty function
      tests: make use of the test_must_be_empty function
      fetch tests: change "Tag" test tag to "testTag"
      push tests: remove redundant 'git push' invocation
      push tests: fix logic error in "push" test assertion
      push tests: add more testing for forced tag pushing
      push tests: assert re-pushing annotated tags
      negotiator: unknown fetch.negotiationAlgorithm should error out
      fetch doc: cross-link two new negotiation options
      sha1dc: update from upstream
      push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
      fetch tests: correct a comment "remove it" -> "remove them"
      pull doc: fix a long-standing grammar error
      submodule: add more exhaustive up-path testing
      t2024: mark test using "checkout -p" with PERL prerequisite

Łukasz Stelmach (1):
      completion: complete remote names too


^ permalink raw reply	[relevance 3%]

* Re: [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix)
  @ 2010-08-17  7:46  3% ` Ævar Arnfjörð Bjarmason
  2010-08-17  8:10  3%   ` Jonathan Nieder
  0 siblings, 1 reply; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2010-08-17  7:46 UTC (permalink / raw)
  To: Jonathan Nieder
  Cc: git, Lars Hjemli, Tay Ray Chuan, Matthieu Moy, Clemens Buchacher,
	Jeff King

On Tue, Aug 17, 2010 at 06:51, Jonathan Nieder <jrnieder@gmail.com> wrote:
> While preparing to make some minor "git merge" changes, I noticed that
> the old merge script does not pass all tests any more.  Since it can
> be easier to prototype in shell and then port to C, I think that is
> worth fixing.
>
> Of course this is not urgent at all.

> Patches 2-7 are minor test changes.  They are early in the series
> to give flexibility about when to merge them.

Those all looked good, thanks for tackling that.

> Patches 8-10 expose functionality used by merge when handling octopus
> merges.

You mean 9-10, 8 looks good. I don't have the familiarity to comment
on 9-10.

> Patches 12 and later are ports of various patches to builtin/merge.c.
> I did the bare minimum to make tests pass. :)

Those also look good to my untrained eye.

How do you run the tests against git-merge.sh? Is there some make
target to use it instead of git-merge.c, or do you manually move it in
place?

If it's the latter a switch somewhere to run the test suite against
these .sh alternatives might compliment this series nicely.

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #05; Sun, 17)
@ 2022-07-18  3:14  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-18  3:14 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.

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']

* ab/submodule-cleanup (2022-06-28) 12 commits
  (merged to 'next' on 2022-07-08 at 6f3886aa03)
 + git-sh-setup.sh: remove "say" function, change last users
 + git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 + submodule--helper: eliminate internal "--update" option
 + submodule--helper: understand --checkout, --merge and --rebase synonyms
 + submodule--helper: report "submodule" as our name in some "-h" output
 + submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 + submodule update: remove "-v" option
 + submodule--helper: have --require-init imply --init
 + git-submodule.sh: remove unused top-level "--branch" argument
 + git-submodule.sh: make the "$cached" variable a boolean
 + git-submodule.sh: remove unused $prefix variable
 + git-submodule.sh: remove unused sanitize_submodule_env()
 (this branch is used by gc/submodule-use-super-prefix.)

 Further preparation to turn git-submodule.sh into a builtin.
 source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>


* en/merge-tree (2022-06-22) 17 commits
  (merged to 'next' on 2022-07-08 at a29b4896ab)
 + git-merge-tree.txt: add a section on potentional usage mistakes
 + merge-tree: add a --allow-unrelated-histories flag
 + merge-tree: allow `ls-files -u` style info to be NUL terminated
 + merge-ort: optionally produce machine-readable output
 + merge-ort: store more specific conflict information
 + merge-ort: make `path_messages` a strmap to a string_list
 + merge-ort: store messages in a list, not in a single strbuf
 + merge-tree: provide easy access to `ls-files -u` style info
 + merge-tree: provide a list of which files have conflicts
 + merge-ort: remove command-line-centric submodule message from merge-ort
 + merge-ort: provide a merge_get_conflicted_files() helper function
 + merge-tree: support including merge messages in output
 + merge-ort: split out a separate display_update_messages() function
 + merge-tree: implement real merges
 + merge-tree: add option parsing and initial shell for real merge function
 + merge-tree: move logic for existing merge into new function
 + merge-tree: rename merge_trees() to trivial_merge_trees()

 "git merge-tree" learned a new mode where it takes two commits and
 computes a tree that would result in the merge commit, if the
 histories leading to these two commits were to be merged.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-08 at fa0e71ba39)
 + dir: minor refactoring / clean-up
 + dir: traverse into repository

 In a non-bare repository, the behavior of Git when the
 core.worktree configuration variable points at a directory that has
 a repository as its subdirectory, regressed in Git 2.27 days.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>


* hx/unpack-streaming (2022-06-13) 6 commits
  (merged to 'next' on 2022-07-08 at 4eb375ec2f)
 + unpack-objects: use stream_loose_object() to unpack large objects
 + core doc: modernize core.bigFileThreshold documentation
 + object-file.c: add "stream_loose_object()" to handle large object
 + object-file.c: factor out deflate part of write_loose_object()
 + object-file.c: refactor write_loose_object() to several steps
 + unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* sy/mv-out-of-cone (2022-07-01) 8 commits
  (merged to 'next' on 2022-07-08 at 654970fdb7)
 + mv: add check_dir_in_index() and solve general dir check issue
 + mv: use flags mode for update_mode
 + mv: check if <destination> exists in index to handle overwriting
 + mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
 + mv: decouple if/else-if checks using goto
 + mv: update sparsity after moving from out-of-cone to in-cone
 + t1092: mv directory from out-of-cone to in-cone
 + t7002: add tests for moving out-of-cone file/directory

 "git mv A B" in a sparsely populated working tree can be asked to
 move a path between directories that are "in cone" (i.e. expected
 to be materialized in the working tree) and "out of cone"
 (i.e. expected to be hidden).  The handling of such cases has been
 improved.
 source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>

--------------------------------------------------
[New Topics]

* js/ci-github-workflow-markup (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 196166f671)
 + tests: fix incorrect --write-junit-xml code

 A fix for a regression in test framework.

 Will merge to 'master'.
 source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>


* js/shortlog-sort-stably (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 75e4efe678)
 + shortlog: use a stable sort

 "git shortlog -n" relied on the underlying qsort() to be stable,
 which shouldn't have.  Fixed.

 Will merge to 'master'.
 source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>


* mt/doc-config (2022-07-14) 3 commits
 - doc: notes: unify configuration variables definitions
 - doc: apply: unify configuration variables definitions
 - doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Retracted?.
 cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>


* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4dd4a117ec)
 + mingw: avoid mktemp() in mkstemp() implementation

 mkstemp() emulation on Windows has been improved.

 Will merge to 'master'.
 source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>


* jt/fetch-pack-trace2-filter-spec (2022-07-15) 1 commit
 - fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.

 Will merge to 'next'?
 source: <20220715172943.2681492-1-jonathantanmy@google.com>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 - cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).

 Will merge to 'next'?
 source: <20220715092527.1567837-1-mail@beyermatthias.de>


* rs/mergesort (2022-07-17) 10 commits
 - mergesort: remove llist_mergesort()
 - packfile: use DEFINE_LIST_SORT
 - fetch-pack: use DEFINE_LIST_SORT
 - commit: use DEFINE_LIST_SORT
 - blame: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT_DEBUG
 - mergesort: add macros for typed sort of linked lists
 - mergesort: tighten merge loop
 - mergesort: unify ranks loops

 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>

--------------------------------------------------
[Stalled]

* ll/curl-accept-language (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at 076aba7421)
 + remote-curl: send Accept-Language header to server

 Earlier, HTTP transport clients learned to tell the server side
 what locale they are in by sending Accept-Language HTTP header, but
 this was done only for some requests but not others.

 Will merge to 'master'.
 source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
  (merged to 'next' on 2022-07-13 at 9db5235d01)
 + diff-files: move misplaced cleanup label

 An earlier attempt to plug leaks placed a clean-up label to jump to
 at a bogus place, which as been corrected.

 Will merge to 'master'.
 source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>


* cw/submodule-merge-messages (2022-07-13) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.

 Needs review.
 source: <20220712231935.2979727-1-calvinwan@google.com>


* ds/doc-wo-whitelist (2022-07-14) 3 commits
 - *: avoid "whitelist"
 - t/*: avoid "whitelist"
 - Documentation: remove use of whitelist

 Avoid "white/black-list" in documentation and code comments.

 Will merge to 'next'?
 source: <pull.1274.v2.git.1657852722.gitgitgadget@gmail.com>


* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4273bbd4b4)
 + mergetool(vimdiff): allow paths to contain spaces again

 Variable quoting fix in the vimdiff driver of "git mergetool"

 Will merge to 'master'.
 source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>


* mt/checkout-count-fix (2022-07-14) 3 commits
 - checkout: fix two bugs on the final count of updated entries
 - checkout: show bug about failed entries being included in final report
 - checkout: document bug where delayed checkout counts entries twice

 "git checkout" miscounted the paths it updated, which has been
 corrected.

 Will merge to 'next'?
 source: <cover.1657799213.git.matheus.bernardino@usp.br>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
 - commit-graph: fix corrupt upgrade from generation v1 to v2
 - commit-graph: introduce `repo_find_commit_pos_in_graph()`
 - t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Will merge to 'next'?
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Needs review.
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* rs/cocci-array-copy (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-13 at f21dec0f71)
 + cocci: avoid normalization rules for memcpy

 A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
 macro has been improved.

 Will merge to 'master'.
 source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>


* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 1e14685680)
 + multi-pack-index: simplify handling of unknown --options

 The way "git multi-pack" uses parse-options API has been improved.

 Will merge to 'master'.
 source: <20220710151645.GA2038@szeder.dev>


* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at d1521724db)
 + ref-filter: disable save_commit_buffer while traversing

 Will merge to 'master'.
 source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>


* ab/cocci-unused (2022-07-06) 6 commits
  (merged to 'next' on 2022-07-11 at 7fa60d2a5b)
 + cocci: generalize "unused" rule to cover more than "strbuf"
 + cocci: add and apply a rule to find "unused" strbufs
 + cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
 + cocci: add a "coccicheck-test" target and test *.cocci rules
 + Makefile & .gitignore: ignore & clean "git.res", not "*.res"
 + Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS

 Add Coccinelle rules to detect the pattern of initializing and then
 finalizing a structure without using it in between at all, which
 happens after code restructuring and the compilers fail to
 recognize as an unused varilable.

 Will merge to 'master'.
 source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>


* jk/clone-unborn-confusion (2022-07-11) 4 commits
  (merged to 'next' on 2022-07-13 at a7ae8cb4b5)
 + clone: move unborn head creation to update_head()
 + clone: use remote branch if it matches default HEAD
 + clone: propagate empty remote HEAD even with other branches
 + clone: drop extra newline from warning message

 "git clone" from a repository with some ref whose HEAD is unborn
 did not set the HEAD in the resulting repository correctly, which
 has been corrected.

 Will merge to 'master'.
 source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>


* ac/bitmap-lookup-table (2022-07-06) 6 commits
 - p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
 - bitmap-lookup-table: add performance tests for lookup table
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Waiting for a more thorough review.
 cf. <Ys4DjW9JjQFx5Bhb@nand.local>
 source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>


* bc/nettle-sha256 (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at cf9595d8ca)
 + sha256: add support for Nettle

 Support for libnettle as SHA256 implementation has been added.

 Will merge to 'master'.
 source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>


* jc/builtin-mv-move-array (2022-07-09) 1 commit
  (merged to 'next' on 2022-07-09 at 0d3b3f62e5)
 + builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()

 Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
 macro, which would improve maintainability and readability.

 Will merge to 'master'.
 source: <xmqq4jzpu4xp.fsf_-_@gitster.g>


* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 7b3cca73a8)
 + gpg-interface: add function for converting trust level to string

 The code to convert between GPG trust level strings and internal
 constants we use to represent them have been cleaned up.

 Will merge to 'master'.
 source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-17) 4 commits
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Expecting a reroll; I think this is almost there.
 cf. <xmqqo7xnv17x.fsf@gitster.g>
 source: <20220716074055.1786231-1-siddharthasthana31@gmail.com>


* fr/vimdiff-layout-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-09 at d8461bd236)
 + vimdiff: make layout engine more robust against user vim settings

 Recent update to vimdiff layout code has been made more robust
 against different end-user vim settings.

 Will merge to 'master'.
 source: <20220708181024.45839-1-greenfoo@u92.eu>


* ds/rebase-update-ref (2022-07-12) 13 commits
 - sequencer: notify user of --update-refs activity
 - sequencer: ignore HEAD ref under --update-refs
 - rebase: add rebase.updateRefs config option
 - sequencer: rewrite update-refs as user edits todo list
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend
 - t2407: test bisect and rebase as black-boxes
 - Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Will merge to 'next'?
 source: <pull.1247.v4.git.1657631225.gitgitgadget@gmail.com>


* ab/leakfix (2022-07-01) 11 commits
  (merged to 'next' on 2022-07-11 at 0b107fffcf)
 + pull: fix a "struct oid_array" memory leak
 + cat-file: fix a common "struct object_context" memory leak
 + gc: fix a memory leak
 + checkout: avoid "struct unpack_trees_options" leak
 + merge-file: fix memory leaks on error path
 + merge-file: refactor for subsequent memory leak fix
 + cat-file: fix a memory leak in --batch-command mode
 + revert: free "struct replay_opts" members
 + submodule.c: free() memory from xgetcwd()
 + clone: fix memory leak in wanted_peer_refs()
 + check-ref-format: fix trivial memory leak

 Plug various memory leaks.

 Will merge to 'master'.
 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
  (merged to 'next' on 2022-07-11 at db7a724694)
 + test-tool delta: fix a memory leak
 + test-tool ref-store: fix a memory leak
 + test-tool bloom: fix memory leaks
 + test-tool json-writer: fix memory leaks
 + test-tool regex: call regfree(), fix memory leaks
 + test-tool urlmatch-normalization: fix a memory leak
 + test-tool {dump,scrap}-cache-tree: fix memory leaks
 + test-tool path-utils: fix a memory leak
 + test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.

 Will merge to 'master'.
 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
  (merged to 'next' on 2022-07-11 at 0d9cf172f9)
 + submodule--helper: remove display path helper
 + submodule--helper update: use --super-prefix
 + submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 + submodule--helper: use correct display path helper
 + submodule--helper: don't recreate recursive prefix
 + submodule--helper update: use display path helper
 + submodule--helper tests: add missing "display path" coverage
 + Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix

 Another step to rewrite more parts of "git submodule" in C.

 Will merge to 'master'.
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
  (merged to 'next' on 2022-07-13 at 4489696814)
 + t5330: remove run_with_limited_processses()
  (merged to 'next' on 2022-07-08 at cef32db0b6)
 + commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.

 Will merge to 'master'.
 source: <cover.1656593279.git.hanxin.hx@bytedance.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
 . trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Breaks tests in hx/unpack-streaming with an interesting interaction.
 source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-13) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'next'?
 source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>


* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
  (merged to 'next' on 2022-07-11 at 5f8dadf87b)
 + merge-ort: fix issue with dual rename and add/add conflict
 + merge-ort: shuffle the computation and cleanup of potential collisions
 + merge-ort: make a separate function for freeing struct collisions
 + merge-ort: small cleanups of check_for_directory_rename
 + t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Will merge to 'master'.
 source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
 - commit-graph: pass repo_settings instead of repository

 API tweak to make it easier to run fuzz testing on commit-graph parser.

 Will merge to 'next'.
 source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* jc/resolve-undo (2022-07-11) 2 commits
  (merged to 'next' on 2022-07-13 at b9ef9482e8)
 + fsck: do not dereference NULL while checking resolve-undo data
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will merge to 'master'.
 source: <xmqq35f7kzad.fsf@gitster.g>


* ab/build-gitweb (2022-06-28) 8 commits
  (merged to 'next' on 2022-07-11 at 731e354ff0)
 + gitweb/Makefile: add a "NO_GITWEB" parameter
 + Makefile: build 'gitweb' in the default target
 + gitweb/Makefile: include in top-level Makefile
 + gitweb: remove "test" and "test-installed" targets
 + gitweb/Makefile: prepare to merge into top-level Makefile
 + gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 + gitweb/Makefile: add a $(GITWEB_ALL) variable
 + gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Will merge to 'master'.
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
  (merged to 'next' on 2022-07-11 at afab6c1918)
 + tests: don't assume a .git/info for .git/info/sparse-checkout
 + tests: don't assume a .git/info for .git/info/exclude
 + tests: don't assume a .git/info for .git/info/refs
 + tests: don't assume a .git/info for .git/info/attributes
 + tests: don't assume a .git/info for .git/info/grafts
 + tests: don't depend on template-created .git/branches
 + t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'master'.
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-14) 5 commits
  (merged to 'next' on 2022-07-15 at 5206577852)
 + setup.c: create `safe.bareRepository`
 + safe.directory: use git_protected_config()
 + config: learn `git_protected_config()`
 + Documentation: define protected configuration
 + Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Will merge to 'master'.
 source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #03; Mon, 11)
@ 2022-07-12 17:07  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-12 17:07 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.

Maintenance releases v2.37.1 and others have been tagged.  They are
to address CVE-2022-29187, a vulnerability related to CVE-2022-24765
that was fixed earlier.  Big thanks to Carlo Arenas and Johannes
Schindelin for fixing the issue and helping the releases out.

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/bitmap-format-doc (2022-06-16) 3 commits
  (merged to 'next' on 2022-06-16 at 5591d11601)
 + bitmap-format.txt: add information for trailing checksum
 + bitmap-format.txt: fix some formatting issues
 + bitmap-format.txt: feed the file to asciidoc to generate html

 Adjust technical/bitmap-format to be formatted by AsciiDoc, and
 add some missing information to the documentation.
 source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>


* cr/setup-bug-typo (2022-06-17) 1 commit
  (merged to 'next' on 2022-06-17 at 8834ffe0ab)
 + setup: fix function name in a BUG() message

 Typofix in a BUG() message.
 source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>


* ds/branch-checked-out (2022-06-21) 7 commits
  (merged to 'next' on 2022-06-21 at e42bc4566f)
 + branch: drop unused worktrees variable
 + fetch: stop passing around unused worktrees variable
  (merged to 'next' on 2022-06-17 at c881874257)
 + branch: fix branch_checked_out() leaks
 + branch: use branch_checked_out() when deleting refs
 + fetch: use new branch_checked_out() and add tests
 + branch: check for bisects and rebases
 + branch: add branch_checked_out() helper
 (this branch is used by ds/rebase-update-ref.)

 Introduce a helper to see if a branch is already being worked on
 (hence should not be newly checked out in a working tree), which
 performs much better than the existing find_shared_symref() to
 replace many uses of the latter.
 source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>


* ds/vscode-settings (2022-06-27) 1 commit
  (merged to 'next' on 2022-07-02 at fcbd2e7aca)
 + vscode: improve tab size and wrapping

 Will merge to 'master'.
 source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>


* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
  (merged to 'next' on 2022-06-16 at ce0712a74c)
 + is_promisor_object(): walk promisor packs in pack-order

 Collection of what is referenced by objects in promisor packs have
 been optimized to inspect these objects in the in-pack order.
 source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>


* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
  (merged to 'next' on 2022-07-02 at e25dbe8cfb)
 + revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis

 Documentation mark-up fix.
 source: <YrOmsA04FZae89be@coredump.intra.peff.net>


* pb/diff-doc-raw-format (2022-06-13) 3 commits
  (merged to 'next' on 2022-07-02 at 198480cbc6)
 + diff-index.txt: update raw output format in examples
 + diff-format.txt: correct misleading wording
 + diff-format.txt: dst can be 0* SHA-1 when path is deleted, too

 Update "git diff/log --raw" format documentation.
 source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>


* rs/archive-with-internal-gzip (2022-06-15) 6 commits
  (merged to 'next' on 2022-06-17 at ab5af6acd1)
 + archive-tar: use internal gzip by default
 + archive-tar: use OS_CODE 3 (Unix) for internal gzip
 + archive-tar: add internal gzip implementation
 + archive-tar: factor out write_block()
 + archive: rename archiver data field to filter_command
 + archive: update format documentation

 Teach "git archive" to (optionally and then by default) avoid
 spawning an external "gzip" process when creating ".tar.gz" (and
 ".tgz") archives.
 source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>


* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-02 at 0fe8b80a3e)
 + combine-diff: abort if --output is given
 + combine-diff: abort if --ignore-matching-lines is given

 Certain diff options are currently ignored when combined-diff is
 shown; mark them as incompatible with the feature.
 source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>

--------------------------------------------------
[New Topics]

* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Will merge to 'next'?
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Will merge to 'next'?
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* rs/cocci-array-copy (2022-07-10) 1 commit
 - cocci: avoid normalization rules for memcpy

 A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
 macro has been improved.

 Will merge to 'next'.
 source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>


* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 1e14685680)
 + multi-pack-index: simplify handling of unknown --options

 The way "git multi-pack" uses parse-options API has been improved.

 Will merge to 'master'.
 source: <20220710151645.GA2038@szeder.dev>


* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
 - ref-filter: disable save_commit_buffer while traversing

 source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>

--------------------------------------------------
[Stalled]

* ll/curl-accept-language (2022-07-11) 1 commit
 - remote-curl: send Accept-Language header to server

 Earlier, HTTP transport clients learned to tell the server side
 what locale they are in by sending Accept-Language HTTP header, but
 this was done only for some requests but not others.

 Will merge to 'next'.
 source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ab/cocci-unused (2022-07-06) 6 commits
  (merged to 'next' on 2022-07-11 at 7fa60d2a5b)
 + cocci: generalize "unused" rule to cover more than "strbuf"
 + cocci: add and apply a rule to find "unused" strbufs
 + cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
 + cocci: add a "coccicheck-test" target and test *.cocci rules
 + Makefile & .gitignore: ignore & clean "git.res", not "*.res"
 + Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS

 Add Coccinelle rules to detect the pattern of initializing and then
 finalizing a structure without using it in between at all, which
 happens after code restructuring and the compilers fail to
 recognize as an unused varilable.

 Will merge to 'master'.
 source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>


* jk/clone-unborn-confusion (2022-07-11) 4 commits
 - clone: move unborn head creation to update_head()
 - clone: use remote branch if it matches default HEAD
 - clone: propagate empty remote HEAD even with other branches
 - clone: drop extra newline from warning message

 "git clone" from a repository with some ref whose HEAD is unborn
 did not set the HEAD in the resulting repository correctly, which
 has been corrected.

 Will merge to 'next'.
 source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
 source: <YsvrsOH1jg559yVt@coredump.intra.peff.net>


* ac/bitmap-lookup-table (2022-07-06) 6 commits
 - p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
 - bitmap-lookup-table: add performance tests for lookup table
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Will merge to 'next'?
 source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>


* bc/nettle-sha256 (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at cf9595d8ca)
 + sha256: add support for Nettle

 Support for libnettle as SHA256 implementation has been added.

 Will merge to 'master'.
 source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>


* jc/builtin-mv-move-array (2022-07-09) 1 commit
  (merged to 'next' on 2022-07-09 at 0d3b3f62e5)
 + builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()

 Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
 macro, which would improve maintainability and readability.

 Will merge to 'master'.
 source: <xmqq4jzpu4xp.fsf_-_@gitster.g>


* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 7b3cca73a8)
 + gpg-interface: add function for converting trust level to string

 The code to convert between GPG trust level strings and internal
 constants we use to represent them have been cleaned up.

 Will merge to 'master'.
 source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-09) 4 commits
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.
 source: <20220709154149.165524-1-siddharthasthana31@gmail.com>


* fr/vimdiff-layout-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-09 at d8461bd236)
 + vimdiff: make layout engine more robust against user vim settings

 Recent update to vimdiff layout code has been made more robust
 against different end-user vim settings.

 Will merge to 'master'.
 source: <20220708181024.45839-1-greenfoo@u92.eu>


* ds/git-rebase-doc-markup (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-08 at 24a0b80b71)
 + git-rebase.txt: use back-ticks consistently

 References to commands-to-be-typed-literally in "git rebase"
 documentation mark-up have been corrected.

 Will merge to 'master'.
 source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>


* ds/rebase-update-ref (2022-06-28) 8 commits
 - rebase: add rebase.updateRefs config option
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Expecting a reroll.
 cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
 source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>


* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
  (merged to 'next' on 2022-07-06 at d7494fbdef)
 + pack-objects.h: remove outdated pahole results

 Comment fix.

 Will merge to 'master'.
 source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>


* ab/leakfix (2022-07-01) 11 commits
  (merged to 'next' on 2022-07-11 at 0b107fffcf)
 + pull: fix a "struct oid_array" memory leak
 + cat-file: fix a common "struct object_context" memory leak
 + gc: fix a memory leak
 + checkout: avoid "struct unpack_trees_options" leak
 + merge-file: fix memory leaks on error path
 + merge-file: refactor for subsequent memory leak fix
 + cat-file: fix a memory leak in --batch-command mode
 + revert: free "struct replay_opts" members
 + submodule.c: free() memory from xgetcwd()
 + clone: fix memory leak in wanted_peer_refs()
 + check-ref-format: fix trivial memory leak

 Plug various memory leaks.

 Will merge to 'master'.
 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
  (merged to 'next' on 2022-07-11 at db7a724694)
 + test-tool delta: fix a memory leak
 + test-tool ref-store: fix a memory leak
 + test-tool bloom: fix memory leaks
 + test-tool json-writer: fix memory leaks
 + test-tool regex: call regfree(), fix memory leaks
 + test-tool urlmatch-normalization: fix a memory leak
 + test-tool {dump,scrap}-cache-tree: fix memory leaks
 + test-tool path-utils: fix a memory leak
 + test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.

 Will merge to 'master'.
 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-06 at 627c51773c)
 + t6429: fix use of non-existent function

 A test fix.

 Will merge to 'master'.
 source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
  (merged to 'next' on 2022-07-11 at 0d9cf172f9)
 + submodule--helper: remove display path helper
 + submodule--helper update: use --super-prefix
 + submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 + submodule--helper: use correct display path helper
 + submodule--helper: don't recreate recursive prefix
 + submodule--helper update: use display path helper
 + submodule--helper tests: add missing "display path" coverage
 + Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
 (this branch uses ab/submodule-cleanup.)

 Another step to rewrite more parts of "git submodule" in C.

 Will merge to 'master'.
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-08 at cef32db0b6)
 + commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.

 Will merge to 'master'.
 source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>


* ll/ls-files-tests-update (2022-07-06) 1 commit
  (merged to 'next' on 2022-07-06 at 444d1eabd0)
 + ls-files: update test style

 Test update.

 Will merge to 'master'.
 source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* sy/mv-out-of-cone (2022-07-01) 8 commits
  (merged to 'next' on 2022-07-08 at 654970fdb7)
 + mv: add check_dir_in_index() and solve general dir check issue
 + mv: use flags mode for update_mode
 + mv: check if <destination> exists in index to handle overwriting
 + mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
 + mv: decouple if/else-if checks using goto
 + mv: update sparsity after moving from out-of-cone to in-cone
 + t1092: mv directory from out-of-cone to in-cone
 + t7002: add tests for moving out-of-cone file/directory

 "git mv A B" in a sparsely populated working tree can be asked to
 move a path between directories that are "in cone" (i.e. expected
 to be materialized in the working tree) and "out of cone"
 (i.e. expected to be hidden).  The handling of such cases has been
 improved.

 Will merge to 'master'.
 source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>


* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
 . trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Breaks tests in hx/unpack-streaming with an interesting interaction.
 source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>


* cl/grep-max-count (2022-06-22) 1 commit
  (merged to 'next' on 2022-07-08 at 646199ab4c)
 + grep: add --max-count command line option

 "git grep -m<max-hits>" is a way to limit the hits shown per file.

 Will merge to 'master'.
 source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>


* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
  (merged to 'next' on 2022-07-08 at 1075452f32)
 + rev-parse: documentation adjustment - mention remote tracking with @{u}

 Doc update.

 Will merge to 'master'.
 source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>


* en/merge-tree (2022-06-22) 17 commits
  (merged to 'next' on 2022-07-08 at a29b4896ab)
 + git-merge-tree.txt: add a section on potentional usage mistakes
 + merge-tree: add a --allow-unrelated-histories flag
 + merge-tree: allow `ls-files -u` style info to be NUL terminated
 + merge-ort: optionally produce machine-readable output
 + merge-ort: store more specific conflict information
 + merge-ort: make `path_messages` a strmap to a string_list
 + merge-ort: store messages in a list, not in a single strbuf
 + merge-tree: provide easy access to `ls-files -u` style info
 + merge-tree: provide a list of which files have conflicts
 + merge-ort: remove command-line-centric submodule message from merge-ort
 + merge-ort: provide a merge_get_conflicted_files() helper function
 + merge-tree: support including merge messages in output
 + merge-ort: split out a separate display_update_messages() function
 + merge-tree: implement real merges
 + merge-tree: add option parsing and initial shell for real merge function
 + merge-tree: move logic for existing merge into new function
 + merge-tree: rename merge_trees() to trivial_merge_trees()

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 Will merge to 'master'.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 6f639750a1)
 + i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: labels that are shown in
 front of these messages.

 Will merge to 'master'.
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-06 at 2776bed385)
 + t5510: replace 'origin' with URL more carefully

 Test fix.

 Will merge to 'master'.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-11) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Getting closer to finish?
 cf. <xmqqleszl2p0.fsf@gitster.g>
 source: <pull.1262.v6.git.1657558435532.gitgitgadget@gmail.com>


* ab/test-quoting-fix (2022-06-30) 3 commits
  (merged to 'next' on 2022-07-06 at 0aa78fd9db)
 + config tests: fix harmless but broken "rm -r" cleanup
 + test-lib.sh: fix prepend_var() quoting issue
 + tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.

 Will merge to 'master'.
 source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>


* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
  (merged to 'next' on 2022-07-11 at 5f8dadf87b)
 + merge-ort: fix issue with dual rename and add/add conflict
 + merge-ort: shuffle the computation and cleanup of potential collisions
 + merge-ort: make a separate function for freeing struct collisions
 + merge-ort: small cleanups of check_for_directory_rename
 + t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Will merge to 'master'.
 source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at 8aa1f94fad)
 + send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".

 Will merge to 'master'.
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at d4e49ad22a)
 + remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspecs.

 Will merge to 'master'.
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 Expecting a reroll.
 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 599ed6fb84)
 + mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary for the purpose
 of creating the tree object(s) from its input.

 Will merge to 'master'.
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* ab/submodule-cleanup (2022-06-28) 12 commits
  (merged to 'next' on 2022-07-08 at 6f3886aa03)
 + git-sh-setup.sh: remove "say" function, change last users
 + git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 + submodule--helper: eliminate internal "--update" option
 + submodule--helper: understand --checkout, --merge and --rebase synonyms
 + submodule--helper: report "submodule" as our name in some "-h" output
 + submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 + submodule update: remove "-v" option
 + submodule--helper: have --require-init imply --init
 + git-submodule.sh: remove unused top-level "--branch" argument
 + git-submodule.sh: make the "$cached" variable a boolean
 + git-submodule.sh: remove unused $prefix variable
 + git-submodule.sh: remove unused sanitize_submodule_env()
 (this branch is used by gc/submodule-use-super-prefix.)

 Further preparation to turn git-submodule.sh into a builtin.

 Will merge to 'master'.
 source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>


* jc/resolve-undo (2022-07-11) 2 commits
 - fsck: do not dereference NULL while checking resolve-undo data
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will merge to 'next'.
 source: <xmqqfskdieqz.fsf@gitster.g>


* ab/build-gitweb (2022-06-28) 8 commits
  (merged to 'next' on 2022-07-11 at 731e354ff0)
 + gitweb/Makefile: add a "NO_GITWEB" parameter
 + Makefile: build 'gitweb' in the default target
 + gitweb/Makefile: include in top-level Makefile
 + gitweb: remove "test" and "test-installed" targets
 + gitweb/Makefile: prepare to merge into top-level Makefile
 + gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 + gitweb/Makefile: add a $(GITWEB_ALL) variable
 + gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Will merge to 'master'.
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
  (merged to 'next' on 2022-07-11 at afab6c1918)
 + tests: don't assume a .git/info for .git/info/sparse-checkout
 + tests: don't assume a .git/info for .git/info/exclude
 + tests: don't assume a .git/info for .git/info/refs
 + tests: don't assume a .git/info for .git/info/attributes
 + tests: don't assume a .git/info for .git/info/grafts
 + tests: don't depend on template-created .git/branches
 + t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'master'.
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
  (merged to 'next' on 2022-07-08 at 4eb375ec2f)
 + unpack-objects: use stream_loose_object() to unpack large objects
 + core doc: modernize core.bigFileThreshold documentation
 + object-file.c: add "stream_loose_object()" to handle large object
 + object-file.c: factor out deflate part of write_loose_object()
 + object-file.c: refactor write_loose_object() to several steps
 + unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'master'.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-07) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: learn `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Will merge to 'next'?
 source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-08 at fa0e71ba39)
 + dir: minor refactoring / clean-up
 + dir: traverse into repository

 In a non-bare repository, the behavior of Git when the
 core.worktree configuration variable points at a directory that has
 a repository as its subdirectory, regressed in Git 2.27 days.

 Will merge to 'master'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* Re: [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation
  @ 2018-06-07  5:27  3%   ` Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-06-07  5:27 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Jonathan Nieder, Elijah Newren

On Sat, Jun 2, 2018 at 11:58 PM, Elijah Newren <newren@gmail.com> wrote:
> builtin/merge.c contains this important requirement for merge strategies:
>
>     ...the index must be in sync with the head commit.  The strategies are
>     responsible to ensure this.
>
> However, Documentation/git-merge.txt says:
>
>     ...[merge will] abort if there are any changes registered in the index
>     relative to the `HEAD` commit.  (One exception is when the changed
>     index entries are in the state that would result from the merge
>     already.)
>
> Interestingly, prior to commit c0be8aa06b85 ("Documentation/git-merge.txt:
> Partial rewrite of How Merge Works", 2008-07-19),
> Documentation/git-merge.txt said much more:
>
>     ...the index file must match the tree of `HEAD` commit...
>     [NOTE]
>     This is a bit of a lite.  In certain special cases [explained
>     in detail]...
>     Otherwise, merge will refuse to do any harm to your repository
>     (that is...your working tree...and index are left intact).
>
> So, this suggests that the exceptions existed because there were special
> cases where it would case no harm, and potentially be slightly more
> convenient for the user.  While the current text in git-merge.txt does
> list a condition under which it would be safe to proceed despite the index
> not matching HEAD, it does not match what is actually implemented, in
> three different ways:
>
>     * The exception is written to describe what unpack-trees allows.  Not
>       all merge strategies allow such an exception, though, making this
>       description misleading.  'ours' and 'octopus' merges have strictly
>       enforced index==HEAD for a while, and the commit previous to this
>       one made 'recursive' do so as well.
>
>     * If someone did a three-way content merge on a specific file using
>       versions from the relevant commits and staged it prior to running
>       merge, then that path would technically satisfy the exception listed
>       in git-merge.txt.  unpack-trees.c would still error out on the path,
>       though, because it defers the three-way content merge logic to other
>       parts of the code (resolve, octopus, or recursive) and has no way of
>       checking whether the index entry from before the merge will match
>       the end result of the merge.
>
>     * The exception as implemented in unpack-trees actually only checked
>       that the index matched the MERGE_HEAD version of the file and that
>       HEAD matched the merge base.  Assuming no renames, that would indeed
>       provide cases where the index matches the end result we'd get from a
>       merge.  But renames means unpack-trees is checking that it instead
>       matches something other than what the final result will be, risking
>       either erroring out when we shouldn't need to, or not erroring out
>       when we should and overwriting the user's staged changes.
>
> In addition to the wording behind this exception being misleading, it is
> also somewhat surprising to see how many times the code for the special
> cases were wrong or the check to make sure the index matched head was
> forgotten altogether:
>
> * Prior to commit ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05),
>   there were many cases where an unclean index entry was allowed (look for
>   merged_entry_allow_dirty()); it appears that in those cases, the merge
>   would have simply overwritten staged changes with the result of the
>   merge.  Thus, the merge result would have been correct, but the user's
>   uncommitted changes could be thrown away without warning.
>
> * Prior to commit 160252f81626 ("git-merge-ours: make sure our index
>   matches HEAD", 2005-11-03), the 'ours' merge strategy did not check
>   whether the index matched HEAD.  If it didn't, the resulting merge
>   would include all the staged changes, and thus wasn't really an 'ours'
>   strategy.
>
> * Prior to commit 3ec62ad9ffba ("merge-octopus: abort if index does not
>   match HEAD", 2016-04-09), 'octopus' merges did not check whether the
>   index matched HEAD, also resulting in any staged changes from before
>   the commit silently being folded into the resulting merge.  commit
>   a6ee883b8eb5 ("t6044: new merge testcases for when index doesn't match
>   HEAD", 2016-04-09) was also added at the same time to try to test to
>   make sure all strategies did the necessary checking for the requirement
>   that the index match HEAD.  Sadly, it didn't catch all the cases, as
>   evidenced by the remainder of this list...
>
> * Prior to commit 65170c07d466 ("merge-recursive: avoid incorporating
>   uncommitted changes in a merge", 2017-12-21), merge-recursive simply
>   relied on unpack_trees() to do the necessary check, but in one special
>   case it avoided calling unpack_trees() entirely and accidentally ended
>   up silently including any staged changes from before the merge in the
>   resulting merge commit.
>
> * The commit immediately before this one in this series noted that the
>   exceptions were written in a way that assumed no renames, making it
>   unsafe for merge-recursive to use.  merge-recursive was modified to
>   use its own check to enforce that index==HEAD.
>
> This history makes it very tempting to go into builtin/merge.c and replace
> the comment that strategies must enforce that index matches HEAD with code
> that just enforces it.  At this point, that would only affect the
> 'resolve' strategy; all other strategies have each been modified to
> manually enforce it.

I'm curious if anyone has comments on this last paragraph above.
Would anyone object to strictly enforcing index matches HEAD before
all types of merges?

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0
@ 2022-10-03 17:26  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-03 17:26 UTC (permalink / raw)
  To: git; +Cc: git-packagers

The latest feature release Git v2.38.0 is now available at the
usual places.  It is comprised of 699 non-merge commits since
v2.37.0, contributed by 92 people, 24 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.38.0'
tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta,
  Goss Geppert, Hubert Bossot, Ilya K, Ingy dot Net, Jacob Stopak,
  Julien Rouhaud, Kilian Kilger, Lana Deere, Manuel Boni, Matthew
  Klein, Miaoqian Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier,
  Richard Oliver, and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alexander Shopov, Alex Henrie, Arthur Milchior,
  Bagas Sanjaya, brian m. carlson, Calvin Wan, Carlo Marcelo
  Arenas Belón, Christian Couder, Christoph Reiter, Derrick
  Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah
  Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Fangyi
  Zhou, Felipe Contreras, Fernando Ramos, Glen Choo, Han Xin,
  Hariom Verma, Jacob Keller, Jaydeep Das, Jean-Noël Avila,
  Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John
  Cai, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,
  Justin Donnelly, Kyle Zhao, Lessley Dennington, Li Linchao,
  Linus Torvalds, Martin Ågren, Matheus Tavares, Matthew John
  Cheetham, Michael J Gruber, Øystein Walle, Peter Krefting,
  Philip Oakley, Philippe Blain, Phillip Szelat, Phillip Wood,
  Ralf Thielow, Randall S. Becker, Renato Botelho, René Scharfe,
  Shaoxuan Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks,
  Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
  Victoria Dye, Yi-Jyun Pan, ZheNing Hu, and 依云.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes
=======================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (5):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values
      pack-bitmap: improve grammar of "xor chain" error message
      l10n: fr: don't say that merge is "the default strategy"
      l10n: es: update translation

Alexander Shopov (3):
      l10n: bg.po: Updated Bulgarian translation (5482t)
      l10n: bg.po: Updated Bulgarian translation (5484t)
      l10n: bg.po: Updated Bulgarian translation (5484t)

Anthony Delannoy (1):
      preload-index: fix memleak

Bagas Sanjaya (3):
      l10n: po-id for 2.38 (round 1)
      l10n: po-id for 2.38 (round 2)
      l10n: po-id for 2.38 (round 3)

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (51):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04
      pack-bitmap: remove trace2 region from hot path

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Emir SARI (3):
      l10n: tr: Update translations for v2.38.0 round #1
      l10n: tr: v2.38.0 round 2
      l10n: tr: v2.38.0 3rd round

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (3):
      help: fix doubled words in explanation for developer interfaces
      l10n: zh_CN v2.38.0 rounds 1 & 2
      l10n: zh_CN: 2.38.0 round 3

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Hubert Bossot (1):
      l10n: fr: The word 'branche' is only feminine

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jean-Noël Avila (3):
      l10n: fr: v2.38 round 1
      l10n: fr: v2.38.0 round 2
      l10n: fr: v2.38.0 round 3

Jeff King (64):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf
      list-objects-filter: initialize sub-filter structs

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Jordi Mas (3):
      l10n: Update Catalan translation
      l10n: Update Catalan translation
      l10n: Update Catalan translation

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (45):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1
      Git 2.38-rc2
      Git 2.38

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (4):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`
      cmd-list.perl: fix identifying man sections

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (5482t0f0u)
      l10n: sv.po: Update Swedish translation (5484t0f0u)

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

Ralf Thielow (2):
      l10n: de.po: update German translation
      l10n: de.po: update German translation

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

Yi-Jyun Pan (1):
      l10n: zh_TW.po: Git 2.38.0, round 3

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #02; Fri, 8)
@ 2022-07-09 20:36  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-09 20:36 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.

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/

--------------------------------------------------
[New Topics]

* ab/cocci-unused (2022-07-06) 6 commits
 - cocci: generalize "unused" rule to cover more than "strbuf"
 - cocci: add and apply a rule to find "unused" strbufs
 - cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
 - cocci: add a "coccicheck-test" target and test *.cocci rules
 - Makefile & .gitignore: ignore & clean "git.res", not "*.res"
 - Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS

 Add Coccinelle rules to detect the pattern of initializing and then
 finalizing a structure without using it in between at all, which
 happens after code restructuring and the compilers fail to
 recognize as an unused varilable.

 Will merge to 'next'.
 source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>


* jk/clone-unborn-confusion (2022-07-07) 3 commits
 - clone: use remote branch if it matches default HEAD
 - clone: propagate empty remote HEAD even with other branches
 - clone: drop extra newline from warning message

 "git clone" from a repository with some ref whose HEAD is unborn
 did not set the HEAD in the resulting repository correctly, which
 has been corrected.

 Will merge to 'next'?
 source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>


* ac/bitmap-lookup-table (2022-07-06) 6 commits
 - p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
 - bitmap-lookup-table: add performance tests for lookup table
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Will merge to 'next'?
 source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>


* bc/nettle-sha256 (2022-07-07) 1 commit
 - sha256: add support for Nettle

 Support for libnettle as SHA256 implementation has been added.

 Expecting a reroll.
 cf. <YsTgmv+h2SFFFMga@tapette.crustytoothpaste.net>
 source: <20220705230518.713218-1-sandals@crustytoothpaste.net>


* jc/builtin-mv-move-array (2022-07-06) 1 commit
 - builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()

 Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
 macro, which would improve maintainability and readability.

 Will merge to 'next'?
 source: <xmqqy1x531vp.fsf@gitster.g>


* jd/gpg-interface-trust-level-string (2022-07-08) 1 commit
 - gpg-interface: add function for converting trust level to string

 The code to convert between GPG trust level strings and internal
 constants we use to represent them have been cleaned up.

 Will merge to 'next'.
 source: <pull.1281.v2.git.1657279447515.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
 - git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'next'.
 source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-07) 5 commits
 - SQUASH???
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 source: <20220707161554.6900-1-siddharthasthana31@gmail.com>


* fr/vimdiff-layout-fix (2022-07-08) 1 commit
 - vimdiff: make layout engine more robust against user vim settings

 source: <20220708181024.45839-1-greenfoo@u92.eu>

--------------------------------------------------
[Graduated to 'master']

* js/add-i-delete (2022-06-28) 1 commit
  (merged to 'next' on 2022-06-28 at 8ac04bfd24)
 + add --interactive: allow `update` to stage deleted files

 Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
 correctly record a removed file to the index, which was fixed.
 source: <pull.1273.git.1656454964378.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ll/curl-accept-language (2022-06-13) 2 commits
 - PREP??? give initializer to rpc_state
 - remote-curl: send Accept-Language header to server

 source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ds/git-rebase-doc-markup (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-08 at 24a0b80b71)
 + git-rebase.txt: use back-ticks consistently

 References to commands-to-be-typed-literally in "git rebase"
 documentation mark-up have been corrected.

 Will merge to 'master'.
 source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>


* ds/rebase-update-ref (2022-06-28) 8 commits
 - rebase: add rebase.updateRefs config option
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend
 (this branch uses ds/branch-checked-out.)

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Expecting a reroll.
 cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
 source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>


* ds/vscode-settings (2022-06-27) 1 commit
  (merged to 'next' on 2022-07-02 at fcbd2e7aca)
 + vscode: improve tab size and wrapping

 Will merge to 'master'.
 source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>


* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
  (merged to 'next' on 2022-07-06 at d7494fbdef)
 + pack-objects.h: remove outdated pahole results

 Comment fix.

 Will merge to 'master'.
 source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>


* ab/leakfix (2022-07-01) 11 commits
 - pull: fix a "struct oid_array" memory leak
 - cat-file: fix a common "struct object_context" memory leak
 - gc: fix a memory leak
 - checkout: avoid "struct unpack_trees_options" leak
 - merge-file: fix memory leaks on error path
 - merge-file: refactor for subsequent memory leak fix
 - cat-file: fix a memory leak in --batch-command mode
 - revert: free "struct replay_opts" members
 - submodule.c: free() memory from xgetcwd()
 - clone: fix memory leak in wanted_peer_refs()
 - check-ref-format: fix trivial memory leak

 Plug various memory leaks.

 Will merge to 'next'.
 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
 - test-tool delta: fix a memory leak
 - test-tool ref-store: fix a memory leak
 - test-tool bloom: fix memory leaks
 - test-tool json-writer: fix memory leaks
 - test-tool regex: call regfree(), fix memory leaks
 - test-tool urlmatch-normalization: fix a memory leak
 - test-tool {dump,scrap}-cache-tree: fix memory leaks
 - test-tool path-utils: fix a memory leak
 - test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.

 Will merge to 'next'.
 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-06 at 627c51773c)
 + t6429: fix use of non-existent function

 A test fix.

 Will merge to 'master'.
 source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
 - submodule--helper: remove display path helper
 - submodule--helper update: use --super-prefix
 - submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 - submodule--helper: use correct display path helper
 - submodule--helper: don't recreate recursive prefix
 - submodule--helper update: use display path helper
 - submodule--helper tests: add missing "display path" coverage
 - Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
 (this branch uses ab/submodule-cleanup.)

 Another step to rewrite more parts of "git submodule" in C.

 Will merge to 'next'.
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-08 at cef32db0b6)
 + commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.

 Will merge to 'master'.
 source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>


* ll/ls-files-tests-update (2022-07-06) 1 commit
  (merged to 'next' on 2022-07-06 at 444d1eabd0)
 + ls-files: update test style

 Test update.

 Will merge to 'master'.
 source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* sy/mv-out-of-cone (2022-07-01) 8 commits
  (merged to 'next' on 2022-07-08 at 654970fdb7)
 + mv: add check_dir_in_index() and solve general dir check issue
 + mv: use flags mode for update_mode
 + mv: check if <destination> exists in index to handle overwriting
 + mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
 + mv: decouple if/else-if checks using goto
 + mv: update sparsity after moving from out-of-cone to in-cone
 + t1092: mv directory from out-of-cone to in-cone
 + t7002: add tests for moving out-of-cone file/directory

 "git mv A B" in a sparsely populated working tree can be asked to
 move a path between directories that are "in cone" (i.e. expected
 to be materialized in the working tree) and "out of cone"
 (i.e. expected to be hidden).  The handling of such cases has been
 improved.

 Will merge to 'master'.
 source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>


* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
 . trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Breaks tests in hx/unpack-streaming with an interesting interaction.
 source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>


* cl/grep-max-count (2022-06-22) 1 commit
  (merged to 'next' on 2022-07-08 at 646199ab4c)
 + grep: add --max-count command line option

 "git grep -m<max-hits>" is a way to limit the hits shown per file.

 Will merge to 'master'.
 source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>


* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
  (merged to 'next' on 2022-07-02 at e25dbe8cfb)
 + revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis

 Documentation mark-up fix.

 Will merge to 'master'.
 source: <YrOmsA04FZae89be@coredump.intra.peff.net>


* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
  (merged to 'next' on 2022-07-08 at 1075452f32)
 + rev-parse: documentation adjustment - mention remote tracking with @{u}

 Doc update.

 Will merge to 'master'.
 source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>


* en/merge-tree (2022-06-22) 17 commits
  (merged to 'next' on 2022-07-08 at a29b4896ab)
 + git-merge-tree.txt: add a section on potentional usage mistakes
 + merge-tree: add a --allow-unrelated-histories flag
 + merge-tree: allow `ls-files -u` style info to be NUL terminated
 + merge-ort: optionally produce machine-readable output
 + merge-ort: store more specific conflict information
 + merge-ort: make `path_messages` a strmap to a string_list
 + merge-ort: store messages in a list, not in a single strbuf
 + merge-tree: provide easy access to `ls-files -u` style info
 + merge-tree: provide a list of which files have conflicts
 + merge-ort: remove command-line-centric submodule message from merge-ort
 + merge-ort: provide a merge_get_conflicted_files() helper function
 + merge-tree: support including merge messages in output
 + merge-ort: split out a separate display_update_messages() function
 + merge-tree: implement real merges
 + merge-tree: add option parsing and initial shell for real merge function
 + merge-tree: move logic for existing merge into new function
 + merge-tree: rename merge_trees() to trivial_merge_trees()

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 Will merge to 'master'.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 6f639750a1)
 + i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: labels that are shown in
 front of these messages.

 Will merge to 'master'.
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-06 at 2776bed385)
 + t5510: replace 'origin' with URL more carefully

 Test fix.

 Will merge to 'master'.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-02 at 0fe8b80a3e)
 + combine-diff: abort if --output is given
 + combine-diff: abort if --ignore-matching-lines is given

 Certain diff options are currently ignored when combined-diff is
 shown; mark them as incompatible with the feature.

 Will merge to 'master'.
 source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-06) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Getting closer to finish?
 cf. <220705.86sfng9c5a.gmgdl@evledraar.gmail.com>
 source: <pull.1262.v5.git.1657002760815.gitgitgadget@gmail.com>


* ab/test-quoting-fix (2022-06-30) 3 commits
  (merged to 'next' on 2022-07-06 at 0aa78fd9db)
 + config tests: fix harmless but broken "rm -r" cleanup
 + test-lib.sh: fix prepend_var() quoting issue
 + tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.

 Will merge to 'master'.
 source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>


* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
 - merge-ort: fix issue with dual rename and add/add conflict
 - merge-ort: shuffle the computation and cleanup of potential collisions
 - merge-ort: make a separate function for freeing struct collisions
 - merge-ort: small cleanups of check_for_directory_rename
 - t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Will merge to 'next'.
 source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>


* cr/setup-bug-typo (2022-06-17) 1 commit
  (merged to 'next' on 2022-06-17 at 8834ffe0ab)
 + setup: fix function name in a BUG() message

 Typofix in a BUG() message.

 Will cook in 'next'.
 source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at 8aa1f94fad)
 + send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".

 Will merge to 'master'.
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at d4e49ad22a)
 + remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspecs.

 Will merge to 'master'.
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 Expecting a reroll.
 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
  (merged to 'next' on 2022-06-16 at ce0712a74c)
 + is_promisor_object(): walk promisor packs in pack-order

 Collection of what is referenced by objects in promisor packs have
 been optimized to inspect these objects in the in-pack order.

 Will cook in 'next'.
 source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 599ed6fb84)
 + mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary for the purpose
 of creating the tree object(s) from its input.

 Will merge to 'master'.
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* pb/diff-doc-raw-format (2022-06-13) 3 commits
  (merged to 'next' on 2022-07-02 at 198480cbc6)
 + diff-index.txt: update raw output format in examples
 + diff-format.txt: correct misleading wording
 + diff-format.txt: dst can be 0* SHA-1 when path is deleted, too

 Update "git diff/log --raw" format documentation.

 Will merge to 'master'.
 source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>


* rs/archive-with-internal-gzip (2022-06-15) 6 commits
  (merged to 'next' on 2022-06-17 at ab5af6acd1)
 + archive-tar: use internal gzip by default
 + archive-tar: use OS_CODE 3 (Unix) for internal gzip
 + archive-tar: add internal gzip implementation
 + archive-tar: factor out write_block()
 + archive: rename archiver data field to filter_command
 + archive: update format documentation

 Teach "git archive" to (optionally and then by default) avoid
 spawning an external "gzip" process when creating ".tar.gz" (and
 ".tgz") archives.

 Will cook in 'next'.
 source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>


* ds/branch-checked-out (2022-06-21) 7 commits
  (merged to 'next' on 2022-06-21 at e42bc4566f)
 + branch: drop unused worktrees variable
 + fetch: stop passing around unused worktrees variable
  (merged to 'next' on 2022-06-17 at c881874257)
 + branch: fix branch_checked_out() leaks
 + branch: use branch_checked_out() when deleting refs
 + fetch: use new branch_checked_out() and add tests
 + branch: check for bisects and rebases
 + branch: add branch_checked_out() helper
 (this branch is used by ds/rebase-update-ref.)

 Introduce a helper to see if a branch is already being worked on
 (hence should not be newly checked out in a working tree), which
 performs much better than the existing find_shared_symref() to
 replace many uses of the latter.

 Will cook in 'next'.
 source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* ab/submodule-cleanup (2022-06-28) 12 commits
  (merged to 'next' on 2022-07-08 at 6f3886aa03)
 + git-sh-setup.sh: remove "say" function, change last users
 + git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 + submodule--helper: eliminate internal "--update" option
 + submodule--helper: understand --checkout, --merge and --rebase synonyms
 + submodule--helper: report "submodule" as our name in some "-h" output
 + submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 + submodule update: remove "-v" option
 + submodule--helper: have --require-init imply --init
 + git-submodule.sh: remove unused top-level "--branch" argument
 + git-submodule.sh: make the "$cached" variable a boolean
 + git-submodule.sh: remove unused $prefix variable
 + git-submodule.sh: remove unused sanitize_submodule_env()
 (this branch is used by gc/submodule-use-super-prefix.)

 Further preparation to turn git-submodule.sh into a builtin.

 Will merge to 'master'.
 source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>


* jc/resolve-undo (2022-06-09) 1 commit
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will cook in 'next'.
 source: <xmqqfskdieqz.fsf@gitster.g>


* ab/build-gitweb (2022-06-28) 8 commits
 - gitweb/Makefile: add a "NO_GITWEB" parameter
 - Makefile: build 'gitweb' in the default target
 - gitweb/Makefile: include in top-level Makefile
 - gitweb: remove "test" and "test-installed" targets
 - gitweb/Makefile: prepare to merge into top-level Makefile
 - gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 - gitweb/Makefile: add a $(GITWEB_ALL) variable
 - gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Will merge to 'next'?
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
 - tests: don't assume a .git/info for .git/info/sparse-checkout
 - tests: don't assume a .git/info for .git/info/exclude
 - tests: don't assume a .git/info for .git/info/refs
 - tests: don't assume a .git/info for .git/info/attributes
 - tests: don't assume a .git/info for .git/info/grafts
 - tests: don't depend on template-created .git/branches
 - t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'next'?
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* ac/bitmap-format-doc (2022-06-16) 3 commits
  (merged to 'next' on 2022-06-16 at 5591d11601)
 + bitmap-format.txt: add information for trailing checksum
 + bitmap-format.txt: fix some formatting issues
 + bitmap-format.txt: feed the file to asciidoc to generate html

 Adjust technical/bitmap-format to be formatted by AsciiDoc, and
 add some missing information to the documentation.

 Will cook in 'next'.
 source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
  (merged to 'next' on 2022-07-08 at 4eb375ec2f)
 + unpack-objects: use stream_loose_object() to unpack large objects
 + core doc: modernize core.bigFileThreshold documentation
 + object-file.c: add "stream_loose_object()" to handle large object
 + object-file.c: factor out deflate part of write_loose_object()
 + object-file.c: refactor write_loose_object() to several steps
 + unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'master'.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-07) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: learn `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.
 source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-08 at fa0e71ba39)
 + dir: minor refactoring / clean-up
 + dir: traverse into repository

 In a non-bare repository, the behavior of Git when the
 core.worktree configuration variable points at a directory that has
 a repository as its subdirectory, regressed in Git 2.27 days.

 Will merge to 'master'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #04; Wed, 13)
@ 2022-07-14  1:32  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-14  1:32 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.

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']

* ab/test-quoting-fix (2022-06-30) 3 commits
  (merged to 'next' on 2022-07-06 at 0aa78fd9db)
 + config tests: fix harmless but broken "rm -r" cleanup
 + test-lib.sh: fix prepend_var() quoting issue
 + tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.
 source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>


* cl/grep-max-count (2022-06-22) 1 commit
  (merged to 'next' on 2022-07-08 at 646199ab4c)
 + grep: add --max-count command line option

 "git grep -m<max-hits>" is a way to limit the hits shown per file.
 source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>


* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 6f639750a1)
 + i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: labels that are shown in
 front of these messages.
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/git-rebase-doc-markup (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-08 at 24a0b80b71)
 + git-rebase.txt: use back-ticks consistently

 References to commands-to-be-typed-literally in "git rebase"
 documentation mark-up have been corrected.
 source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-06 at 2776bed385)
 + t5510: replace 'origin' with URL more carefully

 Test fix.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
  (merged to 'next' on 2022-07-06 at 627c51773c)
 + t6429: fix use of non-existent function

 A test fix.
 source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at d4e49ad22a)
 + remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspec.
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* ll/ls-files-tests-update (2022-07-06) 1 commit
  (merged to 'next' on 2022-07-06 at 444d1eabd0)
 + ls-files: update test style

 Test update.
 source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
  (merged to 'next' on 2022-07-08 at 599ed6fb84)
 + mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary for the purpose
 of creating the tree object(s) from its input.
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
  (merged to 'next' on 2022-07-06 at d7494fbdef)
 + pack-objects.h: remove outdated pahole results

 Comment fix.
 source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>


* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
  (merged to 'next' on 2022-07-08 at 1075452f32)
 + rev-parse: documentation adjustment - mention remote tracking with @{u}

 Doc update.
 source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
  (merged to 'next' on 2022-07-08 at 8aa1f94fad)
 + send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>

--------------------------------------------------
[New Topics]

* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
  (merged to 'next' on 2022-07-13 at 9db5235d01)
 + diff-files: move misplaced cleanup label

 An earlier attempt to plug leaks placed a clean-up label to jump to
 at a bogus place, which as been corrected.

 Will merge to 'master'.
 source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>


* cw/submodule-merge-messages (2022-07-13) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.

 Needs review.
 source: <20220712231935.2979727-1-calvinwan@google.com>


* ds/doc-allowlist (2022-07-13) 3 commits
 - *: use allowlist and denylist
 - t/*: use allowlist
 - Documentation: use allowlist and denylist

 Mechanical replacement of s/whitelist/allowlist/.

 Expecting a reroll.
 source: <pull.1274.git.1657718450.gitgitgadget@gmail.com>


* js/vimdiff-quotepath-fix (2022-07-13) 2 commits
 - SQUASH???
 - mergetool(vimdiff): allow paths to contain spaces again

 Variable quoting fix in the vimdiff driver of "git mergetool"

 Expecting a reroll.
 cf. <xmqqa69cabhq.fsf@gitster.g>
 source: <pull.1287.git.1657726969774.gitgitgadget@gmail.com>


* mt/checkout-count-fix (2022-07-13) 3 commits
 - checkout: fix two bugs on the final count of updated entries
 - checkout: show bug about failed entries being included in final report
 - checkout: document bug where delayed checkout counts entries twice

 "git checkout" miscounted the paths it updated, which has been
 corrected.

 Will merge to 'next'?
 source: <cover.1657685948.git.matheus.bernardino@usp.br>


* tb/commit-graph-genv2-upgrade-fix (2022-07-13) 3 commits
 - commit-graph: fix corrupt upgrade from generation v1 to v2
 - commit-graph: introduce `repo_find_commit_pos_in_graph()`
 - t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Needs review.
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Needs review.
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>

--------------------------------------------------
[Stalled]

* ll/curl-accept-language (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at 076aba7421)
 + remote-curl: send Accept-Language header to server

 Earlier, HTTP transport clients learned to tell the server side
 what locale they are in by sending Accept-Language HTTP header, but
 this was done only for some requests but not others.

 Will merge to 'master'.
 source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* rs/cocci-array-copy (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-13 at f21dec0f71)
 + cocci: avoid normalization rules for memcpy

 A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
 macro has been improved.

 Will merge to 'master'.
 source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>


* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 1e14685680)
 + multi-pack-index: simplify handling of unknown --options

 The way "git multi-pack" uses parse-options API has been improved.

 Will merge to 'master'.
 source: <20220710151645.GA2038@szeder.dev>


* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at d1521724db)
 + ref-filter: disable save_commit_buffer while traversing

 Will merge to 'master'.
 source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>


* ab/cocci-unused (2022-07-06) 6 commits
  (merged to 'next' on 2022-07-11 at 7fa60d2a5b)
 + cocci: generalize "unused" rule to cover more than "strbuf"
 + cocci: add and apply a rule to find "unused" strbufs
 + cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
 + cocci: add a "coccicheck-test" target and test *.cocci rules
 + Makefile & .gitignore: ignore & clean "git.res", not "*.res"
 + Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS

 Add Coccinelle rules to detect the pattern of initializing and then
 finalizing a structure without using it in between at all, which
 happens after code restructuring and the compilers fail to
 recognize as an unused varilable.

 Will merge to 'master'.
 source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>


* jk/clone-unborn-confusion (2022-07-11) 4 commits
  (merged to 'next' on 2022-07-13 at a7ae8cb4b5)
 + clone: move unborn head creation to update_head()
 + clone: use remote branch if it matches default HEAD
 + clone: propagate empty remote HEAD even with other branches
 + clone: drop extra newline from warning message

 "git clone" from a repository with some ref whose HEAD is unborn
 did not set the HEAD in the resulting repository correctly, which
 has been corrected.

 Will merge to 'master'.
 source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>


* ac/bitmap-lookup-table (2022-07-06) 6 commits
 - p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
 - bitmap-lookup-table: add performance tests for lookup table
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Waiting for a more thorough review.
 cf. <Ys4DjW9JjQFx5Bhb@nand.local>
 source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>


* bc/nettle-sha256 (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at cf9595d8ca)
 + sha256: add support for Nettle

 Support for libnettle as SHA256 implementation has been added.

 Will merge to 'master'.
 source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>


* jc/builtin-mv-move-array (2022-07-09) 1 commit
  (merged to 'next' on 2022-07-09 at 0d3b3f62e5)
 + builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()

 Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
 macro, which would improve maintainability and readability.

 Will merge to 'master'.
 source: <xmqq4jzpu4xp.fsf_-_@gitster.g>


* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 7b3cca73a8)
 + gpg-interface: add function for converting trust level to string

 The code to convert between GPG trust level strings and internal
 constants we use to represent them have been cleaned up.

 Will merge to 'master'.
 source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-13) 4 commits
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Will merge to 'next'?
 source: <20220712160634.213956-1-siddharthasthana31@gmail.com>


* fr/vimdiff-layout-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-09 at d8461bd236)
 + vimdiff: make layout engine more robust against user vim settings

 Recent update to vimdiff layout code has been made more robust
 against different end-user vim settings.

 Will merge to 'master'.
 source: <20220708181024.45839-1-greenfoo@u92.eu>


* ds/rebase-update-ref (2022-07-12) 13 commits
 - sequencer: notify user of --update-refs activity
 - sequencer: ignore HEAD ref under --update-refs
 - rebase: add rebase.updateRefs config option
 - sequencer: rewrite update-refs as user edits todo list
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend
 - t2407: test bisect and rebase as black-boxes
 - Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Expecting a reroll.
 cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
 source: <pull.1247.v4.git.1657631225.gitgitgadget@gmail.com>


* ab/leakfix (2022-07-01) 11 commits
  (merged to 'next' on 2022-07-11 at 0b107fffcf)
 + pull: fix a "struct oid_array" memory leak
 + cat-file: fix a common "struct object_context" memory leak
 + gc: fix a memory leak
 + checkout: avoid "struct unpack_trees_options" leak
 + merge-file: fix memory leaks on error path
 + merge-file: refactor for subsequent memory leak fix
 + cat-file: fix a memory leak in --batch-command mode
 + revert: free "struct replay_opts" members
 + submodule.c: free() memory from xgetcwd()
 + clone: fix memory leak in wanted_peer_refs()
 + check-ref-format: fix trivial memory leak

 Plug various memory leaks.

 Will merge to 'master'.
 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
  (merged to 'next' on 2022-07-11 at db7a724694)
 + test-tool delta: fix a memory leak
 + test-tool ref-store: fix a memory leak
 + test-tool bloom: fix memory leaks
 + test-tool json-writer: fix memory leaks
 + test-tool regex: call regfree(), fix memory leaks
 + test-tool urlmatch-normalization: fix a memory leak
 + test-tool {dump,scrap}-cache-tree: fix memory leaks
 + test-tool path-utils: fix a memory leak
 + test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.

 Will merge to 'master'.
 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
  (merged to 'next' on 2022-07-11 at 0d9cf172f9)
 + submodule--helper: remove display path helper
 + submodule--helper update: use --super-prefix
 + submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 + submodule--helper: use correct display path helper
 + submodule--helper: don't recreate recursive prefix
 + submodule--helper update: use display path helper
 + submodule--helper tests: add missing "display path" coverage
 + Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
 (this branch uses ab/submodule-cleanup.)

 Another step to rewrite more parts of "git submodule" in C.

 Will merge to 'master'.
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
  (merged to 'next' on 2022-07-13 at 4489696814)
 + t5330: remove run_with_limited_processses()
  (merged to 'next' on 2022-07-08 at cef32db0b6)
 + commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.

 Will merge to 'master'.
 source: <cover.1656593279.git.hanxin.hx@bytedance.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* sy/mv-out-of-cone (2022-07-01) 8 commits
  (merged to 'next' on 2022-07-08 at 654970fdb7)
 + mv: add check_dir_in_index() and solve general dir check issue
 + mv: use flags mode for update_mode
 + mv: check if <destination> exists in index to handle overwriting
 + mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
 + mv: decouple if/else-if checks using goto
 + mv: update sparsity after moving from out-of-cone to in-cone
 + t1092: mv directory from out-of-cone to in-cone
 + t7002: add tests for moving out-of-cone file/directory

 "git mv A B" in a sparsely populated working tree can be asked to
 move a path between directories that are "in cone" (i.e. expected
 to be materialized in the working tree) and "out of cone"
 (i.e. expected to be hidden).  The handling of such cases has been
 improved.

 Will merge to 'master'.
 source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>


* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
 . trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Breaks tests in hx/unpack-streaming with an interesting interaction.
 source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>


* en/merge-tree (2022-06-22) 17 commits
  (merged to 'next' on 2022-07-08 at a29b4896ab)
 + git-merge-tree.txt: add a section on potentional usage mistakes
 + merge-tree: add a --allow-unrelated-histories flag
 + merge-tree: allow `ls-files -u` style info to be NUL terminated
 + merge-ort: optionally produce machine-readable output
 + merge-ort: store more specific conflict information
 + merge-ort: make `path_messages` a strmap to a string_list
 + merge-ort: store messages in a list, not in a single strbuf
 + merge-tree: provide easy access to `ls-files -u` style info
 + merge-tree: provide a list of which files have conflicts
 + merge-ort: remove command-line-centric submodule message from merge-ort
 + merge-ort: provide a merge_get_conflicted_files() helper function
 + merge-tree: support including merge messages in output
 + merge-ort: split out a separate display_update_messages() function
 + merge-tree: implement real merges
 + merge-tree: add option parsing and initial shell for real merge function
 + merge-tree: move logic for existing merge into new function
 + merge-tree: rename merge_trees() to trivial_merge_trees()

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 Will merge to 'master'.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-13) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'next'?
 source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>


* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
  (merged to 'next' on 2022-07-11 at 5f8dadf87b)
 + merge-ort: fix issue with dual rename and add/add conflict
 + merge-ort: shuffle the computation and cleanup of potential collisions
 + merge-ort: make a separate function for freeing struct collisions
 + merge-ort: small cleanups of check_for_directory_rename
 + t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Will merge to 'master'.
 source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 Expecting a reroll.
 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* ab/submodule-cleanup (2022-06-28) 12 commits
  (merged to 'next' on 2022-07-08 at 6f3886aa03)
 + git-sh-setup.sh: remove "say" function, change last users
 + git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 + submodule--helper: eliminate internal "--update" option
 + submodule--helper: understand --checkout, --merge and --rebase synonyms
 + submodule--helper: report "submodule" as our name in some "-h" output
 + submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 + submodule update: remove "-v" option
 + submodule--helper: have --require-init imply --init
 + git-submodule.sh: remove unused top-level "--branch" argument
 + git-submodule.sh: make the "$cached" variable a boolean
 + git-submodule.sh: remove unused $prefix variable
 + git-submodule.sh: remove unused sanitize_submodule_env()
 (this branch is used by gc/submodule-use-super-prefix.)

 Further preparation to turn git-submodule.sh into a builtin.

 Will merge to 'master'.
 source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>


* jc/resolve-undo (2022-07-11) 2 commits
  (merged to 'next' on 2022-07-13 at b9ef9482e8)
 + fsck: do not dereference NULL while checking resolve-undo data
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will merge to 'master'.
 source: <xmqq35f7kzad.fsf@gitster.g>


* ab/build-gitweb (2022-06-28) 8 commits
  (merged to 'next' on 2022-07-11 at 731e354ff0)
 + gitweb/Makefile: add a "NO_GITWEB" parameter
 + Makefile: build 'gitweb' in the default target
 + gitweb/Makefile: include in top-level Makefile
 + gitweb: remove "test" and "test-installed" targets
 + gitweb/Makefile: prepare to merge into top-level Makefile
 + gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 + gitweb/Makefile: add a $(GITWEB_ALL) variable
 + gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.

 Will merge to 'master'.
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
  (merged to 'next' on 2022-07-11 at afab6c1918)
 + tests: don't assume a .git/info for .git/info/sparse-checkout
 + tests: don't assume a .git/info for .git/info/exclude
 + tests: don't assume a .git/info for .git/info/refs
 + tests: don't assume a .git/info for .git/info/attributes
 + tests: don't assume a .git/info for .git/info/grafts
 + tests: don't depend on template-created .git/branches
 + t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'master'.
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
  (merged to 'next' on 2022-07-08 at 4eb375ec2f)
 + unpack-objects: use stream_loose_object() to unpack large objects
 + core doc: modernize core.bigFileThreshold documentation
 + object-file.c: add "stream_loose_object()" to handle large object
 + object-file.c: factor out deflate part of write_loose_object()
 + object-file.c: refactor write_loose_object() to several steps
 + unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'master'.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-07) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: learn `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Expecting a reroll.
 cf. <kl6lpmia55ys.fsf@chooglen-macbookpro.roam.corp.google.com>
 source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
  (merged to 'next' on 2022-07-08 at fa0e71ba39)
 + dir: minor refactoring / clean-up
 + dir: traverse into repository

 In a non-bare repository, the behavior of Git when the
 core.worktree configuration variable points at a directory that has
 a repository as its subdirectory, regressed in Git 2.27 days.

 Will merge to 'master'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc2
@ 2022-09-27 21:10  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-27 21:10 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.38.0-rc2 is now available for testing at
the usual places.  It is comprised of 673 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].

The manpage generation problem in -rc1 has been corrected.  Other
than that, there aren't that many changes since -rc1.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.38.0-rc2' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
  Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
  Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
  Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
  and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
  Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
  Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
  Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
  Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
  Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
  Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
  Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
  Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
  Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
  Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (3):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values
      pack-bitmap: improve grammar of "xor chain" error message

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (51):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04
      pack-bitmap: remove trace2 region from hot path

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (1):
      help: fix doubled words in explanation for developer interfaces

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (64):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf
      list-objects-filter: initialize sub-filter structs

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (44):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1
      Git 2.38-rc2

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (4):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`
      cmd-list.perl: fix identifying man sections

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc1
@ 2022-09-22  0:11  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-22  0:11 UTC (permalink / raw)
  To: git; +Cc: git-packagers

A release candidate Git v2.38.0-rc1 is now available for testing at
the usual places.  It is comprised of 668 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.38.0-rc1' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
  Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
  Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
  Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
  and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
  Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
  Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
  Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
  Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
  Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
  Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
  Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
  Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
  Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
  Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
  Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
  Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
  Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
  and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes performs poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a safe.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from" option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.

 * The "scalar" addition from Microsoft is now part of the core Git
   installation.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path from a directory that is "in cone" to another directory
   that is "out of cone".  Handling of such a case has been improved.

 * The chainlint script for our tests has been revamped.


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help existing projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * A result from opendir() was leaking in the commit-graph expiration
   codepath, which has been plugged.
   (merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).

 * Just like we have coding guidelines, we now have guidelines for
   reviewers.
   (merge e01b851923 vd/doc-reviewing-guidelines later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Adam Dinwoodie (1):
      t1800: correct test to handle Cygwin

Alex Henrie (2):
      gc: don't translate literal commands
      builtin/diagnose.c: don't translate the two mode values

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (50):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Conners (1):
      reftable: use a pointer for pq_entry param

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (25):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion
      t: add skeleton chainlint.pl
      chainlint.pl: add POSIX shell lexical analyzer
      chainlint.pl: add POSIX shell parser
      chainlint.pl: add parser to validate tests
      chainlint.pl: add parser to identify test definitions
      chainlint.pl: validate test scripts in parallel
      chainlint.pl: don't require `return|exit|continue` to end with `&&`
      t/Makefile: apply chainlint.pl to existing self-tests
      chainlint.pl: don't require `&` background command to end with `&&`
      chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
      chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
      chainlint.pl: complain about loops lacking explicit failure handling
      chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
      t/chainlint: add more chainlint.pl self-tests
      test-lib: retire "lint harder" optimization hack
      test-lib: replace chainlint.sed with chainlint.pl
      t/Makefile: teach `make test` and `make prove` to run chainlint.pl
      t: retire unused chainlint.sed
      chainlint: colorize problem annotations and test delimiters

Fangyi Zhou (1):
      help: fix doubled words in explanation for developer interfaces

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (3):
      Documentation: fix various repeat word typos
      Documentation: clean up a few misspelled word typos
      Documentation: clean up various typos in technical docs

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (63):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension
      list-objects-filter: don't memset after releasing filter struct
      list-objects-filter: handle null default filter spec
      list-objects-filter: add and use initializers
      list-objects-filter: convert filter_spec to a strbuf

Johannes Schindelin (38):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules
      git help: special-case `scalar`
      scalar: implement the `help` subcommand

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (43):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0
      A bit more of remaining topics before -rc1
      Final batch before -rc1
      Git 2.38-rc1

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (3):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Miaoqian Lin (1):
      commit-graph: Fix missing closedir in expire_commit_graphs

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (30):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'
      t/Makefile: remove 'test-results' on 'make clean'

Shaoxuan Yuan (22):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index
      t7002: add tests for moving from in-cone to out-of-cone
      mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
      mv: free the with_slash in check_dir_in_index()
      mv: check if <destination> is a SKIP_WORKTREE_DIR
      mv: remove BOTH from enum update_mode
      mv: from in-cone to out-of-cone
      mv: cleanup empty WORKING_DIRECTORY
      advice.h: add advise_on_moving_dirty_path()
      mv: check overwrite for in-to-out move
      builtin/mv.c: fix possible segfault in add_slash()

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Todd Zullinger (2):
      docs: fix a few recently broken links
      api docs: link to html version of api-trace2

Victoria Dye (37):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check
      scalar: fix command documentation section header
      scalar: include in standard Git build & installation
      scalar: add to 'git help -a' command list
      scalar-clone: add test coverage
      t/perf: add Scalar performance tests
      t/perf: add 'GIT_PERF_USE_SCALAR' run option
      Documentation/technical: include Scalar technical doc
      diagnose.c: refactor to safely use 'd_type'
      Documentation: add ReviewingGuidelines
      diagnose: add to command-list.txt
      version: fix builtin linking & documentation

ZheNing Hu (2):
      ls-files: introduce "--format" option
      ls-files: fix black space in error message

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* What's in git.git (stable)
@ 2006-12-13 21:35  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-12-13 21:35 UTC (permalink / raw)
  To: git; +Cc: linux-kernel

We have a handful fixes on 'maint'; I will be cutting v1.4.4.3 by
the end of the week.

On the 'master' front, this round has many topics (most of which
have been cooking in the 'next' branch) merged since the last
announcement.

 - Johannes Schindelin's built-in shortlog is in.

 - Johannes Schindelin's built-in 'RCS merge replacement' is
   in.  Hopefully this would make merge-recursive more portable
   and faster.

 - Shawn Pearce and Johannes Schindelin spotted and fixed a few
   corner cases in merge-recursive.

 - Updates to gitk from Paul Mackerras to fix longstanding menu
   issues on Mac OS X.

 - Eric Wong fixed use of rerere in many places.

 - Eric also has quite a few fixes to git-svn.

 - Nico updated 'git-add' to really mean 'add contents', not
   'add to the set of tracked paths'.  Also updated was the
   documentation for 'git commit' to make it easier to teach new
   people after a long discussion.

 - Lars Hjemli taught 'git-branch' to rename branches.

 - Andy Parkins taught 'git-branch' to be colorful.

 - Robin Rosenberg improved cvsexportcommit for unusual
   pathnames.

 - 'git push $URL :refs/tags/that' (notice the colon) can be
   used to delete 'that' tag from the remote repository; this
   needs the latest git on both ends.

 - branch."master".{remote,merge} configuration items are set up
   by 'git-clone', thanks to Andy Parkins.

 - 'git-commit' gives 'diff --summary' output to remind mode
   changes and added/deleted files.

 - 'git-diff --numstat' matches 'git-apply --numstat' when
   talking about binary changes.

 - 'git-merge' is now a first class UI, not just a mere driver
   for strategies.

I am hoping that we can start a stabilization cycle for v1.5.0
based on what we have in 'master'.  The theme is "usability and
teachability".

Things that need to be done to complete what have been merged to
'master' are:

 - 'git-rm' needs to be fixed up as Linus outlined; remove
   working tree file and index entry but have a sanity check to
   make sure the working tree file match the index and HEAD.

 - 'git-branch' may need to be taught about renaming the
   matching per-branch configuration at the same time.

 - 'git-merge-file' needs to be documented and linked from
   git.txt.

 - 'git-clone' probably should be updated to use wild-card in
   remote.origin.fetch, instead of listing all the branches it
   found when the clone was made.

 - tutorials and other Porcelain documentation pages need to be
   updated to match the updated 'git-add' and 'git-rm' (to be
   updated), and their description should be made much less
   about implementation; they should talk in terms of end-user
   workflows.  I will send a draft for 'git diff' out later, but
   somebody needs a full sweep on Porcelain-ish documentation.

 - 'git diff --index' patch should be reverted (already done in
   'next'), although we may have to come up with a better
   wording for --cached.

----------------------------------------------------------------
* The 'maint' branch has these fixes since v1.4.4.2.

   Alex Riesen (1):
      Clarify fetch error for missing objects.

   Brian Gernhardt (1):
      Move Fink and Ports check to after config file

   Chris Wright (1):
      no need to install manpages as executable

   Eric Wong (2):
      git-svn: exit with status 1 for test failures
      git-svn: correctly display fatal() error messages

   Jim Meyering (1):
      Don't use memcpy when source and dest. buffers may overlap

   Martin Langhoff (1):
      cvsserver: Avoid miscounting bytes in Perl v5.8.x

   Shawn O. Pearce (1):
      Make sure the empty tree exists when needed in merge-recursive.


* The 'master' branch has these since the last announcement.

   Alex Riesen (3):
      git-blame: fix rev parameter handling.
      Make perl/ build procedure ActiveState friendly.
      Clarify fetch error for missing objects.

   Andreas Ericsson (2):
      ls-files: Give hints when errors happen.
      git-diff: Introduce --index and deprecate --cached.

   Andy Parkins (6):
      Use .git/config for storing "origin" shortcut repository
      Document git-repo-config --bool/--int options.
      De-emphasise the symbolic link documentation.
      Explicitly add the default "git pull" behaviour to .git/config on clone
      Colourise git-branch output
      Allow subcommand.color and color.subcommand color configuration

   Brian Gernhardt (1):
      Move Fink and Ports check to after config file

   Chris Wright (1):
      no need to install manpages as executable

   David Miller (1):
      Pass -M to diff in request-pull

   Eric Wong (21):
      git-svn: use ~/.subversion config files when using SVN:: libraries
      git-svn: enable delta transfers during fetches when using SVN:: libs
      git-svn: update tests for recent changes
      git-svn: error out when the SVN connection fails during a fetch
      git-svn: fix output reporting from the delta fetcher
      git-svn: color support for the log command
      git-svn: documentation updates
      git-svn: fix multi-init
      git-svn: avoid fetching files twice in the same revision
      git-svn: avoid network timeouts for long-running fetches
      git-svn: extra error check to ensure we open a file correctly
      git-svn: use do_switch for --follow-parent if the SVN library supports it
      rerere: add clear, diff, and status commands
      rerere: record (or avoid misrecording) resolved, skipped or aborted rebase/am
      git-svn: enable logging of information not supported by git
      git-svn: allow dcommit to take an alternate head
      git-svn: correctly display fatal() error messages
      git-svn: correctly handle packed-refs in refs/remotes/
      git-svn: exit with status 1 for test failures
      git-svn: correctly display fatal() error messages
      git-svn: correctly handle "(no author)" when using an authors file

   Han-Wen Nienhuys (1):
      ident.c: Trim hint printed when gecos is empty.

   J. Bruce Fields (4):
      cvs-migration: improved section titles, better push/commit explanation
      Documentation: reorganize cvs-migration.txt
      Documentation: update git-clone man page with new behavior
      Documentation: simpler shared repository creation

   Jakub Narebski (4):
      gitweb: Fix Atom feed <logo>: it is $logo, not $logo_url
      git-clone: Rename --use-immingled-remote option to --no-separate-remote
      Document git-diff whitespace flags -b and -w
      gitweb: Allow PNG, GIF, JPEG images to be displayed in "blob" view

   Jeff King (1):
      shortlog: fix segfault on empty authorname

   Jim Meyering (2):
      Set permissions of each new file before "cvs add"ing it.
      Don't use memcpy when source and dest. buffers may overlap

   Johannes Schindelin (18):
      Build in shortlog
      shortlog: do not crash on parsing "[PATCH"
      shortlog: read mailmap from ./.mailmap again
      shortlog: handle email addresses case-insensitively
      shortlog: fix "-n"
      shortlog: use pager
      sha1_object_info(): be consistent with read_sha1_file()
      xdiff: add xdl_merge()
      xdl_merge(): fix an off-by-one bug
      xdl_merge(): fix thinko
      git-mv: search more precisely for source directory in index
      diff -b: ignore whitespace at end of line
      xdl_merge(): fix and simplify conflict handling
      cvs-migration document: make the need for "push" more obvious
      Add builtin merge-file, a minimal replacement for RCS merge
      merge-file: support -p and -q; fix compile warnings
      Get rid of the dependency on RCS' merge program
      merge-recursive: add/add really is modify/modify with an empty base

   Josef Weidendorfer (1):
      Add branch.*.merge warning and documentation update

   Junio C Hamano (45):
      Store peeled refs in packed-refs file.
      remove merge-recursive-old
      git-merge: make it usable as the first class UI
      merge: allow merging into a yet-to-be-born branch.
      Store peeled refs in packed-refs (take 2).
      git-fetch: reuse ls-remote result.
      git-fetch: fix dumb protocol transport to fetch from pack-pruned ref
      git-fetch: allow glob pattern in refspec
      Allow git push to delete remote ref.
      git-shortlog: fix common repository prefix abbreviation.
      git-shortlog: make common repository prefix configurable with .mailmap
      git-commit: show --summary after successful commit.
      git-fetch: allow forcing glob pattern in refspec
      fetch-pack: do not barf when duplicate re patterns are given
      git-merge: tighten error checking.
      git-merge: do not leak rev-parse output used for checking internally.
      cvsimport: style fixup.
      git blame -C: fix output format tweaks when crossing file boundary.
      tutorial: talk about user.name early and don't start with commit -a
      git-merge: fix confusion between tag and branch
      xmerge: make return value from xdl_merge() more usable.
      merge-recursive: use xdl_merge().
      receive-pack: do not insist on fast-forward outside refs/heads/
      unpack-trees: make sure "df_conflict_entry.name" is NUL terminated.
      read-tree: further loosen "working file will be lost" check.
      Loosen "working file will be lost" check in Porcelain-ish
      read-tree: document --exclude-per-directory
      git-reset to remove "$GIT_DIR/MERGE_MSG"
      git-merge: squelch needless error message.
      git-merge: fix "fix confusion between tag and branch" for real
      Fix perl/ build.
      git-rerere: add 'gc' command.
      Documentation/git-commit: rewrite to make it more end-user friendly.
      git-commit: allow --only to lose what was staged earlier.
      shortlog: remove "[PATCH]" prefix from shortlog output
      shortlog: fix segfault on empty authorname
      diff --numstat: show binary with '-' to match "apply --numstat"
      add test case for recursive merge
      git-push: document removal of remote ref with :<dst> pathspec
      git merge: reword failure message.
      spurious .sp in manpages
      git-push: accept tag <tag> as advertised.
      send-pack: tighten checks for remote names
      branch --color: change default color selection.
      config documentation: group color items together.

   Lars Hjemli (3):
      git-branch: add options and tests for branch renaming
      rename_ref: use lstat(2) when testing for symlink
      git-branch: let caller specify logmsg

   Martin Langhoff (1):
      cvsserver: Avoid miscounting bytes in Perl v5.8.x

   Michael Loeffler (1):
      git-fetch: ignore dereferenced tags in expand_refs_wildcard

   Nicolas Pitre (4):
      builtin git-shortlog is broken
      pack-objects: remove redundent status information
      make 'git add' a first class user friendly interface to the index
      change the unpack limit treshold to a saner value

   Paul Mackerras (1):
      gitk: Fix enabling/disabling of menu items on Mac OS X

   René Scharfe (1):
      shortlog: remove range check

   Robin Rosenberg (1):
      Make cvsexportcommit work with filenames with spaces and non-ascii characters.

   Sean Estabrooks (1):
      Update documentation to remove incorrect GIT_DIFF_OPTS example.

   Shawn O. Pearce (17):
      Teach git-completion.bash how to complete git-merge.
      Hide plumbing/transport commands from bash completion.
      Teach bash how to complete options for git-name-rev.
      Add current branch in PS1 support to git-completion.bash.
      Teach bash how to complete git-format-patch.
      Teach bash how to complete git-cherry-pick.
      Teach bash how to complete git-rebase.
      Teach bash about git log/show/whatchanged options.
      Support bash completion of refs/remote.
      Teach bash about git-repo-config.
      Support --strategy=x completion in addition to --strategy x.
      Cache the list of merge strategies and available commands during load.
      Teach bash about git-am/git-apply and their whitespace options.
      Teach bash how to complete long options for git-commit.
      Fix broken bash completion of local refs.
      Make sure the empty tree exists when needed in merge-recursive.
      Remove uncontested renamed files during merge.

   Uwe Zeisberger (1):
      Fix documentation copy&paste typo



^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.19.0
@ 2018-09-10 20:11  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-09-10 20:11 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.19.0 is now available at the
usual places.  It is comprised of 769 non-merge commits since
v2.18.0, contributed by 72 people, 16 of which are new faces.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.19.0'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.18.0 are as follows.
Welcome to the Git development community!

  Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
  Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
  Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Raphaël Hertzog,
  Samuel Maftoul, Sebastian Kisela, Vladimir Parfinenko, and
  William Chargin.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
  R. Sedeño, Alexander Shopov, Anthony Sottile, Antonio Ospite,
  Beat Bolli, Ben Peart, Brandon Williams, brian m. carlson,
  Christian Couder, Christopher Díaz Riveros, Derrick Stolee,
  Dimitriy Ryazantcev, Elia Pinto, Elijah Newren, Eric Sunshine,
  Han-Wen Nienhuys, Jameson Miller, Jean-Noël Avila, Jeff
  Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, Johannes
  Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kim Gybels,
  Kirill Smelkov, Kyle Meyer, Luis Marsano, Łukasz Stelmach,
  Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
  Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Peter
  Krefting, Phillip Wood, Prathamesh Chavan, Ralf Thielow, Ramsay
  Jones, René Scharfe, Stefan Beller, SZEDER Gábor, Taylor Blau,
  Thomas Rast, Tobias Klauser, Todd Zullinger, Trần Ngọc Quân,
  Ville Skyttä, and Xiaolong Ye.

----------------------------------------------------------------

Git 2.19 Release Notes
======================

Updates since v2.18
-------------------

UI, Workflows & Features

 * "git diff" compares the index and the working tree.  For paths
   added with intent-to-add bit, the command shows the full contents
   of them as added, but the paths themselves were not marked as new
   files.  They are now shown as new by default.

   "git apply" learned the "--intent-to-add" option so that an
   otherwise working-tree-only application of a patch will add new
   paths to the index marked with the "intent-to-add" bit.

 * "git grep" learned the "--column" option that gives not just the
   line number but the column number of the hit.

 * The "-l" option in "git branch -l" is an unfortunate short-hand for
   "--create-reflog", but many users, both old and new, somehow expect
   it to be something else, perhaps "--list".  This step warns when "-l"
   is used as a short-hand for "--create-reflog" and warns about the
   future repurposing of the it when it is used.

 * The userdiff pattern for .php has been updated.

 * The content-transfer-encoding of the message "git send-email" sends
   out by default was 8bit, which can cause trouble when there is an
   overlong line to bust RFC 5322/2822 limit.  A new option 'auto' to
   automatically switch to quoted-printable when there is such a line
   in the payload has been introduced and is made the default.

 * "git checkout" and "git worktree add" learned to honor
   checkout.defaultRemote when auto-vivifying a local branch out of a
   remote tracking branch in a repository with multiple remotes that
   have tracking branches that share the same names.
   (merge 8d7b558bae ab/checkout-default-remote later to maint).

 * "git grep" learned the "--only-matching" option.

 * "git rebase --rebase-merges" mode now handles octopus merges as
   well.

 * Add a server-side knob to skip commits in exponential/fibbonacci
   stride in an attempt to cover wider swath of history with a smaller
   number of iterations, potentially accepting a larger packfile
   transfer, instead of going back one commit a time during common
   ancestor discovery during the "git fetch" transaction.
   (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).

 * A new configuration variable core.usereplacerefs has been added,
   primarily to help server installations that want to ignore the
   replace mechanism altogether.

 * Teach "git tag -s" etc. a few configuration variables (gpg.format
   that can be set to "openpgp" or "x509", and gpg.<format>.program
   that is used to specify what program to use to deal with the format)
   to allow x.509 certs with CMS via "gpgsm" to be used instead of
   openpgp via "gnupg".

 * Many more strings are prepared for l10n.

 * "git p4 submit" learns to ask its own pre-submit hook if it should
   continue with submitting.

 * The test performed at the receiving end of "git push" to prevent
   bad objects from entering repository can be customized via
   receive.fsck.* configuration variables; we now have gained a
   counterpart to do the same on the "git fetch" side, with
   fetch.fsck.* configuration variables.

 * "git pull --rebase=interactive" learned "i" as a short-hand for
   "interactive".

 * "git instaweb" has been adjusted to run better with newer Apache on
   RedHat based distros.

 * "git range-diff" is a reimplementation of "git tbdiff" that lets us
   compare individual patches in two iterations of a topic.

 * The sideband code learned to optionally paint selected keywords at
   the beginning of incoming lines on the receiving end.

 * "git branch --list" learned to take the default sort order from the
   'branch.sort' configuration variable, just like "git tag --list"
   pays attention to 'tag.sort'.

 * "git worktree" command learned "--quiet" option to make it less
   verbose.


Performance, Internal Implementation, Development Support etc.

 * The bulk of "git submodule foreach" has been rewritten in C.

 * The in-core "commit" object had an all-purpose "void *util" field,
   which was tricky to use especially in library-ish part of the
   code.  All of the existing uses of the field has been migrated to a
   more dedicated "commit-slab" mechanism and the field is eliminated.

 * A less often used command "git show-index" has been modernized.
   (merge fb3010c31f jk/show-index later to maint).

 * The conversion to pass "the_repository" and then "a_repository"
   throughout the object access API continues.

 * Continuing with the idea to programatically enumerate various
   pieces of data required for command line completion, teach the
   codebase to report the list of configuration variables
   subcommands care about to help complete them.

 * Separate "rebase -p" codepath out of "rebase -i" implementation to
   slim down the latter and make it easier to manage.

 * Make refspec parsing codepath more robust.

 * Some flaky tests have been fixed.

 * Continuing with the idea to programmatically enumerate various
   pieces of data required for command line completion, the codebase
   has been taught to enumerate options prefixed with "--no-" to
   negate them.

 * Build and test procedure for netrc credential helper (in contrib/)
   has been updated.

 * Remove unused function definitions and declarations from ewah
   bitmap subsystem.

 * Code preparation to make "git p4" closer to be usable with Python 3.

 * Tighten the API to make it harder to misuse in-tree .gitmodules
   file, even though it shares the same syntax with configuration
   files, to read random configuration items from it.

 * "git fast-import" has been updated to avoid attempting to create
   delta against a zero-byte-long string, which is pointless.

 * The codebase has been updated to compile cleanly with -pedantic
   option.
   (merge 2b647a05d7 bb/pedantic later to maint).

 * The character display width table has been updated to match the
   latest Unicode standard.
   (merge 570951eea2 bb/unicode-11-width later to maint).

 * test-lint now looks for broken use of "VAR=VAL shell_func" in test
   scripts.

 * Conversion from uchar[40] to struct object_id continues.

 * Recent "security fix" to pay attention to contents of ".gitmodules"
   while accepting "git push" was a bit overly strict than necessary,
   which has been adjusted.

 * "git fsck" learns to make sure the optional commit-graph file is in
   a sane state.

 * "git diff --color-moved" feature has further been tweaked.

 * Code restructuring and a small fix to transport protocol v2 during
   fetching.

 * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
   take has been tweaked.

 * lookup_commit_reference() and friends have been updated to find
   in-core object for a specific in-core repository instance.

 * Various glitches in the heuristics of merge-recursive strategy have
   been documented in new tests.

 * "git fetch" learned a new option "--negotiation-tip" to limit the
   set of commits it tells the other end as "have", to reduce wasted
   bandwidth and cycles, which would be helpful when the receiving
   repository has a lot of refs that have little to do with the
   history at the remote it is fetching from.

 * For a large tree, the index needs to hold many cache entries
   allocated on heap.  These cache entries are now allocated out of a
   dedicated memory pool to amortize malloc(3) overhead.

 * Tests to cover various conflicting cases have been added for
   merge-recursive.

 * Tests to cover conflict cases that involve submodules have been
   added for merge-recursive.

 * Look for broken "&&" chains that are hidden in subshell, many of
   which have been found and corrected.

 * The singleton commit-graph in-core instance is made per in-core
   repository instance.

 * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
   with -pedantic option, which may catch more problematic program
   constructs and potential bugs.

 * Preparatory code to later add json output for telemetry data has
   been added.

 * Update the way we use Coccinelle to find out-of-style code that
   need to be modernised.

 * It is too easy to misuse system API functions such as strcat();
   these selected functions are now forbidden in this codebase and
   will cause a compilation failure.

 * Add a script (in contrib/) to help users of VSCode work better with
   our codebase.

 * The Travis CI scripts were taught to ship back the test data from
   failed tests.
   (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).

 * The parse-options machinery learned to refrain from enclosing
   placeholder string inside a "<bra" and "ket>" pair automatically
   without PARSE_OPT_LITERAL_ARGHELP.  Existing help text for option
   arguments that are not formatted correctly have been identified and
   fixed.
   (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).

 * Noiseword "extern" has been removed from function decls in the
   header files.

 * A few atoms like %(objecttype) and %(objectsize) in the format
   specifier of "for-each-ref --format=<format>" can be filled without
   getting the full contents of the object, but just with the object
   header.  These cases have been optimized by calling
   oid_object_info() API (instead of reading and inspecting the data).

 * The end result of documentation update has been made to be
   inspected more easily to help developers.

 * The API to iterate over all objects learned to optionally list
   objects in the order they appear in packfiles, which helps locality
   of access if the caller accesses these objects while as objects are
   enumerated.

 * Improve built-in facility to catch broken &&-chain in the tests.

 * The more library-ish parts of the codebase learned to work on the
   in-core index-state instance that is passed in by their callers,
   instead of always working on the singleton "the_index" instance.

 * A test prerequisite defined by various test scripts with slightly
   different semantics has been consolidated into a single copy and
   made into a lazily defined one.
   (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).

 * After a partial clone, repeated fetches from promisor remote would
   have accumulated many packfiles marked with .promisor bit without
   getting them coalesced into fewer packfiles, hurting performance.
   "git repack" now learned to repack them.

 * Partially revert the support for multiple hash functions to regain
   hash comparison performance; we'd think of a way to do this better
   in the next cycle.

 * "git help --config" (which is used in command line completion)
   missed the configuration variables not described in the main
   config.txt file but are described in another file that is included
   by it, which has been corrected.

 * The test linter code has learned that the end of here-doc mark
   "EOF" can be quoted in a double-quote pair, not just in a
   single-quote pair.


Fixes since v2.18
-----------------

 * "git remote update" can take both a single remote nickname and a
   nickname for remote groups, and the completion script (in contrib/)
   has been taught about it.
   (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).

 * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
   point that is newer than the existing history used to end up
   grabbing the entire history.  Such a request now errors out.
   (merge e34de73c56 nd/reject-empty-shallow-request later to maint).

 * Fix for 2.17-era regression around `core.safecrlf`.
   (merge 6cb09125be as/safecrlf-quiet-fix later to maint).

 * The recent addition of "partial clone" experimental feature kicked
   in when it shouldn't, namely, when there is no partial-clone filter
   defined even if extensions.partialclone is set.
   (merge cac1137dc4 jh/partial-clone later to maint).

 * "git send-pack --signed" (hence "git push --signed" over the http
   transport) did not read user ident from the config mechanism to
   determine whom to sign the push certificate as, which has been
   corrected.
   (merge d067d98887 ms/send-pack-honor-config later to maint).

 * "git fetch-pack --all" used to unnecessarily fail upon seeing an
   annotated tag that points at an object other than a commit.
   (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).

 * When user edits the patch in "git add -p" and the user's editor is
   set to strip trailing whitespaces indiscriminately, an empty line
   that is unchanged in the patch would become completely empty
   (instead of a line with a sole SP on it).  The code introduced in
   Git 2.17 timeframe failed to parse such a patch, but now it learned
   to notice the situation and cope with it.
   (merge f4d35a6b49 pw/add-p-recount later to maint).

 * The code to try seeing if a fetch is necessary in a submodule
   during a fetch with --recurse-submodules got confused when the path
   to the submodule was changed in the range of commits in the
   superproject, sometimes showing "(null)".  This has been corrected.

 * Bugfix for "rebase -i" corner case regression.
   (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).

 * Recently added "--base" option to "git format-patch" command did
   not correctly generate prereq patch ids.
   (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).

 * POSIX portability fix in Makefile to fix a glitch introduced a few
   releases ago.
   (merge 6600054e9b dj/runtime-prefix later to maint).

 * "git filter-branch" when used with the "--state-branch" option
   still attempted to rewrite the commits whose filtered result is
   known from the previous attempt (which is recorded on the state
   branch); the command has been corrected not to waste cycles doing
   so.
   (merge 709cfe848a mb/filter-branch-optim later to maint).

 * Clarify that setting core.ignoreCase to deviate from reality would
   not turn a case-incapable filesystem into a case-capable one.
   (merge 48294b512a ms/core-icase-doc later to maint).

 * "fsck.skipList" did not prevent a blob object listed there from
   being inspected for is contents (e.g. we recently started to
   inspect the contents of ".gitmodules" for certain malicious
   patterns), which has been corrected.
   (merge fb16287719 rj/submodule-fsck-skip later to maint).

 * "git checkout --recurse-submodules another-branch" did not report
   in which submodule it failed to update the working tree, which
   resulted in an unhelpful error message.
   (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).

 * "git rebase" behaved slightly differently depending on which one of
   the three backends gets used; this has been documented and an
   effort to make them more uniform has begun.
   (merge b00bf1c9a8 en/rebase-consistency later to maint).

 * The "--ignore-case" option of "git for-each-ref" (and its friends)
   did not work correctly, which has been fixed.
   (merge e674eb2528 jk/for-each-ref-icase later to maint).

 * "git fetch" failed to correctly validate the set of objects it
   received when making a shallow history deeper, which has been
   corrected.
   (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).

 * Partial clone support of "git clone" has been updated to correctly
   validate the objects it receives from the other side.  The server
   side has been corrected to send objects that are directly
   requested, even if they may match the filtering criteria (e.g. when
   doing a "lazy blob" partial clone).
   (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).

 * Handling of an empty range by "git cherry-pick" was inconsistent
   depending on how the range ended up to be empty, which has been
   corrected.
   (merge c5e358d073 jk/empty-pick-fix later to maint).

 * "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
   had trouble working correctly in a sparsely checked out working
   tree after a conflict, which has been corrected.
   (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).

 * Correct a broken use of "VAR=VAL shell_func" in a test.
   (merge 650161a277 jc/t3404-one-shot-export-fix later to maint).

 * "git rev-parse ':/substring'" did not consider the history leading
   only to HEAD when looking for a commit with the given substring,
   when the HEAD is detached.  This has been fixed.
   (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).

 * Build doc update for Windows.
   (merge ede8d89bb1 nd/command-list later to maint).

 * core.commentchar is now honored when preparing the list of commits
   to replay in "rebase -i".

 * "git pull --rebase" on a corrupt HEAD caused a segfault.  In
   general we substitute an empty tree object when running the in-core
   equivalent of the diff-index command, and the codepath has been
   corrected to do so as well to fix this issue.
   (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).

 * httpd tests saw occasional breakage due to the way its access log
   gets inspected by the tests, which has been updated to make them
   less flaky.
   (merge e8b3b2e275 sg/httpd-test-unflake later to maint).

 * Tests to cover more D/F conflict cases have been added for
   merge-recursive.

 * "git gc --auto" opens file descriptors for the packfiles before
   spawning "git repack/prune", which would upset Windows that does
   not want a process to work on a file that is open by another
   process.  The issue has been worked around.
   (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).

 * The recursive merge strategy did not properly ensure there was no
   change between HEAD and the index before performing its operation,
   which has been corrected.
   (merge 55f39cf755 en/dirty-merge-fixes later to maint).

 * "git rebase" started exporting GIT_DIR environment variable and
   exposing it to hook scripts when part of it got rewritten in C.
   Instead of matching the old scripted Porcelains' behaviour,
   compensate by also exporting GIT_WORK_TREE environment as well to
   lessen the damage.  This can harm existing hooks that want to
   operate on different repository, but the current behaviour is
   already broken for them anyway.
   (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).

 * "git send-email" when using in a batched mode that limits the
   number of messages sent in a single SMTP session lost the contents
   of the variable used to choose between tls/ssl, unable to send the
   second and later batches, which has been fixed.
   (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).

 * The lazy clone support had a few places where missing but promised
   objects were not correctly tolerated, which have been fixed.

 * One of the "diff --color-moved" mode "dimmed_zebra" that was named
   in an unusual way has been deprecated and replaced by
   "dimmed-zebra".
   (merge e3f2f5f9cd es/diff-color-moved-fix later to maint).

 * The wire-protocol v2 relies on the client to send "ref prefixes" to
   limit the bandwidth spent on the initial ref advertisement.  "git
   clone" when learned to speak v2 forgot to do so, which has been
   corrected.
   (merge 402c47d939 bw/clone-ref-prefixes later to maint).

 * "git diff --histogram" had a bad memory usage pattern, which has
   been rearranged to reduce the peak usage.
   (merge 79cb2ebb92 sb/histogram-less-memory later to maint).

 * Code clean-up to use size_t/ssize_t when they are the right type.
   (merge 7726d360b5 jk/size-t later to maint).

 * The wire-protocol v2 relies on the client to send "ref prefixes" to
   limit the bandwidth spent on the initial ref advertisement.  "git
   fetch $remote branch:branch" that asks tags that point into the
   history leading to the "branch" automatically followed sent to
   narrow prefix and broke the tag following, which has been fixed.
   (merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).

 * When the sparse checkout feature is in use, "git cherry-pick" and
   other mergy operations lost the skip_worktree bit when a path that
   is excluded from checkout requires content level merge, which is
   resolved as the same as the HEAD version, without materializing the
   merge result in the working tree, which made the path appear as
   deleted.  This has been corrected by preserving the skip_worktree
   bit (and not materializing the file in the working tree).
   (merge 2b75fb601c en/merge-recursive-skip-fix later to maint).

 * The "author-script" file "git rebase -i" creates got broken when
   we started to move the command away from shell script, which is
   getting fixed now.
   (merge 5522bbac20 es/rebase-i-author-script-fix later to maint).

 * The automatic tree-matching in "git merge -s subtree" was broken 5
   years ago and nobody has noticed since then, which is now fixed.
   (merge 2ec4150713 jk/merge-subtree-heuristics later to maint).

 * "git fetch $there refs/heads/s" ought to fetch the tip of the
   branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
   name is "refs/heads/s" exists at the same time, fetched that one
   instead by mistake.  This has been corrected to honor the usual
   disambiguation rules for abbreviated refnames.
   (merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).

 * Futureproofing a helper function that can easily be misused.
   (merge 65bb21e77e es/want-color-fd-defensive later to maint).

 * The http-backend (used for smart-http transport) used to slurp the
   whole input until EOF, without paying attention to CONTENT_LENGTH
   that is supplied in the environment and instead expecting the Web
   server to close the input stream.  This has been fixed.
   (merge eebfe40962 mk/http-backend-content-length later to maint).

 * "git merge --abort" etc. did not clean things up properly when
   there were conflicted entries in the index in certain order that
   are involved in D/F conflicts.  This has been corrected.
   (merge ad3762042a en/abort-df-conflict-fixes later to maint).

 * "git diff --indent-heuristic" had a bad corner case performance.
   (merge 301ef85401 sb/indent-heuristic-optim later to maint).

 * The "--exec" option to "git rebase --rebase-merges" placed the exec
   commands at wrong places, which has been corrected.

 * "git verify-tag" and "git verify-commit" have been taught to use
   the exit status of underlying "gpg --verify" to signal bad or
   untrusted signature they found.
   (merge 4e5dc9ca17 jc/gpg-status later to maint).

 * "git mergetool" stopped and gave an extra prompt to continue after
   the last path has been handled, which did not make much sense.
   (merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).

 * Among the three codepaths we use O_APPEND to open a file for
   appending, one used for writing GIT_TRACE output requires O_APPEND
   implementation that behaves sensibly when multiple processes are
   writing to the same file.  POSIX emulation used in the Windows port
   has been updated to improve in this area.
   (merge d641097589 js/mingw-o-append later to maint).

 * "git pull --rebase -v" in a repository with a submodule barfed as
   an intermediate process did not understand what "-v(erbose)" flag
   meant, which has been fixed.
   (merge e84c3cf3dc sb/pull-rebase-submodule later to maint).

 * Recent update to "git config" broke updating variable in a
   subsection, which has been corrected.
   (merge bff7df7a87 sb/config-write-fix later to maint).

 * When "git rebase -i" is told to squash two or more commits into
   one, it labeled the log message for each commit with its number.
   It correctly called the first one "1st commit", but the next one
   was "commit #1", which was off-by-one.  This has been corrected.
   (merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).

 * "git rebase -i", when a 'merge <branch>' insn in its todo list
   fails, segfaulted, which has been (minimally) corrected.
   (merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).

 * "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
   though we won't be in a cherry-pick session after it returns, which
   has been corrected.
   (merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).

 * In a recent update in 2.18 era, "git pack-objects" started
   producing a larger than necessary packfiles by missing
   opportunities to use large deltas.  This has been corrected.

 * The meaning of the possible values the "core.checkStat"
   configuration variable can take were not adequately documented,
   which has been fixed.
   (merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).

 * Recent "git rebase -i" update started to write bogusly formatted
   author-script, with a matching broken reading code.  These are
   fixed.

 * Recent addition of "directory rename" heuristics to the
   merge-recursive backend makes the command susceptible to false
   positives and false negatives.  In the context of "git am -3",
   which does not know about surrounding unmodified paths and thus
   cannot inform the merge machinery about the full trees involved,
   this risk is particularly severe.  As such, the heuristic is
   disabled for "git am -3" to keep the machinery "more stupid but
   predictable".

 * "git merge-base" in 2.19-rc1 has performance regression when the
   (experimental) commit-graph feature is in use, which has been
   mitigated.

 * Code cleanup, docfix, build fix, etc.
   (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
   (merge 037714252f jc/clean-after-sanity-tests later to maint).
   (merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
   (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
   (merge bb4d000e87 bw/protocol-v2 later to maint).
   (merge 928f0ab4ba vs/typofixes later to maint).
   (merge d7f590be84 en/rebase-i-microfixes later to maint).
   (merge 81d395cc85 js/rebase-recreate-merge later to maint).
   (merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
   (merge a9aa3c0927 ds/commit-graph later to maint).
   (merge 5cf8e06474 js/enhanced-version-info later to maint).
   (merge 6aaded5509 tb/config-default later to maint).
   (merge 022d2ac1f3 sb/blame-color later to maint).
   (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
   (merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
   (merge 1e83b9bfdd sb/trailers-docfix later to maint).
   (merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
   (merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
   (merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
   (merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
   (merge fe583c6c7a rs/remote-mv-leakfix later to maint).
   (merge 69885ab015 en/t3031-title-fix later to maint).
   (merge 8578037bed nd/config-blame-sort later to maint).
   (merge 8ad169c4ba hn/config-in-code-comment later to maint).
   (merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
   (merge a8132410ee js/typofixes later to maint).
   (merge 388d0ff6e5 en/update-index-doc later to maint).
   (merge e05aa688dd jc/update-index-doc later to maint).
   (merge 10c600172c sg/t5310-empty-input-fix later to maint).
   (merge 5641eb9465 jh/partial-clone-doc later to maint).
   (merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
   (merge ce528de023 ab/unconditional-free-and-null later to maint).
   (merge bbc072f5d8 rs/opt-updates later to maint).
   (merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
   (merge 1820703045 js/larger-timestamps later to maint).
   (merge c8b35b95e1 sg/t4051-fix later to maint).
   (merge 30612cb670 sg/t0020-conversion-fix later to maint).
   (merge 15da753709 sg/t7501-thinkofix later to maint).
   (merge 79b04f9b60 sg/t3903-missing-fix later to maint).
   (merge 2745817028 sg/t3420-autostash-fix later to maint).
   (merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
   (merge 6c6ce21baa es/freebsd-iconv-portability later to maint).

----------------------------------------------------------------

Changes since v2.18.0 are as follows:

Aaron Schrab (1):
      sequencer: use configured comment character

Alban Gruin (4):
      rebase: introduce a dedicated backend for --preserve-merges
      rebase: strip unused code in git-rebase--preserve-merges.sh
      rebase: use the new git-rebase--preserve-merges.sh
      rebase: remove -p code from git-rebase--interactive.sh

Alejandro R. Sedeño (1):
      Makefile: tweak sed invocation

Aleksandr Makarov (1):
      for-each-ref: consistently pass WM_IGNORECASE flag

Alexander Shopov (1):
      l10n: bg.po: Updated Bulgarian translation (3958t)

Andrei Rybak (2):
      Documentation: fix --color option formatting
      t4150: fix broken test for am --scissors

Anthony Sottile (1):
      config.c: fix regression for core.safecrlf false

Antonio Ospite (6):
      config: move config_from_gitmodules to submodule-config.c
      submodule-config: add helper function to get 'fetch' config from .gitmodules
      submodule-config: add helper to get 'update-clone' config from .gitmodules
      submodule-config: make 'config_from_gitmodules' private
      submodule-config: pass repository as argument to config_from_gitmodules
      submodule-config: reuse config_from_gitmodules in repo_read_gitmodules

Beat Bolli (10):
      builtin/config: work around an unsized array forward declaration
      unicode: update the width tables to Unicode 11
      connect.h: avoid forward declaration of an enum
      refs/refs-internal.h: avoid forward declaration of an enum
      convert.c: replace "\e" escapes with "\033".
      sequencer.c: avoid empty statements at top level
      string-list.c: avoid conversion from void * to function pointer
      utf8.c: avoid char overflow
      Makefile: add a DEVOPTS flag to get pedantic compilation
      packfile: ensure that enum object_type is defined

Ben Peart (3):
      convert log_ref_write_fd() to use strbuf
      handle lower case drive letters on Windows
      t3507: add a testcase showing failure with sparse checkout

Brandon Williams (15):
      commit: convert commit_graft_pos() to handle arbitrary repositories
      commit: convert register_commit_graft to handle arbitrary repositories
      commit: convert read_graft_file to handle arbitrary repositories
      test-pkt-line: add unpack-sideband subcommand
      docs: link to gitsubmodules
      upload-pack: implement ref-in-want
      upload-pack: test negotiation with changing repository
      fetch: refactor the population of peer ref OIDs
      fetch: refactor fetch_refs into two functions
      fetch: refactor to make function args narrower
      fetch-pack: put shallow info in output parameter
      fetch-pack: implement ref-in-want
      clone: send ref-prefixes when using protocol v2
      fetch-pack: mark die strings for translation
      pack-protocol: mention and point to docs for protocol v2

Chen Bin (1):
      git-p4: add the `p4-pre-submit` hook

Christian Couder (1):
      t9104: kosherly remove remote refs

Christopher Díaz Riveros (1):
      l10n: es.po v2.19.0 round 2

Derrick Stolee (46):
      ref-filter: fix outdated comment on in_commit_list
      commit: add generation number to struct commit
      commit-graph: compute generation numbers
      commit: use generations in paint_down_to_common()
      commit-graph: always load commit-graph information
      ref-filter: use generation number for --contains
      commit: use generation numbers for in_merge_bases()
      commit: add short-circuit to paint_down_to_common()
      commit: use generation number in remove_redundant()
      merge: check config before loading commits
      commit-graph.txt: update design document
      commit-graph: fix UX issue when .lock file exists
      ewah/bitmap.c: delete unused 'bitmap_clear()'
      ewah/bitmap.c: delete unused 'bitmap_each_bit()'
      ewah_bitmap: delete unused 'ewah_and()'
      ewah_bitmap: delete unused 'ewah_and_not()'
      ewah_bitmap: delete unused 'ewah_not()'
      ewah_bitmap: delete unused 'ewah_or()'
      ewah_io: delete unused 'ewah_serialize()'
      t5318-commit-graph.sh: use core.commitGraph
      commit-graph: UNLEAK before die()
      commit-graph: fix GRAPH_MIN_SIZE
      commit-graph: parse commit from chosen graph
      commit: force commit to parse from object database
      commit-graph: load a root tree from specific graph
      commit-graph: add 'verify' subcommand
      commit-graph: verify catches corrupt signature
      commit-graph: verify required chunks are present
      commit-graph: verify corrupt OID fanout and lookup
      commit-graph: verify objects exist
      commit-graph: verify root tree OIDs
      commit-graph: verify parent list
      commit-graph: verify generation number
      commit-graph: verify commit date
      commit-graph: test for corrupted octopus edge
      commit-graph: verify contents match checksum
      fsck: verify commit-graph
      commit-graph: use string-list API for input
      commit-graph: add '--reachable' option
      gc: automatically write commit-graph files
      commit-graph: update design document
      commit-graph: fix documentation inconsistencies
      coccinelle: update commit.cocci
      commit: use timestamp_t for author_date_slab
      config: fix commit-graph related config docs
      commit: don't use generation numbers if not needed

Dimitriy Ryazantcev (1):
      l10n: ru.po: update Russian translation

Elia Pinto (1):
      worktree: add --quiet option

Elijah Newren (66):
      t6036, t6042: use test_create_repo to keep tests independent
      t6036, t6042: use test_line_count instead of wc -l
      t6036, t6042: prefer test_path_is_file, test_path_is_missing
      t6036, t6042: prefer test_cmp to sequences of test
      t6036: prefer test_when_finished to manual cleanup in following test
      merge-recursive: fix miscellaneous grammar error in comment
      merge-recursive: fix numerous argument alignment issues
      merge-recursive: align labels with their respective code blocks
      merge-recursive: clarify the rename_dir/RENAME_DIR meaning
      merge-recursive: rename conflict_rename_*() family of functions
      merge-recursive: add pointer about unduly complex looking code
      git-rebase.txt: document incompatible options
      git-rebase.sh: update help messages a bit
      t3422: new testcases for checking when incompatible options passed
      git-rebase: error out when incompatible options passed
      git-rebase.txt: address confusion between --no-ff vs --force-rebase
      directory-rename-detection.txt: technical docs on abilities and limitations
      git-rebase.txt: document behavioral differences between modes
      t3401: add directory rename testcases for rebase and am
      git-rebase: make --allow-empty-message the default
      t3418: add testcase showing problems with rebase -i and strategy options
      Fix use of strategy options with interactive rebases
      git-rebase--merge: modernize "git-$cmd" to "git $cmd"
      apply: fix grammar error in comment
      t5407: fix test to cover intended arguments
      read-cache.c: move index_has_changes() from merge.c
      index_has_changes(): avoid assuming operating on the_index
      t6044: verify that merges expected to abort actually abort
      t6036: add a failed conflict detection case with symlink modify/modify
      t6036: add a failed conflict detection case with symlink add/add
      t6036: add a failed conflict detection case with submodule modify/modify
      t6036: add a failed conflict detection case with submodule add/add
      t6036: add a failed conflict detection case with conflicting types
      t6042: add testcase covering rename/add/delete conflict type
      t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
      t6042: add testcase covering long chains of rename conflicts
      t6036: add lots of detail for directory/file conflicts in recursive case
      t6036: add a failed conflict detection case: regular files, different modes
      t6044: add a testcase for index matching head, when head doesn't match HEAD
      merge-recursive: make sure when we say we abort that we actually abort
      merge-recursive: fix assumption that head tree being merged is HEAD
      t6044: add more testcases with staged changes before a merge is invoked
      merge-recursive: enforce rule that index matches head before merging
      merge: fix misleading pre-merge check documentation
      t7405: add a file/submodule conflict
      t7405: add a directory/submodule conflict
      t7405: verify 'merge --abort' works after submodule/path conflicts
      merge-recursive: preserve skip_worktree bit when necessary
      t1015: demonstrate directory/file conflict recovery failures
      read-cache: fix directory/file conflict handling in read_index_unmerged()
      t3031: update test description to mention desired behavior
      t7406: fix call that was failing for the wrong reason
      t7406: simplify by using diff --name-only instead of diff --raw
      t7406: avoid having git commands upstream of a pipe
      t7406: prefer test_* helper functions to test -[feds]
      t7406: avoid using test_must_fail for commands other than git
      git-update-index.txt: reword possibly confusing example
      Add missing includes and forward declarations
      alloc: make allocate_alloc_state and clear_alloc_state more consistent
      Move definition of enum branch_track from cache.h to branch.h
      urlmatch.h: fix include guard
      compat/precompose_utf8.h: use more common include guard style
      Remove forward declaration of an enum
      t3401: add another directory rename testcase for rebase and am
      merge-recursive: add ability to turn off directory rename detection
      am: avoid directory rename detection when calling recursive merge machinery

Eric Sunshine (55):
      t: use test_might_fail() instead of manipulating exit code manually
      t: use test_write_lines() instead of series of 'echo' commands
      t: use sane_unset() rather than 'unset' with broken &&-chain
      t: drop unnecessary terminating semicolon in subshell
      t/lib-submodule-update: fix "absorbing" test
      t5405: use test_must_fail() instead of checking exit code manually
      t5406: use write_script() instead of birthing shell script manually
      t5505: modernize and simplify hard-to-digest test
      t6036: fix broken "merge fails but has appropriate contents" tests
      t7201: drop pointless "exit 0" at end of subshell
      t7400: fix broken "submodule add/reconfigure --force" test
      t7810: use test_expect_code() instead of hand-rolled comparison
      t9001: fix broken "invoke hook" test
      t9814: simplify convoluted check that command correctly errors out
      t0000-t0999: fix broken &&-chains
      t1000-t1999: fix broken &&-chains
      t2000-t2999: fix broken &&-chains
      t3000-t3999: fix broken &&-chains
      t3030: fix broken &&-chains
      t4000-t4999: fix broken &&-chains
      t5000-t5999: fix broken &&-chains
      t6000-t6999: fix broken &&-chains
      t7000-t7999: fix broken &&-chains
      t9000-t9999: fix broken &&-chains
      t9119: fix broken &&-chains
      t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
      t/check-non-portable-shell: stop being so polite
      t/check-non-portable-shell: make error messages more compact
      t/check-non-portable-shell: detect "FOO=bar shell_func"
      t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
      t/Makefile: add machinery to check correctness of chainlint.sed
      t/chainlint: add chainlint "basic" test cases
      t/chainlint: add chainlint "whitespace" test cases
      t/chainlint: add chainlint "one-liner" test cases
      t/chainlint: add chainlint "nested subshell" test cases
      t/chainlint: add chainlint "loop" and "conditional" test cases
      t/chainlint: add chainlint "cuddled" test cases
      t/chainlint: add chainlint "complex" test cases
      t/chainlint: add chainlint "specialized" test cases
      diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
      mw-to-git/t9360: fix broken &&-chain
      t/chainlint.sed: drop extra spaces from regex character class
      sequencer: fix "rebase -i --root" corrupting author header
      sequencer: fix "rebase -i --root" corrupting author header timezone
      sequencer: fix "rebase -i --root" corrupting author header timestamp
      sequencer: don't die() on bogus user-edited timestamp
      color: protect against out-of-bounds reads and writes
      chainlint: match arbitrary here-docs tags rather than hard-coded names
      chainlint: match 'quoted' here-doc tags
      chainlint: recognize multi-line $(...) when command cuddled with "$("
      chainlint: let here-doc and multi-line string commence on same line
      chainlint: recognize multi-line quoted strings more robustly
      chainlint: add test of pathological case which triggered false positive
      chainlint: match "quoted" here-doc tags
      config.mak.uname: resolve FreeBSD iconv-related compilation warning

Han-Wen Nienhuys (2):
      config: document git config getter return value
      sideband: highlight keywords in remote sideband output

Henning Schild (9):
      builtin/receive-pack: use check_signature from gpg-interface
      gpg-interface: make parse_gpg_output static and remove from interface header
      gpg-interface: add new config to select how to sign a commit
      t/t7510: check the validation of the new config gpg.format
      gpg-interface: introduce an abstraction for multiple gpg formats
      gpg-interface: do not hardcode the key string len anymore
      gpg-interface: introduce new config to select per gpg format program
      gpg-interface: introduce new signature format "x509" using gpgsm
      gpg-interface t: extend the existing GPG tests with GPGSM

Isabella Stephens (2):
      blame: prevent error if range ends past end of file
      log: prevent error if line range ends past end of file

Jameson Miller (8):
      read-cache: teach refresh_cache_entry to take istate
      read-cache: teach make_cache_entry to take object_id
      block alloc: add lifecycle APIs for cache_entry structs
      mem-pool: only search head block for available space
      mem-pool: add life cycle management functions
      mem-pool: fill out functionality
      block alloc: allocate cache entries from mem_pool
      block alloc: add validations around cache_entry lifecyle

Jean-Noël Avila (3):
      i18n: fix mistakes in translated strings
      l10n: fr.po v2.19.0 rnd 1
      l10n: fr.po v2.19.0 rnd 2

Jeff Hostetler (1):
      json_writer: new routines to create JSON data

Jeff King (50):
      make show-index a builtin
      show-index: update documentation for index v2
      fetch-pack: don't try to fetch peel values with --all
      ewah: drop ewah_deserialize function
      ewah: drop ewah_serialize_native function
      t3200: unset core.logallrefupdates when testing reflog creation
      t: switch "branch -l" to "branch --create-reflog"
      branch: deprecate "-l" option
      config: turn die_on_error into caller-facing enum
      config: add CONFIG_ERROR_SILENT handler
      config: add options parameter to git_config_from_mem
      fsck: silence stderr when parsing .gitmodules
      t6300: add a test for --ignore-case
      ref-filter: avoid backend filtering with --ignore-case
      t5500: prettify non-commit tag tests
      sequencer: handle empty-set cases consistently
      sequencer: don't say BUG on bogus input
      has_uncommitted_changes(): fall back to empty tree
      fsck: split ".gitmodules too large" error from parse failure
      fsck: downgrade gitmodulesParse default to "info"
      blame: prefer xsnprintf to strcpy for colors
      check_replace_refs: fix outdated comment
      check_replace_refs: rename to read_replace_refs
      add core.usereplacerefs config option
      reencode_string: use st_add/st_mult helpers
      reencode_string: use size_t for string lengths
      strbuf: use size_t for length in intermediate variables
      strbuf_readlink: use ssize_t
      pass st.st_size as hint for strbuf_readlink()
      strbuf_humanise: use unsigned variables
      automatically ban strcpy()
      banned.h: mark strcat() as banned
      banned.h: mark sprintf() as banned
      banned.h: mark strncpy() as banned
      score_trees(): fix iteration over trees with missing entries
      add a script to diff rendered documentation
      t5552: suppress upload-pack trace output
      for_each_*_object: store flag definitions in a single location
      for_each_*_object: take flag arguments as enum
      for_each_*_object: give more comprehensive docstrings
      for_each_packed_object: support iterating in pack-order
      t1006: test cat-file --batch-all-objects with duplicates
      cat-file: rename batch_{loose,packed}_object callbacks
      cat-file: support "unordered" output for --batch-all-objects
      cat-file: use oidset check-and-insert
      cat-file: split batch "buf" into two variables
      cat-file: use a single strbuf for all output
      for_each_*_object: move declarations to object-store.h
      test-tool.h: include git-compat-util.h
      hashcmp: assert constant hash size

Jiang Xin (4):
      l10n: zh_CN: review for git 2.18.0
      l10n: git.pot: v2.19.0 round 1 (382 new, 30 removed)
      l10n: git.pot: v2.19.0 round 2 (3 new, 5 removed)
      l10n: zh_CN: for git v2.19.0 l10n round 1 to 2

Johannes Schindelin (41):
      Makefile: fix the "built from commit" code
      merge: allow reading the merge commit message from a file
      rebase --rebase-merges: add support for octopus merges
      rebase --rebase-merges: adjust man page for octopus support
      vcbuild/README: update to accommodate for missing common-cmds.h
      t7406: avoid failures solely due to timing issues
      contrib: add a script to initialize VS Code configuration
      vscode: hard-code a couple defines
      cache.h: extract enum declaration from inside a struct declaration
      mingw: define WIN32 explicitly
      vscode: only overwrite C/C++ settings
      vscode: wrap commit messages at column 72 by default
      vscode: use 8-space tabs, no trailing ws, etc for Git's source code
      vscode: add a dictionary for cSpell
      vscode: let cSpell work on commit messages, too
      pull --rebase=<type>: allow single-letter abbreviations for the type
      t3430: demonstrate what -r, --autosquash & --exec should do
      git-compat-util.h: fix typo
      remote-curl: remove spurious period
      rebase --exec: make it work with --rebase-merges
      linear-assignment: a function to solve least-cost assignment problems
      Introduce `range-diff` to compare iterations of a topic branch
      range-diff: first rudimentary implementation
      range-diff: improve the order of the shown commits
      range-diff: also show the diff between patches
      range-diff: right-trim commit messages
      range-diff: indent the diffs just like tbdiff
      range-diff: suppress the diff headers
      range-diff: adjust the output of the commit pairs
      range-diff: do not show "function names" in hunk headers
      range-diff: use color for the commit pairs
      color: add the meta color GIT_COLOR_REVERSE
      diff: add an internal option to dual-color diffs of diffs
      range-diff: offer to dual-color the diffs
      range-diff --dual-color: skip white-space warnings
      range-diff: populate the man page
      completion: support `git range-diff`
      range-diff: left-pad patch numbers
      range-diff: make --dual-color the default mode
      range-diff: use dim/bold cues to improve dual color mode
      chainlint: fix for core.autocrlf=true

Johannes Sixt (1):
      mingw: enable atomic O_APPEND

Jonathan Nieder (12):
      object: add repository argument to grow_object_hash
      object: move grafts to object parser
      commit: add repository argument to commit_graft_pos
      commit: add repository argument to register_commit_graft
      commit: add repository argument to read_graft_file
      commit: add repository argument to prepare_commit_graft
      commit: add repository argument to lookup_commit_graft
      subtree test: add missing && to &&-chain
      subtree test: simplify preparation of expected results
      doc hash-function-transition: pick SHA-256 as NewHash
      partial-clone: render design doc using asciidoc
      Revert "Merge branch 'sb/submodule-core-worktree'"

Jonathan Tan (28):
      list-objects: check if filter is NULL before using
      fetch-pack: split up everything_local()
      fetch-pack: clear marks before re-marking
      fetch-pack: directly end negotiation if ACK ready
      fetch-pack: use ref adv. to prune "have" sent
      fetch-pack: make negotiation-related vars local
      fetch-pack: move common check and marking together
      fetch-pack: introduce negotiator API
      pack-bitmap: remove bitmap_git global variable
      pack-bitmap: add free function
      fetch-pack: write shallow, then check connectivity
      fetch-pack: support negotiation tip whitelist
      upload-pack: send refs' objects despite "filter"
      clone: check connectivity even if clone is partial
      revision: tolerate promised targets of tags
      tag: don't warn if target is missing but promised
      negotiator/skipping: skip commits during fetch
      commit-graph: refactor preparing commit graph
      object-store: add missing include
      commit-graph: add missing forward declaration
      commit-graph: add free_commit_graph
      commit-graph: store graph in struct object_store
      commit-graph: add repo arg to graph readers
      t5702: test fetch with multiple refspecs at a time
      fetch: send "refs/tags/" prefix upon CLI refspecs
      fetch-pack: unify ref in and out param
      repack: refactor setup of pack-objects cmd
      repack: repack promisor objects if -a or -A is set

Josh Steadmon (1):
      protocol-v2 doc: put HTTP headers after request

Jules Maselbas (1):
      send-email: fix tls AUTH when sending batch

Junio C Hamano (23):
      tests: clean after SANITY tests
      ewah: delete unused 'rlwit_discharge_empty()'
      Prepare to start 2.19 cycle
      First batch for 2.19 cycle
      Second batch for 2.19 cycle
      fixup! connect.h: avoid forward declaration of an enum
      fixup! refs/refs-internal.h: avoid forward declaration of an enum
      t3404: fix use of "VAR=VAL cmd" with a shell function
      Third batch for 2.19 cycle
      Fourth batch for 2.19 cycle
      remote: make refspec follow the same disambiguation rule as local refs
      Fifth batch for 2.19 cycle
      update-index: there no longer is `apply --index-info`
      gpg-interface: propagate exit status from gpg back to the callers
      Sixth batch for 2.19 cycle
      config.txt: clarify core.checkStat
      Seventh batch for 2.19 cycle
      sideband: do not read beyond the end of input
      Git 2.19-rc0
      Getting ready for -rc1
      Git 2.19-rc1
      Git 2.19-rc2
      Git 2.19

Kana Natsuno (2):
      t4018: add missing test cases for PHP
      userdiff: support new keywords in PHP hunk header

Kim Gybels (1):
      gc --auto: release pack files before auto packing

Kirill Smelkov (1):
      fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits

Kyle Meyer (1):
      range-diff: update stale summary of --no-dual-color

Luis Marsano (2):
      git-credential-netrc: use in-tree Git.pm for tests
      git-credential-netrc: fix exit status when tests fail

Luke Diamand (6):
      git-p4: python3: replace <> with !=
      git-p4: python3: replace dict.has_key(k) with "k in dict"
      git-p4: python3: remove backticks
      git-p4: python3: basestring workaround
      git-p4: python3: use print() function
      git-p4: python3: fix octal constants

Marc Strapetz (1):
      Documentation: declare "core.ignoreCase" as internal variable

Martin Ågren (1):
      refspec: initalize `refspec_item` in `valid_fetch_refspec()`

Masaya Suzuki (2):
      builtin/send-pack: populate the default configs
      doc: fix want-capability separator

Max Kirillov (5):
      http-backend: cleanup writing to child process
      http-backend: respect CONTENT_LENGTH as specified by rfc3875
      unpack-trees: do not fail reset because of unmerged skipped entry
      http-backend: respect CONTENT_LENGTH for receive-pack
      http-backend: allow empty CONTENT_LENGTH

Michael Barabanov (1):
      filter-branch: skip commits present on --state-branch

Mike Hommey (1):
      fast-import: do not call diff_delta() with empty buffer

Nguyễn Thái Ngọc Duy (100):
      commit-slab.h: code split
      commit-slab: support shared commit-slab
      blame: use commit-slab for blame suspects instead of commit->util
      describe: use commit-slab for commit names instead of commit->util
      shallow.c: use commit-slab for commit depth instead of commit->util
      sequencer.c: use commit-slab to mark seen commits
      sequencer.c: use commit-slab to associate todo items to commits
      revision.c: use commit-slab for show_source
      bisect.c: use commit-slab for commit weight instead of commit->util
      name-rev: use commit-slab for rev-name instead of commit->util
      show-branch: use commit-slab for commit-name instead of commit->util
      show-branch: note about its object flags usage
      log: use commit-slab in prepare_bases() instead of commit->util
      merge: use commit-slab in merge remote desc instead of commit->util
      commit.h: delete 'util' field in struct commit
      diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
      diff: turn --ita-invisible-in-index on by default
      t2203: add a test about "diff HEAD" case
      apply: add --intent-to-add
      parse-options: option to let --git-completion-helper show negative form
      completion: suppress some -no- options
      Add and use generic name->id mapping code for color slot parsing
      grep: keep all colors in an array
      fsck: factor out msg_id_info[] lazy initialization code
      help: add --config to list all available config
      fsck: produce camelCase config key names
      advice: keep config name in camelCase in advice_config[]
      am: move advice.amWorkDir parsing back to advice.c
      completion: drop the hard coded list of config vars
      completion: keep other config var completion in camelCase
      completion: support case-insensitive config vars
      log-tree: allow to customize 'grafted' color
      completion: complete general config vars in two steps
      upload-pack: reject shallow requests that would return nothing
      completion: collapse extra --no-.. options
      pack-objects: fix performance issues on packing large deltas
      Update messages in preparation for i18n
      archive-tar.c: mark more strings for translation
      archive-zip.c: mark more strings for translation
      builtin/config.c: mark more strings for translation
      builtin/grep.c: mark strings for translation
      builtin/pack-objects.c: mark more strings for translation
      builtin/replace.c: mark more strings for translation
      commit-graph.c: mark more strings for translation
      config.c: mark more strings for translation
      connect.c: mark more strings for translation
      convert.c: mark more strings for translation
      dir.c: mark more strings for translation
      environment.c: mark more strings for translation
      exec-cmd.c: mark more strings for translation
      object.c: mark more strings for translation
      pkt-line.c: mark more strings for translation
      refs.c: mark more strings for translation
      refspec.c: mark more strings for translation
      replace-object.c: mark more strings for translation
      sequencer.c: mark more strings for translation
      sha1-file.c: mark more strings for translation
      transport.c: mark more strings for translation
      transport-helper.c: mark more strings for translation
      pack-objects: document about thread synchronization
      apply.h: drop extern on func declaration
      attr.h: drop extern from function declaration
      blame.h: drop extern on func declaration
      cache-tree.h: drop extern from function declaration
      convert.h: drop 'extern' from function declaration
      diffcore.h: drop extern from function declaration
      diff.h: remove extern from function declaration
      line-range.h: drop extern from function declaration
      rerere.h: drop extern from function declaration
      repository.h: drop extern from function declaration
      revision.h: drop extern from function declaration
      submodule.h: drop extern from function declaration
      config.txt: reorder blame stuff to keep config keys sorted
      Makefile: add missing dependency for command-list.h
      diff.c: move read_index() code back to the caller
      cache-tree: wrap the_index based wrappers with #ifdef
      attr: remove an implicit dependency on the_index
      convert.c: remove an implicit dependency on the_index
      dir.c: remove an implicit dependency on the_index in pathspec code
      preload-index.c: use the right index instead of the_index
      ls-files: correct index argument to get_convert_attr_ascii()
      unpack-trees: remove 'extern' on function declaration
      unpack-trees: add a note about path invalidation
      unpack-trees: don't shadow global var the_index
      unpack-trees: convert clear_ce_flags* to avoid the_index
      unpack-trees: avoid the_index in verify_absent()
      pathspec.c: use the right index instead of the_index
      submodule.c: use the right index instead of the_index
      entry.c: use the right index instead of the_index
      attr: remove index from git_attr_set_direction()
      grep: use the right index instead of the_index
      archive.c: avoid access to the_index
      archive-*.c: use the right repository
      resolve-undo.c: use the right index instead of the_index
      apply.c: pass struct apply_state to more functions
      apply.c: make init_apply_state() take a struct repository
      apply.c: remove implicit dependency on the_index
      blame.c: remove implicit dependency on the_index
      cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD
      generate-cmdlist.sh: collect config from all config.txt files

Nicholas Guriev (1):
      mergetool: don't suggest to continue after last file

Olga Telezhnaya (5):
      ref-filter: add info_source to valid_atom
      ref-filter: fill empty fields with empty values
      ref-filter: initialize eaten variable
      ref-filter: merge get_obj and get_object
      ref-filter: use oid_object_info() to get object

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation(3608t0f0u)
      l10n: sv.po: Update Swedish translation (3958t0f0u)

Phillip Wood (7):
      add -p: fix counting empty context lines in edited patches
      sequencer: do not squash 'reword' commits when we hit conflicts
      sequencer: handle errors from read_author_ident()
      sequencer: fix quoting in write_author_script
      rebase -i: fix numbering in squash message
      t3430: add conflicting commit
      rebase -i: fix SIGSEGV when 'merge <branch>' fails

Prathamesh Chavan (4):
      submodule foreach: correct '$path' in nested submodules from a subdirectory
      submodule foreach: document '$sm_path' instead of '$path'
      submodule foreach: document variable '$displaypath'
      submodule: port submodule subcommand 'foreach' from shell to C

Ralf Thielow (1):
      l10n: de.po: translate 108 new messages

Ramsay Jones (3):
      fsck: check skiplist for object in fsck_blob()
      t6036: fix broken && chain in sub-shell
      t5562: avoid non-portable "export FOO=bar" construct

Raphaël Hertzog (1):
      l10n: fr: fix a message seen in git bisect

René Scharfe (10):
      remote: clear string_list after use in mv()
      add, update-index: fix --chmod argument help
      difftool: remove angular brackets from argument help
      pack-objects: specify --index-version argument help explicitly
      send-pack: specify --force-with-lease argument help explicitly
      shortlog: correct option help for -w
      parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
      checkout-index: improve argument help for --stage
      remote: improve argument help for add --mirror
      parseopt: group literal string alternatives in argument help

SZEDER Gábor (30):
      update-ref --stdin: use skip_prefix()
      t7510-signed-commit: use 'test_must_fail'
      tests: make forging GPG signed commits and tags more robust
      t5541: clean up truncating access log
      t/lib-httpd: add the strip_access_log() helper function
      t/lib-httpd: avoid occasional failures when checking access.log
      t5608: fix broken &&-chain
      t9300: wait for background fast-import process to die after killing it
      travis-ci: run Coccinelle static analysis with two parallel jobs
      travis-ci: fail if Coccinelle static analysis found something to transform
      coccinelle: mark the 'coccicheck' make target as .PHONY
      coccinelle: use $(addsuffix) in 'coccicheck' make target
      coccinelle: exclude sha1dc source files from static analysis
      coccinelle: put sane filenames into output patches
      coccinelle: extract dedicated make target to clean Coccinelle's results
      travis-ci: include the trash directories of failed tests in the trace log
      t5318: use 'test_cmp_bin' to compare commit-graph files
      t5318: avoid unnecessary command substitutions
      t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
      tests: use 'test_must_be_empty' instead of '! test -s'
      tests: use 'test_must_be_empty' instead of 'test ! -s'
      tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>'
      tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>'
      t7501-commit: drop silly command substitution
      t0020-crlf: check the right file
      t4051-diff-function-context: read the right file
      t6018-rev-list-glob: fix 'empty stdin' test
      t3903-stash: don't try to grep non-existing file
      t3420-rebase-autostash: don't try to grep non-existing files
      t/lib-rebase.sh: support explicit 'pick' commands in 'fake_editor.sh'

Samuel Maftoul (1):
      branch: support configuring --sort via .gitconfig

Sebastian Kisela (2):
      git-instaweb: support Fedora/Red Hat apache module path
      git-instaweb: fix apache2 config with apache >= 2.4

Stefan Beller (87):
      repository: introduce parsed objects field
      object: add repository argument to create_object
      alloc: add repository argument to alloc_blob_node
      alloc: add repository argument to alloc_tree_node
      alloc: add repository argument to alloc_commit_node
      alloc: add repository argument to alloc_tag_node
      alloc: add repository argument to alloc_object_node
      alloc: add repository argument to alloc_report
      alloc: add repository argument to alloc_commit_index
      object: allow grow_object_hash to handle arbitrary repositories
      object: allow create_object to handle arbitrary repositories
      alloc: allow arbitrary repositories for alloc functions
      object-store: move object access functions to object-store.h
      shallow: add repository argument to set_alternate_shallow_file
      shallow: add repository argument to register_shallow
      shallow: add repository argument to check_shallow_file_for_update
      shallow: add repository argument to is_repository_shallow
      cache: convert get_graft_file to handle arbitrary repositories
      path.c: migrate global git_path_* to take a repository argument
      shallow: migrate shallow information into the object parser
      commit: allow prepare_commit_graft to handle arbitrary repositories
      commit: allow lookup_commit_graft to handle arbitrary repositories
      refs/packed-backend.c: close fd of empty file
      submodule--helper: plug mem leak in print_default_remote
      sequencer.c: plug leaks in do_pick_commit
      submodule: fix NULL correctness in renamed broken submodules
      t5526: test recursive submodules when fetching moved submodules
      submodule: unset core.worktree if no working tree is present
      submodule: ensure core.worktree is set after update
      submodule deinit: unset core.worktree
      submodule.c: report the submodule that an error occurs in
      sequencer.c: plug mem leak in git_sequencer_config
      .mailmap: merge different spellings of names
      object: add repository argument to parse_object
      object: add repository argument to lookup_object
      object: add repository argument to parse_object_buffer
      object: add repository argument to object_as_type
      blob: add repository argument to lookup_blob
      tree: add repository argument to lookup_tree
      commit: add repository argument to lookup_commit_reference_gently
      commit: add repository argument to lookup_commit_reference
      commit: add repository argument to lookup_commit
      commit: add repository argument to parse_commit_buffer
      commit: add repository argument to set_commit_buffer
      commit: add repository argument to get_cached_commit_buffer
      tag: add repository argument to lookup_tag
      tag: add repository argument to parse_tag_buffer
      tag: add repository argument to deref_tag
      object: allow object_as_type to handle arbitrary repositories
      object: allow lookup_object to handle arbitrary repositories
      blob: allow lookup_blob to handle arbitrary repositories
      tree: allow lookup_tree to handle arbitrary repositories
      commit: allow lookup_commit to handle arbitrary repositories
      tag: allow lookup_tag to handle arbitrary repositories
      tag: allow parse_tag_buffer to handle arbitrary repositories
      commit.c: allow parse_commit_buffer to handle arbitrary repositories
      commit-slabs: remove realloc counter outside of slab struct
      commit.c: migrate the commit buffer to the parsed object store
      commit.c: allow set_commit_buffer to handle arbitrary repositories
      commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
      object.c: allow parse_object_buffer to handle arbitrary repositories
      object.c: allow parse_object to handle arbitrary repositories
      tag.c: allow deref_tag to handle arbitrary repositories
      commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
      commit.c: allow lookup_commit_reference to handle arbitrary repositories
      xdiff/xdiff.h: remove unused flags
      xdiff/xdiffi.c: remove unneeded function declarations
      t4015: avoid git as a pipe input
      diff.c: do not pass diff options as keydata to hashmap
      diff.c: adjust hash function signature to match hashmap expectation
      diff.c: add a blocks mode for moved code detection
      diff.c: decouple white space treatment from move detection algorithm
      diff.c: factor advance_or_nullify out of mark_color_as_moved
      diff.c: add white space mode to move detection that allows indent changes
      diff.c: offer config option to control ws handling in move detection
      xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
      xdiff/xhistogram: factor out memory cleanup into free_index()
      xdiff/xhistogram: move index allocation into find_lcs
      Documentation/git-interpret-trailers: explain possible values
      xdiff/histogram: remove tail recursion
      t1300: document current behavior of setting options
      xdiff: reduce indent heuristic overhead
      config: fix case sensitive subsection names on writing
      git-config: document accidental multi-line setting in deprecated syntax
      git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
      t7410: update to new style
      builtin/submodule--helper: remove stray new line

Taylor Blau (9):
      Documentation/config.txt: camel-case lineNumber for consistency
      grep.c: expose {,inverted} match column in match_line()
      grep.[ch]: extend grep_opt to allow showing matched column
      grep.c: display column number of first match
      builtin/grep.c: add '--column' option to 'git-grep(1)'
      grep.c: add configuration variables to show matched option
      contrib/git-jump/git-jump: jump to exact location
      grep.c: extract show_line_header()
      grep.c: teach 'git grep --only-matching'

Thomas Rast (1):
      range-diff: add tests

Tobias Klauser (1):
      git-rebase--preserve-merges: fix formatting of todo help message

Todd Zullinger (4):
      git-credential-netrc: minor whitespace cleanup in test script
      git-credential-netrc: make "all" default target of Makefile
      gitignore.txt: clarify default core.excludesfile path
      dir.c: fix typos in core.excludesfile comment

Trần Ngọc Quân (1):
      l10n: vi.po(3958t): updated Vietnamese translation v2.19.0 round 2

Ville Skyttä (1):
      Documentation: spelling and grammar fixes

Vladimir Parfinenko (1):
      rebase: fix documentation formatting

William Chargin (2):
      sha1-name.c: for ":/", find detached HEAD commits
      t: factor out FUNNYNAMES as shared lazy prereq

Xiaolong Ye (1):
      format-patch: clear UNINTERESTING flag before prepare_bases

brian m. carlson (21):
      send-email: add an auto option for transfer encoding
      send-email: accept long lines with suitable transfer encoding
      send-email: automatically determine transfer-encoding
      docs: correct RFC specifying email line length
      sequencer: pass absolute GIT_WORK_TREE to exec commands
      cache: update object ID functions for the_hash_algo
      tree-walk: replace hard-coded constants with the_hash_algo
      hex: switch to using the_hash_algo
      commit: express tree entry constants in terms of the_hash_algo
      strbuf: allocate space with GIT_MAX_HEXSZ
      sha1-name: use the_hash_algo when parsing object names
      refs/files-backend: use the_hash_algo for writing refs
      builtin/update-index: convert to using the_hash_algo
      builtin/update-index: simplify parsing of cacheinfo
      builtin/fmt-merge-msg: make hash independent
      builtin/merge: switch to use the_hash_algo
      builtin/merge-recursive: make hash independent
      diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
      log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
      sha1-file: convert constants to uses of the_hash_algo
      pretty: switch hard-coded constants to the_hash_algo

Ævar Arnfjörð Bjarmason (45):
      checkout tests: index should be clean after dwim checkout
      checkout.h: wrap the arguments to unique_tracking_name()
      checkout.c: introduce an *_INIT macro
      checkout.c: change "unique" member to "num_matches"
      checkout: pass the "num_matches" up to callers
      builtin/checkout.c: use "ret" variable for return
      checkout: add advice for ambiguous "checkout <branch>"
      checkout & worktree: introduce checkout.defaultRemote
      refspec: s/refspec_item_init/&_or_die/g
      refspec: add back a refspec_item_init() function
      doc hash-function-transition: note the lack of a changelog
      receive.fsck.<msg-id> tests: remove dead code
      config doc: don't describe *.fetchObjects twice
      config doc: unify the description of fsck.* and receive.fsck.*
      config doc: elaborate on what transfer.fsckObjects does
      config doc: elaborate on fetch.fsckObjects security
      transfer.fsckObjects tests: untangle confusing setup
      fetch: implement fetch.fsck.*
      fsck: test & document {fetch,receive}.fsck.* config fallback
      fsck: add stress tests for fsck.skipList
      fsck: test and document unknown fsck.<msg-id> values
      tests: make use of the test_must_be_empty function
      tests: make use of the test_must_be_empty function
      fetch tests: change "Tag" test tag to "testTag"
      push tests: remove redundant 'git push' invocation
      push tests: fix logic error in "push" test assertion
      push tests: add more testing for forced tag pushing
      push tests: assert re-pushing annotated tags
      negotiator: unknown fetch.negotiationAlgorithm should error out
      fetch doc: cross-link two new negotiation options
      sha1dc: update from upstream
      push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
      fetch tests: correct a comment "remove it" -> "remove them"
      pull doc: fix a long-standing grammar error
      submodule: add more exhaustive up-path testing
      refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)
      t2024: mark test using "checkout -p" with PERL prerequisite
      tests: fix and add lint for non-portable head -c N
      tests: fix and add lint for non-portable seq
      tests: fix comment syntax in chainlint.sed for AIX sed
      tests: use shorter labels in chainlint.sed for AIX sed
      tests: fix version-specific portability issue in Perl JSON
      tests: fix and add lint for non-portable grep --file
      tests: fix non-portable "${var:-"str"}" construct
      tests: fix non-portable iconv invocation

Łukasz Stelmach (1):
      completion: complete remote names too


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #07; Fri, 22)
@ 2022-07-23  1:01  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-23  1:01 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.

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']

* gc/bare-repo-discovery (2022-07-14) 5 commits
  (merged to 'next' on 2022-07-15 at 5206577852)
 + setup.c: create `safe.bareRepository`
 + safe.directory: use git_protected_config()
 + config: learn `git_protected_config()`
 + Documentation: define protected configuration
 + Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.
 source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>


* js/ci-github-workflow-markup (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 196166f671)
 + tests: fix incorrect --write-junit-xml code

 A fix for a regression in test framework.
 source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>


* js/shortlog-sort-stably (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 75e4efe678)
 + shortlog: use a stable sort

 "git shortlog -n" relied on the underlying qsort() to be stable,
 which shouldn't have.  Fixed.
 source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>


* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4273bbd4b4)
 + mergetool(vimdiff): allow paths to contain spaces again

 Variable quoting fix in the vimdiff driver of "git mergetool"
 source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>


* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4dd4a117ec)
 + mingw: avoid mktemp() in mkstemp() implementation

 mkstemp() emulation on Windows has been improved.
 source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>

--------------------------------------------------
[New Topics]

* ab/leak-check (2022-07-20) 14 commits
 - CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
 - upload-pack: fix a memory leak in create_pack_file()
 - leak tests: mark passing SANITIZE=leak tests as leak-free
 - test-lib: have the "check" mode for SANITIZE=leak consider leak logs
 - test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
 - test-lib: simplify by removing test_external
 - tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
 - t/Makefile: don't remove test-results in "clean-except-prove-cache"
 - test-lib: add a SANITIZE=leak logging mode
 - t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
 - test-lib: add a --invert-exit-code switch
 - test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
 - test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
 - test-lib: use $1, not $@ in test_known_broken_{ok,failure}_

 Plugging more leaks.
 source: <cover-v2-00.14-00000000000-20220720T211221Z-avarab@gmail.com>


* mb/p4-fixes (2022-07-20) 2 commits
  (merged to 'next' on 2022-07-20 at 7942d72b1c)
 + git-p4: fix error handling in P4Unshelve.renameBranch()
 + git-p4: fix typo in P4Submit.applyCommit()

 Fix a few issues in "git p4".

 Will merge to 'master'.
 source: <pull.1297.v2.git.git.1658343330.gitgitgadget@gmail.com>


* mb/p4-utf16-crlf (2022-07-20) 1 commit
  (merged to 'next' on 2022-07-20 at c2fedd2fc2)
 + git-p4: fix CR LF handling for utf16 files

 "git p4" working on UTF-16 files on Windows did not implement
 CRLF-to-LF conversion correctly, which has been corrected.

 Will merge to 'master'.
 source: <pull.1294.v2.git.git.1658341065221.gitgitgadget@gmail.com>


* jc/string-list-cleanup (2022-07-20) 1 commit
 - builtin/remote.c: use the right kind of STRING_LIST_INIT

 Code clean-up.

 Will merge to 'next'.
 source: <xmqq7d471dns.fsf@gitster.g>


* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
  (merged to 'next' on 2022-07-22 at 4004fa75eb)
 + pkt-line.h: move comment closer to the associated code

 In-code comment clarification.

 Will merge to 'master'.
 source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>


* mt/rot13-in-c (2022-07-22) 3 commits
 - t/t0021: replace old rot13-filter.pl uses with new test-tool cmd
 - t/t0021: convert the rot13-filter.pl script to C
 - Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
 (this branch uses mt/checkout-count-fix.)

 Test portability improvements.

 Needs review.
 source: <cover.1658518769.git.matheus.bernardino@usp.br>


* tk/untracked-cache-with-uall (2022-07-22) 1 commit
 - read-cache: make `do_read_index()` always set up `istate->repo`

 Fix for a bug that makes write-tree to faile to write out a
 non-existent index as a tree, introduced in 2.37.

 Will merge to 'next'.
 source: <20220722212232.833188-1-martin.agren@gmail.com>

--------------------------------------------------
[Stalled]

* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ds/midx-with-less-memory (2022-07-19) 3 commits
  (merged to 'next' on 2022-07-20 at 250d257c3e)
 + midx: reduce memory pressure while writing bitmaps
 + midx: extract bitmap write setup
 + pack-bitmap-write: use const for hashes

 The codepath to write multi-pack index has been taught to release a
 large chunk of memory that holds an array of objects in the packs,
 as soon as it is done with the array, to reduce memory consumption.

 Will merge to 'master'.
 source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>


* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at c259b61b0e)
 + config/core.txt: fix minor issues for `core.sparseCheckoutCone`

 Docfix.

 Will merge to 'master'.
 source: <20220718100530.2068354-1-martin.agren@gmail.com>


* ma/t4200-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at 710d0cafd9)
 + t4200: drop irrelevant code

 Test fix.

 Will merge to 'master'.
 source: <20220718154322.2177166-1-martin.agren@gmail.com>


* mb/config-document-include (2022-07-17) 1 commit
  (merged to 'next' on 2022-07-19 at 8267b80aa2)
 + config.txt: document include, includeIf

 Add missing documentation for "include" and "includeIf" features in
 "git config" file format, which incidentally teachs the command
 line completion to include them in its offerings.

 Will merge to 'master'.
 source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>


* sg/index-format-doc-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at ccc384be5e)
 + index-format.txt: remove outdated list of supported extensions

 Docfix.

 Will merge to 'master'.
 source: <20220718085640.7395-1-szeder.dev@gmail.com>


* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
  (merged to 'next' on 2022-07-19 at 3f9565653a)
 + pack-bitmap.c: continue looping when first MIDX bitmap is found
 + pack-bitmap.c: using error() instead of silently returning -1
 + pack-bitmap.c: do not ignore error when opening a bitmap file
 + pack-bitmap.c: rename "idx_name" to "bitmap_name"
 + pack-bitmap.c: mark more strings for translations
 + pack-bitmap.c: fix formatting of error messages

 Tweak various messages that come from the pack-bitmap codepaths.

 Will merge to 'master'.
 source: <cover.1658159745.git.dyroneteng@gmail.com>


* tl/trace2-config-scope (2022-07-22) 2 commits
 - tr2: shows scope unconditionally in addition to key-value pair
 - api-trace2.txt: print config key-value pair

 Tweak trace2 output about configuration variables.

 Will merge to 'next'?
 source: <cover.1658472474.git.dyroneteng@gmail.com>


* vd/scalar-doc (2022-07-18) 2 commits
  (merged to 'next' on 2022-07-20 at fab0234da4)
 + scalar: convert README.md into a technical design doc
 + scalar: reword command documentation to clarify purpose

 Doc update.

 Will merge to 'master'.
 source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>


* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at fbb9414d09)
 + contrib/rerere-train: avoid useless gpg sign in training

 "rerere-train" script (in contrib/) used to honor commit.gpgSign
 while recreating the throw-away merges.

 Will merge to 'master'.
 source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>


* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at d38b649b18)
 + compat/win32: correct for incorrect compiler warning

 Workaround for a false positive compiler warning.

 Will merge to 'master'.
 source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>


* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
  (merged to 'next' on 2022-07-20 at eebd316ef6)
 + osx-keychain: fix compiler warning

 Workaround for a compiler warning against use of die() in
 osx-keychain (in contrib/).

 Will merge to 'master'.
 source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>


* ab/submodule-helper-leakfix (2022-07-21) 26 commits
 - submodule--helper: fix a configure_added_submodule() leak
 - submodule--helper: fix bad config API usage
 - submodule--helper: free rest of "displaypath" in "struct update_data"
 - submodule--helper: don't exit() on failure, return
 - submodule--helper: add skeleton "goto cleanup" to update_submodule()
 - submodule--helper: rename "int res" to "int ret"
 - submodule--helper: free some "displaypath" in "struct update_data"
 - submodule--helper: fix a memory leak in print_status()
 - submodule--helper: fix a leak in module_add()
 - submodule--helper: fix obscure leak in module_add()
 - submodule--helper: fix "reference" leak is "module_clone_data"
 - submodule--helper: fix a memory leak in get_default_remote_submodule()
 - submodule--helper: fix a leak with repo_clear()
 - submodule--helper: fix "sm_path" and other "module_cb_list" leaks
 - submodule--helper: fix "errmsg_str" memory leak
 - submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
 - submodule--helper: add and use *_release() functions
 - submodule--helper: add "const" to copy of "update_data"
 - submodule--helper: don't leak {run,capture}_command() cp.dir argument
 - submodule--helper: "struct pathspec" memory leak in module_update()
 - submodule--helper: fix most "struct pathspec" memory leaks
 - submodule--helper: fix trivial get_default_remote_submodule() leak
 - submodule--helper: fix a leak in "clone_submodule"
 - submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
 - submodule--helper: stop conflating "sb" in clone_submodule()
 - submodule--helper: replace memset() with { 0 }-initialization

 Plugging leaks in submodule--helper.

 Getting there.
 source: <cover-v3-00.26-00000000000-20220721T191249Z-avarab@gmail.com>


* mt/doc-config (2022-07-14) 3 commits
 - doc: notes: unify configuration variables definitions
 - doc: apply: unify configuration variables definitions
 - doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Will discard (Retracted?).
 cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>


* jt/fetch-pack-trace2-filter-spec (2022-07-18) 1 commit
 - fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.

 Will merge to 'next'?
 source: <20220718170027.3993042-1-jonathantanmy@google.com>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 - cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).

 Will merge to 'next'?
 source: <20220715092527.1567837-1-mail@beyermatthias.de>


* rs/mergesort (2022-07-17) 10 commits
 - mergesort: remove llist_mergesort()
 - packfile: use DEFINE_LIST_SORT
 - fetch-pack: use DEFINE_LIST_SORT
 - commit: use DEFINE_LIST_SORT
 - blame: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT_DEBUG
 - mergesort: add macros for typed sort of linked lists
 - mergesort: tighten merge loop
 - mergesort: unify ranks loops

 Make our mergesort implementation type-safe.

 Will merge to 'next'?
 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>


* cw/submodule-merge-messages (2022-07-18) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.

 Needs review.
 source: <20220718214349.3379328-1-calvinwan@google.com>


* ds/doc-wo-whitelist (2022-07-19) 5 commits
  (merged to 'next' on 2022-07-20 at ec51c6269a)
 + transport.c: avoid "whitelist"
 + t: avoid "whitelist"
 + git.txt: remove redundant language
 + git-cvsserver: clarify directory list
 + daemon: clarify directory arguments

 Avoid "white/black-list" in documentation and code comments.

 Will merge to 'master'.
 source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>


* mt/checkout-count-fix (2022-07-14) 3 commits
  (merged to 'next' on 2022-07-22 at 60c73a6b0b)
 + checkout: fix two bugs on the final count of updated entries
 + checkout: show bug about failed entries being included in final report
 + checkout: document bug where delayed checkout counts entries twice
 (this branch is used by mt/rot13-in-c.)

 "git checkout" miscounted the paths it updated, which has been
 corrected.

 Will merge to 'master'.
 source: <cover.1657799213.git.matheus.bernardino@usp.br>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
 - commit-graph: fix corrupt upgrade from generation v1 to v2
 - commit-graph: introduce `repo_find_commit_pos_in_graph()`
 - t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Will merge to 'next'?
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Needs review.
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* ac/bitmap-lookup-table (2022-07-20) 6 commits
 - bitmap-lookup-table: add performance tests for lookup table
 - p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Waiting for a more thorough review.
 cf. <Ys4DjW9JjQFx5Bhb@nand.local>
 source: <pull.1266.v4.git.1658325913.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
  (merged to 'next' on 2022-07-21 at 008518b4e5)
 + git-p4: refactoring of p4CmdList()
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 Will merge to 'master'.
 source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-18) 4 commits
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Will merge to 'next'?
 source: <20220718195102.66321-1-siddharthasthana31@gmail.com>


* ds/rebase-update-ref (2022-07-19) 13 commits
  (merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
 + sequencer: notify user of --update-refs activity
 + sequencer: ignore HEAD ref under --update-refs
 + rebase: add rebase.updateRefs config option
 + sequencer: rewrite update-refs as user edits todo list
 + rebase: update refs from 'update-ref' commands
 + rebase: add --update-refs option
 + sequencer: add update-ref command
 + sequencer: define array with enum values
 + rebase-interactive: update 'merge' description
 + branch: consider refs under 'update-refs'
 + t2407: test branches currently using apply backend
 + t2407: test bisect and rebase as black-boxes
 + Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Will merge to 'master'.
 source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at f77cd40c29)
 + trace2: only include "fsync" events if we git_fsync()

 Omit fsync-related trace2 entries when their values are all zero.

 Will merge to 'master'.
 source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>


* en/merge-restore-to-pristine (2022-07-21) 7 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are stat-dirty files
 - merge: do not abort early if one strategy fails to handle the merge
 - merge-resolve: abort if index does not match HEAD
 - merge-ort-wrappers: make printed message match the one from recursive

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Will merge to 'next'?
 source: <pull.1231.v3.git.1658391391.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-20) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'next'?
 source: <pull.1262.v8.git.1658334983053.gitgitgadget@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-19 at bcc29d823d)
 + commit-graph: pass repo_settings instead of repository

 API tweak to make it easier to run fuzz testing on commit-graph parser.

 Will merge to 'master'.
 source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #06; Tue, 19)
@ 2022-07-20  1:20  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-20  1:20 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.

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/

--------------------------------------------------
[New Topics]

* ds/midx-with-less-memory (2022-07-19) 3 commits
 - midx: reduce memory pressure while writing bitmaps
 - midx: extract bitmap write setup
 - pack-bitmap-write: use const for hashes

 The codepath to write multi-pack index has been taught to release a
 large chunk of memory that holds an array of objects in the packs,
 as soon as it is done with the array, to reduce memory consumption.

 Will merge to 'next'?
 source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>


* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at c259b61b0e)
 + config/core.txt: fix minor issues for `core.sparseCheckoutCone`

 Docfix.

 Will merge to 'master'.
 source: <20220718100530.2068354-1-martin.agren@gmail.com>


* ma/t4200-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at 710d0cafd9)
 + t4200: drop irrelevant code

 Test fix.

 Will merge to 'master'.
 source: <20220718154322.2177166-1-martin.agren@gmail.com>


* mb/config-document-include (2022-07-17) 1 commit
  (merged to 'next' on 2022-07-19 at 8267b80aa2)
 + config.txt: document include, includeIf

 Add missing documentation for "include" and "includeIf" features in
 "git config" file format, which incidentally teachs the command
 line completion to include them in its offerings.

 Will merge to 'master'.
 source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>


* sg/index-format-doc-update (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at ccc384be5e)
 + index-format.txt: remove outdated list of supported extensions

 Docfix.

 Will merge to 'master'.
 source: <20220718085640.7395-1-szeder.dev@gmail.com>


* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
  (merged to 'next' on 2022-07-19 at 3f9565653a)
 + pack-bitmap.c: continue looping when first MIDX bitmap is found
 + pack-bitmap.c: using error() instead of silently returning -1
 + pack-bitmap.c: do not ignore error when opening a bitmap file
 + pack-bitmap.c: rename "idx_name" to "bitmap_name"
 + pack-bitmap.c: mark more strings for translations
 + pack-bitmap.c: fix formatting of error messages

 Tweak various messages that come from the pack-bitmap codepaths.

 Will merge to 'master'.
 source: <cover.1658159745.git.dyroneteng@gmail.com>


* tl/trace2-config-scope (2022-07-18) 1 commit
 - tr2: dump names if config exist in multiple scopes

 Tweak trace2 output about configuration variables.

 Expecting a reroll.
 cf. <20220719074053.37282-1-tenglong.tl@tenglongtldeMacBook-Pro.local>
 source: <a01ae8478d3a8545241c5b064b6d369a330ee59f.1658159746.git.dyroneteng@gmail.com>


* vd/scalar-doc (2022-07-18) 2 commits
 - scalar: convert README.md into a technical design doc
 - scalar: reword command documentation to clarify purpose

 Doc update.

 Will merge to 'next'.
 source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>


* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
 - contrib/rerere-train: avoid useless gpg sign in training

 "rerere-train" script (in contrib/) used to honor commit.gpgSign
 while recreating the throw-away merges.

 Will merge to 'next'.
 source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>


* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
 - compat/win32: correct for incorrect compiler warning

 Workaround for a false positive compiler warning.

 Will merge to 'next'.
 source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>


* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
 - osx-keychain: fix compiler warning

 Workaround for a compiler warning against use of die() in
 osx-keychain (in contrib/).

 Will merge to 'next'.
 source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>


* ab/submodule-helper-leakfix (2022-07-19) 24 commits
 - submodule--helper: fix a configure_added_submodule() leak
 - submodule--helper: fix bad config API usage
 - submodule--helper: free rest of "displaypath" in "struct update_data"
 - submodule--helper: don't exit() on failure, return
 - submodule--helper: add skeleton "goto cleanup" to update_submodule()
 - submodule--helper: rename "int res" to "int ret"
 - submodule--helper: free some "displaypath" in "struct update_data"
 - submodule--helper: fix a memory leak in print_status()
 - submodule--helper: fix a leak in module_add()
 - submodule--helper: fix obscure leak in module_add()
 - submodule--helper: fix "reference" leak is "module_clone_data"
 - submodule--helper: fix a memory leak in get_default_remote_submodule()
 - submodule--helper: fix a leak with repo_clear()
 - submodule--helper: fix "sm_path" and other "module_cb_list" leaks
 - submodule--helper: fix "errmsg_str" memory leak
 - submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
 - submodule--helper: add and use *_release() functions
 - submodule--helper: add "const" to copy of "update_data"
 - submodule--helper: don't leak {run,capture}_command() cp.dir argument
 - submodule--helper: "struct pathspec" memory leak in module_update()
 - submodule--helper: fix most "struct pathspec" memory leaks
 - submodule--helper: fix trivial get_default_remote_submodule() leak
 - submodule--helper: fix a leak in "clone_submodule"
 - submodule--helper: replace memset() with { 0 }-initialization

 Plugging leaks in submodule--helper.

 Needs review.
 source: <cover-v2-00.24-00000000000-20220719T204458Z-avarab@gmail.com>

--------------------------------------------------
[Graduated to 'master']

* ab/build-gitweb (2022-06-28) 8 commits
  (merged to 'next' on 2022-07-11 at 731e354ff0)
 + gitweb/Makefile: add a "NO_GITWEB" parameter
 + Makefile: build 'gitweb' in the default target
 + gitweb/Makefile: include in top-level Makefile
 + gitweb: remove "test" and "test-installed" targets
 + gitweb/Makefile: prepare to merge into top-level Makefile
 + gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 + gitweb/Makefile: add a $(GITWEB_ALL) variable
 + gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/cocci-unused (2022-07-06) 6 commits
  (merged to 'next' on 2022-07-11 at 7fa60d2a5b)
 + cocci: generalize "unused" rule to cover more than "strbuf"
 + cocci: add and apply a rule to find "unused" strbufs
 + cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
 + cocci: add a "coccicheck-test" target and test *.cocci rules
 + Makefile & .gitignore: ignore & clean "git.res", not "*.res"
 + Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS

 Add Coccinelle rules to detect the pattern of initializing and then
 finalizing a structure without using it in between at all, which
 happens after code restructuring and the compilers fail to
 recognize as an unused variable.
 source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>


* ab/leakfix (2022-07-01) 11 commits
  (merged to 'next' on 2022-07-11 at 0b107fffcf)
 + pull: fix a "struct oid_array" memory leak
 + cat-file: fix a common "struct object_context" memory leak
 + gc: fix a memory leak
 + checkout: avoid "struct unpack_trees_options" leak
 + merge-file: fix memory leaks on error path
 + merge-file: refactor for subsequent memory leak fix
 + cat-file: fix a memory leak in --batch-command mode
 + revert: free "struct replay_opts" members
 + submodule.c: free() memory from xgetcwd()
 + clone: fix memory leak in wanted_peer_refs()
 + check-ref-format: fix trivial memory leak

 Plug various memory leaks.
 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
  (merged to 'next' on 2022-07-11 at db7a724694)
 + test-tool delta: fix a memory leak
 + test-tool ref-store: fix a memory leak
 + test-tool bloom: fix memory leaks
 + test-tool json-writer: fix memory leaks
 + test-tool regex: call regfree(), fix memory leaks
 + test-tool urlmatch-normalization: fix a memory leak
 + test-tool {dump,scrap}-cache-tree: fix memory leaks
 + test-tool path-utils: fix a memory leak
 + test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.
 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
  (merged to 'next' on 2022-07-11 at afab6c1918)
 + tests: don't assume a .git/info for .git/info/sparse-checkout
 + tests: don't assume a .git/info for .git/info/exclude
 + tests: don't assume a .git/info for .git/info/refs
 + tests: don't assume a .git/info for .git/info/attributes
 + tests: don't assume a .git/info for .git/info/grafts
 + tests: don't depend on template-created .git/branches
 + t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* bc/nettle-sha256 (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at cf9595d8ca)
 + sha256: add support for Nettle

 Support for libnettle as SHA256 implementation has been added.
 source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>


* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
  (merged to 'next' on 2022-07-11 at 5f8dadf87b)
 + merge-ort: fix issue with dual rename and add/add conflict
 + merge-ort: shuffle the computation and cleanup of potential collisions
 + merge-ort: make a separate function for freeing struct collisions
 + merge-ort: small cleanups of check_for_directory_rename
 + t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.
 source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>


* fr/vimdiff-layout-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-09 at d8461bd236)
 + vimdiff: make layout engine more robust against user vim settings

 Recent update to vimdiff layout code has been made more robust
 against different end-user vim settings.
 source: <20220708181024.45839-1-greenfoo@u92.eu>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
  (merged to 'next' on 2022-07-11 at 0d9cf172f9)
 + submodule--helper: remove display path helper
 + submodule--helper update: use --super-prefix
 + submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 + submodule--helper: use correct display path helper
 + submodule--helper: don't recreate recursive prefix
 + submodule--helper update: use display path helper
 + submodule--helper tests: add missing "display path" coverage
 + Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix

 Another step to rewrite more parts of "git submodule" in C.
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
  (merged to 'next' on 2022-07-13 at 4489696814)
 + t5330: remove run_with_limited_processses()
  (merged to 'next' on 2022-07-08 at cef32db0b6)
 + commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.
 source: <cover.1656593279.git.hanxin.hx@bytedance.com>


* jc/builtin-mv-move-array (2022-07-09) 1 commit
  (merged to 'next' on 2022-07-09 at 0d3b3f62e5)
 + builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()

 Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
 macro, which would improve maintainability and readability.
 source: <xmqq4jzpu4xp.fsf_-_@gitster.g>


* jc/resolve-undo (2022-07-11) 2 commits
  (merged to 'next' on 2022-07-13 at b9ef9482e8)
 + fsck: do not dereference NULL while checking resolve-undo data
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.
 source: <xmqq35f7kzad.fsf@gitster.g>


* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 7b3cca73a8)
 + gpg-interface: add function for converting trust level to string

 The code to convert between GPG trust level strings and internal
 constants we use to represent them have been cleaned up.
 source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>


* jk/clone-unborn-confusion (2022-07-11) 4 commits
  (merged to 'next' on 2022-07-13 at a7ae8cb4b5)
 + clone: move unborn head creation to update_head()
 + clone: use remote branch if it matches default HEAD
 + clone: propagate empty remote HEAD even with other branches
 + clone: drop extra newline from warning message

 "git clone" from a repository with some ref whose HEAD is unborn
 did not set the HEAD in the resulting repository correctly, which
 has been corrected.
 source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>


* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
  (merged to 'next' on 2022-07-13 at 9db5235d01)
 + diff-files: move misplaced cleanup label

 An earlier attempt to plug leaks placed a clean-up label to jump to
 at a bogus place, which as been corrected.
 source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>


* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at d1521724db)
 + ref-filter: disable save_commit_buffer while traversing

 Will merge to 'master'.
 source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>


* ll/curl-accept-language (2022-07-11) 1 commit
  (merged to 'next' on 2022-07-13 at 076aba7421)
 + remote-curl: send Accept-Language header to server

 Earlier, HTTP transport clients learned to tell the server side
 what locale they are in by sending Accept-Language HTTP header, but
 this was done only for some requests but not others.
 source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>


* rs/cocci-array-copy (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-13 at f21dec0f71)
 + cocci: avoid normalization rules for memcpy

 A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
 macro has been improved.
 source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>


* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
  (merged to 'next' on 2022-07-11 at 1e14685680)
 + multi-pack-index: simplify handling of unknown --options

 The way "git multi-pack" uses parse-options API has been improved.
 source: <20220710151645.GA2038@szeder.dev>

--------------------------------------------------
[Stalled]

* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* js/ci-github-workflow-markup (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 196166f671)
 + tests: fix incorrect --write-junit-xml code

 A fix for a regression in test framework.

 Will merge to 'master'.
 source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>


* js/shortlog-sort-stably (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 75e4efe678)
 + shortlog: use a stable sort

 "git shortlog -n" relied on the underlying qsort() to be stable,
 which shouldn't have.  Fixed.

 Will merge to 'master'.
 source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>


* mt/doc-config (2022-07-14) 3 commits
 - doc: notes: unify configuration variables definitions
 - doc: apply: unify configuration variables definitions
 - doc: grep: unify configuration variables definitions

 Unify description of configuration variables used by individual
 commands in the documentation of the commands and the documentation
 of the "git config".

 Will discard (Retracted?).
 cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
 source: <cover.1657819649.git.matheus.bernardino@usp.br>


* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4dd4a117ec)
 + mingw: avoid mktemp() in mkstemp() implementation

 mkstemp() emulation on Windows has been improved.

 Will merge to 'master'.
 source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>


* jt/fetch-pack-trace2-filter-spec (2022-07-18) 1 commit
 - fetch-pack: write effective filter to trace2

 "git fetch" client logs the partial clone filter used in the trace2
 output.

 Will merge to 'next'?
 source: <20220718170027.3993042-1-jonathantanmy@google.com>


* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
 - cherry-pick doc: clarify no-rerere-autoupdate still allows rerere

 Clarifies that the "--no-rerere-autoupdate" option does not disable
 the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).

 Will merge to 'next'?
 source: <20220715092527.1567837-1-mail@beyermatthias.de>


* rs/mergesort (2022-07-17) 10 commits
 - mergesort: remove llist_mergesort()
 - packfile: use DEFINE_LIST_SORT
 - fetch-pack: use DEFINE_LIST_SORT
 - commit: use DEFINE_LIST_SORT
 - blame: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT
 - test-mergesort: use DEFINE_LIST_SORT_DEBUG
 - mergesort: add macros for typed sort of linked lists
 - mergesort: tighten merge loop
 - mergesort: unify ranks loops

 Make our mergesort implementation type-safe.

 Will merge to 'next'?
 source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>


* cw/submodule-merge-messages (2022-07-18) 1 commit
 - submodule merge: update conflict error message

 Update the message given when "git merge" sees conflicts at a path
 with a submodule while merging a superproject.

 Needs review.
 source: <20220718214349.3379328-1-calvinwan@google.com>


* ds/doc-wo-whitelist (2022-07-19) 5 commits
 - transport.c: avoid "whitelist"
 - t: avoid "whitelist"
 - git.txt: remove redundant language
 - git-cvsserver: clarify directory list
 - daemon: clarify directory arguments

 Avoid "white/black-list" in documentation and code comments.

 Will merge to 'next'.
 source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>


* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-15 at 4273bbd4b4)
 + mergetool(vimdiff): allow paths to contain spaces again

 Variable quoting fix in the vimdiff driver of "git mergetool"

 Will merge to 'master'.
 source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>


* mt/checkout-count-fix (2022-07-14) 3 commits
 - checkout: fix two bugs on the final count of updated entries
 - checkout: show bug about failed entries being included in final report
 - checkout: document bug where delayed checkout counts entries twice

 "git checkout" miscounted the paths it updated, which has been
 corrected.

 Will merge to 'next'?
 source: <cover.1657799213.git.matheus.bernardino@usp.br>


* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
 - commit-graph: fix corrupt upgrade from generation v1 to v2
 - commit-graph: introduce `repo_find_commit_pos_in_graph()`
 - t5318: demonstrate commit-graph generation v2 corruption

 There was a bug in the codepath to upgrade generation information
 in commit-graph from v1 to v2 format, which has been corrected.

 Will merge to 'next'?
 source: <cover.1657667404.git.me@ttaylorr.com>


* js/safe-directory-plus (2022-07-13) 3 commits
 - mingw: be more informative when ownership check fails on FAT32
 - mingw: handle a file owned by the Administrators group correctly
 - Allow debugging unsafe directories' ownership

 Needs review.
 source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>


* po/doc-add-renormalize (2022-07-09) 1 commit
 - doc add: renormalize is not idempotent for CRCRLF

 Documentation for "git add --renormalize" has been improved.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>


* po/glossary-around-traversal (2022-07-09) 3 commits
 - glossary: add reachability bitmap description
 - glossary: add commit graph description
 - glossary: add Object DataBase (ODB) abbreviation

 The glossary entries for "commit-graph file" and "reachability
 bitmap" have been added.

 Expecting a reroll.
 cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
 source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>


* ac/bitmap-lookup-table (2022-07-06) 6 commits
 - p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
 - bitmap-lookup-table: add performance tests for lookup table
 - pack-bitmap: prepare to read lookup table extension
 - pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
 - pack-bitmap-write.c: write lookup table extension
 - Documentation/technical: describe bitmap lookup table extension

 The pack bitmap file gained a bitmap-lookup table to speed up
 locating the necessary bitmap for a given commit.

 Waiting for a more thorough review.
 cf. <Ys4DjW9JjQFx5Bhb@nand.local>
 source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>


* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
  (merged to 'next' on 2022-07-11 at 9c18616f76)
 + git-p4: fix bug with encoding of p4 client name

 "git p4" did not handle non-ASCII client name well, which has been
 corrected.

 On hold, waiting for a follow-up.
 cf. <xmqqcze2s7h0.fsf@gitster.g>
 source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>


* sa/cat-file-mailmap (2022-07-18) 4 commits
 - cat-file: add mailmap support
 - ident: rename commit_rewrite_person() to apply_mailmap_to_header()
 - ident: move commit_rewrite_person() to ident.c
 - revision: improve commit_rewrite_person()

 "git cat-file" learned an option to use the mailmap when showing
 commit and tag objects.

 Will merge to 'next'?
 source: <20220718195102.66321-1-siddharthasthana31@gmail.com>


* ds/rebase-update-ref (2022-07-19) 13 commits
 - sequencer: notify user of --update-refs activity
 - sequencer: ignore HEAD ref under --update-refs
 - rebase: add rebase.updateRefs config option
 - sequencer: rewrite update-refs as user edits todo list
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend
 - t2407: test bisect and rebase as black-boxes
 - Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Will merge to 'next'?
 source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-07-08) 4 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce xdl_calloc
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Will merge to 'next'?
 source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>


* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
  (merged to 'next' on 2022-07-19 at f77cd40c29)
 + trace2: only include "fsync" events if we git_fsync()

 Omit fsync-related trace2 entries when their values are all zero.

 Will merge to 'master'.
 source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Under review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-07-13) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Will merge to 'next'?
 source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
  (merged to 'next' on 2022-07-19 at bcc29d823d)
 + commit-graph: pass repo_settings instead of repository

 API tweak to make it easier to run fuzz testing on commit-graph parser.

 Will merge to 'master'.
 source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.

 Expecting a (hopefully final) reroll.
 cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-07-14) 5 commits
  (merged to 'next' on 2022-07-15 at 5206577852)
 + setup.c: create `safe.bareRepository`
 + safe.directory: use git_protected_config()
 + config: learn `git_protected_config()`
 + Documentation: define protected configuration
 + Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Will merge to 'master'.
 source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>

--------------------------------------------------
[Discarded]

* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 . send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Discarded.
 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* [RFC PATCH 0/7] merge requirement: index matches head
@ 2018-06-03  6:58  3% Elijah Newren
  2018-07-01  1:24  3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
    0 siblings, 2 replies; 200+ results
From: Elijah Newren @ 2018-06-03  6:58 UTC (permalink / raw)
  To: git; +Cc: jrnieder, Elijah Newren

Between working on some other things, I happened to be reading
Documentation/git-merge.txt and ran across the part that says:

    ...[merge will] abort if there are any changes registered in the
    index relative to the `HEAD` commit.  (One exception is when the
    changed index entries are in the state that would result from the
    merge already.)

I was pretty sure this statement was wrong, but did some digging to
uncover the details and the history.  What I thought would turn into a
simple three-line documentation fix, ballooned into this patch series.

This series might be best read in a different order; I'm not yet sure
the right way to structure it.  But:

  * Patch 5 demonstrates one of the ways that the parenthetical
    sentence is wrong (desirable perhaps, but not what is implemented)

  * Patch 7 explains the history, the trade-offs, the three ways the
    parenthetical sentence is wrong, and the many pitfalls we've run
    into trying to allow for such an exception.  Very small
    documentation fix with a huge commit message.

  * Patch 6 fixes the breakage demonstrated in patch 5, but if I only
    submitted patches 5-7, then the testsuite wouldn't pass because
    this fix uncovered multiple other bugs.  That's where patches 1-4
    came in.  This fix is also kind of opinionated; it takes the stance
    that allowing the exceptions isn't worth it.

Elijah Newren (7):
  t6044: verify that merges expected to abort actually abort
  t6044: add a testcase for index matching head, when head doesn't match HEAD
  merge-recursive: make sure when we say we abort that we actually abort
  merge-recursive: fix assumption that head tree being merged is HEAD
  t6044: add more testcases with staged changes before a merge is invoked
  merge-recursive: enforce rule that index matches head before merging
  merge: fix misleading pre-merge check documentation

 Documentation/git-merge.txt              |   6 +-
 builtin/am.c                             |   6 +-
 cache.h                                  |   8 --
 merge-recursive.c                        |  14 +--
 merge.c                                  |  10 +-
 t/t6044-merge-unrelated-index-changes.sh |  67 +++++++++++--
 t/t7504-commit-msg-hook.sh               |   4 +-
 t/t7611-merge-abort.sh                   | 118 -----------------------
 tree.h                                   |   8 ++
 9 files changed, 87 insertions(+), 154 deletions(-)

-- 
2.18.0.rc0.49.g3c08dc0fef


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Jul 2022, #01; Fri, 1)
@ 2022-07-01 23:08  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-01 23:08 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.

Git 2.37 final was released, many in the northan hemisphere are
about to be in summer vacation week.  We probably will have a small
update 2.37.1 near mid July to deal with a small "regression" in
2.37 but otherwise things are expected to be slow, and slow 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/

--------------------------------------------------
[New Topics]

* ds/git-rebase-doc-markup (2022-06-30) 1 commit
 - git-rebase.txt: use back-ticks consistently

 Correct "git rebase" documentation mark-up.

 Will merge to 'next'.
 source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>


* ds/rebase-update-ref (2022-06-28) 8 commits
 - rebase: add rebase.updateRefs config option
 - rebase: update refs from 'update-ref' commands
 - rebase: add --update-refs option
 - sequencer: add update-ref command
 - sequencer: define array with enum values
 - rebase-interactive: update 'merge' description
 - branch: consider refs under 'update-refs'
 - t2407: test branches currently using apply backend
 (this branch uses ds/branch-checked-out.)

 "git rebase -i" learns to update branches whose tip appear in the
 rebased range.

 Will merge to 'next'?
 source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>


* ds/vscode-settings (2022-06-27) 1 commit
 - vscode: improve tab size and wrapping

 source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>


* js/add-i-delete (2022-06-28) 1 commit
  (merged to 'next' on 2022-06-28 at 8ac04bfd24)
 + add --interactive: allow `update` to stage deleted files

 Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
 correctly record a removed file to the index, which was fixed.

 Will merge to 'master'.
 source: <pull.1273.git.1656454964378.gitgitgadget@gmail.com>


* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
 - pack-objects.h: remove outdated pahole results

 Comment fix.

 Will merge to 'next'.
 source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>


* ab/leakfix (2022-07-01) 11 commits
 - pull: fix a "struct oid_array" memory leak
 - cat-file: fix a common "struct object_context" memory leak
 - gc: fix a memory leak
 - checkout: avoid "struct unpack_trees_options" leak
 - merge-file: fix memory leaks on error path
 - merge-file: refactor for subsequent memory leak fix
 - cat-file: fix a memory leak in --batch-command mode
 - revert: free "struct replay_opts" members
 - submodule.c: free() memory from xgetcwd()
 - clone: fix memory leak in wanted_peer_refs()
 - check-ref-format: fix trivial memory leak

 Plug various memory leaks.

 source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>


* ab/test-tool-leakfix (2022-07-01) 9 commits
 - test-tool delta: fix a memory leak
 - test-tool ref-store: fix a memory leak
 - test-tool bloom: fix memory leaks
 - test-tool json-writer: fix memory leaks
 - test-tool regex: call regfree(), fix memory leaks
 - test-tool urlmatch-normalization: fix a memory leak
 - test-tool {dump,scrap}-cache-tree: fix memory leaks
 - test-tool path-utils: fix a memory leak
 - test-tool test-hash: fix a memory leak

 Plug various memory leaks in test-tool commands.

 source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>


* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
 - t6429: fix use of non-existent function

 A test fix.

 Will merge to 'next'.
 source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>


* gc/submodule-use-super-prefix (2022-06-30) 8 commits
 - submodule--helper: remove display path helper
 - submodule--helper update: use --super-prefix
 - submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
 - submodule--helper: use correct display path helper
 - submodule--helper: don't recreate recursive prefix
 - submodule--helper update: use display path helper
 - submodule--helper tests: add missing "display path" coverage
 - Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
 (this branch uses ab/submodule-cleanup.)

 Another step to rewrite more parts of "git submodule" in C.

 Will merge to 'next'?
 source: <20220701021157.88858-1-chooglen@google.com>


* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
 - commit-graph.c: no lazy fetch in lookup_commit_in_graph()

 A corner case bug where lazily fetching objects from a promisor
 remote resulted in infinite recursion has been corrected.

 Will merge to 'next'.
 source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>


* ll/ls-files-tests-update (2022-07-01) 1 commit
 - ls-files: update test style

 Test update.

 Will merge to 'next'.
 source: <pull.1269.v5.git.1656673435357.gitgitgadget@gmail.com>


* pw/xdiff-alloc (2022-06-30) 3 commits
 - xdiff: introduce XDL_ALLOC_GROW()
 - xdiff: introduce XDL_CALLOC_ARRAY()
 - xdiff: introduce XDL_ALLOC_ARRAY()

 Add a level of redirection to array allocation API in xdiff part,
 to make it easier to share with the libgit2 project.

 Waiting for review responses.
 source: <pull.1272.git.1656516334.gitgitgadget@gmail.com>


* sy/mv-out-of-cone (2022-07-01) 8 commits
 - mv: add check_dir_in_index() and solve general dir check issue
 - mv: use flags mode for update_mode
 - mv: check if <destination> exists in index to handle overwriting
 - mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
 - mv: decouple if/else-if checks using goto
 - mv: update sparsity after moving from out-of-cone to in-cone
 - t1092: mv directory from out-of-cone to in-cone
 - t7002: add tests for moving out-of-cone file/directory

 "git mv A B" in a sparsely populated working tree can be asked to
 move a path between directories that are "in cone" (i.e. expected
 to be materialized in the working tree) and "out of cone"
 (i.e. expected to be hidden).  The handling of such cases has been
 improved.

 Will merge to 'next'.
 source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>

--------------------------------------------------
[Stalled]

* bc/stash-export (2022-04-08) 4 commits
 - builtin/stash: provide a way to import stashes from a ref
 - builtin/stash: provide a way to export stashes to a ref
 - builtin/stash: factor out revision parsing into a function
 - object-name: make get_oid quietly return an error

 A mechanism to export and import stash entries to and from a normal
 commit to transfer it across repositories has been introduced.

 Expecting a reroll.
 cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
 source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>


* cw/remote-object-info (2022-05-06) 11 commits
 - SQUASH??? coccicheck
 - SQUASH??? ensure that coccicheck is happy
 - SQUASH??? compilation fix
 - cat-file: add --batch-command remote-object-info command
 - cat-file: move parse_cmd and DEFAULT_FORMAT up
 - transport: add object-info fallback to fetch
 - transport: add client side capability to request object-info
 - object-info: send attribute packet regardless of object ids
 - object-store: add function to free object_info contents
 - fetch-pack: move fetch default settings
 - fetch-pack: refactor packet writing

 A client component to talk with the object-info endpoint.

 Expecting a reroll.
 source: <20220502170904.2770649-1-calvinwan@google.com>

--------------------------------------------------
[Cooking]

* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
 . trace2: don't include "fsync" events in all trace2 logs

 Omit fsync-related trace2 entries when their values are all zero.

 Breaks tests in hx/unpack-streaming with an interesting interaction.
 source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>


* cl/grep-max-count (2022-06-22) 1 commit
 - grep: add --max-count command line option

 "git grep -m<max-hits>" is a way to limit the hits shown per file.

 Will merge to 'next'.
 source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>


* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
 - revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis

 Documentation mark-up fix.

 Will merge to 'next'.
 source: <YrOmsA04FZae89be@coredump.intra.peff.net>


* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
 - rev-parse: documentation adjustment - mention remote tracking with @{u}

 Doc update.

 Will merge to 'next'.
 source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>


* en/merge-tree (2022-06-22) 17 commits
 - git-merge-tree.txt: add a section on potentional usage mistakes
 - merge-tree: add a --allow-unrelated-histories flag
 - merge-tree: allow `ls-files -u` style info to be NUL terminated
 - merge-ort: optionally produce machine-readable output
 - merge-ort: store more specific conflict information
 - merge-ort: make `path_messages` a strmap to a string_list
 - merge-ort: store messages in a list, not in a single strbuf
 - merge-tree: provide easy access to `ls-files -u` style info
 - merge-tree: provide a list of which files have conflicts
 - merge-ort: remove command-line-centric submodule message from merge-ort
 - merge-ort: provide a merge_get_conflicted_files() helper function
 - merge-tree: support including merge messages in output
 - merge-ort: split out a separate display_update_messages() function
 - merge-tree: implement real merges
 - merge-tree: add option parsing and initial shell for real merge function
 - merge-tree: move logic for existing merge into new function
 - merge-tree: rename merge_trees() to trivial_merge_trees()

 A new command is introduced that takes two commits and computes a
 tree that would be contained in the resulting merge commit, if the
 histories leading to these two commits were to be merged, and is
 added as a new mode of "git merge-tree" subcommand.

 Will merge to 'next'.
 source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>


* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
 - i18n: mark message helpers prefix for translation

 Give _() markings to fatal/warning/usage: that is shown in front of
 these messages.

 Will merge to 'next'.
 source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>


* ds/t5510-brokequote (2022-06-21) 1 commit
 - t5510: replace 'origin' with URL more carefully

 Test fix.
 source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>


* en/merge-restore-to-pristine (2022-06-21) 6 commits
 - merge: do not exit restore_state() prematurely
 - merge: ensure we can actually restore pre-merge state
 - merge: make restore_state() restore staged state too
 - merge: fix save_state() to work when there are racy-dirty files
 - merge: remove unused variable
 - t6424: make sure a failed merge preserves local changes

 When "git merge" finds that it cannot perform a merge, it should
 restore the working tree to the state before the command was
 initiated, but in some corner cases it didn't.

 Needs review.
 source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>


* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
 - combine-diff: abort if --output is given
 - combine-diff: abort if --ignore-matching-lines is given

 Certain diff options are currently ignored when combined-diff is
 shown; mark them as incompatible with the feature.

 Will merge to 'next'.
 source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>


* tk/apply-case-insensitive (2022-06-21) 3 commits
 - apply: support case-only renames in case-insensitive filesystems
 - reset: new failing test for reset of case-insensitive duplicate in index
 - t4141: test "git apply" with core.ignorecase

 "git apply" barfed on a patch that makes a case-only rename on a
 case-insensitive filesystem.

 Needs review.
 source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>


* zh/ls-files-format (2022-06-27) 1 commit
 - ls-files: introduce "--format" option

 "git ls-files" learns the "--format" option to tweak its output.

 Expecting a reroll.
 cf. <CAOLTT8Tc95-aUE+uN2d8QjTJpGpGw6cBJfG+bpmyE55OcXTSRA@mail.gmail.com>
 source: <pull.1262.v4.git.1656257376109.gitgitgadget@gmail.com>


* ab/test-quoting-fix (2022-06-30) 3 commits
 - config tests: fix harmless but broken "rm -r" cleanup
 - test-lib.sh: fix prepend_var() quoting issue
 - tests: add missing double quotes to included library paths

 Fixes for tests when the source directory has unusual characters in
 its path, e.g. whitespaces, double-quotes, etc.

 Will merge to 'next'.
 source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>


* en/merge-dual-dir-renames-fix (2022-06-30) 5 commits
 - merge-ort: fix issue with dual rename and add/add conflict
 - merge-ort: shuffle the computation and cleanup of potential collisions
 - merge-ort: make a separate function for freeing struct collisions
 - merge-ort: small cleanups of check_for_directory_rename
 - t6423: add tests of dual directory rename plus add/add conflict

 Fixes a long-standing corner case bug around directory renames in
 the merge-ort strategy.

 Will merge to 'next'?
 source: <pull.1268.v3.git.1656653000.gitgitgadget@gmail.com>


* cr/setup-bug-typo (2022-06-17) 1 commit
  (merged to 'next' on 2022-06-17 at 8834ffe0ab)
 + setup: fix function name in a BUG() message

 Typofix in a BUG() message.

 Will cook in 'next'.
 source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>


* zk/push-use-bitmaps (2022-06-17) 1 commit
 - send-pack.c: add config push.useBitmaps

 "git push" sometimes perform poorly when reachability bitmaps are
 used, even in a repository where other operations are helped by
 bitmaps.  The push.useBitmaps configuration variable is introduced
 to allow disabling use of reachability bitmaps only for "git push".

 Will merge to 'next'.
 source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>


* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
 - remote: handle negative refspecs in git remote show
 (this branch is used by jk/t5505-restructure.)

 "git remote show [-n] frotz" now pays attention to negative
 pathspecs.

 Will merge to 'next'.
 source: <20220617002036.1577-2-jacob.keller@gmail.com>


* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
 - commit-graph: refactor to avoid prepare_repo_settings

 Expecting a reroll.
 source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>


* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
  (merged to 'next' on 2022-06-16 at ce0712a74c)
 + is_promisor_object(): walk promisor packs in pack-order

 Collection of what is referenced by objects in promisor packs have
 been optimized to inspect these objects in the in-pack order.

 Will cook in 'next'.
 source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>


* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
 - mktree: do not check type of remote objects

 "git mktree --missing" lazily fetched objects that are missing from
 the local object store, which was totally unnecessary.

 Will merge to 'next'.
 source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>


* ll/curl-accept-language (2022-06-13) 2 commits
 - PREP??? give initializer to rpc_state
 - remote-curl: send Accept-Language header to server

 source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>


* pb/diff-doc-raw-format (2022-06-13) 3 commits
 - diff-index.txt: update raw output format in examples
 - diff-format.txt: correct misleading wording
 - diff-format.txt: dst can be 0* SHA-1 when path is deleted, too

 source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>


* rs/archive-with-internal-gzip (2022-06-15) 6 commits
  (merged to 'next' on 2022-06-17 at ab5af6acd1)
 + archive-tar: use internal gzip by default
 + archive-tar: use OS_CODE 3 (Unix) for internal gzip
 + archive-tar: add internal gzip implementation
 + archive-tar: factor out write_block()
 + archive: rename archiver data field to filter_command
 + archive: update format documentation

 Teach "git archive" to (optionally and then by default) avoid
 spawning an external "gzip" process when creating ".tar.gz" (and
 ".tgz") archives.

 Will cook in 'next'.
 source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>


* ds/branch-checked-out (2022-06-21) 7 commits
  (merged to 'next' on 2022-06-21 at e42bc4566f)
 + branch: drop unused worktrees variable
 + fetch: stop passing around unused worktrees variable
  (merged to 'next' on 2022-06-17 at c881874257)
 + branch: fix branch_checked_out() leaks
 + branch: use branch_checked_out() when deleting refs
 + fetch: use new branch_checked_out() and add tests
 + branch: check for bisects and rebases
 + branch: add branch_checked_out() helper
 (this branch is used by ds/rebase-update-ref.)

 Introduce a helper to see if a branch is already being worked on
 (hence should not be newly checked out in a working tree), which
 performs much better than the existing find_shared_symref() to
 replace many uses of the latter.

 Will cook in 'next'.
 source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>


* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
 - fetch,fetch-pack: clarify connectivity check error

 We may find an object missing after a "git fetch" stores the
 objects it obtained from the other side, but it is not necessarily
 because the remote failed to send necessary objects.  Reword the
 messages in an attempt to help users explore other possibilities
 when they hit this error.

 Expecting a reroll.
 source: <20220610195247.1177549-1-jonathantanmy@google.com>


* ab/submodule-cleanup (2022-06-28) 12 commits
 - git-sh-setup.sh: remove "say" function, change last users
 - git-submodule.sh: use "$quiet", not "$GIT_QUIET"
 - submodule--helper: eliminate internal "--update" option
 - submodule--helper: understand --checkout, --merge and --rebase synonyms
 - submodule--helper: report "submodule" as our name in some "-h" output
 - submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
 - submodule update: remove "-v" option
 - submodule--helper: have --require-init imply --init
 - git-submodule.sh: remove unused top-level "--branch" argument
 - git-submodule.sh: make the "$cached" variable a boolean
 - git-submodule.sh: remove unused $prefix variable
 - git-submodule.sh: remove unused sanitize_submodule_env()
 (this branch is used by gc/submodule-use-super-prefix.)

 Further preparation to turn git-submodule.sh into a builtin.

 Will merge to 'next'.
 source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>


* jc/resolve-undo (2022-06-09) 1 commit
  (merged to 'next' on 2022-06-15 at c195e5a2d9)
 + revision: mark blobs needed for resolve-undo as reachable

 The resolve-undo information in the index was not protected against
 GC, which has been corrected.

 Will cook in 'next'.
 source: <xmqqfskdieqz.fsf@gitster.g>


* ab/build-gitweb (2022-06-28) 8 commits
 - gitweb/Makefile: add a "NO_GITWEB" parameter
 - Makefile: build 'gitweb' in the default target
 - gitweb/Makefile: include in top-level Makefile
 - gitweb: remove "test" and "test-installed" targets
 - gitweb/Makefile: prepare to merge into top-level Makefile
 - gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
 - gitweb/Makefile: add a $(GITWEB_ALL) variable
 - gitweb/Makefile: define all .PHONY prerequisites inline

 Teach "make all" to build gitweb as well.
 source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>


* ab/test-without-templates (2022-06-06) 7 commits
 - tests: don't assume a .git/info for .git/info/sparse-checkout
 - tests: don't assume a .git/info for .git/info/exclude
 - tests: don't assume a .git/info for .git/info/refs
 - tests: don't assume a .git/info for .git/info/attributes
 - tests: don't assume a .git/info for .git/info/grafts
 - tests: don't depend on template-created .git/branches
 - t0008: don't rely on default ".git/info/exclude"

 Tweak tests so that they still work when the "git init" template
 did not create .git/info directory.

 Will merge to 'next'?
 source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>


* ac/bitmap-format-doc (2022-06-16) 3 commits
  (merged to 'next' on 2022-06-16 at 5591d11601)
 + bitmap-format.txt: add information for trailing checksum
 + bitmap-format.txt: fix some formatting issues
 + bitmap-format.txt: feed the file to asciidoc to generate html

 Adjust technical/bitmap-format to be formatted by AsciiDoc, and
 add some missing information to the documentation.

 Will cook in 'next'.
 source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>


* hx/unpack-streaming (2022-06-13) 6 commits
 - unpack-objects: use stream_loose_object() to unpack large objects
 - core doc: modernize core.bigFileThreshold documentation
 - object-file.c: add "stream_loose_object()" to handle large object
 - object-file.c: factor out deflate part of write_loose_object()
 - object-file.c: refactor write_loose_object() to several steps
 - unpack-objects: low memory footprint for get_data() in dry_run mode

 Allow large objects read from a packstream to be streamed into a
 loose object file straight, without having to keep it in-core as a
 whole.

 Will merge to 'next'.
 source: <cover.1654914555.git.chiyutianyi@gmail.com>


* tb/show-ref-count (2022-06-06) 2 commits
 - builtin/show-ref.c: limit output with `--count`
 - builtin/show-ref.c: rename `found_match` to `matches_nr`

 "git show-ref" learned to stop after emitting N refs with the new
 "--count=N" option.

 Expecting a reroll.
 cf. <xmqqczfl4ce1.fsf@gitster.g>
 source: <cover.1654552560.git.me@ttaylorr.com>


* ds/bundle-uri-more (2022-06-06) 6 commits
 - fetch: add 'refs/bundle/' to log.excludeDecoration
 - bundle-uri: add support for http(s):// and file://
 - fetch: add --bundle-uri option
 - bundle-uri: create basic file-copy logic
 - remote-curl: add 'get' capability
 - docs: document bundle URI standard

 The "bundle URI" topic.

 Needs review.
 source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>


* js/bisect-in-c (2022-06-27) 16 commits
 - bisect: no longer try to clean up left-over `.git/head-name` files
 - bisect: remove Cogito-related code
 - Turn `git bisect` into a full built-in
 - bisect: move even the command-line parsing to `bisect--helper`
 - bisect: teach the `bisect--helper` command to show the correct usage strings
 - bisect--helper: return only correct exit codes in `cmd_*()`
 - bisect--helper: move the `BISECT_STATE` case to the end
 - bisect--helper: make `--bisect-state` optional
 - bisect--helper: align the sub-command order with git-bisect.sh
 - bisect--helper: using `--bisect-state` without an argument is a bug
 - bisect--helper: really retire `--bisect-autostart`
 - bisect--helper: really retire --bisect-next-check
 - bisect--helper: retire the --no-log option
 - bisect: avoid double-quoting when printing the failed command
 - bisect run: fix the error message
 - bisect: verify that a bogus option won't try to start a bisection

 Final bits of "git bisect.sh" have been rewritten in C.
 source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>


* gc/bare-repo-discovery (2022-06-30) 5 commits
 - setup.c: create `discovery.bare`
 - safe.directory: use git_protected_config()
 - config: learn `git_protected_config()`
 - Documentation: define protected configuration
 - Documentation/git-config.txt: add SCOPES section

 Introduce a discovery.barerepository configuration variable that
 allows users to forbid discovery of bare repositories.

 Will merge to 'next'?
 source: <pull.1261.v6.git.git.1656612839.gitgitgadget@gmail.com>


* gg/worktree-from-the-above (2022-06-21) 2 commits
 - dir: minor refactoring / clean-up
 - dir: traverse into repository

 With a non-bare repository, with core.worktree pointing at a
 directory that has the repository as its subdirectory, regressed in
 Git 2.27 days.

 Will merge to 'next'.
 source: <20220616234433.225-1-gg.oss@outlook.com>
 source: <20220616231956.154-1-gg.oss@outlook.com>


* ar/send-email-confirm-by-default (2022-04-22) 1 commit
 - send-email: always confirm by default

 "git send-email" is changed so that by default it asks for
 confirmation before sending each message out.

 Will discard.

 I wanted to like this, and had it in the version of Git I use
 myself for daily work, but the prompting turned out to be somewhat
 distracting.

 Thoughts?
 source: <20220422083629.1404989-1-hi@alyssa.is>

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Git v2.38.0-rc0
@ 2022-09-16  2:37  3% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-16  2:37 UTC (permalink / raw)
  To: git

An early preview release Git v2.38.0-rc0 is now available for
testing at the usual places.  It is comprised of 607 non-merge
commits since v2.37.0, contributed by 75 people, 21 of which are
new faces [*].

Since many contributors are travelling for Git Merge conference this
week, I do not expect a lot of activities around this one.  Just
treat it as one of the normal updates to the tip of the 'master'
branch.  The real fun will begin with -rc1, where we enter feature
freeze for the upcoming release, which is expected to happen mid
next week.

The tarballs are found at:

    https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the
'v2.38.0-rc0' tag and the 'master' branch that the tag points at:

  url = https://git.kernel.org/pub/scm/git/git
  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://github.com/gitster/git

New contributors whose contributions weren't in v2.37.0 are as follows.
Welcome to the Git development community!

  Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
  Cleber Rosa, David Plumpton, Eric DeCosta, Goss Geppert, Ilya
  K, Ingy dot Net, Jacob Stopak, Julien Rouhaud, Kilian Kilger,
  Lana Deere, Manuel Boni, Matthew Klein, Moritz Baumann, Pavel
  Rappo, Pierre Garnier, Richard Oliver, and Xavier Morel.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Arthur
  Milchior, brian m. carlson, Calvin Wan, Carlo Marcelo Arenas
  Belón, Christian Couder, Christoph Reiter, Derrick Stolee,
  Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah Newren,
  Emily Shaffer, Eric Sunshine, Felipe Contreras, Fernando Ramos,
  Glen Choo, Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das,
  Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John Cai,
  Jonathan Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly,
  Kyle Zhao, Lessley Dennington, Li Linchao, Linus Torvalds,
  Martin Ågren, Matheus Tavares, Matthew John Cheetham, Michael
  J Gruber, Øystein Walle, Philip Oakley, Philippe Blain, Phillip
  Wood, Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan
  Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
  Teng Long, Torsten Bögershausen, Victoria Dye, and ZheNing Hu.

[*] We are counting not just the authorship contribution but issue
    reporting, mentoring, helping and reviewing that are recorded in
    the commit trailers.

----------------------------------------------------------------

Git v2.38 Release Notes (draft)
===============================

UI, Workflows & Features

 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.

 * "git push" sometimes perform poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".

 * "git grep -m<max-hits>" is a way to limit the hits shown per file.

 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.

 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.

 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.

 * Introduce a discovery.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.

 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.

 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.

 * "git ls-files" learns the "--format" option to tweak its output.

 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.

 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.

 * Operating modes like "--batch" of "git cat-file" command learned to
   take NUL-terminated input, instead of one-item-per-line.

 * "git rm" has become more aware of the sparse-index feature.

 * "git rev-list --disk-usage" learned to take an optional value
   "human" to show the reported value in human-readable format, like
   "3.40MiB".

 * The "diagnose" feature to create a zip archive for diagnostic
   material has been lifted from "scalar" and made into a feature of
   "git bugreport".

 * The namespaces used by "log --decorate" from "refs/" hierarchy by
   default has been tightened.

 * "git rev-list --ancestry-path=C A..B" is a natural extension of
   "git rev-list A..B"; instead of choosing a subset of A..B to those
   that have ancestry relationship with A, it lets a subset with
   ancestry relationship with C.

 * "scalar" now enables built-in fsmonitor on enlisted repositories,
   when able.

 * The bash prompt (in contrib/) learned to optionally indicate when
   the index is unmerged.

 * "git clone" command learned the "--bundle-uri" option to coordinate
   with hosting sites the use of pre-prepared bundle files.

 * "git range-diff" learned to honor pathspec argument if given.

 * "git format-patch --from=<ident>" can be told to add an in-body
   "From:" line even for commits that are authored by the given
   <ident> with "--force-in-body-from"option.

 * The built-in fsmonitor refuses to work on a network mounted
   repositories; a configuration knob for users to override this has
   been introduced.


Performance, Internal Implementation, Development Support etc.

 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.

 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.

 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.

 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.

 * Further preparation to turn git-submodule.sh into a builtin
   continues.

 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.

 * Teach "make all" to build gitweb as well.

 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.

 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.

 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.

 * Support for libnettle as SHA256 implementation has been added.

 * The way "git multi-pack" uses parse-options API has been improved.

 * A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.

 * API tweak to make it easier to run fuzz testing on commit-graph parser.

 * Omit fsync-related trace2 entries when their values are all zero.

 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.

 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.

 * "git fetch" client logs the partial clone filter used in the trace2
   output.

 * The "bundle URI" design gets documented.

 * The common ancestor negotiation exchange during a "git fetch"
   session now leaves trace log.

 * Test portability improvements.
   (merge 4d1d843be7 mt/rot13-in-c later to maint).

 * The "subcommand" mode is introduced to parse-options API and update
   the command line parser of Git commands with subcommands.

 * The pack bitmap file gained a bitmap-lookup table to speed up
   locating the necessary bitmap for a given commit.

 * The assembly version of SHA-1 implementation for PPC has been
   removed.

 * The server side that responds to "git fetch" and "git clone"
   request has been optimized by allowing it to send objects in its
   object store without recomputing and validating the object names.

 * Annotate function parameters that are not used (but cannot be
   removed for structural reasons), to prepare us to later compile
   with -Wunused warning turned on.

 * Share the text used to explain configuration variables used by "git
   <subcmd>" in "git help <subcmd>" with the text from "git help config".


Fixes since v2.37
-----------------

 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.

 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.

 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.

 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.

 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.

 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.

 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.

 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.

 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.

 * Plug various memory leaks, both in the main code and in test-tool
   commands.

 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.

 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.

 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.

 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.

 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.

 * Variable quoting fix in the vimdiff driver of "git mergetool"

 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.

 * A fix for a regression in test framework.

 * mkstemp() emulation on Windows has been improved.

 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.

 * Avoid "white/black-list" in documentation and code comments.

 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).

 * Workaround for a false positive compiler warning.

 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.

 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.

 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.

 * "git checkout" miscounted the paths it updated, which has been
   corrected.

 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.

 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.

 * Gitweb had legacy URL shortener that is specific to the way
   projects hosted on kernel.org used to (but no longer) work, which
   has been removed.

 * Fix build procedure for Windows that uses CMake so that it can pick
   up the shell interpreter from local installation location.

 * Conditionally allow building Python interpreter on Windows

 * Fix to lstat() emulation on Windows.

 * Older gcc with -Wall complains about the universal zero initializer
   "struct s = { 0 };" idiom, which makes developers' lives
   inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
   build procedure has been tweaked to help these compilers.

 * Plug memory leaks in the failure code path in the "merge-ort" merge
   strategy backend.

 * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.

 * A follow-up fix to a fix for a regression in 2.36 around hooks.

 * Avoid repeatedly running getconf to ask libc version in the test
   suite, and instead just as it once per script.

 * Platform-specific code that determines if a directory is OK to use
   as a repository has been taught to report more details, especially
   on Windows.

 * "vimdiff3" regression fix.

 * "git fsck" reads mode from tree objects but canonicalizes the mode
   before passing it to the logic to check object sanity, which has
   hid broken tree objects from the checking logic.  This has been
   corrected, but to help exiting projects with broken tree objects
   that they cannot fix retroactively, the severity of anomalies this
   code detects has been demoted to "info" for now.

 * Fixes to sparse index compatibility work for "reset" and "checkout"
   commands.

 * An earlier optimization discarded a tree-object buffer that is
   still in use, which has been corrected.
   (merge 1490d7d82d jk/is-promisor-object-keep-tree-in-use later to maint).

 * Fix deadlocks between main Git process and subprocess spawned via
   the pipe_command() API, that can kill "git add -p" that was
   reimplemented in C recently.
   (merge 716c1f649e jk/pipe-command-nonblock later to maint).

 * The sequencer machinery translated messages left in the reflog by
   mistake, which has been corrected.

 * xcalloc(), imitating calloc(), takes "number of elements of the
   array", and "size of a single element", in this order.  A call that
   does not follow this ordering has been corrected.
   (merge c4bbd9bb8f sg/xcalloc-cocci-fix later to maint).

 * The preload-index codepath made copies of pathspec to give to
   multiple threads, which were left leaked.
   (merge 23578904da ad/preload-plug-memleak later to maint).

 * Update the version of Ubuntu used for GitHub Actions CI from 18.04
   to 22.04.
   (merge ef46584831 ds/github-actions-use-newer-ubuntu later to maint).

 * The auto-stashed local changes created by "git merge --autostash"
   was mixed into a conflicted state left in the working tree, which
   has been corrected.
   (merge d3a9295ada en/merge-unstash-only-on-clean-merge later to maint).

 * Multi-pack index got corrupted when preferred pack changed from one
   pack to another in a certain way, which has been corrected.
   (merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).

 * The clean-up of temporary files created via mks_tempfile_dt() was
   racy and attempted to unlink() the leading directory when signals
   are involved, which has been corrected.
   (merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).

 * FreeBSD portability fix for "git maintenance" that spawns "crontab"
   to schedule tasks.
   (merge ee69e7884e bc/gc-crontab-fix later to maint).

 * Those who use diff-so-fancy as the diff-filter noticed a regression
   or two in the code that parses the diff output in the built-in
   version of "add -p", which has been corrected.
   (merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).

 * Segfault fix-up to an earlier fix to the topic to teach "git reset"
   and "git checkout" work better in a sparse checkout.
   (merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).

 * "git diff --no-index A B" managed its the pathnames of its two
   input files rather haphazardly, sometimes leaking them.  The
   command line argument processing has been straightened out to clean
   it up.
   (merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).

 * "git rev-list --verify-objects" ought to inspect the contents of
   objects and notice corrupted ones, but it didn't when the commit
   graph is in use, which has been corrected.
   (merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).

 * More fixes to "add -p"
   (merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).

 * The parser in the script interface to parse-options in "git
   rev-parse" has been updated to diagnose a bogus input correctly.
   (merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).

 * The code that manages list-object-filter structure, used in partial
   clones, leaked the instances, which has been plugged.
   (merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).

 * Fix another UI regression in the reimplemented "add -p".
   (merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).

 * "git fetch" over protocol v2 sent an incorrect ref prefix request
   to the server and made "git pull" with configured fetch refspec
   that does not cover the remote branch to merge with fail, which has
   been corrected.
   (merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge 77b9e85c0f vd/fix-perf-tests later to maint).
   (merge 0682bc43f5 jk/test-crontab-fixes later to maint).
   (merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).

----------------------------------------------------------------

Changes since v2.37.0 are as follows:

Abhradeep Chakraborty (9):
      bitmap-format.txt: feed the file to asciidoc to generate html
      bitmap-format.txt: fix some formatting issues
      bitmap-format.txt: add information for trailing checksum
      Documentation/technical: describe bitmap lookup table extension
      bitmap: move `get commit positions` code to `bitmap_writer_finish`
      pack-bitmap-write.c: write lookup table extension
      pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
      pack-bitmap: prepare to read lookup table extension
      bitmap-lookup-table: add performance tests for lookup table

Anthony Delannoy (1):
      preload-index: fix memleak

Calvin Wan (1):
      submodule merge: update conflict error message

Carlo Marcelo Arenas Belón (2):
      setup: tighten ownership checks post CVE-2022-24765
      cmake: support local installations of git

Carlos López (1):
      grep: add --max-count command line option

Celeste Liu (1):
      contrib/rerere-train: avoid useless gpg sign in training

Christian Couder (1):
      Documentation: clarify whitespace rules for trailers

Cleber Rosa (1):
      setup: fix function name in a BUG() message

Derrick Stolee (50):
      branch: add branch_checked_out() helper
      branch: check for bisects and rebases
      fetch: use new branch_checked_out() and add tests
      branch: use branch_checked_out() when deleting refs
      branch: fix branch_checked_out() leaks
      t5510: replace 'origin' with URL more carefully
      vscode: improve tab size and wrapping
      git-rebase.txt: use back-ticks consistently
      pack-bitmap-write: use const for hashes
      midx: extract bitmap write setup
      midx: reduce memory pressure while writing bitmaps
      daemon: clarify directory arguments
      git-cvsserver: clarify directory list
      git.txt: remove redundant language
      t: avoid "whitelist"
      transport.c: avoid "whitelist"
      t2407: test bisect and rebase as black-boxes
      t2407: test branches currently using apply backend
      branch: consider refs under 'update-refs'
      rebase-interactive: update 'merge' description
      sequencer: define array with enum values
      sequencer: add update-ref command
      rebase: add --update-refs option
      rebase: update refs from 'update-ref' commands
      sequencer: rewrite update-refs as user edits todo list
      rebase: add rebase.updateRefs config option
      sequencer: ignore HEAD ref under --update-refs
      sequencer: notify user of --update-refs activity
      compat/win32: correct for incorrect compiler warning
      refs: allow "HEAD" as decoration filter
      t4207: modernize test
      t4207: test coloring of grafted decorations
      refs: add array of ref namespaces
      refs: use ref_namespaces for replace refs base
      log-tree: use ref_namespaces instead of if/else-if
      log: add default decoration filter
      log: add --clear-decorations option
      log: create log.initialDecorationSet=all
      maintenance: stop writing log.excludeDecoration
      fetch: use ref_namespaces during prefetch
      docs: document bundle URI standard
      bundle-uri: add example bundle organization
      remote-curl: add 'get' capability
      bundle-uri: create basic file-copy logic
      clone: add --bundle-uri option
      bundle-uri: add support for http(s):// and file://
      clone: --bundle-uri cannot be combined with --depth
      t6019: modernize tests with helper
      clone: warn on failure to repo_init()
      ci: update 'static-analysis' to Ubuntu 22.04

Dimitriy Ryazantcev (1):
      i18n: mark message helpers prefix for translation

Elijah Newren (43):
      merge-tree: rename merge_trees() to trivial_merge_trees()
      merge-tree: move logic for existing merge into new function
      merge-tree: add option parsing and initial shell for real merge function
      merge-tree: implement real merges
      merge-ort: split out a separate display_update_messages() function
      merge-tree: support including merge messages in output
      merge-ort: provide a merge_get_conflicted_files() helper function
      merge-ort: remove command-line-centric submodule message from merge-ort
      merge-tree: provide a list of which files have conflicts
      merge-tree: provide easy access to `ls-files -u` style info
      merge-ort: store more specific conflict information
      merge-ort: optionally produce machine-readable output
      merge-tree: allow `ls-files -u` style info to be NUL terminated
      merge-tree: add a --allow-unrelated-histories flag
      git-merge-tree.txt: add a section on potentional usage mistakes
      t6429: fix use of non-existent function
      t6423: add tests of dual directory rename plus add/add conflict
      merge-ort: small cleanups of check_for_directory_rename
      merge-ort: make a separate function for freeing struct collisions
      merge-ort: shuffle the computation and cleanup of potential collisions
      merge-ort: fix issue with dual rename and add/add conflict
      merge-ort-wrappers: make printed message match the one from recursive
      merge-resolve: abort if index does not match HEAD
      merge: abort if index does not match HEAD for trivial merges
      merge: do not abort early if one strategy fails to handle the merge
      merge: fix save_state() to work when there are stat-dirty files
      merge: make restore_state() restore staged state too
      merge: ensure we can actually restore pre-merge state
      merge: do not exit restore_state() prematurely
      merge-ort: remove translator lego in new "submodule conflict suggestion"
      merge-ort: avoid surprise with new sub_flag variable
      merge-ort: provide helpful submodule update message when possible
      merge-ort: remove code obsoleted by other changes
      rev-list-options.txt: fix simple typo
      revision: allow --ancestry-path to take an argument
      merge: only apply autostash when appropriate
      merge: cleanup confusing logic for handling successful merges
      merge: small code readability improvement
      t4301: add more interesting merge-tree testcases
      t64xx: convert 'test_create_repo' to 'git init'
      diff: have submodule_format logic avoid additional diff headers
      diff: fix filtering of additional headers under --remerge-diff
      diff: fix filtering of merge commits under --remerge-diff

Eric DeCosta (1):
      fsmonitor: option to allow fsmonitor to run against network-mounted repos

Eric Sunshine (6):
      t2407: fix broken &&-chains in compound statement
      t1092: fix buggy sparse "blame" test
      t: detect and signal failure within loop
      t4301: account for behavior differences between sed implementations
      t4301: fix broken &&-chains and add missing loop termination
      t4301: emit blank line in more idiomatic fashion

Felipe Contreras (7):
      mergetools: vimdiff: fix comment
      mergetools: vimdiff: make vimdiff3 actually work
      mergetools: vimdiff: silence annoying messages
      mergetools: vimdiff: fix for diffopt
      mergetools: vimdiff: rework tab logic
      mergetools: vimdiff: fix single window layouts
      mergetools: vimdiff: simplify tabfirst

Fernando Ramos (1):
      vimdiff: make layout engine more robust against user vim settings

Glen Choo (16):
      submodule--helper: eliminate internal "--update" option
      submodule--helper tests: add missing "display path" coverage
      submodule--helper update: use display path helper
      submodule--helper: don't recreate recursive prefix
      submodule--helper: use correct display path helper
      submodule--helper update: use --super-prefix
      submodule--helper: remove display path helper
      Documentation/git-config.txt: add SCOPES section
      Documentation: define protected configuration
      config: learn `git_protected_config()`
      safe.directory: use git_protected_config()
      setup.c: create `safe.bareRepository`
      config.c: NULL check when reading protected config
      Documentation/git-reflog: remove unneeded \ from \{
      submodule--helper: add "const" to copy of "update_data"
      submodule--helper: refactor "errmsg_str" to be a "struct strbuf"

Goss Geppert (2):
      dir: traverse into repository
      dir: minor refactoring / clean-up

Han Xin (6):
      unpack-objects: low memory footprint for get_data() in dry_run mode
      object-file.c: refactor write_loose_object() to several steps
      object-file.c: add "stream_loose_object()" to handle large object
      unpack-objects: use stream_loose_object() to unpack large objects
      commit-graph.c: no lazy fetch in lookup_commit_in_graph()
      t5330: remove run_with_limited_processses()

Jacob Keller (1):
      remote: handle negative refspecs in git remote show

Jacob Stopak (1):
      Documentation: fix various repeat word typos

Jaydeep Das (1):
      gpg-interface: add function for converting trust level to string

Jeff King (59):
      is_promisor_object(): walk promisor packs in pack-order
      fetch: stop passing around unused worktrees variable
      branch: drop unused worktrees variable
      revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
      clone: drop extra newline from warning message
      clone: propagate empty remote HEAD even with other branches
      clone: use remote branch if it matches default HEAD
      clone: move unborn head creation to update_head()
      ref-filter: disable save_commit_buffer while traversing
      diff-files: move misplaced cleanup label
      write_midx_bitmap(): drop unused refs_snapshot parameter
      config.mak.dev: squelch -Wno-missing-braces for older gcc
      tree-walk: add a mechanism for getting non-canonicalized modes
      fsck: actually detect bad file modes in trees
      fsck: downgrade tree badFilemode to "info"
      is_promisor_object(): fix use-after-free of tree buffer
      compat: add function to enable nonblocking pipes
      git-compat-util: make MAX_IO_SIZE define globally available
      pipe_command(): avoid xwrite() for writing to pipe
      pipe_command(): handle ENOSPC when writing to a pipe
      pipe_command(): mark stdin descriptor as non-blocking
      git-compat-util: add UNUSED macro
      refs: mark unused each_ref_fn parameters
      refs: mark unused reflog callback parameters
      refs: mark unused virtual method parameters
      transport: mark bundle transport_options as unused
      streaming: mark unused virtual method parameters
      config: mark unused callback parameters
      hashmap: mark unused callback parameters
      mark unused read_tree_recursive() callback parameters
      run-command: mark unused async callback parameters
      is_path_owned_by_current_uid(): mark "report" parameter as unused
      xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
      log-tree: drop unused commit param in remerge_diff()
      match_pathname(): drop unused "flags" parameter
      verify_one_sparse(): drop unused parameters
      reftable: drop unused parameter from reader_seek_linear()
      reflog: assert PARSE_OPT_NONEG in parse-options callbacks
      xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
      pass subcommand "prefix" arguments to parse_options()
      maintenance: add parse-options boilerplate for subcommands
      remote: run "remote rm" argv through parse_options()
      pack-bitmap-write: drop unused pack_idx_entry parameters
      tempfile: drop active flag
      tempfile: update comment describing state transitions
      test-crontab: minor memory and error handling fixes
      lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
      rev-list: disable commit graph with --verify-objects
      parse_object(): allow skipping hash check
      upload-pack: skip parse-object re-hashing of "want" objects
      parse_object(): check commit-graph when skip_hash set
      t1060: check partial clone of misnamed blob
      list_objects_filter_copy(): deep-copy sparse_oid_name field
      transport: deep-copy object-filter struct for fetch-pack
      transport: free filter options in disconnect_git()
      list_objects_filter_options: plug leak of filter_spec strings
      prepare_repo_settings(): plug leak of config values
      fetch: stop checking for NULL transport->remote in do_fetch()
      fetch: add branch.*.merge to default ref-prefix extension

Johannes Schindelin (36):
      merge-ort: store messages in a list, not in a single strbuf
      merge-ort: make `path_messages` a strmap to a string_list
      Git 2.30.5
      Git 2.31.4
      Git 2.32.3
      Git 2.33.4
      Git 2.34.4
      Git 2.35.4
      Git 2.36.2
      add --interactive: allow `update` to stage deleted files
      tests: fix incorrect --write-junit-xml code
      mergetool(vimdiff): allow paths to contain spaces again
      shortlog: use a stable sort
      t5351: avoid relying on `core.fsyncMethod = batch` to be supported
      t5351: avoid using `test_cmp` for binary data
      windows: include the Python bits when building Git for Windows
      mingw: remove unneeded `NO_GETTEXT` directive
      mingw: remove unneeded `NO_CURL` directive
      lstat(mingw): correctly detect ENOTDIR scenarios
      merge-ort: clean up after failed merge
      merge-ort: do leave trace2 region even if checkout fails
      setup: fix some formatting
      setup: prepare for more detailed "dubious ownership" messages
      mingw: provide details about unsafe directories' ownership
      mingw: be more informative when ownership check fails on FAT32
      mingw: handle a file owned by the Administrators group correctly
      scalar unregister: stop FSMonitor daemon
      range-diff: reorder argument handling
      range-diff: consistently validate the arguments
      range-diff: optionally accept pathspecs
      add -p: avoid ambiguous signed/unsigned comparison
      t3701: test the built-in `add -i` regardless of NO_PERL
      t6132(NO_PERL): do not run the scripted `add -p`
      add -p: detect more mismatches between plain vs colored diffs
      add -p: gracefully handle unparseable hunk headers in colored diffs
      add -p: ignore dirty submodules

Jonathan Tan (1):
      fetch-pack: write effective filter to trace2

Josh Steadmon (1):
      fetch-pack: add tracing for negotiation rounds

Julien Rouhaud (1):
      gitweb: remove title shortening heuristics

Junio C Hamano (40):
      revision: mark blobs needed for resolve-undo as reachable
      A regression fix for 2.37
      Git 2.37.1
      builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
      The first batch after Git 2.37
      fsck: do not dereference NULL while checking resolve-undo data
      The second batch
      The third batch
      The fourth batch
      The fifth batch
      builtin/remote.c: use the right kind of STRING_LIST_INIT
      The sixth batch
      The seventh batch
      Downmerge a handful of fixes for 2.37.x maintenance track
      The eighth batch
      The ninth batch
      doc: consolidate --rerere-autoupdate description
      doc: clarify rerere-autoupdate
      Downmerge a bit more for 2.37.x
      The tenth batch
      The eleventh batch
      Git 2.37.2
      The twelfth batch
      The thirteenth batch
      The fourteenth batch
      t5329: notice a failure within a loop
      The fifteenth batch
      A handful more topics from the 'master' front for 2.37.3
      pretty: separate out the logic to decide the use of in-body from
      format-patch: allow forcing the use of in-body From: header
      format-patch: learn format.forceInBodyFrom configuration variable
      The sixteenth batch
      Git 2.37.3
      The seventeenth batch
      The eighteenth batch
      The nineteenth batch
      The twentieth batch
      Merge a handful of topics from the 'master' front
      Prepare for 2.38-rc0
      Git 2.38-rc0

Justin Donnelly (1):
      git-prompt: show presence of unresolved conflicts at command prompt

Kilian Kilger (2):
      git-p4: fix bug with encoding of p4 client name
      git-p4: refactoring of p4CmdList()

Kyle Zhao (1):
      send-pack.c: add config push.useBitmaps

Lessley Dennington (1):
      osx-keychain: fix compiler warning

Li Linchao (3):
      ls-files: update test style
      remote-curl: send Accept-Language header to server
      rev-list: support human-readable output for `--disk-usage`

Linus Torvalds (1):
      symbolic-ref: refuse to set syntactically invalid target

Manuel Boni (1):
      config.txt: document include, includeIf

Martin Ågren (3):
      config/core.txt: fix minor issues for `core.sparseCheckoutCone`
      t4200: drop irrelevant code
      read-cache: make `do_read_index()` always set up `istate->repo`

Matheus Tavares (7):
      checkout: document bug where delayed checkout counts entries twice
      checkout: show bug about failed entries being included in final report
      checkout: fix two bugs on the final count of updated entries
      pkt-line.h: move comment closer to the associated code
      t0021: avoid grepping for a Perl-specific string at filter output
      t0021: implementation the rot13-filter.pl script in C
      tests: use the new C rot13-filter helper to avoid PERL prereq

Matthew John Cheetham (1):
      scalar: enable built-in FSMonitor on `register`

Michael J Gruber (3):
      sequencer: do not translate reflog messages
      sequencer: do not translate parameters to error_resolve_conflict()
      sequencer: do not translate command names

Moritz Baumann (3):
      git-p4: fix CR LF handling for utf16 files
      git-p4: fix typo in P4Submit.applyCommit()
      git-p4: fix error handling in P4Unshelve.renameBranch()

Philip Oakley (1):
      doc add: renormalize is not idempotent for CRCRLF

Philippe Blain (3):
      diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
      diff-format.txt: correct misleading wording
      diff-index.txt: update raw output format in examples

Phillip Wood (5):
      xdiff: introduce XDL_ALLOC_ARRAY()
      xdiff: introduce xdl_calloc
      xdiff: introduce XDL_CALLOC_ARRAY()
      xdiff: introduce XDL_ALLOC_GROW()
      tests: cache glibc version check

René Scharfe (28):
      archive: update format documentation
      archive: rename archiver data field to filter_command
      archive-tar: factor out write_block()
      archive-tar: add internal gzip implementation
      archive-tar: use OS_CODE 3 (Unix) for internal gzip
      archive-tar: use internal gzip by default
      combine-diff: abort if --ignore-matching-lines is given
      combine-diff: abort if --output is given
      cocci: avoid normalization rules for memcpy
      mingw: avoid mktemp() in mkstemp() implementation
      mergesort: unify ranks loops
      mergesort: tighten merge loop
      mergesort: add macros for typed sort of linked lists
      test-mergesort: use DEFINE_LIST_SORT_DEBUG
      test-mergesort: use DEFINE_LIST_SORT
      blame: use DEFINE_LIST_SORT
      commit: use DEFINE_LIST_SORT
      fetch-pack: use DEFINE_LIST_SORT
      packfile: use DEFINE_LIST_SORT
      mergesort: remove llist_mergesort()
      nonblock: support Windows
      tempfile: avoid directory cleanup race
      test-mergesort: read sort input all at once
      test-mergesort: use mem_pool for sort input
      diff-no-index: release strbuf on queue error
      diff-no-index: release prefixed filenames
      diff-no-index: simplify argv index calculation
      add -p: fix worktree patch mode prompts

Richard Oliver (1):
      mktree: do not check type of remote objects

SZEDER Gábor (29):
      Makefile: build 'gitweb' in the default target
      multi-pack-index: simplify handling of unknown --options
      index-format.txt: remove outdated list of supported extensions
      git.c: update NO_PARSEOPT markings
      t3301-notes.sh: check that default operation mode doesn't take arguments
      t5505-remote.sh: check the behavior without a subcommand
      t0040-parse-options: test parse_options() with various 'parse_opt_flags'
      api-parse-options.txt: fix description of OPT_CMDMODE
      parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
      parse-options: clarify the limitations of PARSE_OPT_NODASH
      parse-options: drop leading space from '--git-completion-helper' output
      parse-options: add support for parsing subcommands
      builtin/bundle.c: let parse-options parse subcommands
      builtin/commit-graph.c: let parse-options parse subcommands
      builtin/gc.c: let parse-options parse 'git maintenance's subcommands
      builtin/hook.c: let parse-options parse subcommands
      builtin/multi-pack-index.c: let parse-options parse subcommands
      builtin/notes.c: let parse-options parse subcommands
      builtin/reflog.c: let parse-options parse subcommands
      builtin/remote.c: let parse-options parse subcommands
      builtin/sparse-checkout.c: let parse-options parse subcommands
      builtin/stash.c: let parse-options parse subcommands
      builtin/worktree.c: let parse-options parse subcommands
      promisor-remote: fix xcalloc() argument order
      t0040-parse-options: remove leftover debugging
      test-parse-options.c: don't use for loop initial declaration
      test-parse-options.c: fix style of comparison with zero
      notes: simplify default operation mode arguments check
      notes, remote: show unknown subcommands between `'

Shaoxuan Yuan (12):
      t7002: add tests for moving out-of-cone file/directory
      t1092: mv directory from out-of-cone to in-cone
      mv: update sparsity after moving from out-of-cone to in-cone
      mv: decouple if/else-if checks using goto
      mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
      mv: check if <destination> exists in index to handle overwriting
      mv: use flags mode for update_mode
      mv: add check_dir_in_index() and solve general dir check issue
      t1092: add tests for `git-rm`
      pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
      rm: expand the index only when necessary
      rm: integrate with sparse-index

Siddharth Asthana (4):
      revision: improve commit_rewrite_person()
      ident: move commit_rewrite_person() to ident.c
      ident: rename commit_rewrite_person() to apply_mailmap_to_header()
      cat-file: add mailmap support

Tao Klerks (1):
      rev-parse: documentation adjustment - mention remote tracking with @{u}

Taylor Blau (14):
      pack-objects.h: remove outdated pahole results
      commit-graph: pass repo_settings instead of repository
      t5318: demonstrate commit-graph generation v2 corruption
      commit-graph: introduce `repo_find_commit_pos_in_graph()`
      commit-graph: fix corrupt upgrade from generation v1 to v2
      t1006: extract --batch-command inputs to variables
      builtin/cat-file.c: support NUL-delimited input with `-z`
      t5326: demonstrate potential bitmap corruption
      t/lib-bitmap.sh: avoid silencing stderr
      midx.c: extract `struct midx_fanout`
      midx.c: extract `midx_fanout_add_midx_fanout()`
      midx.c: extract `midx_fanout_add_pack_fanout()`
      midx.c: include preferred pack correctly with existing MIDX
      midx.c: avoid adding preferred objects twice

Teng Long (8):
      pack-bitmap.c: fix formatting of error messages
      pack-bitmap.c: mark more strings for translations
      pack-bitmap.c: rename "idx_name" to "bitmap_name"
      pack-bitmap.c: do not ignore error when opening a bitmap file
      pack-bitmap.c: using error() instead of silently returning -1
      pack-bitmap.c: continue looping when first MIDX bitmap is found
      api-trace2.txt: print config key-value pair
      tr2: shows scope unconditionally in addition to key-value pair

Victoria Dye (26):
      scalar: reword command documentation to clarify purpose
      scalar: convert README.md into a technical design doc
      checkout: fix nested sparse directory diff in sparse index
      oneway_diff: handle removed sparse directories
      cache.h: create 'index_name_pos_sparse()'
      unpack-trees: unpack new trees as sparse directories
      scalar-diagnose: use "$GIT_UNZIP" in test
      scalar-diagnose: avoid 32-bit overflow of size_t
      scalar-diagnose: add directory to archiver more gently
      scalar-diagnose: move 'get_disk_info()' to 'compat/'
      scalar-diagnose: move functionality to common location
      diagnose.c: add option to configure archive contents
      builtin/diagnose.c: create 'git diagnose' builtin
      builtin/diagnose.c: add '--mode' option
      builtin/bugreport.c: create '--diagnose' option
      scalar-diagnose: use 'git diagnose --mode=all'
      scalar: update technical doc roadmap
      scalar: constrain enlistment search
      scalar-unregister: handle error codes greater than 0
      scalar-[un]register: clearly indicate source of error
      scalar-delete: do not 'die()' in 'delete_enlistment()'
      scalar: move config setting logic into its own function
      scalar: update technical doc roadmap with FSMonitor support
      p0004: fix prereq declaration
      p0006: fix 'read-tree' argument ordering
      unpack-trees: fix sparse directory recursion check

ZheNing Hu (1):
      ls-files: introduce "--format" option

brian m. carlson (2):
      sha256: add support for Nettle
      gc: use temporary file for editing crontab

Ævar Arnfjörð Bjarmason (153):
      t0008: don't rely on default ".git/info/exclude"
      tests: don't depend on template-created .git/branches
      tests: don't assume a .git/info for .git/info/grafts
      tests: don't assume a .git/info for .git/info/attributes
      tests: don't assume a .git/info for .git/info/refs
      tests: don't assume a .git/info for .git/info/exclude
      tests: don't assume a .git/info for .git/info/sparse-checkout
      object-file.c: factor out deflate part of write_loose_object()
      core doc: modernize core.bigFileThreshold documentation
      git-submodule.sh: remove unused sanitize_submodule_env()
      git-submodule.sh: remove unused $prefix variable
      git-submodule.sh: make the "$cached" variable a boolean
      git-submodule.sh: remove unused top-level "--branch" argument
      submodule--helper: have --require-init imply --init
      submodule update: remove "-v" option
      submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
      submodule--helper: report "submodule" as our name in some "-h" output
      submodule--helper: understand --checkout, --merge and --rebase synonyms
      git-submodule.sh: use "$quiet", not "$GIT_QUIET"
      git-sh-setup.sh: remove "say" function, change last users
      gitweb/Makefile: define all .PHONY prerequisites inline
      gitweb/Makefile: add a $(GITWEB_ALL) variable
      gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
      gitweb/Makefile: prepare to merge into top-level Makefile
      gitweb: remove "test" and "test-installed" targets
      gitweb/Makefile: include in top-level Makefile
      gitweb/Makefile: add a "NO_GITWEB" parameter
      tests: add missing double quotes to included library paths
      test-lib.sh: fix prepend_var() quoting issue
      config tests: fix harmless but broken "rm -r" cleanup
      submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
      check-ref-format: fix trivial memory leak
      clone: fix memory leak in wanted_peer_refs()
      submodule.c: free() memory from xgetcwd()
      revert: free "struct replay_opts" members
      cat-file: fix a memory leak in --batch-command mode
      merge-file: refactor for subsequent memory leak fix
      merge-file: fix memory leaks on error path
      checkout: avoid "struct unpack_trees_options" leak
      gc: fix a memory leak
      cat-file: fix a common "struct object_context" memory leak
      pull: fix a "struct oid_array" memory leak
      test-tool test-hash: fix a memory leak
      test-tool path-utils: fix a memory leak
      test-tool {dump,scrap}-cache-tree: fix memory leaks
      test-tool urlmatch-normalization: fix a memory leak
      test-tool regex: call regfree(), fix memory leaks
      test-tool json-writer: fix memory leaks
      test-tool bloom: fix memory leaks
      test-tool ref-store: fix a memory leak
      test-tool delta: fix a memory leak
      Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
      Makefile & .gitignore: ignore & clean "git.res", not "*.res"
      cocci: add a "coccicheck-test" target and test *.cocci rules
      cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
      cocci: add and apply a rule to find "unused" strbufs
      cocci: generalize "unused" rule to cover more than "strbuf"
      trace2: only include "fsync" events if we git_fsync()
      test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
      test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
      test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
      test-lib: add a --invert-exit-code switch
      t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
      test-lib: add a SANITIZE=leak logging mode
      t/Makefile: don't remove test-results in "clean-except-prove-cache"
      tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
      test-lib: simplify by removing test_external
      test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
      test-lib: have the "check" mode for SANITIZE=leak consider leak logs
      leak tests: don't skip some tests under SANITIZE=leak
      leak tests: mark passing SANITIZE=leak tests as leak-free
      upload-pack: fix a memory leak in create_pack_file()
      CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
      bisect.c: add missing "goto" for release_revisions()
      test-fast-rebase helper: use release_revisions() (again)
      log: fix a memory leak in "git show <revision>..."
      log: refactor "rev.pending" code in cmd_show()
      bisect.c: partially fix bisect_rev_setup() memory leak
      revisions API: don't leak memory on argv elements that need free()-ing
      help.c: refactor drop_prefix() to use a "switch" statement"
      help.c: remove common category behavior from drop_prefix() behavior
      git help doc: use "<doc>" instead of "<guide>"
      git docs: add a category for user-facing file, repo and command UX
      git docs: add a category for file formats, protocols and interfaces
      docs: move commit-graph format docs to man section 5
      docs: move protocol-related docs to man section 5
      docs: move index format docs to man section 5
      docs: move signature docs to man section 5
      docs: move pack format docs to man section 5
      docs: move cruft pack docs to gitformat-pack
      docs: move http-protocol docs to man section 5
      hook API: don't segfault on strbuf_addf() to NULL "out"
      Makefile + hash.h: remove PPC_SHA1 implementation
      Makefile: use $(OBJECTS) instead of $(C_OBJ)
      git-compat-util.h: use "UNUSED", not "UNUSED(var)"
      git-compat-util.h: use "deprecated" for UNUSED variables
      submodule tests: test usage behavior
      submodule tests: test for "add <repository> <abs-path>"
      submodule--helper: remove unused "name" helper
      submodule--helper: remove unused "list" helper
      test-tool submodule-config: remove unused "--url" handling
      submodule--helper: move "is-active" to a test-tool
      submodule--helper: move "check-name" to a test-tool
      submodule--helper: move "resolve-relative-url-test" to a test-tool
      submodule--helper style: don't separate declared variables with \n\n
      submodule--helper style: add \n\n after variable declarations
      submodule--helper: replace memset() with { 0 }-initialization
      submodule--helper: use xstrfmt() in clone_submodule()
      submodule--helper: move "sb" in clone_submodule() to its own scope
      submodule--helper: add "const" to passed "module_clone_data"
      submodule--helper: add "const" to passed "struct update_data"
      submodule--helper: don't redundantly check "else if (res)"
      submodule--helper: rename "int res" to "int ret"
      submodule--helper: return "ret", not "1" from update_submodule()
      submodule--helper: add missing braces to "else" arm
      submodule--helper: don't call submodule_strategy_to_string() in BUG()
      submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
      submodule--helper: use "code" in run_update_command()
      submodule--helper: don't exit() on failure, return
      submodule--helper: libify determine_submodule_update_strategy()
      submodule--helper: libify "must_die_on_failure" code paths
      submodule--helper update: don't override 'checkout' exit code
      submodule--helper: libify "must_die_on_failure" code paths (for die)
      submodule--helper: check repo{_submodule,}_init() return values
      submodule--helper: libify more "die" paths for module_update()
      submodule--helper: libify even more "die" paths for module_update()
      submodule--helper: fix bad config API usage
      submodule--helper: fix a leak in "clone_submodule"
      submodule--helper: fix trivial get_default_remote_submodule() leak
      submodule--helper: fix most "struct pathspec" memory leaks
      submodule--helper: "struct pathspec" memory leak in module_update()
      submodule--helper: don't leak {run,capture}_command() cp.dir argument
      submodule--helper: add and use *_release() functions
      submodule--helper: fix "errmsg_str" memory leak
      submodule--helper: fix "sm_path" and other "module_cb_list" leaks
      submodule--helper: fix a leak with repo_clear()
      submodule--helper: fix a memory leak in get_default_remote_submodule()
      submodule--helper: fix "reference" leak
      submodule--helper: fix obscure leak in module_add()
      submodule--helper: fix a leak in module_add()
      submodule--helper: fix a memory leak in print_status()
      submodule--helper: free some "displaypath" in "struct update_data"
      submodule--helper: free rest of "displaypath" in "struct update_data"
      submodule--helper: fix a configure_added_submodule() leak
      docs: add and use include template for config/* includes
      grep docs: de-duplicate configuration sections
      send-email docs: de-duplicate configuration sections
      apply docs: de-duplicate configuration sections
      notes docs: de-duplicate and combine configuration sections
      difftool docs: de-duplicate configuration sections
      log docs: de-duplicate configuration sections
      docs: add CONFIGURATION sections that map to a built-in
      docs: add CONFIGURATION sections that fuzzy map to built-ins

Øystein Walle (1):
      rev-parse --parseopt: detect missing opt-spec


^ permalink raw reply	[relevance 3%]

* [PATCH v10 00/36] Add directory rename detection to git
@ 2018-04-19 17:57  3% Elijah Newren
  0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-04-19 17:57 UTC (permalink / raw)
  To: git; +Cc: sbeller, gitster, torvalds, Elijah Newren

This series is a reboot of the directory rename detection series that was
merged to master and then reverted due to the final patch having a buggy
can-skip-update check, as noted at
  https://public-inbox.org/git/xmqqmuya43cs.fsf@gitster-ct.c.googlers.com/
This series based on top of master.

This updated series fixes the problem found with the previous series, and
also fixes Linus' issue with unnecessary rebuilds noted at
  https://public-inbox.org/git/CA+55aFzLZ3UkG5svqZwSnhNk75=fXJRkvU1m_RHBG54NOoaZPA@mail.gmail.com/

For the original details about design considerations surrounding
directory rename detection, see
  https://public-inbox.org/git/20171110190550.27059-1-newren@gmail.com/

Patches 1--28 are identical to what was previously merged to master,
modulo trivial compilation fixes due to the fact that I've rebased on
master which now includes commit 916bc35b29af ("tree-walk: convert tree
entry functions to object_id", 2018-03-12).  As such, I've retained the
Reviewed-by and Signed-off-by tags for these first 28 patches.  (The
final patch of the original series, patch 29, has been rewritten and
replaced in this series.)

The remaining eight patches are new; a brief summary:

  merge-recursive: improve add_cacheinfo error handling
  merge-recursive: move more is_dirty handling to merge_content
  merge-recursive: avoid triggering add_cacheinfo error with dirty mod

    When Junio was bit by the previous series, the code reached a
    detected error state that should not ever be hit in production.
    That was bad enough, but the problem compounded because the code
    simply printed a vague not-very-scary-sounding error, and returned
    an error code that the caller ignored (which not only proceeded to
    then handle other paths which might print messages causing the error
    to scroll off the screen, but could result in a "clean" merge).  Fix
    issues with the error handling...and then deal with the breakage of
    one particular test that was triggering this codepath.

  t6046: testcases checking whether updates can be skipped in a merge

    Add a fairly comprehensive set of tests for the skipability of
    working tree updates.

  merge-recursive: fix was_tracked() to quit lying with some renamed
    paths
  merge-recursive: fix remainder of was_dirty() to use original index

    Instead of using the current index as a (rather imperfect) proxy for
    the state of the index just before the merge, keep a copy of the
    original index around so we can get correct answers to whether
    certain paths were tracked or dirty before the merge.

  merge-recursive: make "Auto-merging" comment show for other merges
  merge-recursive: fix check for skipability of working tree updates

    Fix and simplify the skipability check.  Due to some tests being
    picky about output, the first of these two patches exists to avoid
    triggering the "Auto-merging $FILE" message too often with the
    simplified logic; in the process, it fixes a pair of existing issues
    with when those messages are shown, making it more accurate in
    general.

Additional testing:

  * I've re-merged all ~13k merge commits in git.git with both
    git-2.17.0 and this version of git, comparing the results to each
    other in detail.  (Including stdout & stderr, as well as the output
    of subsequent commands like `git status`, `git ls-files -s`, `git
    diff -M`, `git diff -M --staged`).  The only differences were in 23
    merges of either git-gui or gitk which involved directory renames
    (e.g. git-2.17.0's merge would result in files like 'lib/tools.tcl'
    or 'po/ru.po' instead of the expected 'git-gui/lib/tools.tcl' or
    'gitk-git/po/ru.po')

  * I'm trying to do the same with linux.git, but it looks like that will
    take nearly a week to complete...

My biggest question:

  * Is there any other testing others would like to see, in order to avoid
    a repeat of the pain from my previous series and allow us to safely
    merge this newer one?

Elijah Newren (36):
  directory rename detection: basic testcases
  directory rename detection: directory splitting testcases
  directory rename detection: testcases to avoid taking detection too
    far
  directory rename detection: partially renamed directory
    testcase/discussion
  directory rename detection: files/directories in the way of some
    renames
  directory rename detection: testcases checking which side did the
    rename
  directory rename detection: more involved edge/corner testcases
  directory rename detection: testcases exploring possibly suboptimal
    merges
  directory rename detection: miscellaneous testcases to complete
    coverage
  directory rename detection: tests for handling overwriting untracked
    files
  directory rename detection: tests for handling overwriting dirty files
  merge-recursive: move the get_renames() function
  merge-recursive: introduce new functions to handle rename logic
  merge-recursive: fix leaks of allocated renames and diff_filepairs
  merge-recursive: make !o->detect_rename codepath more obvious
  merge-recursive: split out code for determining diff_filepairs
  merge-recursive: make a helper function for cleanup for handle_renames
  merge-recursive: add get_directory_renames()
  merge-recursive: check for directory level conflicts
  merge-recursive: add computation of collisions due to dir rename &
    merging
  merge-recursive: check for file level conflicts then get new name
  merge-recursive: when comparing files, don't include trees
  merge-recursive: apply necessary modifications for directory renames
  merge-recursive: avoid clobbering untracked files with directory
    renames
  merge-recursive: fix overwriting dirty files involved in renames
  merge-recursive: fix remaining directory rename + dirty overwrite
    cases
  directory rename detection: new testcases showcasing a pair of bugs
  merge-recursive: avoid spurious rename/rename conflict from dir
    renames
  merge-recursive: improve add_cacheinfo error handling
  merge-recursive: move more is_dirty handling to merge_content
  merge-recursive: avoid triggering add_cacheinfo error with dirty mod
  t6046: testcases checking whether updates can be skipped in a merge
  merge-recursive: fix was_tracked() to quit lying with some renamed
    paths
  merge-recursive: fix remainder of was_dirty() to use original index
  merge-recursive: make "Auto-merging" comment show for other merges
  merge-recursive: fix check for skipability of working tree updates

 merge-recursive.c                      | 1432 ++++++++-
 merge-recursive.h                      |   28 +
 strbuf.c                               |   16 +
 strbuf.h                               |   16 +
 t/t3501-revert-cherry-pick.sh          |    7 +-
 t/t6022-merge-rename.sh                |    2 +-
 t/t6043-merge-rename-directories.sh    | 3998 ++++++++++++++++++++++++
 t/t6046-merge-skip-unneeded-updates.sh |  761 +++++
 t/t7607-merge-overwrite.sh             |    2 +-
 unpack-trees.c                         |    4 +-
 unpack-trees.h                         |    4 +
 11 files changed, 6092 insertions(+), 178 deletions(-)
 create mode 100755 t/t6043-merge-rename-directories.sh
 create mode 100755 t/t6046-merge-skip-unneeded-updates.sh

-- 
2.17.0.290.ge988e9ce2a


^ permalink raw reply	[relevance 3%]

* Re: Sharing merge conflict resolution between multiple developers
  @ 2014-08-11 18:44  3% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2014-08-11 18:44 UTC (permalink / raw)
  To: Chris Packham; +Cc: GIT

Chris Packham <judge.packham@gmail.com> writes:

> Is there any way where we could share the conflict resolution around
> but still end up with a single merge commit.

One idea that immediately comes to me is to use something like
"rerere" (not its implementation and storage, but the underlying
idea) enhanced with the trick I use to fix-up merges in my daily
integration cycle (look for "merge-fix" in howto/maintain-git.txt
in Documentation/).

> developer A:
>   git merge $upstream
>   <conflicts>

And then commit this immediately, together with conflict markers
(i.e. "commit -a"), and discard it with "reset --hard HEAD^" *after*
storing it somewhere safe.  And then redo the same merge, resolve
the conflicts and commit the usual way.

The difference between the final conflict resolution and the
original conflicted state can be used as a reference for others to
redo the same conflict resolution later elsewhere.  That can most
easily be done by creating a commit that records the final state
whose parent is the one you recorded the initial conflicted state.

So, the "recording" phase may go something like this:

    git checkout $this
    git merge $that
    git commit -a -m 'merge-fix/$this-$that preimage'
    git branch merge-fix/$this-$that
    git reset --hard HEAD^
    git merge $that
    edit
    git commit -a -m 'merge $that to $this'
    git checkout merge-fix/$this-$that
    git read-tree -m -u HEAD $this
    git commit -a -m 'merge-fix/$this-$that postimage'

The rough idea is "git show merge-fix/$this-$that" will show the
"patch" you can apply on top of the conflicted state other people
would get by running "git merge $that" while on "$this" branch.

"rerere" essentially does the above recording (and replaying)
per-path and it comes with a clever indexing scheme to identify
which previous conflict resolution would apply to the conflicts you
see in your working tree.

^ permalink raw reply	[relevance 3%]

* [ANNOUNCE] Cogito-0.11.2
@ 2005-06-08 23:07  3% Petr Baudis
  0 siblings, 0 replies; 200+ results
From: Petr Baudis @ 2005-06-08 23:07 UTC (permalink / raw)
  To: git

  Hello,

  I'm happy to announce Cogito-0.11.2, next version of my SCMish layer
over Linus' GIT tree history storage tool. You can get it as usual on

	kernel.org/pub/software/scm/cogito/

or by doing cg-update in your cogito.git repository.

  The changes include especially some bugfixes and portability and
performance enhancements, as well as all the sweet stuff from Linus.

  Note that I discovered a bug few minutes after releasing (as usual).
cg-log won't work correctly if ran with some files specified (the
"cg-log file" usage). I think it actually does not get used like this so
frequently, so I don't think it's worth another release by itself. But
expect new release as soon as some non-trivial amount of bugfixes piles
up (including core git bugfixes), quite soon hopefully.


  Here's git-rev-list --pretty HEAD ^cogito-0.11.1 | git-shortlog
(BTW, Dan, what about another cg-log option for git-shortlog output? ;-):


C. Cooke:
  Check whether the git repository is present before executing the command

Catalin Marinas:
  cg-commit: Fix the log file readin from stdin
  [PATCH Cogito] Add -f parameter also to cg-update

Chris Wedgwood:
  cogitio: sh != bash

Christian Meder:
  Miniscule correction of diff-format.txt

Dan Holmsand:
  Make cg-add use xargs -0

Daniel Barkalow:
  Document git-ssh-pull and git-ssh-push
  -w support for git-ssh-pull/push
  Generic support for pulling refs
  rsh.c environment variable
  Operations on refs
  ssh-protocol version, command types, response code

Eugene Surovegin:
  fix cg-commit new file handling

Jason McMullan:
  Anal retentive 'const unsigned char *sha1'
  Modify git-rev-list to linearise the commit history in merge order.

Jon Seymour:
  three --merge-order bug fixes

Jonas Fonseca:
  cg-commit: prefix pathspec argument with --
  git-diff-cache: handle pathspec beginning with a dash
  git-diff-cache: handle pathspec beginning with a dash
  cg-log: cleanup line wrapping by using bash internals
  Documentation improvements
  Misc cg-log documentation fixes
  Cleanup commit messages with git-stripspace
  [PATCH 10/10] Add -s option to show log summary
  [PATCH 9/10] Move file matching inside the loop.
  [PATCH 8/10] Move the username matching inside the loop
  [PATCH 7/10] Move log printing to separate function
  [PATCH 6/10] Remove the catch all rule
  [PATCH 5/10] Move printing of the commit info line inside the loop
  [PATCH 4/10] First parse all commit header entries then print them
  [PATCH 3/10] Separate handling of author and committer in commit headers
  [PATCH 2/10] Separate handling of tree and parent in commit headers
  [PATCH 1/10] Cleanup conversion to human readable date
  cg-Xnormid: support revision ids specified by date

Junio C Hamano:
  Tests: read-tree -m test updates.
  Documentation: describe diff tweaking (fix).
  Start cvs-migration documentation
  read-tree: update documentation for 3-way merge.
  read-tree: save more user hassles during fast-forward.
  index locking like everybody else
  3-way merge tests for new "git-read-tree -m"?
  rename git-rpush and git-rpull to git-ssh-push and git-ssh-pull
  Documentation: describe git extended diff headers.
  Documentation: describe diff tweaking.
  pull: gracefully recover from delta retrieval failure.
  diffcore-break.c: various fixes.
  diff.c: -B argument passing fix.
  diff.c: locate_size_cache() fix.
  diff: Update -B heuristics.
  diff: Clean up diff_scoreopt_parse().
  diff: Fix docs and add -O to diff-helper.
  Tweak count-delta interface
  Find size of SHA1 object without inflating everything.
  Handle deltified object correctly in git-*-pull family.

Linus Torvalds:
  Remove MERGE_HEAD after committing merge
  Make "git commit" work correctly in the presense of a manual merge
  cvs-migration: add more of a header to the "annotate" discussion
  Leave merge failures in the filesystem
  Fix SIGSEGV on unmerged files in git-diff-files -p
  Make default merge messages denser.
  git-apply: creatign empty files is nonfatal
  Talk about "git cvsimport" in the cvs migration docs
  git-read-tree: -u without -m is meaningless. Don't allow it.
  git-read-tree: make one-way merge also honor the "update" flag
  Add CVS import scripts and programs
  git-ssh-push/pull: usability improvements
  git-resolve-script: stop when the automated merge fails
  Make fetch/pull scripts terminate cleanly on errors
  git-resolve-script: don't wait for three seconds any more
  git-read-tree: some "final" cleanups
  git-read-tree: simplify merge loops enormously
  Add "__noreturn__" attribute to die() and usage()
  git-rev-list: make sure to link with ssl libraries
  Fix off-by-one in new three-way-merge updates
  Three-way merge: fix silly bug that made trivial merges not work
  Fix entry.c dependency and compile problem
  git-read-tree: fix up two-way merge
  More work on merging with git-read-tree..
  Make fiel checkout function available to the git library
  git-read-tree: fix up three-way merge tests
  git-read-tree: be a lot more careful about merging dirty trees
  diff 'rename' format change.
  git-apply: consider it an error to apply no changes
  git-apply: fix rename header parsing
  git-apply: actually apply patches and update the index
  git-apply: fix apply of a new file
  git-apply: find offset fragments, and really apply them
  git-apply: first cut at actually checking fragment data
  git-fsck-cache: complain if no default references found
  pretty_print_commit: add different formats
  git-shortlog: add name translations for 'sparse' repo
  Add git-shortlog perl script
  git-rev-list: allow arbitrary head selections, use git-rev-tree syntax
  Clarify git-diff-cache semantics in the tutorial.

Mark Allen:
  Modify cg-Xlib for non-GNU date.

Michal Rokos:
  [cogito] Sync objects only when needed
  [cogito] paged output for cg-diff
  Abstracted out $PAGER invocation to a pager() function

Petr Baudis:
  Fix cg-log called on specified files
  cogito-0.11.2
  Added trivial cg wrapper
  Use portable sed stuff in cg-log Signed-off-by highlighting
  showdate() now uses $(()) instead of $(expr)
  Fixed cg-log -u
  cg-merge now sometimes allows tree merge + local changes
  Add the t6001 testcase which got missed out at the last merge.
  Move commit line processing to process_commit_line
  Improved cg-Xmergefile
  Fix git-merge-one-file permissions auto-merging
  Fix cg-patch reverting file removal
  Reindent print_commit_log() body
  cg-log is now pure git-rev-list --pretty=raw frontend
  Fix cg-commit doing shell expansion on -m arguments
  Fix mismerged git-r* -> git-ssh-* rename in Makefile
  Move print_commit_log() in cg-log
  Fix an errorneous cg-clone example in the README
  Make git-update-cache --force-remove regular
  Portability sed fix in cg-commit
  Improve git-rev-list --header output
  Implement cg-rm -n for untracking files
  Fixed cg-Xnormid " " call
  cg-commit now updates cache separately for different change types
  Pass revisions to commit-id, parent-id, tree-id and cg-Xnormid quoted
  Do rm -f in make uninstall
  make dist will now produce tarball with sensible name

Rene Scharfe:
  git-tar-tree: do only basic tests in t/t5000-git-tar-tree.sh
  git-tar-tree: fix write_trailer
  git-tar-tree: add a test case
  git-tar-tree: small doc update
  git-tar-tree: cleanup write_trailer()

Sven Verdoolaege:
  git-cvs2git: create tags

Timo Hirvonen:
  Use ntohs instead of htons to convert ce_flags to host byte order


  Have fun,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
<Espy> be careful, some twit might quote you out of context..

^ permalink raw reply	[relevance 3%]

* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
  @ 2018-03-13 18:24  3%                                     ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-03-13 18:24 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Phillip Wood, Sergey Organov, Igor Djordjevic, phillip.wood,
	Git mailing list, Jacob Keller, Johannes Sixt

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> So essentially, what your cherry-pick'able commits are is a way to store
> what rerere would have stored (i.e. the set of merge conflicts together
> with their resolution)?

If rerere would have stored, I wouldn't have separate band-aid
system on top.  These fix-up commits are usually on parts that do
not get involved in textual conflicts; "rerere" which relies on
having textual conflicts (the "shape" of the text in the conflicted
region is what lets "rerere" index into its database to find the
recorded resolution) wouldn't have stored them and that is
fundamental.

> If so, what tooling do you have to identify quickly what to cherry-pick,
> given merge conflicts?

It exactly is the issue I've been trying to find ideal solution for
quite a while and not successfully.  Here is a sample thread

  https://public-inbox.org/git/xmqqeft3u0u5.fsf@gitster.mtv.corp.google.com/#t

and every message I mention "merge-fix" is relevant.

The current band-aid system punts and indexes the merge-fix changes
by merely a branch name.  When refs/merge-fix/X exists, what it
means is "When branch X is merged to an integration branch, it is
likely that the integration branch _already_ has merged an unnamed
topic that causes semantic conflicts and requires this fix-up".
This needs occasional manual adjustment---e.g. when the topic X
turns out to be a lot more stable than the other topic Y that was
causing us trouble with semantic conflicts, I may at some point
reorder the topics and have topic X advance to 'next' before topic Y
does.  And when that happens, when I merge X to 'next', because Y is
not yet in 'next', I shouldn't apply refs/merge-fix/X (often, an
attempt to cherry-pick it on top of a merge of X into 'next' would
fail, which would be a bit of safety, but not always).  What I
should do instead is to rename refs/merge-fix/X to refs/merge-fix/Y
immediately before merging X to 'next', so that the cherry-pick is
not applied.  When rebuilding 'master'->'jch'->'pu' chain, X (now in
'next') will be merged before Y (not in 'next') gets merged, and
when it is Y's turn to be merged, the merge-fix I used to apply when
merging topic X will be applied.

In the ideal world (I think I'm repeating the ideas raised in the
thread quoted), the merge-fix database should be indexed with a pair
of commit object names (e.g. a step in branch X that adds a new
callsite for function frotz() and a step in branch Y that changes
the function signature of frotz()), and teach the system to
cherry-pick refs/merge-fix/A-B to resolve semantic conflicts, when
both commits A and B appears in the integration branch for the first
time.  And make sure these are kept up-to-date across rebasing of
commits A and B.  After rebasing the topics X and Y that contained
the commits A and B, if they became C and D, the system somehow
needs to be able to locate the previous merge-fix that was valid for
A-B pair when C-D pair gets merged.


^ permalink raw reply	[relevance 3%]

* [PATCH v2 0/6] Fix merge restore state
  @ 2022-06-19  6:50  3% ` Elijah Newren via GitGitGadget
  2022-07-21  8:16  3%   ` [PATCH v3 0/7] " Elijah Newren via GitGitGadget
                     ` (2 more replies)
  0 siblings, 3 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-06-19  6:50 UTC (permalink / raw)
  To: git; +Cc: ZheNing Hu, Elijah Newren

MAINTAINER NOTE: Rebased on latest main/master. (In particular, needs
vd/sparse-stash; otherwise, the changes made here regress a
ensure-full-index testcase in t1092). Also, this fixes issues that predate
the v2.37 cycle, so this series can wait until v2.38 opens up.

Other note: If this rounds needs updates, ZheNing Hu may be the one to
respond and make any necessary updates, as per [1].

----------------------------------------------------------------------------

This is a simple series to fix restore_state() in builtin/merge.c, fixing
the issue reported by ZheNing Hu over here:
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/

Changes since v1:

 * Rebased
 * Included Junio's patch providing more testcases from
   https://lore.kernel.org/git/xmqqbkvtnyae.fsf@gitster.g/
 * Added three new patches to fix issues highlighted by Junio's testcases,
   in particular to (a) fix stashing with racy-dirty files present, (b) fix
   restoring staged state in restore_state(), and (c) ensure we can restore
   pre-merge state. All three were long-standing issues that we just hadn't
   noticed yet and thus are useful fixes on their own. However, my fix from
   v1 (which still remains as the final patch) does make it easier to notice
   these issues, and in particular that combined with Junio's new testcases
   unearthed those problems.

[1]
https://lore.kernel.org/git/CAOLTT8RpGGioOyaMw5tkeWXmHpOaBW9UH8JghUvBRQ50ZcDdYQ@mail.gmail.com/

Elijah Newren (5):
  merge: remove unused variable
  merge: fix save_state() to work when there are racy-dirty files
  merge: make restore_state() restore staged state too
  merge: ensure we can actually restore pre-merge state
  merge: do not exit restore_state() prematurely

Junio C Hamano (1):
  t6424: make sure a failed merge preserves local changes

 builtin/merge.c                          | 32 ++++++++++++++----------
 t/t6424-merge-unrelated-index-changes.sh | 32 ++++++++++++++++++++++--
 t/t7607-merge-state.sh                   | 25 ++++++++++++++++++
 3 files changed, 74 insertions(+), 15 deletions(-)
 create mode 100755 t/t7607-merge-state.sh


base-commit: 8ddf593a250e07d388059f7e3f471078e1d2ed5c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1231

Range-diff vs v1:

 -:  ----------- > 1:  6147e72c309 t6424: make sure a failed merge preserves local changes
 1:  042d624b815 = 2:  230d84f09c8 merge: remove unused variable
 -:  ----------- > 3:  89e5e633241 merge: fix save_state() to work when there are racy-dirty files
 -:  ----------- > 4:  4a8b7c9e06d merge: make restore_state() restore staged state too
 -:  ----------- > 5:  a03075167c1 merge: ensure we can actually restore pre-merge state
 2:  88bdca72a78 ! 6:  0783b48c121 merge: make restore_state() do as its name says
     @@ Metadata
      Author: Elijah Newren <newren@gmail.com>
      
       ## Commit message ##
     -    merge: make restore_state() do as its name says
     +    merge: do not exit restore_state() prematurely
      
          Previously, if the user:
      
     @@ Commit message
       ## builtin/merge.c ##
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,
       {
     - 	const char *args[] = { "stash", "apply", NULL, NULL };
     + 	const char *args[] = { "stash", "apply", "--index", NULL, NULL };
       
      -	if (is_null_oid(stash))
      -		return;
     @@ builtin/merge.c: static void restore_state(const struct object_id *head,
      +	if (is_null_oid(stash))
      +		goto refresh_cache;
      +
     - 	args[2] = oid_to_hex(stash);
     + 	args[3] = oid_to_hex(stash);
       
       	/*
      @@ builtin/merge.c: static void restore_state(const struct object_id *head,

-- 
gitgitgadget

^ permalink raw reply	[relevance 3%]

* Re: git workflow - merging upwards
  @ 2012-08-16 20:43  3% ` Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2012-08-16 20:43 UTC (permalink / raw)
  To: Patrick Sabin; +Cc: git

Patrick Sabin <patrick.just4fun@gmail.com> writes:

> I read through gitworkflows and want to use the Merge Upwards rule in
> my projects:
>
> "Always commit your fixes to the oldest supported branch that require
> them. Then (periodically) merge the integration branches upwards into
> each other."
>
> This looks great but I have some trouble in the case if I want to have
> a change in an older branch and don't want to propagate the change to
> the newer branches. Let's say I have a v1.1 and a v1.2 and now a have
> a bug fix/workaround which only affects version v1.1 but not v1.2. If
> I commit to v1.1 then the periodical merge would merge the change to
> v1.2 which is what I don't want.
>
> Any ideas/workarounds for that problem?

The document may describe the "upwards" in a bit too simplified way
for readability.  If you have two fixes to 1.1, one applicable only
to 1.1 and the other applicable to both, you would fork them from
tip of maint-1.1, like so:

    git checkout -b fix-1.1-only maint-1.1; do your work and commit
    git checkout -b fix-1.1-onwards maint-1.1; do your work and commit

and when they are proven to be good, you would merge both of them to
maint-1.1 branch:

    git checkout maint-1.1
    git merge fix-1.1-only
    git merge fix-1.1-onwards

But merging the resulting maint-1.1 into maint-1.2 will pull the
history and the change of fix-1.1-only that you do not want to have
in maint-1.2.  You want the history so that later merge will not
pull it to maint-1.2, but you do not want the change.

The first thing to think about is if fix-1.1-only is really a "fix
that only should go to maint-1.1".

If the change is only for 1.1.x release (e.g. update version number
from 1.1.4 to 1.1.5), you may not even want to have such a change
directly on the maint-1.1 branch in the first place.  You would
rather want to have release-1.1 branch that is forked from maint-1.1
branch, that contains the whole of maint-1.1 branch, and also
contains the "update version number from 1.1.x to 1.1.y" changes
that are not in the maint-1.1 branch [*1*].

That arrangement may be sufficient to allow you merge maint-1.1 to
maint-1.2 sanely.

Otherwise, you would fork another branch after merging fix-1.1-*
branches to maint-1.1 to merge it upwards.  After these two merges
illustrated above, while still on maint-1.1, you would do:

    git checkout -B merge-1.1-to-1.2 maint-1.1
    git revert -m 1 maint-1.1~1 ;# revert the fix-1.1-only merge

which would result in a state as if you merged fix-1.1-onwards but
not fix-1.1-only to the original maint-1.1 branch.  But the history
of this branch contains both fix-1.1-only and fix-1.1-onwards.

And merge that result to maint-1.2, i.e.

    git checkout maint-1.2
    git merge merge-1.1-to-1.2
    git branch -d merge-1.1-to-1.2

That way, future merges from maint-1.1 to maint-1.2 will not drag
the change of fix-1.1-only.


[Footnote]

*1* This principle applies not just to "release numbers". If you
want both maint-1.1 and maint-1.2 as generic two codebases, tweaks
meant only for customers of maint-1.1 track should *not* go to
maint-1.1, but customer-1.1 branch that forks from maint-1.1. That
way, you can keep the generic branches clean from "this is only for
that branch" kind of changes.

^ permalink raw reply	[relevance 3%]

* Re: Premerging topics
  @ 2013-04-23 14:53  3%   ` Junio C Hamano
  2013-04-23 15:17  2%     ` Antoine Pelisse
    1 sibling, 1 reply; 200+ results
From: Junio C Hamano @ 2013-04-23 14:53 UTC (permalink / raw)
  To: Johan Herland; +Cc: Antoine Pelisse, Michael Haggerty, Jeff King, git

Johan Herland <johan@herland.net> writes:

> Can you solve this problem with a tree object, instead of inventing a
> specially-formatted blob?

Hmm.  What problem are you guys trying to solve?

I think Michael's use of a merge commit to record a merge result is
sufficient as a means to record how to recreate an evil merge.

  http://thread.gmane.org/gmane.comp.version-control.git/212570/focus=212578

FWIW, in the [RFD], I wasn't asking for ideas on that part.  When
rebuiling 'pu', I use an even simpler solution to have rerere
autoresolve the mechanical part of the merge, and then cherry-pick a
separate commit from refs/merge-fix/ hierarchy on the result, and it
works perfectly fine (this is done by the 'Reintegrate' script on
the 'todo' branch; see Documentation/howto/maintain-git.txt).

When topic A is closer to be done than topic B (in other words, when
I merge topic B to an integration branch, topic A is already merged
there), and these topics have semantic conflicts (e.g. A renames a
function foo() to bar(), while B adds a new callsite of foo()), a
mechanical merge of B may succeed without any textual conflict (or
if there is, rerere can resolve it), but a semantic fix-up needs to
do "s/foo/bar/g" on the result.

I would do something like this for the first time:

	... while on 'pu', A has already been merged ...
        git merge B ;# may conflict
        edit textual conflicts away
        git rerere ;# remember the textual resolution
        git commit ;# commit _without_ semantics adjustment
        edit semantic conflict away, i.e. s/foo/bar/g
        git commit
        git update-ref refs/merge-fix/B

After that, next time I rebuild 'pu', when the automated procedure
processes B, it would "git merge B", "git rerere", make sure textual
conflicts are gone, and "git cherry-pick refs/merge-fix/B".  To make
sure this would work, what I typically do immediately after doing
all of the above is:

	git reset --hard HEAD^^

to drop the fix-up commit and merge of B, and actually tell the
automated procedure to process B.  It should recreate the evil merge
using the information I just recorded.

So "how a recipe to recreate an evil merge is recorded", as far as I
am concerned, is an already solved problem.

The part of the existing solution I was not happy was deciding when
to use which "merge-fix" commit to cherry-pick.  If I start merging
topic B before topic A, the "merge-fix/B" needs to be renamed to
"merge-fix/A" in the above.  Otherwise, when B is merged to 'pu',
there is no 'A' merged to it yet, so merge-fix that munges its new
call to foo() to call bar() instead will _break_ things [*1*].

And that was why I wanted to have a data structure that is quick to
query to answer "I am about to merge B.  Does the history already
have an A for which I have recorded a merge-fix for <A,B> pair?"


[Footnote]

*1* If A has other kinds of conflicts with other topics, it is not
sufficient to just rename "merge-fix/B" to "merge-fix/A"---the
effect of cherry-picking "merge-fix/B" needs to be merged to
existing "merge-fix/A".  If a merge-fix is recorded for a pair of
commits that necessitates an evil merge, this naturally goes away.
I can keep a merge-fix for the <A,B> pair whether I merge A before
or after B, and semantic conflicts A may have with another topic C
would be stored in a separate merge-fix for <A,C> pair.

^ permalink raw reply	[relevance 3%]

* [PATCH 14/25] documentation: fix choice of article
  @ 2023-10-08  6:45  4% ` Elijah Newren via GitGitGadget
  0 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2023-10-08  6:45 UTC (permalink / raw)
  To: git; +Cc: Elijah Newren, Elijah Newren

From: Elijah Newren <newren@gmail.com>

Diff best viewed with --color-diff.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 Documentation/config.txt                  | 2 +-
 Documentation/diff-generate-patch.txt     | 2 +-
 Documentation/howto/maintain-git.txt      | 2 +-
 Documentation/pretty-options.txt          | 2 +-
 Documentation/technical/bitmap-format.txt | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9273c7f1c65..99affec5a01 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -103,7 +103,7 @@ was found.  See below for examples.
 Conditional includes
 ~~~~~~~~~~~~~~~~~~~~
 
-You can conditionally include a config file from another by setting a
+You can conditionally include a config file from another by setting an
 `includeIf.<condition>.path` variable to the name of the file to be
 included.
 
diff --git a/Documentation/diff-generate-patch.txt b/Documentation/diff-generate-patch.txt
index 65e0b1646e1..4b307cb51bb 100644
--- a/Documentation/diff-generate-patch.txt
+++ b/Documentation/diff-generate-patch.txt
@@ -156,7 +156,7 @@ format, `/dev/null` is used to signal created or deleted
 files.
 +
 However, if the --combined-all-paths option is provided, instead of a
-two-line from-file/to-file you get a N+1 line from-file/to-file header,
+two-line from-file/to-file you get an N+1 line from-file/to-file header,
 where N is the number of parents in the merge commit:
 
        --- a/file
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 29c473e5e04..013014bbef6 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -411,7 +411,7 @@ Preparing a "merge-fix"
 
 A merge of two topics may not textually conflict but still have
 conflict at the semantic level. A classic example is for one topic
-to rename an variable and all its uses, while another topic adds a
+to rename a variable and all its uses, while another topic adds a
 new use of the variable under its old name. When these two topics
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 335395b727f..15c6f2705d4 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -73,7 +73,7 @@ environment overrides). See linkgit:git-config[1] for more details.
 With an optional '<ref>' argument, use the ref to find the notes
 to display.  The ref can specify the full refname when it begins
 with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise
-`refs/notes/` is prefixed to form a full name of the ref.
+`refs/notes/` is prefixed to form the full name of the ref.
 +
 Multiple --notes options can be combined to control which notes are
 being displayed. Examples: "--notes=foo" will show only notes from
diff --git a/Documentation/technical/bitmap-format.txt b/Documentation/technical/bitmap-format.txt
index 687c58cebcc..f761828f106 100644
--- a/Documentation/technical/bitmap-format.txt
+++ b/Documentation/technical/bitmap-format.txt
@@ -126,7 +126,7 @@ Each entry contains the following:
 	** {empty}
 	1-byte XOR-offset: ::
 	    The xor offset used to compress this bitmap. For an entry
-	    in position `x`, a XOR offset of `y` means that the actual
+	    in position `x`, an XOR offset of `y` means that the actual
 	    bitmap representing this commit is composed by XORing the
 	    bitmap for this entry with the bitmap in entry `x-y` (i.e.
 	    the bitmap `y` entries before this one).
-- 
gitgitgadget


^ permalink raw reply related	[relevance 4%]

* [PATCH 0/1]  merge: fix cache_entry use-after-free
@ 2015-10-08 18:47  5% David Turner
  0 siblings, 0 replies; 200+ results
From: David Turner @ 2015-10-08 18:47 UTC (permalink / raw)
  To: git; +Cc: David Turner

Keith diagnosed the problem and wrote the patch.  I wrote the commit
message and am sending it upstream with his OK.

Keith McGuigan (1):
  merge: fix cache_entry use-after-free

 cache.h        | 27 +++++++++++++++++++++++++++
 name-hash.c    |  7 ++++++-
 read-cache.c   |  5 ++++-
 split-index.c  | 12 +++++++-----
 unpack-trees.c |  6 ++++--
 5 files changed, 48 insertions(+), 9 deletions(-)

-- 
2.4.2.644.g97b850b-twtrsrc

^ permalink raw reply	[relevance 5%]

* [PATCH v2] Documentation: update "howto maintain git"
@ 2013-01-03 20:40  6% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2013-01-03 20:40 UTC (permalink / raw)
  To: git

The flow described in the document is still correct, but over time I
have automated various parts of the workflow with tools and their
use was not explained at all.

Update it and outline the use of two key scripts from the 'todo'
branch, "Reintegrate" and "cook".

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * I sent an incomplete preview some time ago; this is an update.
   The old one is at:

   http://thread.gmane.org/gmane.comp.version-control.git/210632

   Antoine Cc'ed because this is a more detailed answer to his
   question in:

   http://thread.gmane.org/gmane.comp.version-control.git/212127/focus=212333


 Documentation/howto/maintain-git.txt | 314 +++++++++++++++++++++++++----------
 1 file changed, 225 insertions(+), 89 deletions(-)

diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 8823a37..a4ec3cb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -8,20 +8,20 @@ Abstract: Imagine that git development is racing along as usual, when our friend
 
 The maintainer's git time is spent on three activities.
 
- - Communication (60%)
+ - Communication (45%)
 
    Mailing list discussions on general design, fielding user
    questions, diagnosing bug reports; reviewing, commenting on,
    suggesting alternatives to, and rejecting patches.
 
- - Integration (30%)
+ - Integration (50%)
 
    Applying new patches from the contributors while spotting and
    correcting minor mistakes, shuffling the integration and
    testing branches, pushing the results out, cutting the
    releases, and making announcements.
 
- - Own development (10%)
+ - Own development (5%)
 
    Scratching my own itch and sending proposed patch series out.
 
@@ -35,6 +35,9 @@ The policy.
    contain bugfixes and enhancements in any area, including
    functionality, performance and usability, without regression.
 
+ - One release cycle for a feature release is expected to last for
+   eight to ten weeks.
+
  - Maintenance releases are numbered as vX.Y.Z.W and are meant
    to contain only bugfixes for the corresponding vX.Y.Z feature
    release and earlier maintenance releases vX.Y.Z.V (V < W).
@@ -58,12 +61,15 @@ The policy.
  - 'pu' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
- - The tips of 'master', 'maint' and 'next' branches will always
-   fast-forward, to allow people to build their own
-   customization on top of them.
+ - The tips of 'master' and 'maint' branches will not be rewound to
+   allow people to build their own customization on top of them.
+   Early in a new development cycle, 'next' is rewound to the tip of
+   'master' once, but otherwise it will not be rewound until the end
+   of the cycle.
 
- - Usually 'master' contains all of 'maint', 'next' contains all
-   of 'master' and 'pu' contains all of 'next'.
+ - Usually 'master' contains all of 'maint' and 'next' contains all
+   of 'master'.  'pu' contains all the topics merged to 'next', but
+   is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
    tagged releases, and the users are encouraged to follow it.
@@ -76,11 +82,16 @@ The policy.
 A typical git day for the maintainer implements the above policy
 by doing the following:
 
- - Scan mailing list and #git channel log.  Respond with review
-   comments, suggestions etc.  Kibitz.  Collect potentially
-   usable patches from the mailing list.  Patches about a single
-   topic go to one mailbox (I read my mail in Gnus, and type
-   \C-o to save/append messages in files in mbox format).
+ - Scan mailing list.  Respond with review comments, suggestions
+   etc.  Kibitz.  Collect potentially usable patches from the
+   mailing list.  Patches about a single topic go to one mailbox (I
+   read my mail in Gnus, and type \C-o to save/append messages in
+   files in mbox format).
+
+ - Write his own patches to address issues raised on the list but
+   nobody has stepped up solving.  Send it out just like other
+   contributors do, and pick them up just like patches from other
+   contributors (see above).
 
  - Review the patches in the saved mailboxes.  Edit proposed log
    message for typofixes and clarifications, and add Acks
@@ -96,40 +107,32 @@ by doing the following:
    - Obviously correct fixes that pertain to the tip of 'master'
      are directly applied to 'master'.
 
+   - Other topics are not handled in this step.
+
    This step is done with "git am".
 
      $ git checkout master    ;# or "git checkout maint"
-     $ git am -3 -s mailbox
+     $ git am -sc3 mailbox
      $ make test
 
- - Merge downwards (maint->master):
-
-     $ git checkout master
-     $ git merge maint
-     $ make test
+   In practice, almost no patch directly goes to 'master' or
+   'maint'.
 
  - Review the last issue of "What's cooking" message, review the
-   topics scheduled for merging upwards (topic->master and
-   topic->maint), and merge.
+   topics ready for merging (topic->master and topic->maint).  Use
+   "Meta/cook -w" script (where Meta/ contains a checkout of the
+   'todo' branch) to aid this step.
+
+   And perform the merge.  Use "Meta/Reintegrate -e" script (see
+   later) to aid this step.
+
+     $ Meta/cook -w last-issue-of-whats-cooking.mbox
 
      $ git checkout master    ;# or "git checkout maint"
-     $ git merge ai/topic     ;# or "git merge ai/maint-topic"
+     $ echo ai/topic | Meta/Reintegrate -e ;# "git merge ai/topic"
      $ git log -p ORIG_HEAD.. ;# final review
      $ git diff ORIG_HEAD..   ;# final review
      $ make test              ;# final review
-     $ git branch -d ai/topic ;# or "git branch -d ai/maint-topic"
-
- - Merge downwards (maint->master) if needed:
-
-     $ git checkout master
-     $ git merge maint
-     $ make test
-
- - Merge downwards (master->next) if needed:
-
-     $ git checkout next
-     $ git merge master
-     $ make test
 
  - Handle the remaining patches:
 
@@ -138,9 +141,9 @@ by doing the following:
      and not in 'master') is applied to a new topic branch that
      is forked from the tip of 'master'.  This includes both
      enhancements and unobvious fixes to 'master'.  A topic
-     branch is named as ai/topic where "ai" is typically
-     author's initial and "topic" is a descriptive name of the
-     topic (in other words, "what's the series is about").
+     branch is named as ai/topic where "ai" is two-letter string
+     named after author's initial and "topic" is a descriptive name
+     of the topic (in other words, "what's the series is about").
 
    - An unobvious fix meant for 'maint' is applied to a new
      topic branch that is forked from the tip of 'maint'.  The
@@ -158,7 +161,8 @@ by doing the following:
 
    The above except the "replacement" are all done with:
 
-     $ git am -3 -s mailbox
+     $ git checkout ai/topic ;# or "git checkout -b ai/topic master"
+     $ git am -sc3 mailbox
 
    while patch replacement is often done by:
 
@@ -166,93 +170,166 @@ by doing the following:
 
    then replace some parts with the new patch, and reapplying:
 
+     $ git checkout ai/topic
      $ git reset --hard ai/topic~$n
-     $ git am -3 -s 000*.txt
+     $ git am -sc3 -s 000*.txt
 
    The full test suite is always run for 'maint' and 'master'
    after patch application; for topic branches the tests are run
    as time permits.
 
- - Update "What's cooking" message to review the updates to
-   existing topics, newly added topics and graduated topics.
-
-   This step is helped with Meta/cook script (where Meta/ contains
-   a checkout of the 'todo' branch).
+ - Merge maint to master as needed:
 
- - Merge topics to 'next'.  For each branch whose tip is not
-   merged to 'next', one of three things can happen:
+     $ git checkout master
+     $ git merge maint
+     $ make test
 
-   - The commits are all next-worthy; merge the topic to next:
+ - Merge master to next as needed:
 
      $ git checkout next
-     $ git merge ai/topic     ;# or "git merge ai/maint-topic"
+     $ git merge master
      $ make test
 
+ - Review the last issue of "What's cooking" again and see if topics
+   that are ready to be merged to 'next' are still in good shape
+   (e.g. has there any new issue identified on the list with the
+   series?)
+
+ - Prepare 'jch' branch, which is used to represent somewhere
+   between 'master' and 'pu' and often is slightly ahead of 'next'.
+
+     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+
+   The result is a script that lists topics to be merged in order to
+   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   later topics that should not be in 'jch' yet.  Add a line that
+   consists of '###' before the name of the first topic in the output
+   that should be in 'jch' but not in 'next' yet.
+
+ - Now we are ready to start merging topics to 'next'.  For each
+   branch whose tip is not merged to 'next', one of three things can
+   happen:
+
+   - The commits are all next-worthy; merge the topic to next;
    - The new parts are of mixed quality, but earlier ones are
-     next-worthy; merge the early parts to next:
+     next-worthy; merge the early parts to next;
+   - Nothing is next-worthy; do not do anything.
+
+   This step is aided with Meta/redo-jch.sh script created earlier.
+   If a topic that was already in 'next' gained a patch, the script
+   would list it as "ai/topic~1".  To include the new patch to the
+   updated 'next', drop the "~1" part; to keep it excluded, do not
+   touch the line.  If a topic that was not in 'next' should be
+   merged to 'next', add it at the end of the list.  Then:
+
+     $ git checkout -B jch master
+     $ Meta/redo-jch.sh -c1
+
+   to rebuild the 'jch' branch from scratch.  "-c1" tells the script
+   to stop merging at the '###' line you added earlier.
+
+   At this point, build-test the result.  It may reveal semantic
+   conflicts (e.g. a topic renamed a variable, another added a new
+   reference to the variable under its old name), in which case
+   prepare an appropriate merge-fix first (see appendix), and
+   rebuild the 'jch' branch from scratch, starting at the tip of
+   'master'.
+
+   Then do the same to 'next'
 
      $ git checkout next
-     $ git merge ai/topic~2   ;# the tip two are dubious
-     $ make test
+     $ sh Meta/redo-jch.sh -c1 -e
 
-   - Nothing is next-worthy; do not do anything.
+   The "-e" option allows the merge message that comes from the
+   history of the topic and the comments in the "What's cooking" to
+   be edited.  The resulting tree should match 'jch' as the same set
+   of topics are merged on 'master'; otherwise there is a mismerge.
+   Investigate why and do not proceed until the mismerge is found
+   and rectified.
 
- - [** OBSOLETE **] Optionally rebase topics that do not have any commit
-   in next yet, when they can take advantage of low-level framework
-   change that is merged to 'master' already.
+     $ git diff jch next
 
-     $ git rebase master ai/topic
+   When all is well, clean up the redo-jch.sh script with
 
-   This step is helped with Meta/git-topic.perl script to
-   identify which topic is rebaseable.  There also is a
-   pre-rebase hook to make sure that topics that are already in
-   'next' are not rebased beyond the merged commit.
+     $ sh Meta/redo-jch.sh -u
 
- - [** OBSOLETE **] Rebuild "pu" to merge the tips of topics not in 'next'.
+   This removes topics listed in the script that have already been
+   merged to 'master'.  This unfortunately loses the "###" marker,
+   so add it again to the appropriate place.
 
-     $ git checkout pu
-     $ git reset --hard next
-     $ git merge ai/topic     ;# repeat for all remaining topics
-     $ make test
+ - Rebuild 'pu'.
+
+     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+
+   Edit the result by adding new topics that are not still in 'pu'
+   in the script.  Then
+
+     $ git checkout -B pu jch
+     $ sh Meta/redo-pu.sh
+
+   When all is well, clean up the redo-pu.sh script with
+
+     $ sh Meta/redo-pu.sh -u
+
+   Double check by running
+
+     $ git branch --no-merged pu
+
+   to see there is no unexpected leftover topics.
+
+   At this point, build-test the result for semantic conflicts, and
+   if there are, prepare an appropriate merge-fix first (see
+   appendix), and rebuild the 'pu' branch from scratch, starting at
+   the tip of 'jch'.
+
+ - Update "What's cooking" message to review the updates to
+   existing topics, newly added topics and graduated topics.
 
-   This step is helped with Meta/PU script
+   This step is helped with Meta/cook script.
 
- - Push four integration branches to a private repository at
-   k.org and run "make test" on all of them.
+     $ Meta/cook
 
- - Push four integration branches to /pub/scm/git/git.git at
-   k.org.  This triggers its post-update hook which:
+   This script inspects the history between master..pu, finds tips
+   of topic branches, compares what it found with the current
+   contents in Meta/whats-cooking.txt, and updates that file.
+   Topics not listed in the file but are found in master..pu are
+   added to the "New topics" section, topics listed in the file that
+   are no longer found in master..pu are moved to the "Graduated to
+   master" section, and topics whose commits changed their states
+   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   with change markers "<<" and ">>".
 
-    (1) runs "git pull" in $HOME/git-doc/ repository to pull
-        'master' just pushed out;
+   Look for lines enclosed in "<<" and ">>"; they hold contents from
+   old file that are replaced by this integration round.  After
+   verifying them, remove the old part.  Review the description for
+   each topic and update its doneness and plan as needed.  To review
+   the updated plan, run
 
-    (2) runs "make doc" in $HOME/git-doc/, install the generated
-        documentation in staging areas, which are separate
-        repositories that have html and man branches checked
-        out.
+     $ Meta/cook -w
 
-    (3) runs "git commit" in the staging areas, and run "git
-        push" back to /pub/scm/git/git.git/ to update the html
-        and man branches.
+   which will pick up comments given to the topics, such as "Will
+   merge to 'next'", etc. (see Meta/cook script to learn what kind
+   of phrases are supported).
 
-    (4) installs generated documentation to /pub/software/scm/git/docs/
-        to be viewed from http://www.kernel.org/
+ - Compile, test and install all four (five) integration branches;
+   Meta/Dothem script may aid this step.
 
- - Fetch html and man branches back from k.org, and push four
-   integration branches and the two documentation branches to
-   repo.or.cz and other mirrors.
+ - Format documentation if the 'master' branch was updated;
+   Meta/dodoc.sh script may aid this step.
 
+ - Push the integration branches out to public places; Meta/pushall
+   script may aid this step.
 
 Some observations to be made.
 
- * Each topic is tested individually, and also together with
-   other topics cooking in 'next'.  Until it matures, none part
-   of it is merged to 'master'.
+ * Each topic is tested individually, and also together with other
+   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
    'next'.  Such a topic will have many merges to 'next' (in
    other words, "git log --first-parent next" will show many
-   "Merge ai/topic to next" for the same topic.
+   "Merge branch 'ai/topic' to next" for the same topic.
 
  * An unobvious fix for 'maint' is cooked in 'next' and then
    merged to 'master' to make extra sure it is Ok and then
@@ -274,3 +351,62 @@ Some observations to be made.
  * Being in the 'next' branch is not a guarantee for a topic to
    be included in the next feature release.  Being in the
    'master' branch typically is.
+
+
+[Appendix]
+
+Preparing a "merge-fix"
+
+A merge of two topics may not textually conflict but still have
+conflict at the semantic level. A classic example is for one topic
+to rename an variable and all its uses, while another topic adds a
+new use of the variable under its old name. When these two topics
+are merged together, the reference to the variable newly added by
+the latter topic will still use the old name in the result.
+
+The Meta/Reintegrate script that is used by redo-jch and redo-pu
+scripts implements a crude but usable way to work this issue around.
+When the script merges branch $X, it checks if "refs/merge-fix/$X"
+exists, and if so, the effect of it is squashed into the result of
+the mechanical merge.  In other words,
+
+     $ echo $X | Meta/Reintegrate
+
+is roughly equivalent to this sequence:
+
+     $ git merge --rerere-autoupdate $X
+     $ git commit
+     $ git cherry-pick -n refs/merge-fix/$X
+     $ git commit --amend
+
+The goal of this "prepare a merge-fix" step is to come up with a
+commit that can be squashed into a result of mechanical merge to
+correct semantic conflicts.
+
+After finding that the result of merging branch "ai/topic" to an
+integration branch had such a semantic conflict, say pu~4, check the
+problematic merge out on a detached HEAD, edit the working tree to
+fix the semantic conflict, and make a separate commit to record the
+fix-up:
+
+     $ git checkout pu~4
+     $ git show -s --pretty=%s ;# double check
+     Merge branch 'ai/topic' to pu
+     $ edit
+     $ git commit -m 'merge-fix/ai/topic' -a
+
+Then make a reference "refs/merge-fix/ai/topic" to point at this
+result:
+
+     $ git update-ref refs/merge-fix/ai/topic HEAD
+
+Then double check the result by asking Meta/Reintegrate to redo the
+merge:
+
+     $ git checkout pu~5 ;# the parent of the problem merge
+     $ echo ai/topic | Meta/Reintegrate
+     $ git diff pu~4
+
+This time, because you prepared refs/merge-fix/ai/topic, the
+resulting merge should have been tweaked to include the fix for the
+semantic conflict.
-- 
1.8.1.293.g4a210a9

^ permalink raw reply related	[relevance 6%]

* Re: [PATCH] new tutorial
  @ 2006-01-23  4:57  6%                   ` J. Bruce Fields
  0 siblings, 0 replies; 200+ results
From: J. Bruce Fields @ 2006-01-23  4:57 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

On Sun, Jan 15, 2006 at 03:26:53PM -0800, Junio C Hamano wrote:
> I have a mixed feeling on this one.  I tend to recommend --soft
> instead --mixed to people, but both have their pros and cons:

Yeah.  My goal here is to pare this down to the minimum of text required
to get people up and running and having fun.  To that end, I'd rather
just not explain what the index file is or how it's used.  And really
git-reset could probably be left out entirely.  So I've cut most of this
out, and left just one mention of git-reset --hard.

> If this is intended to be a beginner documentation, I'd prefer
> if it did not talk about cat-file, nor how commit objects are
> internally represented.

Fair enough.  I was trying to find a way to show the structure of the
commit graph.  But that was probably overkill.

So I've cut that out.  I've also left out discussion of the SHA1's
entirely, though we might want to add that back in at some point.  For
now it seems you can do enough without paying attention to them.

> These days by default "git fetch" (and "git pull") fetches the
> tags that refer to the commits you fetch as part of regular
> updates, so this part is mostly redundant.

Got it.

> BTW^2, it might be interesting to do
> 
> 	$ git format-patch -C origin..master
> 
> the next time around.

Here's take two.--b.

The current Documentation/tutorial.txt concentrates on the lower-level
git interfaces.  So it's useful to people developing alternative
porcelains, to advanced users, etc., but not so much to beginning users.

I think it makes sense for the main tutorial to address those
beginnning users, so with this patch I'm proposing that we move
Documentation/tutorial.txt to Documentation/core-tutorial.txt and
replace it by a new tutorial.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

---

 Documentation/core-tutorial.txt |    0 
 Documentation/tutorial.txt      | 2023 ++++++---------------------------------
 2 files changed, 303 insertions(+), 1720 deletions(-)
 copy Documentation/{tutorial.txt => core-tutorial.txt} (100%)

99f6a432f3a4da666d3f535e78cba04085aa1b46
diff --git a/Documentation/tutorial.txt b/Documentation/core-tutorial.txt
similarity index 100%
copy from Documentation/tutorial.txt
copy to Documentation/core-tutorial.txt
diff --git a/Documentation/tutorial.txt b/Documentation/tutorial.txt
index b8fa299..a09bbea 100644
--- a/Documentation/tutorial.txt
+++ b/Documentation/tutorial.txt
@@ -1,1821 +1,404 @@
-A short git tutorial
-====================
+A tutorial introduction to git
+==============================
 
-Introduction
-------------
+This tutorial explains how to import a new project into git, make
+changes to it, and share changes with other developers.
 
-This is trying to be a short tutorial on setting up and using a git
-repository, mainly because being hands-on and using explicit examples is
-often the best way of explaining what is going on.
+First, note that you can get documentation for a command such as "git
+diff" with:
 
-In normal life, most people wouldn't use the "core" git programs
-directly, but rather script around them to make them more palatable. 
-Understanding the core git stuff may help some people get those scripts
-done, though, and it may also be instructive in helping people
-understand what it is that the higher-level helper scripts are actually
-doing. 
+------------------------------------------------
+$ man git-diff
+------------------------------------------------
 
-The core git is often called "plumbing", with the prettier user
-interfaces on top of it called "porcelain". You may not want to use the
-plumbing directly very often, but it can be good to know what the
-plumbing does for when the porcelain isn't flushing.
+Importing a new project
+-----------------------
 
-The material presented here often goes deep describing how things
-work internally.  If you are mostly interested in using git as a
-SCM, you can skip them during your first pass.
+Assume you have a tarball project.tar.gz with your initial work.  You
+can place it under git revision control as follows.
 
-[NOTE]
-And those "too deep" descriptions are often marked as Note.
+------------------------------------------------
+$ tar -xzf project.tar.gz
+$ cd project
+$ git init-db
+------------------------------------------------
 
-[NOTE]
-If you are already familiar with another version control system,
-like CVS, you may want to take a look at
-link:everyday.html[Everyday GIT in 20 commands or so] first
-before reading this.
+Git will reply
 
+------------------------------------------------
+defaulting to local storage area
+------------------------------------------------
 
-Creating a git repository
--------------------------
+You've now initialized the working directory--you may notice a new
+directory created, named ".git".  Tell git that you want it to track
+every file under the current directory with
 
-Creating a new git repository couldn't be easier: all git repositories start
-out empty, and the only thing you need to do is find yourself a
-subdirectory that you want to use as a working tree - either an empty
-one for a totally new project, or an existing working tree that you want
-to import into git. 
+------------------------------------------------
+$ git add .
+------------------------------------------------
 
-For our first example, we're going to start a totally new repository from
-scratch, with no pre-existing files, and we'll call it `git-tutorial`.
-To start up, create a subdirectory for it, change into that
-subdirectory, and initialize the git infrastructure with `git-init-db`:
+Finally,
 
 ------------------------------------------------
-$ mkdir git-tutorial
-$ cd git-tutorial
-$ git-init-db
+$ git commit -a
 ------------------------------------------------
 
-to which git will reply
+will prompt you for a commit message, then record the current state
+of all the files to the repository.
 
-----------------
-defaulting to local storage area
-----------------
+Try modifying some files, then run
 
-which is just git's way of saying that you haven't been doing anything
-strange, and that it will have created a local `.git` directory setup for
-your new project. You will now have a `.git` directory, and you can
-inspect that with `ls`. For your new empty project, it should show you
-three entries, among other things:
-
- - a symlink called `HEAD`, pointing to `refs/heads/master` (if your
-   platform does not have native symlinks, it is a file containing the
-   line "ref: refs/heads/master")
-+
-Don't worry about the fact that the file that the `HEAD` link points to
-doesn't even exist yet -- you haven't created the commit that will
-start your `HEAD` development branch yet.
-
- - a subdirectory called `objects`, which will contain all the
-   objects of your project. You should never have any real reason to
-   look at the objects directly, but you might want to know that these
-   objects are what contains all the real 'data' in your repository.
-
- - a subdirectory called `refs`, which contains references to objects.
-
-In particular, the `refs` subdirectory will contain two other
-subdirectories, named `heads` and `tags` respectively. They do
-exactly what their names imply: they contain references to any number
-of different 'heads' of development (aka 'branches'), and to any
-'tags' that you have created to name specific versions in your
-repository.
-
-One note: the special `master` head is the default branch, which is
-why the `.git/HEAD` file was created as a symlink to it even if it
-doesn't yet exist. Basically, the `HEAD` link is supposed to always
-point to the branch you are working on right now, and you always
-start out expecting to work on the `master` branch.
-
-However, this is only a convention, and you can name your branches
-anything you want, and don't have to ever even 'have' a `master`
-branch. A number of the git tools will assume that `.git/HEAD` is
-valid, though.
-
-[NOTE]
-An 'object' is identified by its 160-bit SHA1 hash, aka 'object name',
-and a reference to an object is always the 40-byte hex
-representation of that SHA1 name. The files in the `refs`
-subdirectory are expected to contain these hex references
-(usually with a final `\'\n\'` at the end), and you should thus
-expect to see a number of 41-byte files containing these
-references in these `refs` subdirectories when you actually start
-populating your tree.
-
-[NOTE]
-An advanced user may want to take a look at the
-link:repository-layout.html[repository layout] document
-after finishing this tutorial.
+------------------------------------------------
+$ git diff
+------------------------------------------------
 
-You have now created your first git repository. Of course, since it's
-empty, that's not very useful, so let's start populating it with data.
+to review your changes.  When you're done,
 
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
 
-Populating a git repository
----------------------------
+will again prompt your for a message describing the change, and then
+record the new versions of the modified files.
 
-We'll keep this simple and stupid, so we'll start off with populating a
-few trivial files just to get a feel for it.
+A note on commit messages: Though not required, it's a good idea to
+begin the commit message with a single short (less than 50 character)
+line summarizing the change, followed by a blank line and then a more
+thorough description.  Tools that turn commits into email, for
+example, use the first line on the Subject line and the rest of the
+commit in the body.
 
-Start off with just creating any random files that you want to maintain
-in your git repository. We'll start off with a few bad examples, just to
-get a feel for how this works:
+To add a new file, first create the file, then
 
 ------------------------------------------------
-$ echo "Hello World" >hello
-$ echo "Silly example" >example
+$ git add path/to/new/file
 ------------------------------------------------
 
-you have now created two files in your working tree (aka 'working directory'), but to
-actually check in your hard work, you will have to go through two steps:
+then commit as usual.  No special command is required when removing a
+file; just remove it, then commit.
 
- - fill in the 'index' file (aka 'cache') with the information about your
-   working tree state.
+At any point you can view the history of your changes using
 
- - commit that index file as an object.
+------------------------------------------------
+$ git whatchanged
+------------------------------------------------
 
-The first step is trivial: when you want to tell git about any changes
-to your working tree, you use the `git-update-index` program. That
-program normally just takes a list of filenames you want to update, but
-to avoid trivial mistakes, it refuses to add new entries to the index
-(or remove existing ones) unless you explicitly tell it that you're
-adding a new entry with the `\--add` flag (or removing an entry with the
-`\--remove`) flag.
+If you also want to see complete diffs at each step, use
 
-So to populate the index with the two files you just created, you can do
+------------------------------------------------
+$ git whatchanged -p
+------------------------------------------------
+
+Managing branches
+-----------------
+
+A single git repository can maintain multiple branches of
+development.  To create a new branch named "experimental", use
 
 ------------------------------------------------
-$ git-update-index --add hello example
+$ git branch experimental
 ------------------------------------------------
 
-and you have now told git to track those two files.
+If you now run
 
-In fact, as you did that, if you now look into your object directory,
-you'll notice that git will have added two new objects to the object
-database. If you did exactly the steps above, you should now be able to do
+------------------------------------------------
+$ git branch
+------------------------------------------------
 
+you'll get a list of all existing branches:
 
-----------------
-$ ls .git/objects/??/*
-----------------
+------------------------------------------------
+  experimental
+* master
+------------------------------------------------
 
-and see two files:
+The "experimental" branch is the one you just created, and the
+"master" branch is a default branch that was created for you
+automatically.  The asterisk marks the branch you are currently on;
+type
 
-----------------
-.git/objects/55/7db03de997c86a4a028e1ebd3a1ceb225be238 
-.git/objects/f2/4c74a2e500f5ee1332c86b94199f52b1d1d962
-----------------
+------------------------------------------------
+$ git checkout experimental
+------------------------------------------------
 
-which correspond with the objects with names of 557db... and f24c7..
-respectively.
+to switch to the experimental branch.  Now edit a file, commit the
+change, and switch back to the master branch:
 
-If you want to, you can use `git-cat-file` to look at those objects, but
-you'll have to use the object name, not the filename of the object:
+------------------------------------------------
+(edit file)
+$ git commit -a
+$ git checkout master
+------------------------------------------------
 
-----------------
-$ git-cat-file -t 557db03de997c86a4a028e1ebd3a1ceb225be238
-----------------
+Check that the change you made is no longer visible, since it was
+made on the experimental branch and you're back on the master branch.
 
-where the `-t` tells `git-cat-file` to tell you what the "type" of the
-object is. git will tell you that you have a "blob" object (ie just a
-regular file), and you can see the contents with
+You can make a different change on the master branch:
 
-----------------
-$ git-cat-file "blob" 557db03
-----------------
+------------------------------------------------
+(edit file)
+$ git commit -a
+------------------------------------------------
 
-which will print out "Hello World". The object 557db03 is nothing
-more than the contents of your file `hello`.
+at this point the two branches have diverged, with different changes
+made in each.  To merge the changes made in the two branches, run
 
-[NOTE]
-Don't confuse that object with the file `hello` itself. The
-object is literally just those specific *contents* of the file, and
-however much you later change the contents in file `hello`, the object
-we just looked at will never change. Objects are immutable.
+------------------------------------------------
+$ git pull . experimental
+------------------------------------------------
 
-[NOTE]
-The second example demonstrates that you can
-abbreviate the object name to only the first several
-hexadecimal digits in most places.
+If the changes don't conflict, you're done.  If there are conflicts,
+markers will be left in the problematic files showing the conflict;
 
-Anyway, as we mentioned previously, you normally never actually take a
-look at the objects themselves, and typing long 40-character hex
-names is not something you'd normally want to do. The above digression
-was just to show that `git-update-index` did something magical, and
-actually saved away the contents of your files into the git object
-database.
+------------------------------------------------
+$ git diff
+------------------------------------------------
 
-Updating the index did something else too: it created a `.git/index`
-file. This is the index that describes your current working tree, and
-something you should be very aware of. Again, you normally never worry
-about the index file itself, but you should be aware of the fact that
-you have not actually really "checked in" your files into git so far,
-you've only *told* git about them.
+will show this.  Once you've edited the files to resolve the
+conflicts,
 
-However, since git knows about them, you can now start using some of the
-most basic git commands to manipulate the files or look at their status. 
+------------------------------------------------
+$ git commit -a
+------------------------------------------------
 
-In particular, let's not even check in the two files into git yet, we'll
-start off by adding another line to `hello` first:
+will commit the result of the merge. Finally,
 
 ------------------------------------------------
-$ echo "It's a new day for git" >>hello
+$ gitk
 ------------------------------------------------
 
-and you can now, since you told git about the previous state of `hello`, ask
-git what has changed in the tree compared to your old index, using the
-`git-diff-files` command:
+will show a nice graphical representation of the resulting history.
 
-------------
-$ git-diff-files
-------------
+If you develop on a branch crazy-idea, then regret it, you can always
+delete the branch with
 
-Oops. That wasn't very readable. It just spit out its own internal
-version of a `diff`, but that internal version really just tells you
-that it has noticed that "hello" has been modified, and that the old object
-contents it had have been replaced with something else.
+-------------------------------------
+$ git branch -D crazy-idea
+-------------------------------------
 
-To make it readable, we can tell git-diff-files to output the
-differences as a patch, using the `-p` flag:
+Branches are cheap and easy, so this is a good way to try something
+out.
 
-------------
-$ git-diff-files -p
-diff --git a/hello b/hello
-index 557db03..263414f 100644
---- a/hello
-+++ b/hello
-@@ -1 +1,2 @@
- Hello World
-+It's a new day for git
-----
+Using git for collaboration
+---------------------------
 
-i.e. the diff of the change we caused by adding another line to `hello`.
+Suppose that Alice has started a new project with a git repository in
+/home/alice/project, and that Bob, who has a home directory on the
+same machine, wants to contribute.
 
-In other words, `git-diff-files` always shows us the difference between
-what is recorded in the index, and what is currently in the working
-tree. That's very useful.
+Bob begins with:
 
-A common shorthand for `git-diff-files -p` is to just write `git
-diff`, which will do the same thing.
+------------------------------------------------
+$ git clone /home/alice/project myrepo
+------------------------------------------------
 
-------------
-$ git diff
-diff --git a/hello b/hello
-index 557db03..263414f 100644
---- a/hello
-+++ b/hello
-@@ -1 +1,2 @@
- Hello World
-+It's a new day for git
-------------
-
-
-Committing git state
---------------------
-
-Now, we want to go to the next stage in git, which is to take the files
-that git knows about in the index, and commit them as a real tree. We do
-that in two phases: creating a 'tree' object, and committing that 'tree'
-object as a 'commit' object together with an explanation of what the
-tree was all about, along with information of how we came to that state.
-
-Creating a tree object is trivial, and is done with `git-write-tree`.
-There are no options or other input: git-write-tree will take the
-current index state, and write an object that describes that whole
-index. In other words, we're now tying together all the different
-filenames with their contents (and their permissions), and we're
-creating the equivalent of a git "directory" object:
-
-------------------------------------------------
-$ git-write-tree
-------------------------------------------------
-
-and this will just output the name of the resulting tree, in this case
-(if you have done exactly as I've described) it should be
-
-----------------
-8988da15d077d4829fc51d8544c097def6644dbb
-----------------
-
-which is another incomprehensible object name. Again, if you want to,
-you can use `git-cat-file -t 8988d\...` to see that this time the object
-is not a "blob" object, but a "tree" object (you can also use
-`git-cat-file` to actually output the raw object contents, but you'll see
-mainly a binary mess, so that's less interesting).
-
-However -- normally you'd never use `git-write-tree` on its own, because
-normally you always commit a tree into a commit object using the
-`git-commit-tree` command. In fact, it's easier to not actually use
-`git-write-tree` on its own at all, but to just pass its result in as an
-argument to `git-commit-tree`.
-
-`git-commit-tree` normally takes several arguments -- it wants to know
-what the 'parent' of a commit was, but since this is the first commit
-ever in this new repository, and it has no parents, we only need to pass in
-the object name of the tree. However, `git-commit-tree`
-also wants to get a commit message
-on its standard input, and it will write out the resulting object name for the
-commit to its standard output.
-
-And this is where we create the `.git/refs/heads/master` file
-which is pointed at by `HEAD`. This file is supposed to contain
-the reference to the top-of-tree of the master branch, and since
-that's exactly what `git-commit-tree` spits out, we can do this
-all with a sequence of simple shell commands:
-
-------------------------------------------------
-$ tree=$(git-write-tree)
-$ commit=$(echo 'Initial commit' | git-commit-tree $tree)
-$ git-update-ref HEAD $commit
-------------------------------------------------
-
-which will say:
-
-----------------
-Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb
-----------------
-
-just to warn you about the fact that it created a totally new commit
-that is not related to anything else. Normally you do this only *once*
-for a project ever, and all later commits will be parented on top of an
-earlier commit, and you'll never see this "Committing initial tree"
-message ever again.
-
-Again, normally you'd never actually do this by hand. There is a
-helpful script called `git commit` that will do all of this for you. So
-you could have just written `git commit`
-instead, and it would have done the above magic scripting for you.
-
-
-Making a change
----------------
-
-Remember how we did the `git-update-index` on file `hello` and then we
-changed `hello` afterward, and could compare the new state of `hello` with the
-state we saved in the index file? 
-
-Further, remember how I said that `git-write-tree` writes the contents
-of the *index* file to the tree, and thus what we just committed was in
-fact the *original* contents of the file `hello`, not the new ones. We did
-that on purpose, to show the difference between the index state, and the
-state in the working tree, and how they don't have to match, even
-when we commit things.
-
-As before, if we do `git-diff-files -p` in our git-tutorial project,
-we'll still see the same difference we saw last time: the index file
-hasn't changed by the act of committing anything. However, now that we
-have committed something, we can also learn to use a new command:
-`git-diff-index`.
-
-Unlike `git-diff-files`, which showed the difference between the index
-file and the working tree, `git-diff-index` shows the differences
-between a committed *tree* and either the index file or the working
-tree. In other words, `git-diff-index` wants a tree to be diffed
-against, and before we did the commit, we couldn't do that, because we
-didn't have anything to diff against. 
-
-But now we can do
-
-----------------
-$ git-diff-index -p HEAD
-----------------
-
-(where `-p` has the same meaning as it did in `git-diff-files`), and it
-will show us the same difference, but for a totally different reason. 
-Now we're comparing the working tree not against the index file,
-but against the tree we just wrote. It just so happens that those two
-are obviously the same, so we get the same result.
-
-Again, because this is a common operation, you can also just shorthand
-it with
-
-----------------
-$ git diff HEAD
-----------------
-
-which ends up doing the above for you.
-
-In other words, `git-diff-index` normally compares a tree against the
-working tree, but when given the `\--cached` flag, it is told to
-instead compare against just the index cache contents, and ignore the
-current working tree state entirely. Since we just wrote the index
-file to HEAD, doing `git-diff-index \--cached -p HEAD` should thus return
-an empty set of differences, and that's exactly what it does. 
-
-[NOTE]
-================
-`git-diff-index` really always uses the index for its
-comparisons, and saying that it compares a tree against the working
-tree is thus not strictly accurate. In particular, the list of
-files to compare (the "meta-data") *always* comes from the index file,
-regardless of whether the `\--cached` flag is used or not. The `\--cached`
-flag really only determines whether the file *contents* to be compared
-come from the working tree or not.
-
-This is not hard to understand, as soon as you realize that git simply
-never knows (or cares) about files that it is not told about
-explicitly. git will never go *looking* for files to compare, it
-expects you to tell it what the files are, and that's what the index
-is there for.
-================
-
-However, our next step is to commit the *change* we did, and again, to
-understand what's going on, keep in mind the difference between "working
-tree contents", "index file" and "committed tree". We have changes
-in the working tree that we want to commit, and we always have to
-work through the index file, so the first thing we need to do is to
-update the index cache:
-
-------------------------------------------------
-$ git-update-index hello
-------------------------------------------------
-
-(note how we didn't need the `\--add` flag this time, since git knew
-about the file already).
-
-Note what happens to the different `git-diff-\*` versions here. After
-we've updated `hello` in the index, `git-diff-files -p` now shows no
-differences, but `git-diff-index -p HEAD` still *does* show that the
-current state is different from the state we committed. In fact, now
-`git-diff-index` shows the same difference whether we use the `--cached`
-flag or not, since now the index is coherent with the working tree.
-
-Now, since we've updated `hello` in the index, we can commit the new
-version. We could do it by writing the tree by hand again, and
-committing the tree (this time we'd have to use the `-p HEAD` flag to
-tell commit that the HEAD was the *parent* of the new commit, and that
-this wasn't an initial commit any more), but you've done that once
-already, so let's just use the helpful script this time:
-
-------------------------------------------------
-$ git commit
-------------------------------------------------
-
-which starts an editor for you to write the commit message and tells you
-a bit about what you have done.
-
-Write whatever message you want, and all the lines that start with '#'
-will be pruned out, and the rest will be used as the commit message for
-the change. If you decide you don't want to commit anything after all at
-this point (you can continue to edit things and update the index), you
-can just leave an empty message. Otherwise `git commit` will commit
-the change for you.
-
-You've now made your first real git commit. And if you're interested in
-looking at what `git commit` really does, feel free to investigate:
-it's a few very simple shell scripts to generate the helpful (?) commit
-message headers, and a few one-liners that actually do the
-commit itself (`git-commit`).
-
-
-Inspecting Changes
-------------------
-
-While creating changes is useful, it's even more useful if you can tell
-later what changed. The most useful command for this is another of the
-`diff` family, namely `git-diff-tree`.
-
-`git-diff-tree` can be given two arbitrary trees, and it will tell you the
-differences between them. Perhaps even more commonly, though, you can
-give it just a single commit object, and it will figure out the parent
-of that commit itself, and show the difference directly. Thus, to get
-the same diff that we've already seen several times, we can now do
-
-----------------
-$ git-diff-tree -p HEAD
-----------------
-
-(again, `-p` means to show the difference as a human-readable patch),
-and it will show what the last commit (in `HEAD`) actually changed.
-
-[NOTE]
-============
-Here is an ASCII art by Jon Loeliger that illustrates how
-various diff-\* commands compare things.
-
-                      diff-tree
-                       +----+
-                       |    |
-                       |    |
-                       V    V
-                    +-----------+
-                    | Object DB |
-                    |  Backing  |
-                    |   Store   |
-                    +-----------+
-                      ^    ^
-                      |    |
-                      |    |  diff-index --cached
-                      |    |
-          diff-index  |    V
-                      |  +-----------+
-                      |  |   Index   |
-                      |  |  "cache"  |
-                      |  +-----------+
-                      |    ^
-                      |    |
-                      |    |  diff-files
-                      |    |
-                      V    V
-                    +-----------+
-                    |  Working  |
-                    | Directory |
-                    +-----------+
-============
-
-More interestingly, you can also give `git-diff-tree` the `-v` flag, which
-tells it to also show the commit message and author and date of the
-commit, and you can tell it to show a whole series of diffs.
-Alternatively, you can tell it to be "silent", and not show the diffs at
-all, but just show the actual commit message.
-
-In fact, together with the `git-rev-list` program (which generates a
-list of revisions), `git-diff-tree` ends up being a veritable fount of
-changes. A trivial (but very useful) script called `git-whatchanged` is
-included with git which does exactly this, and shows a log of recent
-activities.
-
-To see the whole history of our pitiful little git-tutorial project, you
-can do
-
-----------------
-$ git log
-----------------
-
-which shows just the log messages, or if we want to see the log together
-with the associated patches use the more complex (and much more
-powerful)
-
-----------------
-$ git-whatchanged -p --root
-----------------
-
-and you will see exactly what has changed in the repository over its
-short history. 
-
-[NOTE]
-The `\--root` flag is a flag to `git-diff-tree` to tell it to
-show the initial aka 'root' commit too. Normally you'd probably not
-want to see the initial import diff, but since the tutorial project
-was started from scratch and is so small, we use it to make the result
-a bit more interesting.
-
-With that, you should now be having some inkling of what git does, and
-can explore on your own.
-
-[NOTE]
-Most likely, you are not directly using the core
-git Plumbing commands, but using Porcelain like Cogito on top
-of it. Cogito works a bit differently and you usually do not
-have to run `git-update-index` yourself for changed files (you
-do tell underlying git about additions and removals via
-`cg-add` and `cg-rm` commands). Just before you make a commit
-with `cg-commit`, Cogito figures out which files you modified,
-and runs `git-update-index` on them for you.
+This creates a new directory "myrepo" containing a clone of Alice's
+repository.  The clone is on an equal footing with the original
+project, posessing its own copy of the original project's history.
 
+Bob then makes some changes and commits them:
 
-Tagging a version
------------------
+------------------------------------------------
+(edit files)
+$ git commit -a
+(repeat as necessary)
+------------------------------------------------
+
+When he's ready, he tells Alice to pull changes from the repository
+at /home/bob/myrepo.  She does this with:
+
+------------------------------------------------
+$ cd /home/alice/project
+$ git pull /home/bob/myrepo
+------------------------------------------------
+
+This actually pulls changes from the branch in Bob's repository named
+"master".  Alice could request a different branch by adding the name
+of the branch to the end of the git pull command line.
+
+This merges Bob's changes into her repository; "git whatchanged" will
+now show the new commits.  If Alice has made her own changes in the
+meantime, then Bob's changes will be merged in, and she will need to
+manually fix any conflicts.
 
-In git, there are two kinds of tags, a "light" one, and an "annotated tag".
+A more cautious Alice might wish to examine Bob's changes before
+pulling them.  She can do this by creating a temporary branch just
+for the purpose of studying Bob's changes:
 
-A "light" tag is technically nothing more than a branch, except we put
-it in the `.git/refs/tags/` subdirectory instead of calling it a `head`.
-So the simplest form of tag involves nothing more than
-
-------------------------------------------------
-$ git tag my-first-tag
-------------------------------------------------
-
-which just writes the current `HEAD` into the `.git/refs/tags/my-first-tag`
-file, after which point you can then use this symbolic name for that
-particular state. You can, for example, do
-
-----------------
-$ git diff my-first-tag
-----------------
-
-to diff your current state against that tag (which at this point will
-obviously be an empty diff, but if you continue to develop and commit
-stuff, you can use your tag as an "anchor-point" to see what has changed
-since you tagged it.
-
-An "annotated tag" is actually a real git object, and contains not only a
-pointer to the state you want to tag, but also a small tag name and
-message, along with optionally a PGP signature that says that yes,
-you really did
-that tag. You create these annotated tags with either the `-a` or
-`-s` flag to `git tag`:
-
-----------------
-$ git tag -s <tagname>
-----------------
-
-which will sign the current `HEAD` (but you can also give it another
-argument that specifies the thing to tag, ie you could have tagged the
-current `mybranch` point by using `git tag <tagname> mybranch`).
-
-You normally only do signed tags for major releases or things
-like that, while the light-weight tags are useful for any marking you
-want to do -- any time you decide that you want to remember a certain
-point, just create a private tag for it, and you have a nice symbolic
-name for the state at that point.
-
-
-Copying repositories
---------------------
-
-git repositories are normally totally self-sufficient and relocatable
-Unlike CVS, for example, there is no separate notion of
-"repository" and "working tree". A git repository normally *is* the
-working tree, with the local git information hidden in the `.git`
-subdirectory. There is nothing else. What you see is what you got.
-
-[NOTE]
-You can tell git to split the git internal information from
-the directory that it tracks, but we'll ignore that for now: it's not
-how normal projects work, and it's really only meant for special uses.
-So the mental model of "the git information is always tied directly to
-the working tree that it describes" may not be technically 100%
-accurate, but it's a good model for all normal use.
-
-This has two implications: 
-
- - if you grow bored with the tutorial repository you created (or you've
-   made a mistake and want to start all over), you can just do simple
-+
-----------------
-$ rm -rf git-tutorial
-----------------
-+
-and it will be gone. There's no external repository, and there's no
-history outside the project you created.
-
- - if you want to move or duplicate a git repository, you can do so. There
-   is `git clone` command, but if all you want to do is just to
-   create a copy of your repository (with all the full history that
-   went along with it), you can do so with a regular
-   `cp -a git-tutorial new-git-tutorial`.
-+
-Note that when you've moved or copied a git repository, your git index
-file (which caches various information, notably some of the "stat"
-information for the files involved) will likely need to be refreshed.
-So after you do a `cp -a` to create a new copy, you'll want to do
-+
-----------------
-$ git-update-index --refresh
-----------------
-+
-in the new repository to make sure that the index file is up-to-date.
-
-Note that the second point is true even across machines. You can
-duplicate a remote git repository with *any* regular copy mechanism, be it
-`scp`, `rsync` or `wget`.
-
-When copying a remote repository, you'll want to at a minimum update the
-index cache when you do this, and especially with other peoples'
-repositories you often want to make sure that the index cache is in some
-known state (you don't know *what* they've done and not yet checked in),
-so usually you'll precede the `git-update-index` with a
-
-----------------
-$ git-read-tree --reset HEAD
-$ git-update-index --refresh
-----------------
-
-which will force a total index re-build from the tree pointed to by `HEAD`.
-It resets the index contents to `HEAD`, and then the `git-update-index`
-makes sure to match up all index entries with the checked-out files.
-If the original repository had uncommitted changes in its
-working tree, `git-update-index --refresh` notices them and
-tells you they need to be updated.
-
-The above can also be written as simply
-
-----------------
-$ git reset
-----------------
-
-and in fact a lot of the common git command combinations can be scripted
-with the `git xyz` interfaces.  You can learn things by just looking
-at what the various git scripts do.  For example, `git reset` is the
-above two lines implemented in `git-reset`, but some things like
-`git status` and `git commit` are slightly more complex scripts around
-the basic git commands.
-
-Many (most?) public remote repositories will not contain any of
-the checked out files or even an index file, and will *only* contain the
-actual core git files. Such a repository usually doesn't even have the
-`.git` subdirectory, but has all the git files directly in the
-repository. 
-
-To create your own local live copy of such a "raw" git repository, you'd
-first create your own subdirectory for the project, and then copy the
-raw repository contents into the `.git` directory. For example, to
-create your own copy of the git repository, you'd do the following
-
-----------------
-$ mkdir my-git
-$ cd my-git
-$ rsync -rL rsync://rsync.kernel.org/pub/scm/git/git.git/ .git
-----------------
-
-followed by 
-
-----------------
-$ git-read-tree HEAD
-----------------
-
-to populate the index. However, now you have populated the index, and
-you have all the git internal files, but you will notice that you don't
-actually have any of the working tree files to work on. To get
-those, you'd check them out with
-
-----------------
-$ git-checkout-index -u -a
-----------------
-
-where the `-u` flag means that you want the checkout to keep the index
-up-to-date (so that you don't have to refresh it afterward), and the
-`-a` flag means "check out all files" (if you have a stale copy or an
-older version of a checked out tree you may also need to add the `-f`
-flag first, to tell git-checkout-index to *force* overwriting of any old
-files). 
-
-Again, this can all be simplified with
-
-----------------
-$ git clone rsync://rsync.kernel.org/pub/scm/git/git.git/ my-git
-$ cd my-git
-$ git checkout
-----------------
-
-which will end up doing all of the above for you.
-
-You have now successfully copied somebody else's (mine) remote
-repository, and checked it out. 
-
-
-Creating a new branch
----------------------
-
-Branches in git are really nothing more than pointers into the git
-object database from within the `.git/refs/` subdirectory, and as we
-already discussed, the `HEAD` branch is nothing but a symlink to one of
-these object pointers. 
-
-You can at any time create a new branch by just picking an arbitrary
-point in the project history, and just writing the SHA1 name of that
-object into a file under `.git/refs/heads/`. You can use any filename you
-want (and indeed, subdirectories), but the convention is that the
-"normal" branch is called `master`. That's just a convention, though,
-and nothing enforces it. 
-
-To show that as an example, let's go back to the git-tutorial repository we
-used earlier, and create a branch in it. You do that by simply just
-saying that you want to check out a new branch:
-
-------------
-$ git checkout -b mybranch
-------------
-
-will create a new branch based at the current `HEAD` position, and switch
-to it. 
-
-[NOTE]
-================================================
-If you make the decision to start your new branch at some
-other point in the history than the current `HEAD`, you can do so by
-just telling `git checkout` what the base of the checkout would be.
-In other words, if you have an earlier tag or branch, you'd just do
-
-------------
-$ git checkout -b mybranch earlier-commit
-------------
-
-and it would create the new branch `mybranch` at the earlier commit,
-and check out the state at that time.
-================================================
+-------------------------------------
+$ git fetch /home/bob/myrepo master:bob-incoming
+-------------------------------------
+
+which fetches the changes from Bob's master branch into a new branch
+named bob-incoming.  (Unlike git pull, git fetch just fetches a copy
+of Bob's line of development without doing any merging).  Then
+
+-------------------------------------
+$ git whatchanged -p master..bob-incoming
+-------------------------------------
 
-You can always just jump back to your original `master` branch by doing
+shows a list of all the changes that Bob made since he branched from
+Alice's master branch.
 
-------------
+After examing those changes, and possibly fixing things, Alice can
+pull the changes into her master branch:
+
+-------------------------------------
 $ git checkout master
-------------
+$ git pull . bob-incoming
+-------------------------------------
 
-(or any other branch-name, for that matter) and if you forget which
-branch you happen to be on, a simple
+The last command is a pull from the "bob-incoming" branch in Alice's
+own repository.
 
-------------
-$ ls -l .git/HEAD
-------------
+Later, Bob can update his repo with Alice's latest changes using
 
-will tell you where it's pointing (Note that on platforms with bad or no
-symlink support, you have to execute
+-------------------------------------
+$ git pull
+-------------------------------------
 
-------------
-$ cat .git/HEAD
-------------
+Note that he doesn't need to give the path to Alice's repository;
+when Bob cloned Alice's repository, git stored the location of her
+repository in the file .git/remotes/origin, and that location is used
+as the default for pulls.
 
-instead). To get the list of branches you have, you can say
+Bob may also notice a branch in his repository that he didn't create:
 
-------------
+-------------------------------------
 $ git branch
-------------
+* master
+  origin
+-------------------------------------
 
-which is nothing more than a simple script around `ls .git/refs/heads`.
-There will be asterisk in front of the branch you are currently on.
+The "origin" branch, which was created automatically by "git clone",
+is a pristine copy of Alice's master branch; Bob should never commit
+to it.
 
-Sometimes you may wish to create a new branch _without_ actually
-checking it out and switching to it. If so, just use the command
+If Bob later decides to work from a different host, he can still
+perform clones and pulls using the ssh protocol:
 
-------------
-$ git branch <branchname> [startingpoint]
-------------
+-------------------------------------
+$ git clone alice.org:/home/alice/project myrepo
+-------------------------------------
 
-which will simply _create_ the branch, but will not do anything further. 
-You can then later -- once you decide that you want to actually develop
-on that branch -- switch to that branch with a regular `git checkout`
-with the branchname as the argument.
+Alternatively, git has a native protocol, or can use rsync or http;
+see gitlink:git-pull[1] for details.
 
+Git can also be used in a CVS-like mode, with a central repository
+that various users push changes to; see gitlink:git-push[1] and
+link:cvs-migration.html[git for CVS users].
 
-Merging two branches
---------------------
+Keeping track of history
+------------------------
 
-One of the ideas of having a branch is that you do some (possibly
-experimental) work in it, and eventually merge it back to the main
-branch. So assuming you created the above `mybranch` that started out
-being the same as the original `master` branch, let's make sure we're in
-that branch, and do some work there.
+Git history is represented as a series of interrelated commits.  The
+most recent commit in the currently checked-out branch can always be
+referred to as HEAD, and the "parent" of any commit can always be
+referred to by appending a caret, "^", to the end of the name of the
+commit.  So, for example,
 
-------------------------------------------------
-$ git checkout mybranch
-$ echo "Work, work, work" >>hello
-$ git commit -m 'Some work.' hello
-------------------------------------------------
+-------------------------------------
+git diff HEAD^ HEAD
+-------------------------------------
 
-Here, we just added another line to `hello`, and we used a shorthand for
-doing both `git-update-index hello` and `git commit` by just giving the
-filename directly to `git commit`. The `-m` flag is to give the
-commit log message from the command line.
+shows the difference between the most-recently checked-in state of
+the tree and the previous state, and
 
-Now, to make it a bit more interesting, let's assume that somebody else
-does some work in the original branch, and simulate that by going back
-to the master branch, and editing the same file differently there:
+-------------------------------------
+git diff HEAD^^ HEAD^
+-------------------------------------
 
-------------
-$ git checkout master
-------------
+shows the difference between that previous state and the state two
+commits ago.  Also, HEAD~5 can be used as a shorthand for HEAD^^^^^,
+and more generally HEAD~n can refer to the nth previous commit.
+Commits representing merges have more than one parent, and you can
+specify which parent to follow in that case; see
+gitlink:git-rev-parse[1].
 
-Here, take a moment to look at the contents of `hello`, and notice how they
-don't contain the work we just did in `mybranch` -- because that work
-hasn't happened in the `master` branch at all. Then do
-
-------------
-$ echo "Play, play, play" >>hello
-$ echo "Lots of fun" >>example
-$ git commit -m 'Some fun.' hello example
-------------
-
-since the master branch is obviously in a much better mood.
-
-Now, you've got two branches, and you decide that you want to merge the
-work done. Before we do that, let's introduce a cool graphical tool that
-helps you view what's going on:
-
-----------------
-$ gitk --all
-----------------
-
-will show you graphically both of your branches (that's what the `\--all`
-means: normally it will just show you your current `HEAD`) and their
-histories. You can also see exactly how they came to be from a common
-source. 
-
-Anyway, let's exit `gitk` (`^Q` or the File menu), and decide that we want
-to merge the work we did on the `mybranch` branch into the `master`
-branch (which is currently our `HEAD` too). To do that, there's a nice
-script called `git merge`, which wants to know which branches you want
-to resolve and what the merge is all about:
-
-------------
-$ git merge "Merge work in mybranch" HEAD mybranch
-------------
-
-where the first argument is going to be used as the commit message if
-the merge can be resolved automatically.
-
-Now, in this case we've intentionally created a situation where the
-merge will need to be fixed up by hand, though, so git will do as much
-of it as it can automatically (which in this case is just merge the `example`
-file, which had no differences in the `mybranch` branch), and say:
-
-----------------
-	Trying really trivial in-index merge...
-	fatal: Merge requires file-level merging
-	Nope.
-	...
-	Auto-merging hello 
-	CONFLICT (content): Merge conflict in hello 
-	Automatic merge failed/prevented; fix up by hand
-----------------
-
-which is way too verbose, but it basically tells you that it failed the
-really trivial merge ("Simple merge") and did an "Automatic merge"
-instead, but that too failed due to conflicts in `hello`.
-
-Not to worry. It left the (trivial) conflict in `hello` in the same form you
-should already be well used to if you've ever used CVS, so let's just
-open `hello` in our editor (whatever that may be), and fix it up somehow.
-I'd suggest just making it so that `hello` contains all four lines:
-
-------------
-Hello World
-It's a new day for git
-Play, play, play
-Work, work, work
-------------
-
-and once you're happy with your manual merge, just do a
-
-------------
-$ git commit hello
-------------
-
-which will very loudly warn you that you're now committing a merge
-(which is correct, so never mind), and you can write a small merge
-message about your adventures in git-merge-land.
-
-After you're done, start up `gitk \--all` to see graphically what the
-history looks like. Notice that `mybranch` still exists, and you can
-switch to it, and continue to work with it if you want to. The
-`mybranch` branch will not contain the merge, but next time you merge it
-from the `master` branch, git will know how you merged it, so you'll not
-have to do _that_ merge again.
-
-Another useful tool, especially if you do not always work in X-Window
-environment, is `git show-branch`.
-
-------------------------------------------------
-$ git show-branch master mybranch
-* [master] Merge work in mybranch
- ! [mybranch] Some work.
---
--  [master] Merge work in mybranch
-*+ [mybranch] Some work.
-------------------------------------------------
-
-The first two lines indicate that it is showing the two branches
-and the first line of the commit log message from their
-top-of-the-tree commits, you are currently on `master` branch
-(notice the asterisk `*` character), and the first column for
-the later output lines is used to show commits contained in the
-`master` branch, and the second column for the `mybranch`
-branch. Three commits are shown along with their log messages.
-All of them have non blank characters in the first column (`*`
-shows an ordinary commit on the current branch, `.` is a merge commit), which
-means they are now part of the `master` branch. Only the "Some
-work" commit has the plus `+` character in the second column,
-because `mybranch` has not been merged to incorporate these
-commits from the master branch.  The string inside brackets
-before the commit log message is a short name you can use to
-name the commit.  In the above example, 'master' and 'mybranch'
-are branch heads.  'master~1' is the first parent of 'master'
-branch head.  Please see 'git-rev-parse' documentation if you
-see more complex cases.
-
-Now, let's pretend you are the one who did all the work in
-`mybranch`, and the fruit of your hard work has finally been merged
-to the `master` branch. Let's go back to `mybranch`, and run
-resolve to get the "upstream changes" back to your branch.
-
-------------
-$ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
-------------
-
-This outputs something like this (the actual commit object names
-would be different)
-
-----------------
-Updating from ae3a2da... to a80b4aa....
- example |    1 +
- hello   |    1 +
- 2 files changed, 2 insertions(+), 0 deletions(-)
-----------------
-
-Because your branch did not contain anything more than what are
-already merged into the `master` branch, the resolve operation did
-not actually do a merge. Instead, it just updated the top of
-the tree of your branch to that of the `master` branch. This is
-often called 'fast forward' merge.
-
-You can run `gitk \--all` again to see how the commit ancestry
-looks like, or run `show-branch`, which tells you this.
-
-------------------------------------------------
-$ git show-branch master mybranch
-! [master] Merge work in mybranch
- * [mybranch] Merge work in mybranch
---
--- [master] Merge work in mybranch
-------------------------------------------------
-
-
-Merging external work
----------------------
-
-It's usually much more common that you merge with somebody else than
-merging with your own branches, so it's worth pointing out that git
-makes that very easy too, and in fact, it's not that different from
-doing a `git merge`. In fact, a remote merge ends up being nothing
-more than "fetch the work from a remote repository into a temporary tag"
-followed by a `git merge`.
-
-Fetching from a remote repository is done by, unsurprisingly,
-`git fetch`:
-
-----------------
-$ git fetch <remote-repository>
-----------------
-
-One of the following transports can be used to name the
-repository to download from:
-
-Rsync::
-	`rsync://remote.machine/path/to/repo.git/`
-+
-Rsync transport is usable for both uploading and downloading,
-but is completely unaware of what git does, and can produce
-unexpected results when you download from the public repository
-while the repository owner is uploading into it via `rsync`
-transport.  Most notably, it could update the files under
-`refs/` which holds the object name of the topmost commits
-before uploading the files in `objects/` -- the downloader would
-obtain head commit object name while that object itself is still
-not available in the repository.  For this reason, it is
-considered deprecated.
-
-SSH::
-	`remote.machine:/path/to/repo.git/` or
-+
-`ssh://remote.machine/path/to/repo.git/`
-+
-This transport can be used for both uploading and downloading,
-and requires you to have a log-in privilege over `ssh` to the
-remote machine.  It finds out the set of objects the other side
-lacks by exchanging the head commits both ends have and
-transfers (close to) minimum set of objects.  It is by far the
-most efficient way to exchange git objects between repositories.
-
-Local directory::
-	`/path/to/repo.git/`
-+
-This transport is the same as SSH transport but uses `sh` to run
-both ends on the local machine instead of running other end on
-the remote machine via `ssh`.
-
-git Native::
-	`git://remote.machine/path/to/repo.git/`
-+
-This transport was designed for anonymous downloading.  Like SSH
-transport, it finds out the set of objects the downstream side
-lacks and transfers (close to) minimum set of objects.
-
-HTTP(S)::
-	`http://remote.machine/path/to/repo.git/`
-+
-Downloader from http and https URL
-first obtains the topmost commit object name from the remote site
-by looking at the specified refname under `repo.git/refs/` directory,
-and then tries to obtain the
-commit object by downloading from `repo.git/objects/xx/xxx\...`
-using the object name of that commit object.  Then it reads the
-commit object to find out its parent commits and the associate
-tree object; it repeats this process until it gets all the
-necessary objects.  Because of this behaviour, they are
-sometimes also called 'commit walkers'.
-+
-The 'commit walkers' are sometimes also called 'dumb
-transports', because they do not require any git aware smart
-server like git Native transport does.  Any stock HTTP server
-that does not even support directory index would suffice.  But
-you must prepare your repository with `git-update-server-info`
-to help dumb transport downloaders.
-+
-There are (confusingly enough) `git-ssh-fetch` and `git-ssh-upload`
-programs, which are 'commit walkers'; they outlived their
-usefulness when git Native and SSH transports were introduced,
-and not used by `git pull` or `git push` scripts.
-
-Once you fetch from the remote repository, you `resolve` that
-with your current branch.
-
-However -- it's such a common thing to `fetch` and then
-immediately `resolve`, that it's called `git pull`, and you can
-simply do
-
-----------------
-$ git pull <remote-repository>
-----------------
-
-and optionally give a branch-name for the remote end as a second
-argument.
-
-[NOTE]
-You could do without using any branches at all, by
-keeping as many local repositories as you would like to have
-branches, and merging between them with `git pull`, just like
-you merge between branches. The advantage of this approach is
-that it lets you keep set of files for each `branch` checked
-out and you may find it easier to switch back and forth if you
-juggle multiple lines of development simultaneously. Of
-course, you will pay the price of more disk usage to hold
-multiple working trees, but disk space is cheap these days.
-
-[NOTE]
-You could even pull from your own repository by
-giving '.' as <remote-repository> parameter to `git pull`.  This
-is useful when you want to merge a local branch (or more, if you
-are making an Octopus) into the current branch.
-
-It is likely that you will be pulling from the same remote
-repository from time to time. As a short hand, you can store
-the remote repository URL in a file under .git/remotes/
-directory, like this:
-
-------------------------------------------------
-$ mkdir -p .git/remotes/
-$ cat >.git/remotes/linus <<\EOF
-URL: http://www.kernel.org/pub/scm/git/git.git/
-EOF
-------------------------------------------------
-
-and use the filename to `git pull` instead of the full URL.
-The URL specified in such file can even be a prefix
-of a full URL, like this:
-
-------------------------------------------------
-$ cat >.git/remotes/jgarzik <<\EOF
-URL: http://www.kernel.org/pub/scm/linux/git/jgarzik/
-EOF
-------------------------------------------------
-
-
-Examples.
-
-. `git pull linus`
-. `git pull linus tag v0.99.1`
-. `git pull jgarzik/netdev-2.6.git/ e100`
-
-the above are equivalent to:
-
-. `git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD`
-. `git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1`
-. `git pull http://www.kernel.org/pub/.../jgarzik/netdev-2.6.git e100`
+The name of a branch can also be used to refer to the most recent
+commit on that branch; so you can also say things like
 
+-------------------------------------
+git diff HEAD experimental
+-------------------------------------
 
-How does the merge work?
-------------------------
+to see the difference between the most-recently committed tree in
+the current branch and the most-recently committed tree in the
+experimental branch.
 
-We said this tutorial shows what plumbing does to help you cope
-with the porcelain that isn't flushing, but we so far did not
-talk about how the merge really works.  If you are following
-this tutorial the first time, I'd suggest to skip to "Publishing
-your work" section and come back here later.
-
-OK, still with me?  To give us an example to look at, let's go
-back to the earlier repository with "hello" and "example" file,
-and bring ourselves back to the pre-merge state:
-
-------------
-$ git show-branch --more=3 master mybranch
-! [master] Merge work in mybranch
- * [mybranch] Merge work in mybranch
---
--- [master] Merge work in mybranch
-+* [master^2] Some work.
-+* [master^] Some fun.
-------------
-
-Remember, before running `git merge`, our `master` head was at
-"Some fun." commit, while our `mybranch` head was at "Some
-work." commit.
-
-------------
-$ git checkout mybranch
-$ git reset --hard master^2
-$ git checkout master
-$ git reset --hard master^
-------------
+But you may find it more useful to see the list of commits made in
+the experimental branch but not in the current branch, and
 
-After rewinding, the commit structure should look like this:
+-------------------------------------
+git whatchanged HEAD..experimental
+-------------------------------------
 
-------------
-$ git show-branch
-* [master] Some fun.
- ! [mybranch] Some work.
---
- + [mybranch] Some work.
-*  [master] Some fun.
-*+ [mybranch^] New day.
-------------
-
-Now we are ready to experiment with the merge by hand.
-
-`git merge` command, when merging two branches, uses 3-way merge
-algorithm.  First, it finds the common ancestor between them.
-The command it uses is `git-merge-base`:
-
-------------
-$ mb=$(git-merge-base HEAD mybranch)
-------------
-
-The command writes the commit object name of the common ancestor
-to the standard output, so we captured its output to a variable,
-because we will be using it in the next step.  BTW, the common
-ancestor commit is the "New day." commit in this case.  You can
-tell it by:
-
-------------
-$ git-name-rev $mb
-my-first-tag
-------------
-
-After finding out a common ancestor commit, the second step is
-this:
-
-------------
-$ git-read-tree -m -u $mb HEAD mybranch
-------------
-
-This is the same `git-read-tree` command we have already seen,
-but it takes three trees, unlike previous examples.  This reads
-the contents of each tree into different 'stage' in the index
-file (the first tree goes to stage 1, the second stage 2,
-etc.).  After reading three trees into three stages, the paths
-that are the same in all three stages are 'collapsed' into stage
-0.  Also paths that are the same in two of three stages are
-collapsed into stage 0, taking the SHA1 from either stage 2 or
-stage 3, whichever is different from stage 1 (i.e. only one side
-changed from the common ancestor).
-
-After 'collapsing' operation, paths that are different in three
-trees are left in non-zero stages.  At this point, you can
-inspect the index file with this command:
-
-------------
-$ git-ls-files --stage
-100644 7f8b141b65fdcee47321e399a2598a235a032422 0	example
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-In our example of only two files, we did not have unchanged
-files so only 'example' resulted in collapsing, but in real-life
-large projects, only small number of files change in one commit,
-and this 'collapsing' tends to trivially merge most of the paths
-fairly quickly, leaving only a handful the real changes in non-zero
-stages.
-
-To look at only non-zero stages, use `\--unmerged` flag:
-
-------------
-$ git-ls-files --unmerged
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-The next step of merging is to merge these three versions of the
-file, using 3-way merge.  This is done by giving
-`git-merge-one-file` command as one of the arguments to
-`git-merge-index` command:
-
-------------
-$ git-merge-index git-merge-one-file hello
-Auto-merging hello.
-merge: warning: conflicts during merge
-ERROR: Merge conflict in hello.
-fatal: merge program failed
-------------
-
-`git-merge-one-file` script is called with parameters to
-describe those three versions, and is responsible to leave the
-merge results in the working tree.
-It is a fairly straightforward shell script, and
-eventually calls `merge` program from RCS suite to perform a
-file-level 3-way merge.  In this case, `merge` detects
-conflicts, and the merge result with conflict marks is left in
-the working tree..  This can be seen if you run `ls-files
---stage` again at this point:
-
-------------
-$ git-ls-files --stage
-100644 7f8b141b65fdcee47321e399a2598a235a032422 0	example
-100644 263414f423d0e4d70dae8fe53fa34614ff3e2860 1	hello
-100644 06fa6a24256dc7e560efa5687fa84b51f0263c3a 2	hello
-100644 cc44c73eb783565da5831b4d820c962954019b69 3	hello
-------------
-
-This is the state of the index file and the working file after
-`git merge` returns control back to you, leaving the conflicting
-merge for you to resolve.  Notice that the path `hello` is still
-unmerged, and what you see with `git diff` at this point is
-differences since stage 2 (i.e. your version).
-
-
-Publishing your work
---------------------
-
-So we can use somebody else's work from a remote repository; but
-how can *you* prepare a repository to let other people pull from
-it?
-
-Your do your real work in your working tree that has your
-primary repository hanging under it as its `.git` subdirectory.
-You *could* make that repository accessible remotely and ask
-people to pull from it, but in practice that is not the way
-things are usually done. A recommended way is to have a public
-repository, make it reachable by other people, and when the
-changes you made in your primary working tree are in good shape,
-update the public repository from it. This is often called
-'pushing'.
-
-[NOTE]
-This public repository could further be mirrored, and that is
-how git repositories at `kernel.org` are managed.
-
-Publishing the changes from your local (private) repository to
-your remote (public) repository requires a write privilege on
-the remote machine. You need to have an SSH account there to
-run a single command, `git-receive-pack`.
-
-First, you need to create an empty repository on the remote
-machine that will house your public repository. This empty
-repository will be populated and be kept up-to-date by pushing
-into it later. Obviously, this repository creation needs to be
-done only once.
-
-[NOTE]
-`git push` uses a pair of programs,
-`git-send-pack` on your local machine, and `git-receive-pack`
-on the remote machine. The communication between the two over
-the network internally uses an SSH connection.
-
-Your private repository's git directory is usually `.git`, but
-your public repository is often named after the project name,
-i.e. `<project>.git`. Let's create such a public repository for
-project `my-git`. After logging into the remote machine, create
-an empty directory:
-
-------------
-$ mkdir my-git.git
-------------
-
-Then, make that directory into a git repository by running
-`git init-db`, but this time, since its name is not the usual
-`.git`, we do things slightly differently:
-
-------------
-$ GIT_DIR=my-git.git git-init-db
-------------
-
-Make sure this directory is available for others you want your
-changes to be pulled by via the transport of your choice. Also
-you need to make sure that you have the `git-receive-pack`
-program on the `$PATH`.
-
-[NOTE]
-Many installations of sshd do not invoke your shell as the login
-shell when you directly run programs; what this means is that if
-your login shell is `bash`, only `.bashrc` is read and not
-`.bash_profile`. As a workaround, make sure `.bashrc` sets up
-`$PATH` so that you can run `git-receive-pack` program.
-
-[NOTE]
-If you plan to publish this repository to be accessed over http,
-you should do `chmod +x my-git.git/hooks/post-update` at this
-point.  This makes sure that every time you push into this
-repository, `git-update-server-info` is run.
-
-Your "public repository" is now ready to accept your changes.
-Come back to the machine you have your private repository. From
-there, run this command:
-
-------------
-$ git push <public-host>:/path/to/my-git.git master
-------------
-
-This synchronizes your public repository to match the named
-branch head (i.e. `master` in this case) and objects reachable
-from them in your current repository.
-
-As a real example, this is how I update my public git
-repository. Kernel.org mirror network takes care of the
-propagation to other publicly visible machines:
-
-------------
-$ git push master.kernel.org:/pub/scm/git/git.git/ 
-------------
+will do that, just as
 
+-------------------------------------
+git whatchanged experimental..HEAD
+-------------------------------------
 
-Packing your repository
------------------------
+will show the list of commits made on the HEAD but not included in
+experimental.
+
+You can also give commits convenient names of your own: after running
+
+-------------------------------------
+$ git-tag v2.5 HEAD^^
+-------------------------------------
 
-Earlier, we saw that one file under `.git/objects/??/` directory
-is stored for each git object you create. This representation
-is efficient to create atomically and safely, but
-not so convenient to transport over the network. Since git objects are
-immutable once they are created, there is a way to optimize the
-storage by "packing them together". The command
-
-------------
-$ git repack
-------------
-
-will do it for you. If you followed the tutorial examples, you
-would have accumulated about 17 objects in `.git/objects/??/`
-directories by now. `git repack` tells you how many objects it
-packed, and stores the packed file in `.git/objects/pack`
-directory.
-
-[NOTE]
-You will see two files, `pack-\*.pack` and `pack-\*.idx`,
-in `.git/objects/pack` directory. They are closely related to
-each other, and if you ever copy them by hand to a different
-repository for whatever reason, you should make sure you copy
-them together. The former holds all the data from the objects
-in the pack, and the latter holds the index for random
-access.
-
-If you are paranoid, running `git-verify-pack` command would
-detect if you have a corrupt pack, but do not worry too much.
-Our programs are always perfect ;-).
-
-Once you have packed objects, you do not need to leave the
-unpacked objects that are contained in the pack file anymore.
-
-------------
-$ git prune-packed
-------------
-
-would remove them for you.
-
-You can try running `find .git/objects -type f` before and after
-you run `git prune-packed` if you are curious.  Also `git
-count-objects` would tell you how many unpacked objects are in
-your repository and how much space they are consuming.
-
-[NOTE]
-`git pull` is slightly cumbersome for HTTP transport, as a
-packed repository may contain relatively few objects in a
-relatively large pack. If you expect many HTTP pulls from your
-public repository you might want to repack & prune often, or
-never.
-
-If you run `git repack` again at this point, it will say
-"Nothing to pack". Once you continue your development and
-accumulate the changes, running `git repack` again will create a
-new pack, that contains objects created since you packed your
-repository the last time. We recommend that you pack your project
-soon after the initial import (unless you are starting your
-project from scratch), and then run `git repack` every once in a
-while, depending on how active your project is.
-
-When a repository is synchronized via `git push` and `git pull`
-objects packed in the source repository are usually stored
-unpacked in the destination, unless rsync transport is used.
-While this allows you to use different packing strategies on
-both ends, it also means you may need to repack both
-repositories every once in a while.
-
-
-Working with Others
--------------------
-
-Although git is a truly distributed system, it is often
-convenient to organize your project with an informal hierarchy
-of developers. Linux kernel development is run this way. There
-is a nice illustration (page 17, "Merges to Mainline") in Randy
-Dunlap's presentation (`http://tinyurl.com/a2jdg`).
-
-It should be stressed that this hierarchy is purely *informal*.
-There is nothing fundamental in git that enforces the "chain of
-patch flow" this hierarchy implies. You do not have to pull
-from only one remote repository.
-
-A recommended workflow for a "project lead" goes like this:
-
-1. Prepare your primary repository on your local machine. Your
-   work is done there.
-
-2. Prepare a public repository accessible to others.
-+
-If other people are pulling from your repository over dumb
-transport protocols (HTTP), you need to keep this repository
-'dumb transport friendly'.  After `git init-db`,
-`$GIT_DIR/hooks/post-update` copied from the standard templates
-would contain a call to `git-update-server-info` but the
-`post-update` hook itself is disabled by default -- enable it
-with `chmod +x post-update`.  This makes sure `git-update-server-info`
-keeps the necessary files up-to-date.
-
-3. Push into the public repository from your primary
-   repository.
-
-4. `git repack` the public repository. This establishes a big
-   pack that contains the initial set of objects as the
-   baseline, and possibly `git prune` if the transport
-   used for pulling from your repository supports packed
-   repositories.
-
-5. Keep working in your primary repository. Your changes
-   include modifications of your own, patches you receive via
-   e-mails, and merges resulting from pulling the "public"
-   repositories of your "subsystem maintainers".
-+
-You can repack this private repository whenever you feel like.
-
-6. Push your changes to the public repository, and announce it
-   to the public.
-
-7. Every once in a while, "git repack" the public repository.
-   Go back to step 5. and continue working.
-
-
-A recommended work cycle for a "subsystem maintainer" who works
-on that project and has an own "public repository" goes like this:
-
-1. Prepare your work repository, by `git clone` the public
-   repository of the "project lead". The URL used for the
-   initial cloning is stored in `.git/remotes/origin`.
-
-2. Prepare a public repository accessible to others, just like
-   the "project lead" person does.
-
-3. Copy over the packed files from "project lead" public
-   repository to your public repository, unless the "project
-   lead" repository lives on the same machine as yours.  In the
-   latter case, you can use `objects/info/alternates` file to
-   point at the repository you are borrowing from.
-
-4. Push into the public repository from your primary
-   repository. Run `git repack`, and possibly `git prune` if the
-   transport used for pulling from your repository supports
-   packed repositories.
-
-5. Keep working in your primary repository. Your changes
-   include modifications of your own, patches you receive via
-   e-mails, and merges resulting from pulling the "public"
-   repositories of your "project lead" and possibly your
-   "sub-subsystem maintainers".
-+
-You can repack this private repository whenever you feel
-like.
-
-6. Push your changes to your public repository, and ask your
-   "project lead" and possibly your "sub-subsystem
-   maintainers" to pull from it.
-
-7. Every once in a while, `git repack` the public repository.
-   Go back to step 5. and continue working.
-
-
-A recommended work cycle for an "individual developer" who does
-not have a "public" repository is somewhat different. It goes
-like this:
-
-1. Prepare your work repository, by `git clone` the public
-   repository of the "project lead" (or a "subsystem
-   maintainer", if you work on a subsystem). The URL used for
-   the initial cloning is stored in `.git/remotes/origin`.
-
-2. Do your work in your repository on 'master' branch.
-
-3. Run `git fetch origin` from the public repository of your
-   upstream every once in a while. This does only the first
-   half of `git pull` but does not merge. The head of the
-   public repository is stored in `.git/refs/heads/origin`.
-
-4. Use `git cherry origin` to see which ones of your patches
-   were accepted, and/or use `git rebase origin` to port your
-   unmerged changes forward to the updated upstream.
-
-5. Use `git format-patch origin` to prepare patches for e-mail
-   submission to your upstream and send it out. Go back to
-   step 2. and continue.
-
-
-Working with Others, Shared Repository Style
---------------------------------------------
-
-If you are coming from CVS background, the style of cooperation
-suggested in the previous section may be new to you. You do not
-have to worry. git supports "shared public repository" style of
-cooperation you are probably more familiar with as well.
-
-For this, set up a public repository on a machine that is
-reachable via SSH by people with "commit privileges".  Put the
-committers in the same user group and make the repository
-writable by that group.  Make sure their umasks are set up to
-allow group members to write into directories other members
-have created.
-
-You, as an individual committer, then:
-
-- First clone the shared repository to a local repository:
-------------------------------------------------
-$ git clone repo.shared.xz:/pub/scm/project.git/ my-project
-$ cd my-project
-$ hack away
-------------------------------------------------
-
-- Merge the work others might have done while you were hacking
-  away:
-------------------------------------------------
-$ git pull origin
-$ test the merge result
-------------------------------------------------
-[NOTE]
-================================
-The first `git clone` would have placed the following in
-`my-project/.git/remotes/origin` file, and that's why this and
-the next step work.
-------------
-URL: repo.shared.xz:/pub/scm/project.git/ my-project
-Pull: master:origin
-------------
-================================
-
-- push your work as the new head of the shared
-  repository.
-------------------------------------------------
-$ git push origin master
-------------------------------------------------
-If somebody else pushed into the same shared repository while
-you were working locally, `git push` in the last step would
-complain, telling you that the remote `master` head does not
-fast forward.  You need to pull and merge those other changes
-back before you push your work when it happens.
-
-
-Advanced Shared Repository Management
--------------------------------------
-
-Being able to push into a shared repository means being able to
-write into it.  If your developers are coming over the network,
-this means you, as the repository administrator, need to give
-each of them an SSH access to the shared repository machine.
-
-In some cases, though, you may not want to give a normal shell
-account to them, but want to restrict them to be able to only
-do `git push` into the repository and nothing else.
-
-You can achieve this by setting the login shell of your
-developers on the shared repository host to `git-shell` program.
-
-[NOTE]
-Most likely you would also need to list `git-shell` program in
-`/etc/shells` file.
-
-This restricts the set of commands that can be run from incoming
-SSH connection for these users to only `receive-pack` and
-`upload-pack`, so the only thing they can do are `git fetch` and
-`git push`.
-
-You still need to create UNIX user accounts for each developer,
-and put them in the same group.  Make sure that the repository
-shared among these developers is writable by that group.
-
-. Initializing the shared repository with `git-init-db --shared`
-helps somewhat.
-
-. Run the following in the shared repository:
-+
-------------
-$ chgrp -R $group repo.git
-$ find repo.git -type d -print | xargs chmod ug+rwx,g+s
-$ GIT_DIR=repo.git git repo-config core.sharedrepository true
-------------
-
-The above measures make sure that directories lazily created in
-`$GIT_DIR` are writable by group members.  You, as the
-repository administrator, are still responsible to make sure
-your developers belong to that shared repository group and set
-their umask to a value no stricter than 027 (i.e. at least allow
-reading and searching by group members).
-
-You can implement finer grained branch policies using update
-hooks.  There is a document ("control access to branches") in
-Documentation/howto by Carl Baldwin and JC outlining how to (1)
-limit access to branch per user, (2) forbid overwriting existing
-tags.
+you can refer to HEAD^^ by the name "v2.5".  If you intend to share
+this name with other people (for example, to identify a release
+version), you should create a "tag" object, and perhaps sign it; see
+gitlink:git-tag[1] for details.
 
+You can revisit the old state of a tree, and make further
+modifications if you wish, using git branch: the command
 
-Bundling your work together
----------------------------
+-------------------------------------
+$ git branch stable-release v2.5
+-------------------------------------
+
+will create a new branch named "stable-release" starting from the
+commit which you tagged with the name v2.5.
 
-It is likely that you will be working on more than one thing at
-a time.  It is easy to manage those more-or-less independent tasks
-using branches with git.
-
-We have already seen how branches work previously,
-with "fun and work" example using two branches.  The idea is the
-same if there are more than two branches.  Let's say you started
-out from "master" head, and have some new code in the "master"
-branch, and two independent fixes in the "commit-fix" and
-"diff-fix" branches:
-
-------------
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Release candidate #1
----
- +  [diff-fix] Fix rename detection.
- +  [diff-fix~1] Better common substring algorithm.
-+   [commit-fix] Fix commit message normalization.
-  * [master] Release candidate #1
-++* [diff-fix~2] Pretty-print messages.
-------------
-
-Both fixes are tested well, and at this point, you want to merge
-in both of them.  You could merge in 'diff-fix' first and then
-'commit-fix' next, like this:
-
-------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
-------------
-
-Which would result in:
-
-------------
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Merge fix in commit-fix
----
-  - [master] Merge fix in commit-fix
-+ * [commit-fix] Fix commit message normalization.
-  - [master~1] Merge fix in diff-fix
- +* [diff-fix] Fix rename detection.
- +* [diff-fix~1] Better common substring algorithm.
-  * [master~2] Release candidate #1
-++* [master~3] Pretty-print messages.
-------------
-
-However, there is no particular reason to merge in one branch
-first and the other next, when what you have are a set of truly
-independent changes (if the order mattered, then they are not
-independent by definition).  You could instead merge those two
-branches into the current branch at once.  First let's undo what
-we just did and start over.  We would want to get the master
-branch before these two merges by resetting it to 'master~2':
-
-------------
-$ git reset --hard master~2
-------------
-
-You can make sure 'git show-branch' matches the state before
-those two 'git merge' you just did.  Then, instead of running
-two 'git merge' commands in a row, you would pull these two
-branch heads (this is known as 'making an Octopus'):
-
-------------
-$ git pull . commit-fix diff-fix
-$ git show-branch
-! [commit-fix] Fix commit message normalization.
- ! [diff-fix] Fix rename detection.
-  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
----
-  - [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
-+ * [commit-fix] Fix commit message normalization.
- +* [diff-fix] Fix rename detection.
- +* [diff-fix~1] Better common substring algorithm.
-  * [master~1] Release candidate #1
-++* [master~2] Pretty-print messages.
-------------
-
-Note that you should not do Octopus because you can.  An octopus
-is a valid thing to do and often makes it easier to view the
-commit history if you are pulling more than two independent
-changes at the same time.  However, if you have merge conflicts
-with any of the branches you are merging in and need to hand
-resolve, that is an indication that the development happened in
-those branches were not independent after all, and you should
-merge two at a time, documenting how you resolved the conflicts,
-and the reason why you preferred changes made in one side over
-the other.  Otherwise it would make the project history harder
-to follow, not easier.
+You can reset the state of any branch to an earlier commit at any
+time with
+
+-------------------------------------
+$ git reset --hard v2.5
+-------------------------------------
 
-[ to be continued.. cvsimports ]
+This will remove all later commits from this branch and reset the
+working tree to the state it had when the given commit was made.  If
+this branch is the only branch containing the later commits, those
+later changes will be lost.  Don't use "git reset" on a
+publicly-visible branch that other developers pull from, as git will
+be confused by history that disappears in this way.
+
+Next Steps
+----------
+
+Some good commands to explore next:
+
+  * gitlink:git-diff[1]: This flexible command does much more than
+    we've seen in the few examples above.
+
+  * gitlink:git-format-patch[1], gitlink:git-am[1]: These convert
+    series of git commits into emailed patches, and vice versa,
+    useful for projects such as the linux kernel which rely heavily
+    on emailed patches.
+
+  * gitlink:git-bisect[1]: When there is a regression in your
+    project, one way to track down the bug is by searching through
+    the history to find the exact commit that's to blame.  Git bisect
+    can help you perform a binary search for that commit.  It is
+    smart enough to perform a close-to-optimal search even in the
+    case of complex non-linear history with lots of merged branches.
+
+Other good starting points include link:everyday.html[Everday GIT
+with 20 Commands Or So] and link:cvs-migration.html[git for CVS
+users].  Also, link:core-tutorial.html[A short git tutorial] gives an
+introduction to lower-level git commands for advanced users and
+developers.
-- 
0.99.8b-g58e3

^ permalink raw reply related	[relevance 6%]

* [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs
@ 2020-06-23 10:58  8% Denton Liu
  0 siblings, 0 replies; 200+ results
From: Denton Liu @ 2020-06-23 10:58 UTC (permalink / raw)
  To: Git Mailing List; +Cc: Junio C Hamano

As of 2020-06-22, the name of git.git's integration branch has been
renamed from 'pu' to 'seen'.[0] Update git.git-specific documentation to
refer to the new branch name. In particular, update documents that refer
to the workflow and also "how to contribute"-type docs.

There still remains other uses of 'pu' in the docs. In these cases, it
is generally used as an example and there isn't much value in updating
these examples since they aren't git.git specific.

[0]: https://lore.kernel.org/git/xmqqimfid2l1.fsf@gitster.c.googlers.com/

Signed-off-by: Denton Liu <liu.denton@gmail.com>
---
 Documentation/MyFirstContribution.txt |  4 +--
 Documentation/SubmittingPatches       | 10 +++---
 Documentation/giteveryday.txt         | 10 +++---
 Documentation/gitworkflows.txt        | 12 +++----
 Documentation/howto/maintain-git.txt  | 52 +++++++++++++--------------
 5 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/Documentation/MyFirstContribution.txt b/Documentation/MyFirstContribution.txt
index 427274df4d..d85c9b5143 100644
--- a/Documentation/MyFirstContribution.txt
+++ b/Documentation/MyFirstContribution.txt
@@ -1179,8 +1179,8 @@ look at the section below this one for some context.)
 [[after-approval]]
 === After Review Approval
 
-The Git project has four integration branches: `pu`, `next`, `master`, and
-`maint`. Your change will be placed into `pu` fairly early on by the maintainer
+The Git project has four integration branches: `seen`, `next`, `master`, and
+`maint`. Your change will be placed into `seen` fairly early on by the maintainer
 while it is still in the review process; from there, when it is ready for wider
 testing, it will be merged into `next`. Plenty of early testers use `next` and
 may report issues. Eventually, changes in `next` will make it to `master`,
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index ecf9438cf0..291b61e262 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -19,7 +19,7 @@ change is relevant to.
   base your work on the tip of the topic.
 
 * A new feature should be based on `master` in general. If the new
-  feature depends on a topic that is in `pu`, but not in `master`,
+  feature depends on a topic that is in `seen`, but not in `master`,
   base your work on the tip of that topic.
 
 * Corrections and enhancements to a topic not yet in `master` should
@@ -28,7 +28,7 @@ change is relevant to.
   into the series.
 
 * In the exceptional case that a new feature depends on several topics
-  not in `master`, start working on `next` or `pu` privately and send
+  not in `master`, start working on `next` or `seen` privately and send
   out patches for discussion. Before the final merge, you may have to
   wait until some of the dependent topics graduate to `master`, and
   rebase your work.
@@ -38,7 +38,7 @@ change is relevant to.
   these parts should be based on their trees.
 
 To find the tip of a topic branch, run `git log --first-parent
-master..pu` and look for the merge commit. The second parent of this
+master..seen` and look for the merge commit. The second parent of this
 commit is the tip of the topic branch.
 
 [[separate-commits]]
@@ -424,7 +424,7 @@ help you find out who they are.
   and cooked further and eventually graduates to `master`.
 
 In any time between the (2)-(3) cycle, the maintainer may pick it up
-from the list and queue it to `pu`, in order to make it easier for
+from the list and queue it to `seen`, in order to make it easier for
 people play with it without having to pick up and apply the patch to
 their trees themselves.
 
@@ -435,7 +435,7 @@ their trees themselves.
   master. `git pull --rebase` will automatically skip already-applied
   patches, and will let you know. This works only if you rebase on top
   of the branch in which your patch has been merged (i.e. it will not
-  tell you if your patch is merged in pu if you rebase on top of
+  tell you if your patch is merged in `seen` if you rebase on top of
   master).
 
 * Read the Git mailing list, the maintainer regularly posts messages
diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt
index 1bd919f92b..faba2ef088 100644
--- a/Documentation/giteveryday.txt
+++ b/Documentation/giteveryday.txt
@@ -278,13 +278,13 @@ $ git am -3 -i -s ./+to-apply <4>
 $ compile/test
 $ git switch -c hold/linus && git am -3 -i -s ./+hold-linus <5>
 $ git switch topic/one && git rebase master <6>
-$ git switch -C pu next <7>
+$ git switch -C seen next <7>
 $ git merge topic/one topic/two && git merge hold/linus <8>
 $ git switch maint
 $ git cherry-pick master~4 <9>
 $ compile/test
 $ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
-$ git fetch ko && for branch in master maint next pu <11>
+$ git fetch ko && for branch in master maint next seen <11>
     do
 	git show-branch ko/$branch $branch <12>
     done
@@ -294,14 +294,14 @@ $ git push --follow-tags ko <13>
 <1> see what you were in the middle of doing, if anything.
 <2> see which branches haven't been merged into `master` yet.
 Likewise for any other integration branches e.g. `maint`, `next`
-and `pu` (potential updates).
+and `seen`.
 <3> read mails, save ones that are applicable, and save others
 that are not quite ready (other mail readers are available).
 <4> apply them, interactively, with your sign-offs.
 <5> create topic branch as needed and apply, again with sign-offs.
 <6> rebase internal topic branch that has not been merged to the
 master or exposed as a part of a stable branch.
-<7> restart `pu` every time from the next.
+<7> restart `seen` every time from the next.
 <8> and bundle topic branches still cooking.
 <9> backport a critical fix.
 <10> create a signed tag.
@@ -323,7 +323,7 @@ repository at kernel.org, and looks like this:
 	fetch = refs/heads/*:refs/remotes/ko/*
 	push = refs/heads/master
 	push = refs/heads/next
-	push = +refs/heads/pu
+	push = +refs/heads/seen
 	push = refs/heads/maint
 ------------
 
diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
index abc0dc6bc7..ae38ff3fed 100644
--- a/Documentation/gitworkflows.txt
+++ b/Documentation/gitworkflows.txt
@@ -85,7 +85,7 @@ As a given feature goes from experimental to stable, it also
 
 There is a fourth official branch that is used slightly differently:
 
-* 'pu' (proposed updates) is an integration branch for things that are
+* 'seen' is an integration branch for things that are
   not quite ready for inclusion yet (see "Integration Branches"
   below).
 
@@ -93,7 +93,7 @@ Each of the four branches is usually a direct descendant of the one
 above it.
 
 Conceptually, the feature enters at an unstable branch (usually 'next'
-or 'pu'), and "graduates" to 'master' for the next release once it is
+or 'seen'), and "graduates" to 'master' for the next release once it is
 considered stable enough.
 
 
@@ -207,7 +207,7 @@ If you make it (very) clear that this branch is going to be deleted
 right after the testing, you can even publish this branch, for example
 to give the testers a chance to work with it, or other developers a
 chance to see if their in-progress work will be compatible.  `git.git`
-has such an official throw-away integration branch called 'pu'.
+has such an official throw-away integration branch called 'seen'.
 
 
 Branch management for a release
@@ -291,7 +291,7 @@ This will not happen if the content of the branches was verified as
 described in the previous section.
 
 
-Branch management for next and pu after a feature release
+Branch management for next and seen after a feature release
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 After a feature release, the integration branch 'next' may optionally be
@@ -319,8 +319,8 @@ so.
 If you do this, then you should make a public announcement indicating
 that 'next' was rewound and rebuilt.
 
-The same rewind and rebuild process may be followed for 'pu'. A public
-announcement is not necessary since 'pu' is a throw-away branch, as
+The same rewind and rebuild process may be followed for 'seen'. A public
+announcement is not necessary since 'seen' is a throw-away branch, as
 described above.
 
 
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f8..a67130debb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
    demonstrated to be regression free.  New changes are tested
    in 'next' before merged to 'master'.
 
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
  - The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
    of the cycle.
 
  - Usually 'master' contains all of 'maint' and 'next' contains all
-   of 'master'.  'pu' contains all the topics merged to 'next', but
+   of 'master'.  'seen' contains all the topics merged to 'next', but
    is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
    series?)
 
  - Prepare 'jch' branch, which is used to represent somewhere
-   between 'master' and 'pu' and often is slightly ahead of 'next'.
+   between 'master' and 'seen' and often is slightly ahead of 'next'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
 
    The result is a script that lists topics to be merged in order to
-   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   rebuild 'seen' as the input to Meta/Reintegrate script.  Remove
    later topics that should not be in 'jch' yet.  Add a line that
    consists of '### match next' before the name of the first topic
    in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
    merged to 'master'.  This may lose '### match next' marker;
    add it again to the appropriate place when it happens.
 
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
 
-   Edit the result by adding new topics that are not still in 'pu'
+   Edit the result by adding new topics that are not still in 'seen'
    in the script.  Then
 
-     $ git checkout -B pu jch
-     $ sh Meta/redo-pu.sh
+     $ git checkout -B seen jch
+     $ sh Meta/redo-seen.sh
 
-   When all is well, clean up the redo-pu.sh script with
+   When all is well, clean up the redo-seen.sh script with
 
-     $ sh Meta/redo-pu.sh -u
+     $ sh Meta/redo-seen.sh -u
 
    Double check by running
 
-     $ git branch --no-merged pu
+     $ git branch --no-merged seen
 
    to see there is no unexpected leftover topics.
 
    At this point, build-test the result for semantic conflicts, and
    if there are, prepare an appropriate merge-fix first (see
-   appendix), and rebuild the 'pu' branch from scratch, starting at
+   appendix), and rebuild the 'seen' branch from scratch, starting at
    the tip of 'jch'.
 
  - Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
 
      $ Meta/cook
 
-   This script inspects the history between master..pu, finds tips
+   This script inspects the history between master..seen, finds tips
    of topic branches, compares what it found with the current
    contents in Meta/whats-cooking.txt, and updates that file.
-   Topics not listed in the file but are found in master..pu are
+   Topics not listed in the file but are found in master..seen are
    added to the "New topics" section, topics listed in the file that
-   are no longer found in master..pu are moved to the "Graduated to
+   are no longer found in master..seen are moved to the "Graduated to
    master" section, and topics whose commits changed their states
-   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   (e.g. used to be only in 'seen', now merged to 'next') are updated
    with change markers "<<" and ">>".
 
    Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
 Some observations to be made.
 
  * Each topic is tested individually, and also together with other
-   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   topics cooking first in 'seen', then in 'jch' and then in 'next'.
    Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
 
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
 scripts implements a crude but usable way to work this issue around.
 When the script merges branch $X, it checks if "refs/merge-fix/$X"
 exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
 correct semantic conflicts.
 
 After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
 problematic merge out on a detached HEAD, edit the working tree to
 fix the semantic conflict, and make a separate commit to record the
 fix-up:
 
-     $ git checkout pu~4
+     $ git checkout seen~4
      $ git show -s --pretty=%s ;# double check
-     Merge branch 'ai/topic' to pu
+     Merge branch 'ai/topic' to seen
      $ edit
      $ git commit -m 'merge-fix/ai/topic' -a
 
@@ -450,9 +450,9 @@ result:
 Then double check the result by asking Meta/Reintegrate to redo the
 merge:
 
-     $ git checkout pu~5 ;# the parent of the problem merge
+     $ git checkout seen~5 ;# the parent of the problem merge
      $ echo ai/topic | Meta/Reintegrate
-     $ git diff pu~4
+     $ git diff seen~4
 
 This time, because you prepared refs/merge-fix/ai/topic, the
 resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
 to the integration branch changed the underlying assumption ai/topic
 branch made (e.g. ai/topic branch added a site to refer to a
 variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
 to merge ai/topic branch before the other branch, then the above
 merge-fix should not be applied while merging ai/topic, but should
 instead be applied while merging the other branch.  You would need
-- 
2.27.0.307.g7979e895e7


^ permalink raw reply related	[relevance 8%]

* [PATCH v2 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
  @ 2020-06-24 14:48  8%   ` Johannes Schindelin via GitGitGadget
    1 sibling, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-24 14:48 UTC (permalink / raw)
  To: git; +Cc: Denton Liu, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.

But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.

Where appropriate, quotes were added for readability.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Documentation/howto/maintain-git.txt          | 52 +++++++++----------
 .../howto/rebase-from-internal-branch.txt     | 32 ++++++------
 Documentation/howto/revert-branch-rebase.txt  | 32 ++++++------
 Documentation/howto/update-hook-example.txt   |  6 +--
 4 files changed, 61 insertions(+), 61 deletions(-)

diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f8..a67130debb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
    demonstrated to be regression free.  New changes are tested
    in 'next' before merged to 'master'.
 
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
  - The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
    of the cycle.
 
  - Usually 'master' contains all of 'maint' and 'next' contains all
-   of 'master'.  'pu' contains all the topics merged to 'next', but
+   of 'master'.  'seen' contains all the topics merged to 'next', but
    is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
    series?)
 
  - Prepare 'jch' branch, which is used to represent somewhere
-   between 'master' and 'pu' and often is slightly ahead of 'next'.
+   between 'master' and 'seen' and often is slightly ahead of 'next'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
 
    The result is a script that lists topics to be merged in order to
-   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   rebuild 'seen' as the input to Meta/Reintegrate script.  Remove
    later topics that should not be in 'jch' yet.  Add a line that
    consists of '### match next' before the name of the first topic
    in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
    merged to 'master'.  This may lose '### match next' marker;
    add it again to the appropriate place when it happens.
 
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
 
-   Edit the result by adding new topics that are not still in 'pu'
+   Edit the result by adding new topics that are not still in 'seen'
    in the script.  Then
 
-     $ git checkout -B pu jch
-     $ sh Meta/redo-pu.sh
+     $ git checkout -B seen jch
+     $ sh Meta/redo-seen.sh
 
-   When all is well, clean up the redo-pu.sh script with
+   When all is well, clean up the redo-seen.sh script with
 
-     $ sh Meta/redo-pu.sh -u
+     $ sh Meta/redo-seen.sh -u
 
    Double check by running
 
-     $ git branch --no-merged pu
+     $ git branch --no-merged seen
 
    to see there is no unexpected leftover topics.
 
    At this point, build-test the result for semantic conflicts, and
    if there are, prepare an appropriate merge-fix first (see
-   appendix), and rebuild the 'pu' branch from scratch, starting at
+   appendix), and rebuild the 'seen' branch from scratch, starting at
    the tip of 'jch'.
 
  - Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
 
      $ Meta/cook
 
-   This script inspects the history between master..pu, finds tips
+   This script inspects the history between master..seen, finds tips
    of topic branches, compares what it found with the current
    contents in Meta/whats-cooking.txt, and updates that file.
-   Topics not listed in the file but are found in master..pu are
+   Topics not listed in the file but are found in master..seen are
    added to the "New topics" section, topics listed in the file that
-   are no longer found in master..pu are moved to the "Graduated to
+   are no longer found in master..seen are moved to the "Graduated to
    master" section, and topics whose commits changed their states
-   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   (e.g. used to be only in 'seen', now merged to 'next') are updated
    with change markers "<<" and ">>".
 
    Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
 Some observations to be made.
 
  * Each topic is tested individually, and also together with other
-   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   topics cooking first in 'seen', then in 'jch' and then in 'next'.
    Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
 
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
 scripts implements a crude but usable way to work this issue around.
 When the script merges branch $X, it checks if "refs/merge-fix/$X"
 exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
 correct semantic conflicts.
 
 After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
 problematic merge out on a detached HEAD, edit the working tree to
 fix the semantic conflict, and make a separate commit to record the
 fix-up:
 
-     $ git checkout pu~4
+     $ git checkout seen~4
      $ git show -s --pretty=%s ;# double check
-     Merge branch 'ai/topic' to pu
+     Merge branch 'ai/topic' to seen
      $ edit
      $ git commit -m 'merge-fix/ai/topic' -a
 
@@ -450,9 +450,9 @@ result:
 Then double check the result by asking Meta/Reintegrate to redo the
 merge:
 
-     $ git checkout pu~5 ;# the parent of the problem merge
+     $ git checkout seen~5 ;# the parent of the problem merge
      $ echo ai/topic | Meta/Reintegrate
-     $ git diff pu~4
+     $ git diff seen~4
 
 This time, because you prepared refs/merge-fix/ai/topic, the
 resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
 to the integration branch changed the underlying assumption ai/topic
 branch made (e.g. ai/topic branch added a site to refer to a
 variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
 to merge ai/topic branch before the other branch, then the above
 merge-fix should not be applied while merging ai/topic, but should
 instead be applied while merging the other branch.  You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d..ece51ddddc 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc:	Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
 Subject: Re: sending changesets from the middle of a git tree
 Date:	Sun, 14 Aug 2005 18:37:39 -0700
 Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
  the "master" branch, and how "rebase" works.  Also discussed
  is how this applies to individual developers who sends patches
  upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
 > where Junio C Hamano <junkio@cox.net> told me that...
 >> Linus Torvalds <torvalds@osdl.org> writes:
 >>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
 >>
 > Actually, wouldn't this be also precisely for what StGIT is intended to?
 --------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
 I just have done a simpler one, this time using only the core
 Git tools.
 
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
 wanted to add some documentation bypassing my usual habit of
-placing new things in pu first.  At the beginning, the commit
+placing new things in 'seen' first.  At the beginning, the commit
 ancestry graph looked like this:
 
-                             *"pu" head
+                             *"seen" head
     master --> #1 --> #2 --> #3
 
 So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
 
 After the commit, the ancestry graph would look like this:
 
-                              *"pu" head
+                              *"seen" head
     master^ --> #1 --> #2 --> #3
           \
             \---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
 The old master is now master^ (the first parent of the master).
 The new master commit holds my documentation updates.
 
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
 
 This is the kind of situation I used to have all the time when
 Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
 branch being the "contributor" branch.  Your work started at the
 tip of the "maintainer" branch some time ago, you made a lot of
 progress in the meantime, and now the maintainer branch has some
 other commits you do not have yet.  And "git rebase" was written
 with the explicit purpose of helping to maintain branches like
-"pu".  You _could_ merge master to pu and keep going, but if you
+"seen".  You _could_ merge master to 'seen' and keep going, but if you
 eventually want to cherrypick and merge some but not necessarily
 all changes back to the master branch, it often makes later
 operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge.  So I ran "git rebase":
+your changes) "seen" rather than merge.  So I ran "git rebase":
 
-    $ git checkout pu
-    $ git rebase master pu
+    $ git checkout seen
+    $ git rebase master seen
 
 What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
 master branch, and forward port these changes.
 
     master^ --> #1 --> #2 --> #3
-          \                                  *"pu" head
+          \                                  *"seen" head
             \---> master --> #1' --> #2' --> #3'
 
 The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
 
 Old #3 is not recorded in any of the .git/refs/heads/ file
 anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal.  After testing "pu", you
+you ran fsck-cache, which is normal.  After testing "seen", you
 can run "git prune" to get rid of those original three commits.
 
 While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13b..a3e5595a56 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
 break building Git with GCC 2.95.  While they were well-intentioned
 portability fixes, keeping things working with gcc-2.95 was also
 important.  Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
 barebone Porcelain.
 
 First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
 
 says nothing.
 
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
 
 ------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
 $ git rebase master
 * Applying: Redo "revert" using three-way merge machinery.
 First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
 First trying simple merge strategy to cherry-pick.
 ------------------------------------------------
 
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
 rebase' screws up.  After this, I can do these for sanity check:
 
 ------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
 $ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
 $ make clean test ;# make sure it did not cause other breakage.
 ------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order.  I do not need the temporary branch
 or tag anymore, so remove them:
 
 ------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
 $ git branch -d revert-c99
 ------------------------------------------------
 
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
 And the final repository status looks like this:
 
 ------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
 ! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
   * [rc] Merge refs/heads/master from .
 ---
- +  [pu] git-repack: Add option to repack all objects.
- +  [pu~1] More documentation updates.
- +  [pu~2] Show commits in topo order and name all commits.
- +  [pu~3] mailinfo and applymbox updates
- +  [pu~4] Document "git cherry-pick" and "git revert"
- +  [pu~5] Remove git-apply-patch-script.
- +  [pu~6] Redo "revert" using three-way merge machinery.
+ +  [seen] git-repack: Add option to repack all objects.
+ +  [seen~1] More documentation updates.
+ +  [seen~2] Show commits in topo order and name all commits.
+ +  [seen~3] mailinfo and applymbox updates
+ +  [seen~4] Document "git cherry-pick" and "git revert"
+ +  [seen~5] Remove git-apply-patch-script.
+ +  [seen~6] Redo "revert" using three-way merge machinery.
   - [rc] Merge refs/heads/master from .
 ++* [master] Revert "Replace zero-length array decls with []."
   - [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74f..151ee84ceb 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
 whom.  The format of each file would look like this:
 
     refs/heads/master   junio
-    +refs/heads/pu      junio
+    +refs/heads/seen    junio
     refs/heads/cogito$  pasky
     refs/heads/bw/.*    linus
     refs/heads/tmp/.*   .*
@@ -187,6 +187,6 @@ whom.  The format of each file would look like this:
 
 With this, Linus can push or create "bw/penguin" or "bw/zebra"
 or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags.  And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags.  And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
 that JC can make non-fast-forward pushes on it.
-- 
gitgitgadget


^ permalink raw reply related	[relevance 8%]

* [PATCH v3 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
  @ 2020-06-25 12:18  8%     ` Johannes Schindelin via GitGitGadget
  0 siblings, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-25 12:18 UTC (permalink / raw)
  To: git; +Cc: Denton Liu, Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.

But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.

Where appropriate, quotes were added for readability.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Documentation/howto/maintain-git.txt          | 52 +++++++++----------
 .../howto/rebase-from-internal-branch.txt     | 32 ++++++------
 Documentation/howto/revert-branch-rebase.txt  | 32 ++++++------
 Documentation/howto/update-hook-example.txt   |  6 +--
 4 files changed, 61 insertions(+), 61 deletions(-)

diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index ca4378740c..3c3030bfd5 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
    demonstrated to be regression free.  New changes are tested
    in 'next' before merged to 'master'.
 
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
  - The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
    of the cycle.
 
  - Usually 'master' contains all of 'maint' and 'next' contains all
-   of 'master'.  'pu' contains all the topics merged to 'next', but
+   of 'master'.  'seen' contains all the topics merged to 'next', but
    is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
@@ -211,12 +211,12 @@ by doing the following:
    series?)
 
  - Prepare 'jch' branch, which is used to represent somewhere
-   between 'master' and 'pu' and often is slightly ahead of 'next'.
+   between 'master' and 'seen' and often is slightly ahead of 'next'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
 
    The result is a script that lists topics to be merged in order to
-   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   rebuild 'seen' as the input to Meta/Reintegrate script.  Remove
    later topics that should not be in 'jch' yet.  Add a line that
    consists of '### match next' before the name of the first topic
    in the output that should be in 'jch' but not in 'next' yet.
@@ -273,29 +273,29 @@ by doing the following:
    merged to 'master'.  This may lose '### match next' marker;
    add it again to the appropriate place when it happens.
 
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
 
-   Edit the result by adding new topics that are not still in 'pu'
+   Edit the result by adding new topics that are not still in 'seen'
    in the script.  Then
 
-     $ git checkout -B pu jch
-     $ sh Meta/redo-pu.sh
+     $ git checkout -B seen jch
+     $ sh Meta/redo-seen.sh
 
-   When all is well, clean up the redo-pu.sh script with
+   When all is well, clean up the redo-seen.sh script with
 
-     $ sh Meta/redo-pu.sh -u
+     $ sh Meta/redo-seen.sh -u
 
    Double check by running
 
-     $ git branch --no-merged pu
+     $ git branch --no-merged seen
 
    to see there is no unexpected leftover topics.
 
    At this point, build-test the result for semantic conflicts, and
    if there are, prepare an appropriate merge-fix first (see
-   appendix), and rebuild the 'pu' branch from scratch, starting at
+   appendix), and rebuild the 'seen' branch from scratch, starting at
    the tip of 'jch'.
 
  - Update "What's cooking" message to review the updates to
@@ -305,14 +305,14 @@ by doing the following:
 
      $ Meta/cook
 
-   This script inspects the history between master..pu, finds tips
+   This script inspects the history between master..seen, finds tips
    of topic branches, compares what it found with the current
    contents in Meta/whats-cooking.txt, and updates that file.
-   Topics not listed in the file but are found in master..pu are
+   Topics not listed in the file but are found in master..seen are
    added to the "New topics" section, topics listed in the file that
-   are no longer found in master..pu are moved to the "Graduated to
+   are no longer found in master..seen are moved to the "Graduated to
    master" section, and topics whose commits changed their states
-   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   (e.g. used to be only in 'seen', now merged to 'next') are updated
    with change markers "<<" and ">>".
 
    Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -342,7 +342,7 @@ Observations
 Some observations to be made.
 
  * Each topic is tested individually, and also together with other
-   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   topics cooking first in 'seen', then in 'jch' and then in 'next'.
    Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
@@ -385,7 +385,7 @@ new use of the variable under its old name. When these two topics
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
 
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
 scripts implements a crude but usable way to work this issue around.
 When the script merges branch $X, it checks if "refs/merge-fix/$X"
 exists, and if so, the effect of it is squashed into the result of
@@ -405,14 +405,14 @@ commit that can be squashed into a result of mechanical merge to
 correct semantic conflicts.
 
 After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
 problematic merge out on a detached HEAD, edit the working tree to
 fix the semantic conflict, and make a separate commit to record the
 fix-up:
 
-     $ git checkout pu~4
+     $ git checkout seen~4
      $ git show -s --pretty=%s ;# double check
-     Merge branch 'ai/topic' to pu
+     Merge branch 'ai/topic' to seen
      $ edit
      $ git commit -m 'merge-fix/ai/topic' -a
 
@@ -424,9 +424,9 @@ result:
 Then double check the result by asking Meta/Reintegrate to redo the
 merge:
 
-     $ git checkout pu~5 ;# the parent of the problem merge
+     $ git checkout seen~5 ;# the parent of the problem merge
      $ echo ai/topic | Meta/Reintegrate
-     $ git diff pu~4
+     $ git diff seen~4
 
 This time, because you prepared refs/merge-fix/ai/topic, the
 resulting merge should have been tweaked to include the fix for the
@@ -438,7 +438,7 @@ branch needs this merge-fix is because another branch merged earlier
 to the integration branch changed the underlying assumption ai/topic
 branch made (e.g. ai/topic branch added a site to refer to a
 variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
 to merge ai/topic branch before the other branch, then the above
 merge-fix should not be applied while merging ai/topic, but should
 instead be applied while merging the other branch.  You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d..ece51ddddc 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc:	Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
 Subject: Re: sending changesets from the middle of a git tree
 Date:	Sun, 14 Aug 2005 18:37:39 -0700
 Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
  the "master" branch, and how "rebase" works.  Also discussed
  is how this applies to individual developers who sends patches
  upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
 > where Junio C Hamano <junkio@cox.net> told me that...
 >> Linus Torvalds <torvalds@osdl.org> writes:
 >>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
 >>
 > Actually, wouldn't this be also precisely for what StGIT is intended to?
 --------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
 I just have done a simpler one, this time using only the core
 Git tools.
 
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
 wanted to add some documentation bypassing my usual habit of
-placing new things in pu first.  At the beginning, the commit
+placing new things in 'seen' first.  At the beginning, the commit
 ancestry graph looked like this:
 
-                             *"pu" head
+                             *"seen" head
     master --> #1 --> #2 --> #3
 
 So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
 
 After the commit, the ancestry graph would look like this:
 
-                              *"pu" head
+                              *"seen" head
     master^ --> #1 --> #2 --> #3
           \
             \---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
 The old master is now master^ (the first parent of the master).
 The new master commit holds my documentation updates.
 
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
 
 This is the kind of situation I used to have all the time when
 Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
 branch being the "contributor" branch.  Your work started at the
 tip of the "maintainer" branch some time ago, you made a lot of
 progress in the meantime, and now the maintainer branch has some
 other commits you do not have yet.  And "git rebase" was written
 with the explicit purpose of helping to maintain branches like
-"pu".  You _could_ merge master to pu and keep going, but if you
+"seen".  You _could_ merge master to 'seen' and keep going, but if you
 eventually want to cherrypick and merge some but not necessarily
 all changes back to the master branch, it often makes later
 operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge.  So I ran "git rebase":
+your changes) "seen" rather than merge.  So I ran "git rebase":
 
-    $ git checkout pu
-    $ git rebase master pu
+    $ git checkout seen
+    $ git rebase master seen
 
 What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
 master branch, and forward port these changes.
 
     master^ --> #1 --> #2 --> #3
-          \                                  *"pu" head
+          \                                  *"seen" head
             \---> master --> #1' --> #2' --> #3'
 
 The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
 
 Old #3 is not recorded in any of the .git/refs/heads/ file
 anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal.  After testing "pu", you
+you ran fsck-cache, which is normal.  After testing "seen", you
 can run "git prune" to get rid of those original three commits.
 
 While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13b..a3e5595a56 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
 break building Git with GCC 2.95.  While they were well-intentioned
 portability fixes, keeping things working with gcc-2.95 was also
 important.  Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
 barebone Porcelain.
 
 First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
 
 says nothing.
 
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
 
 ------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
 $ git rebase master
 * Applying: Redo "revert" using three-way merge machinery.
 First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
 First trying simple merge strategy to cherry-pick.
 ------------------------------------------------
 
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
 rebase' screws up.  After this, I can do these for sanity check:
 
 ------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
 $ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
 $ make clean test ;# make sure it did not cause other breakage.
 ------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order.  I do not need the temporary branch
 or tag anymore, so remove them:
 
 ------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
 $ git branch -d revert-c99
 ------------------------------------------------
 
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
 And the final repository status looks like this:
 
 ------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
 ! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
   * [rc] Merge refs/heads/master from .
 ---
- +  [pu] git-repack: Add option to repack all objects.
- +  [pu~1] More documentation updates.
- +  [pu~2] Show commits in topo order and name all commits.
- +  [pu~3] mailinfo and applymbox updates
- +  [pu~4] Document "git cherry-pick" and "git revert"
- +  [pu~5] Remove git-apply-patch-script.
- +  [pu~6] Redo "revert" using three-way merge machinery.
+ +  [seen] git-repack: Add option to repack all objects.
+ +  [seen~1] More documentation updates.
+ +  [seen~2] Show commits in topo order and name all commits.
+ +  [seen~3] mailinfo and applymbox updates
+ +  [seen~4] Document "git cherry-pick" and "git revert"
+ +  [seen~5] Remove git-apply-patch-script.
+ +  [seen~6] Redo "revert" using three-way merge machinery.
   - [rc] Merge refs/heads/master from .
 ++* [master] Revert "Replace zero-length array decls with []."
   - [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74f..151ee84ceb 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
 whom.  The format of each file would look like this:
 
     refs/heads/master   junio
-    +refs/heads/pu      junio
+    +refs/heads/seen    junio
     refs/heads/cogito$  pasky
     refs/heads/bw/.*    linus
     refs/heads/tmp/.*   .*
@@ -187,6 +187,6 @@ whom.  The format of each file would look like this:
 
 With this, Linus can push or create "bw/penguin" or "bw/zebra"
 or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags.  And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags.  And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
 that JC can make non-fast-forward pushes on it.
-- 
gitgitgadget


^ permalink raw reply related	[relevance 8%]

* [PATCH 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
  @ 2020-06-23 15:04  8% ` Johannes Schindelin via GitGitGadget
    1 sibling, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-23 15:04 UTC (permalink / raw)
  To: git; +Cc: Johannes Schindelin, Johannes Schindelin

From: Johannes Schindelin <johannes.schindelin@gmx.de>

This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.

But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.

Where appropriate, quotes were added for readability.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 Documentation/howto/maintain-git.txt          | 52 +++++++++----------
 .../howto/rebase-from-internal-branch.txt     | 32 ++++++------
 Documentation/howto/revert-branch-rebase.txt  | 32 ++++++------
 Documentation/howto/update-hook-example.txt   |  6 +--
 4 files changed, 61 insertions(+), 61 deletions(-)

diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f84..a67130debb6 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
    demonstrated to be regression free.  New changes are tested
    in 'next' before merged to 'master'.
 
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
    not yet pass the criteria set for 'next'.
 
  - The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
    of the cycle.
 
  - Usually 'master' contains all of 'maint' and 'next' contains all
-   of 'master'.  'pu' contains all the topics merged to 'next', but
+   of 'master'.  'seen' contains all the topics merged to 'next', but
    is rebuilt directly on 'master'.
 
  - The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
    series?)
 
  - Prepare 'jch' branch, which is used to represent somewhere
-   between 'master' and 'pu' and often is slightly ahead of 'next'.
+   between 'master' and 'seen' and often is slightly ahead of 'next'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
 
    The result is a script that lists topics to be merged in order to
-   rebuild 'pu' as the input to Meta/Reintegrate script.  Remove
+   rebuild 'seen' as the input to Meta/Reintegrate script.  Remove
    later topics that should not be in 'jch' yet.  Add a line that
    consists of '### match next' before the name of the first topic
    in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
    merged to 'master'.  This may lose '### match next' marker;
    add it again to the appropriate place when it happens.
 
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
 
-     $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+     $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
 
-   Edit the result by adding new topics that are not still in 'pu'
+   Edit the result by adding new topics that are not still in 'seen'
    in the script.  Then
 
-     $ git checkout -B pu jch
-     $ sh Meta/redo-pu.sh
+     $ git checkout -B seen jch
+     $ sh Meta/redo-seen.sh
 
-   When all is well, clean up the redo-pu.sh script with
+   When all is well, clean up the redo-seen.sh script with
 
-     $ sh Meta/redo-pu.sh -u
+     $ sh Meta/redo-seen.sh -u
 
    Double check by running
 
-     $ git branch --no-merged pu
+     $ git branch --no-merged seen
 
    to see there is no unexpected leftover topics.
 
    At this point, build-test the result for semantic conflicts, and
    if there are, prepare an appropriate merge-fix first (see
-   appendix), and rebuild the 'pu' branch from scratch, starting at
+   appendix), and rebuild the 'seen' branch from scratch, starting at
    the tip of 'jch'.
 
  - Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
 
      $ Meta/cook
 
-   This script inspects the history between master..pu, finds tips
+   This script inspects the history between master..seen, finds tips
    of topic branches, compares what it found with the current
    contents in Meta/whats-cooking.txt, and updates that file.
-   Topics not listed in the file but are found in master..pu are
+   Topics not listed in the file but are found in master..seen are
    added to the "New topics" section, topics listed in the file that
-   are no longer found in master..pu are moved to the "Graduated to
+   are no longer found in master..seen are moved to the "Graduated to
    master" section, and topics whose commits changed their states
-   (e.g. used to be only in 'pu', now merged to 'next') are updated
+   (e.g. used to be only in 'seen', now merged to 'next') are updated
    with change markers "<<" and ">>".
 
    Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
 Some observations to be made.
 
  * Each topic is tested individually, and also together with other
-   topics cooking first in 'pu', then in 'jch' and then in 'next'.
+   topics cooking first in 'seen', then in 'jch' and then in 'next'.
    Until it matures, no part of it is merged to 'master'.
 
  * A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
 are merged together, the reference to the variable newly added by
 the latter topic will still use the old name in the result.
 
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
 scripts implements a crude but usable way to work this issue around.
 When the script merges branch $X, it checks if "refs/merge-fix/$X"
 exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
 correct semantic conflicts.
 
 After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
 problematic merge out on a detached HEAD, edit the working tree to
 fix the semantic conflict, and make a separate commit to record the
 fix-up:
 
-     $ git checkout pu~4
+     $ git checkout seen~4
      $ git show -s --pretty=%s ;# double check
-     Merge branch 'ai/topic' to pu
+     Merge branch 'ai/topic' to seen
      $ edit
      $ git commit -m 'merge-fix/ai/topic' -a
 
@@ -450,9 +450,9 @@ result:
 Then double check the result by asking Meta/Reintegrate to redo the
 merge:
 
-     $ git checkout pu~5 ;# the parent of the problem merge
+     $ git checkout seen~5 ;# the parent of the problem merge
      $ echo ai/topic | Meta/Reintegrate
-     $ git diff pu~4
+     $ git diff seen~4
 
 This time, because you prepared refs/merge-fix/ai/topic, the
 resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
 to the integration branch changed the underlying assumption ai/topic
 branch made (e.g. ai/topic branch added a site to refer to a
 variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
 to merge ai/topic branch before the other branch, then the above
 merge-fix should not be applied while merging ai/topic, but should
 instead be applied while merging the other branch.  You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d6..ece51ddddce 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc:	Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
 Subject: Re: sending changesets from the middle of a git tree
 Date:	Sun, 14 Aug 2005 18:37:39 -0700
 Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
  the "master" branch, and how "rebase" works.  Also discussed
  is how this applies to individual developers who sends patches
  upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
 > where Junio C Hamano <junkio@cox.net> told me that...
 >> Linus Torvalds <torvalds@osdl.org> writes:
 >>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
 >>
 > Actually, wouldn't this be also precisely for what StGIT is intended to?
 --------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
 I just have done a simpler one, this time using only the core
 Git tools.
 
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
 wanted to add some documentation bypassing my usual habit of
-placing new things in pu first.  At the beginning, the commit
+placing new things in 'seen' first.  At the beginning, the commit
 ancestry graph looked like this:
 
-                             *"pu" head
+                             *"seen" head
     master --> #1 --> #2 --> #3
 
 So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
 
 After the commit, the ancestry graph would look like this:
 
-                              *"pu" head
+                              *"seen" head
     master^ --> #1 --> #2 --> #3
           \
             \---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
 The old master is now master^ (the first parent of the master).
 The new master commit holds my documentation updates.
 
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
 
 This is the kind of situation I used to have all the time when
 Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
 branch being the "contributor" branch.  Your work started at the
 tip of the "maintainer" branch some time ago, you made a lot of
 progress in the meantime, and now the maintainer branch has some
 other commits you do not have yet.  And "git rebase" was written
 with the explicit purpose of helping to maintain branches like
-"pu".  You _could_ merge master to pu and keep going, but if you
+"seen".  You _could_ merge master to 'seen' and keep going, but if you
 eventually want to cherrypick and merge some but not necessarily
 all changes back to the master branch, it often makes later
 operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge.  So I ran "git rebase":
+your changes) "seen" rather than merge.  So I ran "git rebase":
 
-    $ git checkout pu
-    $ git rebase master pu
+    $ git checkout seen
+    $ git rebase master seen
 
 What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
 master branch, and forward port these changes.
 
     master^ --> #1 --> #2 --> #3
-          \                                  *"pu" head
+          \                                  *"seen" head
             \---> master --> #1' --> #2' --> #3'
 
 The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
 
 Old #3 is not recorded in any of the .git/refs/heads/ file
 anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal.  After testing "pu", you
+you ran fsck-cache, which is normal.  After testing "seen", you
 can run "git prune" to get rid of those original three commits.
 
 While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13bd..a3e5595a569 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
 break building Git with GCC 2.95.  While they were well-intentioned
 portability fixes, keeping things working with gcc-2.95 was also
 important.  Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
 barebone Porcelain.
 
 First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
 
 says nothing.
 
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
 
 ------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
 $ git rebase master
 * Applying: Redo "revert" using three-way merge machinery.
 First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
 First trying simple merge strategy to cherry-pick.
 ------------------------------------------------
 
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
 rebase' screws up.  After this, I can do these for sanity check:
 
 ------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
 $ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
 $ make clean test ;# make sure it did not cause other breakage.
 ------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order.  I do not need the temporary branch
 or tag anymore, so remove them:
 
 ------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
 $ git branch -d revert-c99
 ------------------------------------------------
 
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
 And the final repository status looks like this:
 
 ------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
 ! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
   * [rc] Merge refs/heads/master from .
 ---
- +  [pu] git-repack: Add option to repack all objects.
- +  [pu~1] More documentation updates.
- +  [pu~2] Show commits in topo order and name all commits.
- +  [pu~3] mailinfo and applymbox updates
- +  [pu~4] Document "git cherry-pick" and "git revert"
- +  [pu~5] Remove git-apply-patch-script.
- +  [pu~6] Redo "revert" using three-way merge machinery.
+ +  [seen] git-repack: Add option to repack all objects.
+ +  [seen~1] More documentation updates.
+ +  [seen~2] Show commits in topo order and name all commits.
+ +  [seen~3] mailinfo and applymbox updates
+ +  [seen~4] Document "git cherry-pick" and "git revert"
+ +  [seen~5] Remove git-apply-patch-script.
+ +  [seen~6] Redo "revert" using three-way merge machinery.
   - [rc] Merge refs/heads/master from .
 ++* [master] Revert "Replace zero-length array decls with []."
   - [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74fe..151ee84cebc 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
 whom.  The format of each file would look like this:
 
     refs/heads/master   junio
-    +refs/heads/pu      junio
+    +refs/heads/seen    junio
     refs/heads/cogito$  pasky
     refs/heads/bw/.*    linus
     refs/heads/tmp/.*   .*
@@ -187,6 +187,6 @@ whom.  The format of each file would look like this:
 
 With this, Linus can push or create "bw/penguin" or "bw/zebra"
 or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags.  And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags.  And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
 that JC can make non-fast-forward pushes on it.
-- 
gitgitgadget


^ permalink raw reply related	[relevance 8%]

* [PATCH] Documentation: quote commit messages consistently.
@ 2007-11-02 17:12 13% Sergei Organov
  0 siblings, 0 replies; 200+ results
From: Sergei Organov @ 2007-11-02 17:12 UTC (permalink / raw)
  To: git


Documentation quotes commit messages 14 times with double-quotes, and 7
times with single-quotes. The patch turns everything to double-quotes.

A nice side effect is that documentation becomes more Windoze-friendly
as AFAIK single quotes won't work there.

Signed-off-by: Sergei Organov <osv@javad.com>
---
 Documentation/core-tutorial.txt |    8 ++++----
 Documentation/everyday.txt      |    4 ++--
 Documentation/git-reset.txt     |    2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index 5df97a1..99817c5 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -828,7 +828,7 @@ that branch, and do some work there.
 ------------------------------------------------
 $ git checkout mybranch
 $ echo "Work, work, work" >>hello
-$ git commit -m 'Some work.' -i hello
+$ git commit -m "Some work." -i hello
 ------------------------------------------------
 
 Here, we just added another line to `hello`, and we used a shorthand for
@@ -853,7 +853,7 @@ hasn't happened in the `master` branch at all. Then do
 ------------
 $ echo "Play, play, play" >>hello
 $ echo "Lots of fun" >>example
-$ git commit -m 'Some fun.' -i hello example
+$ git commit -m "Some fun." -i hello example
 ------------
 
 since the master branch is obviously in a much better mood.
@@ -1607,8 +1607,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge -m 'Merge fix in diff-fix' diff-fix
-$ git merge -m 'Merge fix in commit-fix' commit-fix
+$ git merge -m "Merge fix in diff-fix" diff-fix
+$ git merge -m "Merge fix in commit-fix" commit-fix
 ------------
 
 Which would result in:
diff --git a/Documentation/everyday.txt b/Documentation/everyday.txt
index 08c61b1..ce7c170 100644
--- a/Documentation/everyday.txt
+++ b/Documentation/everyday.txt
@@ -109,7 +109,7 @@ $ tar zxf frotz.tar.gz
 $ cd frotz
 $ git-init
 $ git add . <1>
-$ git commit -m 'import of frotz source tree.'
+$ git commit -m "import of frotz source tree."
 $ git tag v2.43 <2>
 ------------
 +
@@ -300,7 +300,7 @@ $ git merge topic/one topic/two && git merge hold/linus <8>
 $ git checkout maint
 $ git cherry-pick master~4 <9>
 $ compile/test
-$ git tag -s -m 'GIT 0.99.9x' v0.99.9x <10>
+$ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
 $ git fetch ko && git show-branch master maint 'tags/ko-*' <11>
 $ git push ko <12>
 $ git push ko v0.99.9x <13>
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index 15e3aca..87afa6f 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -157,7 +157,7 @@ need to get to the other branch for a quick bugfix.
 ------------
 $ git checkout feature ;# you were working in "feature" branch and
 $ work work work       ;# got interrupted
-$ git commit -a -m 'snapshot WIP'                 <1>
+$ git commit -a -m "snapshot WIP"                 <1>
 $ git checkout master
 $ fix fix fix
 $ git commit ;# commit with real log
-- 
1.5.3.4

^ permalink raw reply related	[relevance 13%]

* [PATCH] core-tutorial: git-merge uses -m for commit messages
@ 2007-02-05 11:34 14% Matthias Lederhofer
  0 siblings, 0 replies; 200+ results
From: Matthias Lederhofer @ 2007-02-05 11:34 UTC (permalink / raw)
  To: git

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
 Documentation/core-tutorial.txt |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index 9c28bea..6f30e0a 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -894,11 +894,11 @@ script called `git merge`, which wants to know which branches you want
 to resolve and what the merge is all about:
 
 ------------
-$ git merge "Merge work in mybranch" HEAD mybranch
+$ git merge -m "Merge work in mybranch" HEAD mybranch
 ------------
 
-where the first argument is going to be used as the commit message if
-the merge can be resolved automatically.
+The `-m` options specifies the commit message to be used for the merge commit
+(in case it is created).
 
 Now, in this case we've intentionally created a situation where the
 merge will need to be fixed up by hand, though, so git will do as much
@@ -981,7 +981,7 @@ resolve to get the "upstream changes" back to your branch.
 
 ------------
 $ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
+$ git merge -m "Merge upstream changes." HEAD master
 ------------
 
 This outputs something like this (the actual commit object names
@@ -1623,8 +1623,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
+$ git merge -m 'Merge fix in diff-fix' master diff-fix
+$ git merge -m 'Merge fix in commit-fix' master commit-fix
 ------------
 
 Which would result in:
-- 
1.5.0.rc3.544.g79b8

^ permalink raw reply related	[relevance 14%]

* [PATCH] core-tutorial: Use new syntax for git-merge.
@ 2007-10-30 19:54 14% Sergei Organov
  0 siblings, 0 replies; 200+ results
From: Sergei Organov @ 2007-10-30 19:54 UTC (permalink / raw)
  To: git


The patch below turns core-tutorial to use new syntax for
git-merge. Please take close look at the last diff chunk, -- I'm not sure I
got it right as it didn't have HEAD in the original version, -- was it already
wrong before the patch?

---
 Documentation/core-tutorial.txt |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt
index d8e78ac..02255d8 100644
--- a/Documentation/core-tutorial.txt
+++ b/Documentation/core-tutorial.txt
@@ -878,7 +878,7 @@ script called `git merge`, which wants to know which branches you want
 to resolve and what the merge is all about:
 
 ------------
-$ git merge "Merge work in mybranch" HEAD mybranch
+$ git merge -m "Merge work in mybranch" mybranch
 ------------
 
 where the first argument is going to be used as the commit message if
@@ -965,7 +965,7 @@ to the `master` branch. Let's go back to `mybranch`, and run
 
 ------------
 $ git checkout mybranch
-$ git merge "Merge upstream changes." HEAD master
+$ git merge -m "Merge upstream changes." master
 ------------
 
 This outputs something like this (the actual commit object names
@@ -1607,8 +1607,8 @@ in both of them.  You could merge in 'diff-fix' first and then
 'commit-fix' next, like this:
 
 ------------
-$ git merge 'Merge fix in diff-fix' master diff-fix
-$ git merge 'Merge fix in commit-fix' master commit-fix
+$ git merge -m 'Merge fix in diff-fix' master diff-fix
+$ git merge -m 'Merge fix in commit-fix' master commit-fix
 ------------
 
 Which would result in:
-- 
1.5.3.4

^ permalink raw reply related	[relevance 14%]

* [PATCH] show-branch: make the current branch stand out.
@ 2006-01-12  0:05 21% Junio C Hamano
  0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2006-01-12  0:05 UTC (permalink / raw)
  To: git

This changes the character used to mark the commits that is on the
branch from '+' to '*' for the current branch, to make it stand out.
When you have a handful branches with relatively long diversion, it
is easier to see which one is the current branch this way.

Signed-off-by: Junio C Hamano <junkio@cox.net>

---
 * Currently in "pu".

 Documentation/git-show-branch.txt            |    6 ++-
 Documentation/howto/revert-branch-rebase.txt |   24 +++++++-------
 Documentation/tutorial.txt                   |   46 +++++++++++++-------------
 show-branch.c                                |    5 ++-
 t/t1200-tutorial.sh                          |    6 ++-
 5 files changed, 45 insertions(+), 42 deletions(-)

825abb210cb5fd776a120589a1da41f6a06db191
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index 90e2a5c..a2b8eb9 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -103,7 +103,7 @@ and "mhf":
 
 ------------------------------------------------
 $ git show-branch master fixes mhf
-! [master] Add 'git show-branch'.
+* [master] Add 'git show-branch'.
  ! [fixes] Introduce "reset type" flag to "git reset"
   ! [mhf] Allow "+remote:local" refspec to cause --force when fetching.
 ---
@@ -117,13 +117,13 @@ $ git show-branch master fixes mhf
   + [mhf~6] Retire git-parse-remote.
   + [mhf~7] Multi-head fetch.
   + [mhf~8] Start adding the $GIT_DIR/remotes/ support.
-+++ [master] Add 'git show-branch'.
+*++ [master] Add 'git show-branch'.
 ------------------------------------------------
 
 These three branches all forked from a common commit, [master],
 whose commit message is "Add 'git show-branch'.  "fixes" branch
 adds one commit 'Introduce "reset type"'.  "mhf" branch has many
-other commits.
+other commits.  The current branch is "master".
 
 
 EXAMPLE
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 5a7e0cf..a83ce1c 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -32,16 +32,16 @@ merge introduced 5 commits or so:
 
 ------------------------------------------------
 $ git show-branch --more=4 master master^2 | head
-! [master] Merge refs/heads/portable from http://www.cs.berkeley....
+* [master] Merge refs/heads/portable from http://www.cs.berkeley....
  ! [master^2] Replace C99 array initializers with code.
 --
-+  [master] Merge refs/heads/portable from http://www.cs.berkeley....
-++ [master^2] Replace C99 array initializers with code.
-++ [master^2~1] Replace unsetenv() and setenv() with older putenv().
-++ [master^2~2] Include sys/time.h in daemon.c.
-++ [master^2~3] Fix ?: statements.
-++ [master^2~4] Replace zero-length array decls with [].
-+  [master~1] tutorial note about git branch
+*  [master] Merge refs/heads/portable from http://www.cs.berkeley....
+*+ [master^2] Replace C99 array initializers with code.
+*+ [master^2~1] Replace unsetenv() and setenv() with older putenv().
+*+ [master^2~2] Include sys/time.h in daemon.c.
+*+ [master^2~3] Fix ?: statements.
+*+ [master^2~4] Replace zero-length array decls with [].
+*  [master~1] tutorial note about git branch
 ------------------------------------------------
 
 The '--more=4' above means "after we reach the merge base of refs,
@@ -193,8 +193,8 @@ $ git show-branch --more=1 master pu rc
  +  [pu~4] Document "git cherry-pick" and "git revert"
  +  [pu~5] Remove git-apply-patch-script.
  +  [pu~6] Redo "revert" using three-way merge machinery.
-  + [rc] Merge refs/heads/master from .
-+++ [master] Revert "Replace zero-length array decls with []."
-  + [rc~1] Merge refs/heads/master from .
-+++ [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
+  * [rc] Merge refs/heads/master from .
+++* [master] Revert "Replace zero-length array decls with []."
+  * [rc~1] Merge refs/heads/master from .
+++* [master~1] Merge refs/heads/portable from http://www.cs.berkeley....
 ------------------------------------------------
diff --git a/Documentation/tutorial.txt b/Documentation/tutorial.txt
index edd91cb..43a1975 100644
--- a/Documentation/tutorial.txt
+++ b/Documentation/tutorial.txt
@@ -968,8 +968,8 @@ $ git show-branch master mybranch
 * [master] Merge work in mybranch
  ! [mybranch] Some work.
 --
-+  [master] Merge work in mybranch
-++ [mybranch] Some work.
+*  [master] Merge work in mybranch
+*+ [mybranch] Some work.
 ------------------------------------------------
 
 The first two lines indicate that it is showing the two branches
@@ -1024,7 +1024,7 @@ $ git show-branch master mybranch
 ! [master] Merge work in mybranch
  * [mybranch] Merge work in mybranch
 --
-++ [master] Merge work in mybranch
++* [master] Merge work in mybranch
 ------------------------------------------------
 
 
@@ -1199,9 +1199,9 @@ $ git show-branch --more=3 master mybran
 ! [master] Merge work in mybranch
  * [mybranch] Merge work in mybranch
 --
-++ [master] Merge work in mybranch
-++ [master^2] Some work.
-++ [master^] Some fun.
++* [master] Merge work in mybranch
++* [master^2] Some work.
++* [master^] Some fun.
 ------------
 
 Remember, before running `git merge`, our `master` head was at
@@ -1223,8 +1223,8 @@ $ git show-branch
  ! [mybranch] Some work.
 --
  + [mybranch] Some work.
-+  [master] Some fun.
-++ [mybranch^] New day.
+*  [master] Some fun.
+*+ [mybranch^] New day.
 ------------
 
 Now we are ready to experiment with the merge by hand.
@@ -1743,8 +1743,8 @@ $ git show-branch
  +  [diff-fix] Fix rename detection.
  +  [diff-fix~1] Better common substring algorithm.
 +   [commit-fix] Fix commit message normalization.
-  + [master] Release candidate #1
-+++ [diff-fix~2] Pretty-print messages.
+  * [master] Release candidate #1
+++* [diff-fix~2] Pretty-print messages.
 ------------
 
 Both fixes are tested well, and at this point, you want to merge
@@ -1764,13 +1764,13 @@ $ git show-branch
  ! [diff-fix] Fix rename detection.
   * [master] Merge fix in commit-fix
 ---
-  + [master] Merge fix in commit-fix
-+ + [commit-fix] Fix commit message normalization.
-  + [master~1] Merge fix in diff-fix
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
-  + [master~2] Release candidate #1
-+++ [master~3] Pretty-print messages.
+  * [master] Merge fix in commit-fix
++ * [commit-fix] Fix commit message normalization.
+  * [master~1] Merge fix in diff-fix
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+  * [master~2] Release candidate #1
+++* [master~3] Pretty-print messages.
 ------------
 
 However, there is no particular reason to merge in one branch
@@ -1797,12 +1797,12 @@ $ git show-branch
  ! [diff-fix] Fix rename detection.
   * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
 ---
-  + [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
-+ + [commit-fix] Fix commit message normalization.
- ++ [diff-fix] Fix rename detection.
- ++ [diff-fix~1] Better common substring algorithm.
-  + [master~1] Release candidate #1
-+++ [master~2] Pretty-print messages.
+  * [master] Octopus merge of branches 'diff-fix' and 'commit-fix'
++ * [commit-fix] Fix commit message normalization.
+ +* [diff-fix] Fix rename detection.
+ +* [diff-fix~1] Better common substring algorithm.
+  * [master~1] Release candidate #1
+++* [master~2] Pretty-print messages.
 ------------
 
 Note that you should not do Octopus because you can.  An octopus
diff --git a/show-branch.c b/show-branch.c
index f296a87..03324aa 100644
--- a/show-branch.c
+++ b/show-branch.c
@@ -545,6 +545,7 @@ int main(int ac, char **av)
 	int sha1_name = 0;
 	int shown_merge_point = 0;
 	int no_current_branch = 0;
+	int head_at = -1;
 
 	git_config(git_show_branch_config);
 	setup_git_directory();
@@ -696,6 +697,8 @@ int main(int ac, char **av)
 			}
 			/* header lines never need name */
 			show_one_commit(rev[i], 1);
+			if (is_head)
+				head_at = i;
 		}
 		if (0 <= extra) {
 			for (i = 0; i < num_rev; i++)
@@ -725,7 +728,7 @@ int main(int ac, char **av)
 		if (1 < num_rev) {
 			for (i = 0; i < num_rev; i++)
 				putchar((this_flag & (1u << (i + REV_SHIFT)))
-					? '+' : ' ');
+					? (i == head_at ? '*' : '+') : ' ');
 			putchar(' ');
 		}
 		show_one_commit(commit, no_name);
diff --git a/t/t1200-tutorial.sh b/t/t1200-tutorial.sh
index d7562e9..7879b49 100755
--- a/t/t1200-tutorial.sh
+++ b/t/t1200-tutorial.sh
@@ -118,8 +118,8 @@ cat > show-branch.expect << EOF
 * [master] Merged "mybranch" changes.
  ! [mybranch] Some work.
 --
-+  [master] Merged "mybranch" changes.
-++ [mybranch] Some work.
+*  [master] Merged "mybranch" changes.
+*+ [mybranch] Some work.
 EOF
 
 git show-branch --topo-order master mybranch > show-branch.output
@@ -142,7 +142,7 @@ cat > show-branch2.expect << EOF
 ! [master] Merged "mybranch" changes.
  * [mybranch] Merged "mybranch" changes.
 --
-++ [master] Merged "mybranch" changes.
++* [master] Merged "mybranch" changes.
 EOF
 
 git show-branch --topo-order master mybranch > show-branch2.output
-- 
1.1.1-g8ecb

^ permalink raw reply related	[relevance 21%]

Results 1-200 of ~2000   | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2006-01-12  0:05 21% [PATCH] show-branch: make the current branch stand out Junio C Hamano
2007-02-05 11:34 14% [PATCH] core-tutorial: git-merge uses -m for commit messages Matthias Lederhofer
2007-10-30 19:54 14% [PATCH] core-tutorial: Use new syntax for git-merge Sergei Organov
2007-11-02 17:12 13% [PATCH] Documentation: quote commit messages consistently Sergei Organov
2020-06-23 10:58  8% [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs Denton Liu
2013-01-03 20:40  6% [PATCH v2] Documentation: update "howto maintain git" Junio C Hamano
2015-10-08 18:47  5% [PATCH 0/1] merge: fix cache_entry use-after-free David Turner
2008-08-28  3:01  3% What's in git.git (Aug 2008, #07; Wed, 27) Junio C Hamano
2018-04-19 17:57  3% [PATCH v10 00/36] Add directory rename detection to git Elijah Newren
2022-08-01 22:59  3% What's cooking in git.git (Aug 2022, #01; Mon, 1) Junio C Hamano
2016-03-23 21:12  3% What's cooking in git.git (Mar 2016, #04; Wed, 23) Junio C Hamano
2016-05-09 23:00  3% What's cooking in git.git (May 2016, #03; Mon, 9) Junio C Hamano
2006-12-13 21:35  3% What's in git.git (stable) Junio C Hamano
2016-05-23 23:23  3% [ANNOUNCE] Git v2.9.0-rc0 Junio C Hamano
2022-01-20  7:47  3% [PATCH 0/2] Fix some old memory leaks in merge-ort and builtin/merge Elijah Newren via GitGitGadget
2016-05-13 22:11  3% What's cooking in git.git (May 2016, #05; Fri, 13) Junio C Hamano
2018-05-17  6:01  3% What's cooking in git.git (May 2018, #02; Thu, 17) Junio C Hamano
2018-08-20 22:13  3% [ANNOUNCE] Git v2.19.0-rc0 Junio C Hamano
2022-11-30  6:12  3% [ANNOUNCE] Git v2.39.0-rc1 Junio C Hamano
2022-04-04 20:43  3% [ANNOUNCE] Git v2.36.0-rc0 Junio C Hamano
2014-03-24 20:27  3% What's cooking in git.git (Mar 2014, #05; Mon, 24) Junio C Hamano
2016-05-11 22:13  3% What's cooking in git.git (May 2016, #04; Wed, 11) Junio C Hamano
2022-02-04  5:22  3% What's cooking in git.git (Feb 2022, #01; Thu, 3) Junio C Hamano
2022-09-27 21:10  3% [ANNOUNCE] Git v2.38.0-rc2 Junio C Hamano
2018-06-21 19:27  3% [ANNOUNCE] Git v2.18.0 Junio C Hamano
2018-04-30  3:25  3% What's cooking in git.git (Apr 2018, #04; Mon, 30) Junio C Hamano
2018-07-11 19:02  3% What's cooking in git.git (Jul 2018, #01; Wed, 11) Junio C Hamano
2006-06-22 19:49  3% What's in git.git and announcing v1.4.1-rc1 Junio C Hamano
2022-10-03 17:26  3% [ANNOUNCE] Git v2.38.0 Junio C Hamano
2022-07-01 23:08  3% What's cooking in git.git (Jul 2022, #01; Fri, 1) Junio C Hamano
2014-03-25 20:18  3% What's cooking in git.git (Mar 2014, #06; Tue, 25) Junio C Hamano
2018-09-10 20:11  3% [ANNOUNCE] Git v2.19.0 Junio C Hamano
2022-09-16  2:37  3% [ANNOUNCE] Git v2.38.0-rc0 Junio C Hamano
2006-12-06 21:18  3% What's in git.git (stable) Junio C Hamano
2014-03-28 22:21  3% What's cooking in git.git (Mar 2014, #07; Fri, 28) Junio C Hamano
2007-05-20  9:08  3% [ANNOUNCE] GIT 1.5.2 Junio C Hamano
2014-07-08 21:47  3% What's cooking in git.git (Jul 2014, #01; Tue, 8) Junio C Hamano
2014-07-27 23:18  3% [ANNOUNCE] Git v2.1.0-rc0 Junio C Hamano
2022-09-22  0:11  3% [ANNOUNCE] Git v2.38.0-rc1 Junio C Hamano
2021-06-02  8:29  3% [ANNOUNCE] Git v2.32.0-rc3 Junio C Hamano
2021-05-28  6:13  3% [ANNOUNCE] Git v2.32.0-rc2 Junio C Hamano
2016-04-18 22:48  3% What's cooking in git.git (Apr 2016, #05; Mon, 18) Junio C Hamano
2022-07-20  1:20  3% What's cooking in git.git (Jul 2022, #06; Tue, 19) Junio C Hamano
2009-05-25  8:33  3% What's cooking in git.git (May 2009, #03; Mon, 25) Junio C Hamano
2008-08-28  2:54  3% What's cooking in git.git (Aug 2008, #08; Wed, 27) Junio C Hamano
2010-01-23  3:28  3% What's cooking in git.git (Jan 2010, #07; Fri, 22) Junio C Hamano
2018-07-25 22:13  3% What's cooking in git.git (Jul 2018, #03; Wed, 25) Junio C Hamano
2022-07-23  1:01  3% What's cooking in git.git (Jul 2022, #07; Fri, 22) Junio C Hamano
2022-07-14  1:32  3% What's cooking in git.git (Jul 2022, #04; Wed, 13) Junio C Hamano
2009-06-12  9:11  3% What's cooking in git.git (Jun 2009, #01; Fri, 12) Junio C Hamano
2022-07-12 17:07  3% What's cooking in git.git (Jul 2022, #03; Mon, 11) Junio C Hamano
2014-03-11 22:12  3% What's cooking in git.git (Mar 2014, #02; Tue, 11) Junio C Hamano
2018-08-02 23:02  3% What's cooking in git.git (Aug 2018, #01; Thu, 2) Junio C Hamano
2016-05-06 22:46  3% What's cooking in git.git (May 2016, #02; Fri, 6) Junio C Hamano
2015-10-22 20:51  3% What's cooking in git.git (Oct 2015, #05; Thu, 22) Junio C Hamano
2014-03-20 21:09  3% What's cooking in git.git (Mar 2014, #04; Thu, 20) Junio C Hamano
2005-06-08 23:07  3% [ANNOUNCE] Cogito-0.11.2 Petr Baudis
2022-12-06  4:00  3% [ANNOUNCE] Git v2.39.0-rc2 Junio C Hamano
2022-08-06  3:38  3% What's cooking in git.git (Aug 2022, #02; Fri, 5) Junio C Hamano
2022-10-28 22:51  3% What's cooking in git.git (Oct 2022, #08; Fri, 28) Junio C Hamano
2014-03-06 14:50  3% [PATCH 0/6] fix hunk editing with 'commit -p -m' Benoit Pierre
2018-05-30 22:47  3% [ANNOUNCE] Git v2.18.0-rc0 Junio C Hamano
2021-06-06 12:40  3% [ANNOUNCE] Git v2.32.0 Junio C Hamano
2021-06-13 22:58  3% [PATCH 0/4] merge: cleanups and fix Felipe Contreras
2022-10-26 18:43  3% What's cooking in git.git (Oct 2022, #07; Wed, 26) Junio C Hamano
2022-02-21 11:10  3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-04-20  9:56  3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
2022-02-21 11:10     ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-07 13:49  2%   ` Christian Couder
2022-04-15 14:00  2%     ` Phillip Wood
2022-04-17  1:57  2%       ` Elijah Newren
2022-02-21 11:10     ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-04-17  1:58  2%   ` Elijah Newren
2016-04-25 22:43  3% What's cooking in git.git (Apr 2016, #07; Mon, 25) Junio C Hamano
2018-06-13 22:12  3% [ANNOUNCE] Git v2.18.0-rc2 Junio C Hamano
2022-07-09 20:36  3% What's cooking in git.git (Jul 2022, #02; Fri, 8) Junio C Hamano
2014-03-10 18:49  3% [PATCH V2 0/7] fix hunk editing with 'commit -p -m' Benoit Pierre
2022-07-29 23:18  3% What's cooking in git.git (Jul 2022, #08; Fri, 29) Junio C Hamano
2022-11-23  7:25  3% [ANNOUNCE] Git v2.39.0-rc0 Junio C Hamano
2018-07-18 22:03  3% What's cooking in git.git (Jul 2018, #02; Wed, 18) Junio C Hamano
2022-10-20  1:31  3% What's cooking in git.git (Oct 2022, #06; Wed, 19) Junio C Hamano
2022-07-18  3:14  3% What's cooking in git.git (Jul 2022, #05; Sun, 17) Junio C Hamano
2008-08-24  3:38  3% What's cooking in git.git (Aug 2008, #07; Sat, 23) Junio C Hamano
2022-10-12 21:23  3% What's cooking in git.git (Oct 2022, #04; Wed, 12) Junio C Hamano
2021-05-12  7:46  3% What's cooking in git.git (May 2021, #02; " Junio C Hamano
2022-01-22  5:16  3% What's cooking in git.git (Jan 2022, #06; Fri, 21) Junio C Hamano
2022-04-08 23:30  3% [ANNOUNCE] Git v2.36.0-rc1 Junio C Hamano
2018-06-03  6:58  3% [RFC PATCH 0/7] merge requirement: index matches head Elijah Newren
2018-07-01  1:24  3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
2018-06-03  6:58     ` [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation Elijah Newren
2018-06-07  5:27  3%   ` Elijah Newren
2016-05-03 22:49  3% What's cooking in git.git (May 2016, #01; Tue, 3) Junio C Hamano
2021-05-06  5:37  3% What's cooking in git.git (May 2021, #01; Thu, 6) Junio C Hamano
2021-05-22 14:21  3% [ANNOUNCE] Git v2.32.0-rc1 Junio C Hamano
2022-10-20  1:34  3% What's cooking in git.git (Oct 2022, #06; Wed, 19) Junio C Hamano
2018-05-07 14:58  3% What's cooking in git.git (May 2018, #01; Mon, 7) Junio C Hamano
2015-10-02  4:25  3% [PATCH] merge: Fix English grammar in please-commit-before-merge message Alex Henrie
2022-06-27 18:22  3% What's cooking in git.git (Jun 2022, #08; Mon, 27) Junio C Hamano
2022-10-31  5:31  3% What's cooking in git.git (Oct 2022, #09; Mon, 31) Taylor Blau
2021-05-17  7:06  3% [ANNOUNCE] Git v2.32.0-rc0 Junio C Hamano
2022-02-10  0:12  3% What's cooking in git.git (Feb 2022, #02; Wed, 9) Junio C Hamano
2019-05-24 20:28  3% [PATCH 00/52] fix some -Wmissing-field-initializer warnings Ramsay Jones
2018-06-04 13:53  3% [ANNOUNCE] Git v2.18.0-rc1 Junio C Hamano
2023-07-31 17:57  3% What's cooking in git.git (Jul 2023, #07; Mon, 31) Junio C Hamano
2022-12-12 13:43  3% [ANNOUNCE] Git v2.39.0 Junio C Hamano
2016-05-31 21:53  3% [ANNOUNCE] Git v2.9.0-rc1 Junio C Hamano
2011-05-06 23:22  3% What's cooking in git.git (May 2011, #03; Fri, 6) Junio C Hamano
2022-04-18 16:27  3% [ANNOUNCE] Git v2.36.0 Junio C Hamano
2018-04-25  8:37  3% What's cooking in git.git (Apr 2018, #03; Wed, 25) Junio C Hamano
2016-04-21 22:20  3% What's cooking in git.git (Apr 2016, #06; Thu, 21) Junio C Hamano
2006-07-02  6:33  3% [ANNOUNCE] GIT 1.4.1 Junio C Hamano
2009-04-30  5:33  3% What's in git.git (Apr 2009, #02; Wed, 29) Junio C Hamano
2022-04-12 17:03  3% [ANNOUNCE] Git v2.36.0-rc2 Junio C Hamano
2015-10-26 23:20  3% What's cooking in git.git (Oct 2015, #06; Mon, 26) Junio C Hamano
2022-06-22 19:32  3% What's cooking in git.git (Jun 2022, #07; Wed, 22) Junio C Hamano
2011-05-05  2:37  3% What's cooking in git.git (May 2011, #02; Wed, 4) Junio C Hamano
2014-03-14 22:09  3% What's cooking in git.git (Mar 2014, #03; Fri, 14) Junio C Hamano
2005-09-25  8:36  2% GIT 0.99.7d, and end of week status Junio C Hamano
2010-01-10 19:55  2% What's cooking in git.git (Jan 2010, #03; Sun, 10) Junio C Hamano
2009-08-21  2:48  2% What's cooking in git.git (Aug 2009, #03; Thu, 20) Junio C Hamano
2022-10-17 23:05  2% What's cooking in git.git (Oct 2022, #05; Mon, 17) Junio C Hamano
2016-05-17 22:47  2% What's cooking in git.git (May 2016, #06; Tue, 17) Junio C Hamano
2009-12-08  9:25  2% What's cooking in git.git (Dec 2009, #03; Tue, 08) Junio C Hamano
2014-04-09 21:59  2% [ANNOUNCE] Git v1.9.2 Junio C Hamano
2023-08-02 18:10  2% What's cooking in git.git (Aug 2023, #01; Wed, 2) Junio C Hamano
2016-06-13 19:45  2% [ANNOUNCE] Git v2.9.0 Junio C Hamano
2016-04-29 22:04  2% What's cooking in git.git (Apr 2016, #08; Fri, 29) Junio C Hamano
2016-04-07 19:01  2% What's cooking in git.git (Apr 2016, #03; Thu, 7) Junio C Hamano
2022-01-24 19:39  2% What's cooking in git.git (Jan 2022, #07; Mon, 24) Junio C Hamano
2016-03-25 22:03  2% What's cooking in git.git (Mar 2016, #05; Fri, 25) Junio C Hamano
2016-04-01 22:47  2% What's cooking in git.git (Apr 2016, #01; Fri, 1) Junio C Hamano
2015-10-14 22:23  2% What's cooking in git.git (Oct 2015, #03; Wed, 14) Junio C Hamano
2016-04-04 21:26  2% What's cooking in git.git (Apr 2016, #02; Mon, 4) Junio C Hamano
2016-06-07  5:57  2% [ANNOUNCE] Git v2.9.0-rc2 Junio C Hamano
2009-11-25 16:31     Commiting changes onto more than one branch Mike Jarmy
2009-11-25 16:50  3% ` Jakub Narebski
2023-05-20  8:01     I think there is error in merge documents - current branch Minnie Shi
2023-05-20  8:44     ` [PATCH] doc: merge: fix mention of `ORIG_HEAD` Kristoffer Haugsbakk
2023-05-20  9:25  2%   ` Minnie Shi
2023-05-20  9:41  2%     ` Minnie Shi
2007-04-16  1:27     What's in git.git (stable) Junio C Hamano
2007-04-18 23:58     ` Junio C Hamano
2007-04-22  6:22  3%   ` Junio C Hamano
2015-11-03  7:39     [PATCH v6 00/25] refs backend pre-vtable Michael Haggerty
2015-11-03  7:40     ` [PATCH v6 25/25] refs: break out ref conflict checks Michael Haggerty
2015-11-04 21:01       ` David Turner
2015-11-05  4:00         ` Michael Haggerty
2015-11-05 16:22           ` David Turner
2015-11-06 13:34             ` Michael Haggerty
2015-11-06 17:28               ` Junio C Hamano
2015-11-06 23:24  2%             ` Junio C Hamano
2018-02-16 13:08     [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear) Sergey Organov
2018-02-19 23:44     ` Igor Djordjevic
2018-02-27  0:07       ` Johannes Schindelin
2018-02-27  5:30         ` Jacob Keller
2018-02-27 16:21           ` Johannes Schindelin
2018-02-27 18:55             ` Igor Djordjevic
2018-02-27 19:59               ` Igor Djordjevic
2018-02-27 23:40                 ` Igor Djordjevic
2018-02-28  5:19                   ` Sergey Organov
2018-02-28 20:25                     ` Igor Djordjevic
2018-03-01  5:39                       ` Sergey Organov
2018-03-02 11:31                         ` Phillip Wood
2018-03-03  0:29                           ` Igor Djordjevic
2018-03-05  5:00                             ` Sergey Organov
2018-03-06 10:52                               ` Phillip Wood
2018-03-06 16:56                                 ` Junio C Hamano
2018-03-08  7:05                                   ` Johannes Schindelin
2018-03-08  8:18                                     ` Junio C Hamano
2018-03-11 11:56                                       ` Johannes Schindelin
2018-03-13 18:24  3%                                     ` Junio C Hamano
2023-08-18 20:04     [PATCH] This fixes a minor memory leak (detected by LeakSanitizer) in git merge Kevin Backhouse via GitGitGadget
2023-08-24 14:12  3% ` [PATCH v2 0/2] " Kevin Backhouse via GitGitGadget
2007-09-06  8:52     What's cooking in git.git (topics) Junio C Hamano
     [not found]     ` <7v1wd1d0le.fsf@gitster.siamese.dyndns.org>
2007-09-26 20:05  3%   ` Junio C Hamano
2022-05-19 16:26     [PATCH 0/2] Fix merge restore state Elijah Newren via GitGitGadget
2022-06-19  6:50  3% ` [PATCH v2 0/6] " Elijah Newren via GitGitGadget
2022-07-21  8:16  3%   ` [PATCH v3 0/7] " Elijah Newren via GitGitGadget
2022-07-22  5:15  3%     ` [PATCH v4 " Elijah Newren via GitGitGadget
2022-07-23  1:53  3%       ` [PATCH v5 0/8] " Elijah Newren via GitGitGadget
2022-06-19  6:50       ` [PATCH v2 4/6] merge: make restore_state() restore staged state too Elijah Newren via GitGitGadget
2022-07-19 23:14         ` Junio C Hamano
2022-07-19 23:28           ` Junio C Hamano
2022-07-21  1:37  3%         ` Elijah Newren
2022-06-19  6:50       ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
2022-07-19 22:43  2%     ` Junio C Hamano
2022-07-17 16:28         ` ZheNing Hu
2022-07-19 22:49  2%       ` Junio C Hamano
2022-07-21  1:09  2%         ` Elijah Newren
2022-10-12  9:35     [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-21  9:21     ` [PATCH v4 " Phillip Wood via GitGitGadget
2022-10-21  9:21       ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-21 17:37  2%     ` Junio C Hamano
2022-10-25 10:08           ` Phillip Wood
2022-10-25 16:11  2%         ` Junio C Hamano
2022-10-26 15:17  2%           ` Phillip Wood
2022-10-26 16:55  2%             ` Junio C Hamano
2015-12-02  0:24     What's cooking in git.git (Dec 2015, #01; Tue, 1) Jeff King
2015-12-02 22:11     ` Junio C Hamano
2015-12-02 22:31  3%   ` Jeff King
2010-12-17  7:38     What's cooking in git.git (Dec 2010, #05; Thu, 16) Junio C Hamano
2010-12-17 11:18     ` conflict resolution of pd/bash-4-completion [Re: What's cooking in git.git (Dec 2010, #05; Thu, 16)] SZEDER Gábor
2010-12-17 19:24  3%   ` Junio C Hamano
2023-10-08  6:45     [PATCH 00/25] Documentation fixes Elijah Newren via GitGitGadget
2023-10-08  6:45  4% ` [PATCH 14/25] documentation: fix choice of article Elijah Newren via GitGitGadget
2008-08-23  9:01     [PATCH] builtin-merge: fail properly when we are in the middle of a conflicted merge Junio C Hamano
2008-08-23 10:57     ` Miklos Vajna
2008-08-23 19:55       ` Junio C Hamano
2008-08-23 19:56         ` [PATCH 1/2] merge: fix numerus bugs around "trivial merge" area Junio C Hamano
2008-08-24  1:58  3%       ` Junio C Hamano
2010-08-17  6:51     [PATCH/RFC] updating examples/git-merge (plus a builtin/merge fix) Jonathan Nieder
2010-08-17  7:46  3% ` Ævar Arnfjörð Bjarmason
2010-08-17  8:10  3%   ` Jonathan Nieder
2015-10-12 22:03     [PATCH v2] merge: fix cache_entry use-after-free David Turner
2015-10-14 21:17  2% ` Junio C Hamano
2015-10-14 22:00  2%   ` David Turner
2015-10-12 22:28  2% ` Junio C Hamano
2015-10-13 19:22  2%   ` David Turner
2015-10-13 21:05  2%     ` Junio C Hamano
2019-07-25 17:45     [PATCH 00/19] Cleanup merge API Elijah Newren
2019-07-25 17:45  2% ` [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-07-26 15:52     ` [PATCH v2 00/20] Cleanup merge API Elijah Newren
2019-07-26 15:52  2%   ` [PATCH v2 03/20] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-08-15 21:40       ` [PATCH v3 00/24] Clean up merge API Elijah Newren
2019-08-15 21:40  2%     ` [PATCH v3 08/24] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-08-17 18:41         ` [PATCH v4 00/24] Clean up merge API Elijah Newren
2019-08-17 18:41  2%       ` [PATCH v4 08/24] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2011-05-03  9:03     [PATCH v3] Add default merge options for all branches Jonathan Nieder
2011-05-04 22:07     ` [PATCH v5] " Michael Grubb
2011-05-05  0:42  2%   ` Junio C Hamano
2017-07-25 15:09     [RFC] Git rerere and non-conflicting changes during conflict resolution Raman Gupta
2017-07-25 17:52     ` Jeff King
2017-07-25 20:26  3%   ` Junio C Hamano
2017-07-25 20:58         ` Jeff King
2017-07-26  7:14  3%       ` Junio C Hamano
2017-07-27 21:01  3%         ` Junio C Hamano
2017-07-26  8:06  3%       ` Junio C Hamano
2021-04-22  0:55     [PATCH v3] git-merge: rewrite already up to date message Josh Soref via GitGitGadget
2021-05-02  5:14  3% ` [PATCH v4 0/2] normalize & fix merge "up to date" messages Eric Sunshine
2021-05-02  5:14       ` [PATCH v4 2/2] merge: fix swapped "up to date" message components Eric Sunshine
2021-05-03  5:21  2%     ` Junio C Hamano
2021-05-03  5:50  2%       ` Eric Sunshine
2021-05-03  6:28  2%         ` Junio C Hamano
2013-03-28 21:43     [PATCH v2 0/6] attribute regression fix for maint-1.8.1 and upward Jeff King
2013-03-28 21:48     ` [PATCH 4/6] dir.c::match_pathname(): pay attention to the length of string parameters Jeff King
2013-03-29  8:45       ` Duy Nguyen
2013-03-29 12:05         ` Jeff King
2013-03-29 13:02           ` Duy Nguyen
2013-03-29 16:44  2%         ` Junio C Hamano
2021-01-08 19:22     What's cooking in git.git (Jan 2021, #02; Fri, 8) Junio C Hamano
2021-01-14 23:06     ` Emily Shaffer
2021-01-15  2:36       ` Derrick Stolee
2021-01-15  6:36         ` Junio C Hamano
2021-01-15  6:38           ` Junio C Hamano
2021-01-15 11:36             ` Derrick Stolee
2021-01-15 19:44  2%           ` Junio C Hamano
2021-08-24 16:41     'git pull' complains that a locally resurrected directory would be overwritten by merge when no pulled changes are affecting that directory Yuri
2021-08-25  1:05     ` Jeff King
2021-08-25 15:42  3%   ` Elijah Newren
2018-09-21  5:22     What's cooking in git.git (Sep 2018, #04; Thu, 20) Junio C Hamano
2018-09-21 17:05     ` Johannes Sixt
2018-09-21 17:17  3%   ` Junio C Hamano
2014-08-11  4:59     Sharing merge conflict resolution between multiple developers Chris Packham
2014-08-11 18:44  3% ` Junio C Hamano
2012-08-16 19:49     git workflow - merging upwards Patrick Sabin
2012-08-16 20:43  3% ` Junio C Hamano
2009-08-09  6:59     [PATCH] merge: indicate remote tracking branches in merge message Jeff King
2009-08-09  7:31     ` Junio C Hamano
2009-08-09  7:40       ` Jeff King
2009-08-09  9:14         ` Jeff King
2009-08-09 10:00  3%       ` Jeff King
2013-12-03 18:06     Branching workflow Javier Domingo
2013-12-03 19:12  3% ` Junio C Hamano
2010-01-06 22:22     What's cooking in git.git (Jan 2010, #02 draft; Wed, 06) Junio C Hamano
2010-01-06 22:25     ` Junio C Hamano
2010-01-08  7:42  2%   ` What's cooking in git.git (Jan 2010, #02; Thu, 07) Junio C Hamano
2008-03-09 10:46     What's cooking in git.git (topics) Junio C Hamano
2008-04-19  8:19     ` Junio C Hamano
2008-04-22 10:03       ` Junio C Hamano
2008-04-27  6:04         ` Junio C Hamano
2008-05-06  6:38           ` Junio C Hamano
2008-05-14 22:30             ` Junio C Hamano
2008-05-22  1:18               ` Junio C Hamano
2008-05-26  1:22                 ` Junio C Hamano
2008-05-30 20:44                   ` Junio C Hamano
2008-06-02  7:58                     ` Junio C Hamano
2008-06-13 10:16                       ` Junio C Hamano
2008-06-18  7:31                         ` Junio C Hamano
2008-06-21  9:44                           ` Junio C Hamano
2008-06-23  7:15                             ` Junio C Hamano
2008-06-25  9:31                               ` Junio C Hamano
2008-06-29  8:55                                 ` Junio C Hamano
2008-06-30  9:08                                   ` Junio C Hamano
2008-07-02  4:41                                     ` Junio C Hamano
2008-07-06 10:04                                       ` Junio C Hamano
2008-07-08  2:46                                         ` Junio C Hamano
2008-07-10  2:32                                           ` Junio C Hamano
2008-07-14  5:11  2%                                         ` Junio C Hamano
2016-03-20  1:23     [PATCH] Fixing segmentation fault when merging FETCH_HEAD Eric Sunshine
2016-03-21  0:11     ` Jose Ivan B. Vilarouca Filho
2016-03-21 19:01       ` merge: fix NULL pointer dereference when merging nothing into void Junio C Hamano
2016-03-21 19:36  2%     ` Eric Sunshine
2017-05-30 17:30     [PATCH 00/33] object id conversion (grep and diff) Brandon Williams
2017-06-02  1:34     ` Junio C Hamano
2017-06-02  5:08       ` Junio C Hamano
2017-06-02  7:19         ` Junio C Hamano
2017-06-02 18:22           ` Brandon Williams
2017-06-02 23:35  3%         ` Junio C Hamano
2020-06-23 15:04     [PATCH 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-23 15:04  8% ` [PATCH 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2020-06-24 14:48     ` [PATCH v2 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-24 14:48  8%   ` [PATCH v2 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2020-06-25 12:18       ` [PATCH v3 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-25 12:18  8%     ` [PATCH v3 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2013-04-10 20:35     Premerging topics (was: [RFD] annnotating a pair of commit objects?) Antoine Pelisse
2013-04-23  6:34     ` Johan Herland
2013-04-23 14:53  3%   ` Premerging topics Junio C Hamano
2013-04-23 15:17  2%     ` Antoine Pelisse
2013-04-23 14:51       ` Premerging topics (was: [RFD] annnotating a pair of commit objects?) Antoine Pelisse
2013-04-23 23:06         ` Johan Herland
2013-04-24  5:48  3%       ` Premerging topics Junio C Hamano
2013-04-24  6:22  3%         ` Johan Herland
2013-04-24  7:14               ` Junio C Hamano
2013-04-29 19:06  3%             ` Antoine Pelisse
2015-10-14 22:07     [PATCH v3] merge: fix cache_entry use-after-free David Turner
2015-10-15  3:35  2% ` René Scharfe
2015-10-15 19:02  2%   ` David Turner
2015-10-15 20:38  2%     ` René Scharfe
2006-01-11 23:47     merging initial part of a branch? Junio C Hamano
2006-01-12  0:55     ` J. Bruce Fields
2006-01-12  1:47       ` Junio C Hamano
2006-01-13  3:08         ` J. Bruce Fields
2006-01-13  4:00           ` Junio C Hamano
2006-01-13 15:10             ` J. Bruce Fields
2006-01-13 19:50               ` Junio C Hamano
2006-01-13 20:01                 ` J. Bruce Fields
     [not found]                   ` <20060115185458.GA3985@fieldses.org>
2006-01-15 23:26                     ` [PATCH] new tutorial Junio C Hamano
2006-01-23  4:57  6%                   ` J. Bruce Fields
2009-04-27  8:29     [ANNOUNCE] GIT 1.6.3.rc3 Junio C Hamano
2009-05-03 21:59  2% ` [ANNOUNCE] GIT 1.6.3.rc4 Junio C Hamano

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).