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: [GSoC Project RFC] "git log --oneline" improvements
  2020-03-21 22:05  0%   ` Parth Gala
@ 2020-03-21 22:37  0%     ` Junio C Hamano
  0 siblings, 0 replies; 13+ results
From: Junio C Hamano @ 2020-03-21 22:37 UTC (permalink / raw)
  To: Parth Gala; +Cc: Git Mailing List, chriscool

Parth Gala <parthpgala@gmail.com> writes:

>>>    |   === 2015-09-04 ===
>>>    | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
>>>    * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
>>>                         ..........
>>>    * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9
>>>
>>> So these are the two main formats to be enhanced along with as many options
>>> of log as possible. What are your views on this ?
>>>
>> Making the "--oneline" format to consume more than one line for a
>> commit is probably not what we want anyway.
>
> For this format can we build a new option say `--time` or `--log-time`(duh!)

Making such an option orthogonal to the base formats (i.e.
"--decorate" is usable with "--pretty=short", "--pretty=fuller",
"--oneline", etc.---note that this is not meant to be exhaustive)
would be a good idea.  I do not think of any reason why your
"--group-by-same-date" cannot be combined with some of these formats.

It is reasonable to combine it with "--format="%h %s", for that
matter, because the "--group-by-same-date" is not about showing any
particular commit but inserting something that does *not* belong to
any particular commit in between.  Just like "--graph" can be
combined with many formats, showing group separators in between the
stream of commits would mix well with any format, I would say.

By using the idea Peff shown, before starting to emit one commit (in
any format), you would show a single line of "== YYYY-MM-DD ==" if
the commit is from a date different from the one that was shown
last.  It would naturally extend to "--group-by-same-month", etc.,
so you'd want to be prepared for such future.  Your patch does *not*
have to implement such variations like grouping by month, season or
year.  But a developer with a good taste would prepare the code in
such a way that is easy to modify to extend the support for such
variations by future developers.

Also remember there are two timestamps, and depending on the use
case, people want to see author dates or committer dates.

Thanks.

^ permalink raw reply	[relevance 0%]

* Re: [GSoC Project RFC] "git log --oneline" improvements
  2020-03-20 23:36  0% ` Junio C Hamano
@ 2020-03-21 22:05  0%   ` Parth Gala
  2020-03-21 22:37  0%     ` Junio C Hamano
  0 siblings, 1 reply; 13+ results
From: Parth Gala @ 2020-03-21 22:05 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List, chriscool

> Parth Gala <parthpgala@gmail.com> writes:
>
>> I went through the discussions here[1] and here[2] and what I could
>> conclude from [1] is, the 'git log --oneline' command currently shows the
>> decorations of a commit before the commit message but after the shortened
>> hash due to which the alignment of the messages is disturbed like this,
>>
>>      3f07dac29 (HEAD -> master) pathspec: don't error out on all-excl...
>>      ca4a562f2 pathspec magic: add '^' as alias for '!'
>>      02555c1b2 ls-remote: add "--diff" option to show only refs that differ
>>      6e3a7b339 (tag: v2.12.0-rc0, origin/master, origin/HEAD) Git 2.12-rc0
>>      fafca0f72 Merge branch 'cw/log-updates-for-all-refs-really'
>>      74dee5cfa Merge branch 'pl/complete-diff-submodule-diff'
>>      36acf4123 Merge branch 'rs/object-id'
>>
>> And if the decorations were to be shown after the message and you were
>> checking the logs just to see the status of a branch rather than the
>> contents then you would again be at a disadvantage, since you would want
>> to have them visible right next to the hashes. Besides decorations at the
>> end would have the inconvenience of being truncated at the end of the line
>> on smaller screens.
>>
>> This format for --oneline with decorations was decided upon,
>>
>>    b9df16a4c (HEAD -> master)
>>              pathspec: don't error out on all-exclusionary pathspec patterns
>>    91a491f05 pathspec magic: add '^' as alias for '!'
>>    c8e05fd6d ls-remote: add "--diff" option to show only refs that differ
>>    20769079d (tag: v2.12.0-rc2, origin/master, origin/HEAD)
>>              Git 2.12-rc2
>>    076c05393 Hopefully the final batch of mini-topics before the final
> Hmph.  Who decided that such a format is a good idea?  I do not see
> anything decided positively in the thread [1] you referred to.

Okay, right.
But this format does overcome the problems discussed in that thread.
And yes, if `--oneline` is preferred to consume no more than one line,
then as you mentioned below, a `--pretty=concise` format seems to be a
good idea here.

>> In [2] such formats with date and timestamp are discussed along with
>> compatibility for --graph option as well,
>>
>>    === 2015-09-17 ===
>>    * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
>>      === 2015-09-09 ===
>>    * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree
>> into index
>>    |   === 2015-09-04 ===
>>    | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
>>    * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
>>                         ..........
>>    * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9
>>
>> So these are the two main formats to be enhanced along with as many options
>> of log as possible. What are your views on this ?
>>
> Making the "--oneline" format to consume more than one line for a
> commit is probably not what we want anyway.

For this format can we build a new option say `--time` or `--log-time`(duh!)
which is compatible only when the other options don't include --notes,
--pretty or --format(in which case `--log-time` option gets ignored).
Here I will have to probably build upon Jeff's work to include the
other options that the script supports too.

> Coming up with a new format (say, "--pretty=concise"), or a new
> option that tweaks the behaviour of "--oneline", are possible ways
> to add a new feature without disrupting existing users' use cases,
> though.
>
> Thanks.
>

^ permalink raw reply	[relevance 0%]

* Re: [GSoC Project RFC] "git log --oneline" improvements
  2020-03-20 23:11  4% [GSoC Project RFC] "git log --oneline" improvements Parth Gala
@ 2020-03-20 23:36  0% ` Junio C Hamano
  2020-03-21 22:05  0%   ` Parth Gala
  0 siblings, 1 reply; 13+ results
From: Junio C Hamano @ 2020-03-20 23:36 UTC (permalink / raw)
  To: Parth Gala; +Cc: Git Mailing List, chriscool

Parth Gala <parthpgala@gmail.com> writes:

> I went through the discussions here[1] and here[2] and what I could
> conclude from [1] is, the 'git log --oneline' command currently shows the
> decorations of a commit before the commit message but after the shortened
> hash due to which the alignment of the messages is disturbed like this,
>
>     3f07dac29 (HEAD -> master) pathspec: don't error out on all-excl...
>     ca4a562f2 pathspec magic: add '^' as alias for '!'
>     02555c1b2 ls-remote: add "--diff" option to show only refs that differ
>     6e3a7b339 (tag: v2.12.0-rc0, origin/master, origin/HEAD) Git 2.12-rc0
>     fafca0f72 Merge branch 'cw/log-updates-for-all-refs-really'
>     74dee5cfa Merge branch 'pl/complete-diff-submodule-diff'
>     36acf4123 Merge branch 'rs/object-id'
>
> And if the decorations were to be shown after the message and you were
> checking the logs just to see the status of a branch rather than the
> contents then you would again be at a disadvantage, since you would want
> to have them visible right next to the hashes. Besides decorations at the
> end would have the inconvenience of being truncated at the end of the line
> on smaller screens.
>
> This format for --oneline with decorations was decided upon,
>
>   b9df16a4c (HEAD -> master)
>             pathspec: don't error out on all-exclusionary pathspec patterns
>   91a491f05 pathspec magic: add '^' as alias for '!'
>   c8e05fd6d ls-remote: add "--diff" option to show only refs that differ
>   20769079d (tag: v2.12.0-rc2, origin/master, origin/HEAD)
>             Git 2.12-rc2
>   076c05393 Hopefully the final batch of mini-topics before the final

Hmph.  Who decided that such a format is a good idea?  I do not see
anything decided positively in the thread [1] you referred to.

> In [2] such formats with date and timestamp are discussed along with
> compatibility for --graph option as well,
>
>   === 2015-09-17 ===
>   * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
>     === 2015-09-09 ===
>   * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree
> into index
>   |   === 2015-09-04 ===
>   | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
>   * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
>                        ..........
>   * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9
>
> So these are the two main formats to be enhanced along with as many options
> of log as possible. What are your views on this ?
>

Making the "--oneline" format to consume more than one line for a
commit is probably not what we want anyway.

Coming up with a new format (say, "--pretty=concise"), or a new
option that tweaks the behaviour of "--oneline", are possible ways
to add a new feature without disrupting existing users' use cases,
though.

Thanks.


^ permalink raw reply	[relevance 0%]

* [GSoC Project RFC] "git log --oneline" improvements
@ 2020-03-20 23:11  4% Parth Gala
  2020-03-20 23:36  0% ` Junio C Hamano
  0 siblings, 1 reply; 13+ results
From: Parth Gala @ 2020-03-20 23:11 UTC (permalink / raw)
  To: Git Mailing List; +Cc: chriscool

Hey everyone,


I am Parth Gala. I am second year major in Electronics and Communications
Engineering at Dwarkadas J. Sanghvi College of Engineering. I am interested
in participating for GSoC 2020 under the Git organisation.

First of all I would like to apologise for sending in my participation so
late. I lost 2 crucial weeks of discussion from the end of Feb due to some
personal problems. I was initially interested in working on the rewrite of
submodule from shell to C, but after checking the mailing list I saw that
Shourya Shukla had already taken it up and had started work on it, so I
felt it wise to leave it to him. So all the reading that I did for
submodules had to be repeated for this project.

I went through the discussions here[1] and here[2] and what I could
conclude from [1] is, the 'git log --oneline' command currently shows the
decorations of a commit before the commit message but after the shortened
hash due to which the alignment of the messages is disturbed like this,

     3f07dac29 (HEAD -> master) pathspec: don't error out on 
all-exclusionary pathspec patterns
     ca4a562f2 pathspec magic: add '^' as alias for '!'
     02555c1b2 ls-remote: add "--diff" option to show only refs that differ
     6e3a7b339 (tag: v2.12.0-rc0, origin/master, origin/HEAD) Git 2.12-rc0
     fafca0f72 Merge branch 'cw/log-updates-for-all-refs-really'
     74dee5cfa Merge branch 'pl/complete-diff-submodule-diff'
     36acf4123 Merge branch 'rs/object-id'

And if the decorations were to be shown after the message and you were
checking the logs just to see the status of a branch rather than the
contents then you would again be at a disadvantage, since you would want
to have them visible right next to the hashes. Besides decorations at the
end would have the inconvenience of being truncated at the end of the line
on smaller screens.

This format for --oneline with decorations was decided upon,

   b9df16a4c (HEAD -> master)
             pathspec: don't error out on all-exclusionary pathspec patterns
   91a491f05 pathspec magic: add '^' as alias for '!'
   c8e05fd6d ls-remote: add "--diff" option to show only refs that differ
   20769079d (tag: v2.12.0-rc2, origin/master, origin/HEAD)
             Git 2.12-rc2
   076c05393 Hopefully the final batch of mini-topics before the final

In [2] such formats with date and timestamp are discussed along with
compatibility for --graph option as well,

   === 2015-09-17 ===
   * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
     === 2015-09-09 ===
   * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree 
into index
   |   === 2015-09-04 ===
   | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
   * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
                        ..........
   * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9

So these are the two main formats to be enhanced along with as many options
of log as possible. What are your views on this ?

Also, I had submitted a patch series here[3] but I felt it was trivial so
took upon a bug fix[4] which is yet to be sent to the mailing list for
discussions.

I am currently drafting my proposal which I will send for discussion
after having received comments here.

Thanks :-),

Parth.

[1] : 
https://lore.kernel.org/git/xmqqeg42fslw.fsf@gitster.mtv.corp.google.com/T/#t
[2] : 
https://lore.kernel.org/git/CA+55aFwT2HUBzZO8Gpt9tHoJtdRxv9oe3TDoSH5jcEOixRNBXg@mail.gmail.com/T/#t
[3] : 
https://public-inbox.org/git/pull.545.git.1581535151.gitgitgadget@gmail.com/#t
[4] : https://github.com/gitgitgadget/git/pull/582

^ permalink raw reply	[relevance 4%]

* Re: recommendations for log enhancement
  2018-01-28 15:46  7% ` recommendations for log enhancement 牛旭
@ 2018-01-30 22:11  0%   ` Stefan Beller
  0 siblings, 0 replies; 13+ results
From: Stefan Beller @ 2018-01-30 22:11 UTC (permalink / raw)
  To: 牛旭; +Cc: git

On Sun, Jan 28, 2018 at 7:46 AM, 牛旭 <niuxu16@nudt.edu.cn> wrote:
> Our team studies the consistent edits of git during evolution. And we find several missed edits in the latest release of git. For example, there are two consist edits we have figured out from historical commits:

Thanks for studying the code of Git. It will help the project in
bettering the code.
Welcome to the Git community!
Which version do you mean by "latest release" ?


> 1) . Version: git 2.3.9 – git-2.3.10
>        File: builtin/merge-tree.c
>
>         dst.size = size;
> -       xdi_diff(&src, &dst, &xpp, &xecfg, &ecb);
> +       if (xdi_diff(&src, &dst, &xpp, &xecfg, &ecb))
> +               die("unable to generate diff");
>         free(src.ptr);
>         free(dst.ptr);
>  }
>
> 2) .Version: git 2.3.9 – git-2.3.10
>       File: combine-diff.c
>
> -       xdi_diff_outf(&parent_file, result_file, consume_line, &state,
> -                     &xpp, &xecfg);
> +       if (xdi_diff_outf(&parent_file, result_file, consume_line, &state,
> +                         &xpp, &xecfg))
> +               die("unable to generate combined diff for %s",
> +                   sha1_to_hex(parent));
>         free(parent_file.ptr);
>
> Those two commits both add if structure and log messages for handling the return value of xdi_diff_outf().
> And in the latest release, we find one candidate that may also need log statements inserted:
> 1)  File: git-2.14.2/builtin/rerere.c
>
>      1  static int diff_two(const char *file1, const char *label1,
>      2                  const char *file2, const char *label2)
>      3  {
> ….
>     20          ret = xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb);
>     21
>     22          free(minus.ptr);
>     23          free(plus.ptr);
>     24          return ret;
>     25  }
> ...
> }
>
> There are more examples of consistent update and corresponding suggestions in attachment. It is so nice of you to read them and share me with your opinion on the correctness of our suggestion. Thanks a lot.

Thanks a lot for this suggestion and the suggestions in the attachment.

However these are less than optimal to consume for the project.
Care to make these changes as actual commits in your local repository
and then send patches?

See Documentation/SubmittingPatches
https://github.com/git/git/blob/master/Documentation/SubmittingPatches

Thanks,
Stefan

^ permalink raw reply	[relevance 0%]

* recommendations for log enhancement
  @ 2018-01-28 15:46  7% ` 牛旭
  2018-01-30 22:11  0%   ` Stefan Beller
  0 siblings, 1 reply; 13+ results
From: 牛旭 @ 2018-01-28 15:46 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 1593 bytes --]

Our team studies the consistent edits of git during evolution. And we find several missed edits in the latest release of git. For example, there are two consist edits we have figured out from historical commits:
1) . Version: git 2.3.9 – git-2.3.10
       File: builtin/merge-tree.c

 	dst.size = size;
-	xdi_diff(&src, &dst, &xpp, &xecfg, &ecb);
+	if (xdi_diff(&src, &dst, &xpp, &xecfg, &ecb))
+		die("unable to generate diff");
 	free(src.ptr);
 	free(dst.ptr);
 }

2) .Version: git 2.3.9 – git-2.3.10
      File: combine-diff.c
  
-	xdi_diff_outf(&parent_file, result_file, consume_line, &state,
-		      &xpp, &xecfg);
+	if (xdi_diff_outf(&parent_file, result_file, consume_line, &state,
+			  &xpp, &xecfg))
+		die("unable to generate combined diff for %s",
+		    sha1_to_hex(parent));
 	free(parent_file.ptr);

Those two commits both add if structure and log messages for handling the return value of xdi_diff_outf(). 
And in the latest release, we find one candidate that may also need log statements inserted:
1)  File: git-2.14.2/builtin/rerere.c
    
     1	static int diff_two(const char *file1, const char *label1,
     2			const char *file2, const char *label2)
     3	{
….
    20		ret = xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb);
    21	
    22		free(minus.ptr);
    23		free(plus.ptr);
    24		return ret;
    25	}
...
}

There are more examples of consistent update and corresponding suggestions in attachment. It is so nice of you to read them and share me with your opinion on the correctness of our suggestion. Thanks a lot. 

[-- Attachment #2: git_recommendation_3.doc --]
[-- Type: application/msword, Size: 13312 bytes --]

[-- Attachment #3: git_recommendation_2.doc --]
[-- Type: application/msword, Size: 17920 bytes --]

[-- Attachment #4: git_recommendation_1.doc --]
[-- Type: application/msword, Size: 16896 bytes --]

^ permalink raw reply	[relevance 7%]

* [ANNOUNCE] git-log-compact v1.0
@ 2016-10-20  0:13  4% Kyle J. McKay
  0 siblings, 0 replies; 13+ results
From: Kyle J. McKay @ 2016-10-20  0:13 UTC (permalink / raw)
  To: Git mailing list; +Cc: Jakub Narebski, Christian Couder

> NOTE: If you read the excellent Git Rev News [1], then you
> already know all about git-log-compact :)

The git-log-compact script provides a compact alternative to the
`git log --oneline` output that includes dates, times and author
and/or committer initials in a space efficient output format.

`git-log-compact` is intended to fill the gap between the single line
`--oneline` log output format and the multiline `--pretty=short` /
`--pretty=medium` output formats.

It is not strictly a one line per commit output format (but almost) and
while it only shows the title of each commit (like the short format) it
does include author and date information (similarly to the medium format)
except that timestamps are shown very compactly and author/committer
names are shown as initials.

This allows one to get a complete view of repository activity in a very
compact output format that can show many commits per screen full and is
fully compatible with the `--graph` option.

Simple example output from the Git repository:

git log-compact --graph --date-order --decorate --no-merges -n 5 v2.5.3

    === 2015-09-17 ===
  * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
    === 2015-09-09 ===
  * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
  |   === 2015-09-04 ===
  | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
  * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
                       ..........
  * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9

I have been wanting a compact one line output format that included dates,
times and initials for some time that is compatible with --graph, clearly
shows root commits and eliminates confusion over whether or not two adjacent
lines in the output are related as parent/child (the --show-linear-break
option does not work with --graph).

The git-log-compact utility is the result.  Except for --notes, --pretty and
--format options (which would make the output a non-oneline format) any
other `git log` option may be used (including things like --cherry-mark,
--patch, --raw, --stat, --summary, --show-linear-break etc.),

There are a few new options specific to git-log-compact which are described
in the README and the `git-log-compact -h` output that can be used to alter
the dates, times and/or initials displayed.

The project page with detailed help and many screen shots is located at:

  https://mackyle.github.io/git-log-compact/

Alternatively the repository can be cloned from:

  https://github.com/mackyle/git-log-compact.git

Or the script file itself (which is really all you need) can be
viewed/fetched from:

  https://github.com/mackyle/git-log-compact/blob/HEAD/git-log-compact

The git-log-compact script should work with any version of Git released
in the last several years.

--Kyle

[1] https://git.github.io/rev_news/2016/10/19/edition-20/

^ permalink raw reply	[relevance 4%]

* Re: [PATCH/RFC] git log --oneline alternative with dates, times and initials
  2016-09-29  8:33  0% ` Jeff King
@ 2016-09-29 11:00  0%   ` Kyle J. McKay
  0 siblings, 0 replies; 13+ results
From: Kyle J. McKay @ 2016-09-29 11:00 UTC (permalink / raw)
  To: Jeff King; +Cc: Git mailing list, Junio C Hamano

On Sep 29, 2016, at 01:33, Jeff King wrote:

> On Wed, Sep 28, 2016 at 10:34:51PM -0700, Kyle J. McKay wrote:
>
>> git log-times --graph --date-order --decorate --no-merges -n 5 v2.5.3
>>
>>    === 2015-09-17 ===
>>  * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
>>    === 2015-09-09 ===
>>  * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree  
>> into index
>>  |   === 2015-09-04 ===
>>  | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
>>  * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
>>                       ..........
>>  * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9
>
> I was surprised to see this as a separate script, but it is true  
> that we
> cannot quite pull it off with --format. I think we are very close,
> though.  With the patches below I think you can do:
>
>  git log \
>    --commit-header='%C(auto,bold blue)== %as ==%C(auto,reset)'
>    --format='%C(auto)%h %C(auto,green)%ad %C(auto,red)%aS/%cS%C(auto) 
> %d%C(auto,reset) %s' \
>    --graph --no-merges --author-date-order --date=format:%H:%M
>
> and get the same (or very similar) output.
>
>  [1/5]: pretty: allow formatting DATE_SHORT
>  [2/5]: pretty: allow formatting names as initials
>  [3/5]: graph: fix extra spaces in graph_padding_line
>  [4/5]: graph: helper functions for printing commit header
>  [5/5]: log: add --commit-header option
>
> Each of those commits[1] needs some minor polish, and as I'm not  
> really
> that interested in fancy log output myself, I don't plan on working on
> them further. I was mostly curious just how close we were. But if  
> you'd
> like to pursue it, feel free to use them as a starting point.

Those patches are missing some of the features like showing root  
commits, handling two letter initials, showing the weekday, inserting  
a break where needed to avoid parent-child confusion in graph output  
and properly handling Duy's initials. :)

I suppose if all the objects that output a date took a '(' <strftime>  
')' option that would get you part of the way -- it could replace  
DATE_SHORT with DATE_STRFTIME.

Also the above example doesn't handle marks properly in graph mode.   
Yes, you can add the "%m" format option but it does something odd and  
the script fixes it up.

On the other hand, git-log-times started out as a script for something  
else (a shell script actually) and just got embellished further and  
turned into a perl script for speed.

Your patches are a good first start though but reading the --graph  
code gives me headaches and I figured it would be like going down a  
rabbit hole to make the code support everything the script does.

The script also has one big advantage.  It works with the version of  
Git everybody already has installed.  :)

And nobody is ever going to want to type several lines of arcane  
formatting instructions to get the output.  ;_)

It would need a new option, perhaps --oneline-extended or something.

The patches are a good start but that doesn't help anyone using Git  
today which is why git-log-times is submitted as a contrib script --  
much like the way diff-highlight is still a contrib script and not  
supported directly by Git either.

--Kyle


^ permalink raw reply	[relevance 0%]

* Re: [PATCH/RFC] git log --oneline alternative with dates, times and initials
  2016-09-29  5:34  1% [PATCH/RFC] git log --oneline alternative with dates, times and initials Kyle J. McKay
@ 2016-09-29  8:33  0% ` Jeff King
  2016-09-29 11:00  0%   ` Kyle J. McKay
  0 siblings, 1 reply; 13+ results
From: Jeff King @ 2016-09-29  8:33 UTC (permalink / raw)
  To: Kyle J. McKay; +Cc: Git mailing list, Junio C Hamano

On Wed, Sep 28, 2016 at 10:34:51PM -0700, Kyle J. McKay wrote:

> git log-times --graph --date-order --decorate --no-merges -n 5 v2.5.3
> 
>     === 2015-09-17 ===
>   * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
>     === 2015-09-09 ===
>   * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
>   |   === 2015-09-04 ===
>   | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
>   * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
>                        ..........
>   * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9

I was surprised to see this as a separate script, but it is true that we
cannot quite pull it off with --format. I think we are very close,
though.  With the patches below I think you can do:

  git log \
    --commit-header='%C(auto,bold blue)== %as ==%C(auto,reset)'
    --format='%C(auto)%h %C(auto,green)%ad %C(auto,red)%aS/%cS%C(auto)%d%C(auto,reset) %s' \
    --graph --no-merges --author-date-order --date=format:%H:%M

and get the same (or very similar) output.

  [1/5]: pretty: allow formatting DATE_SHORT
  [2/5]: pretty: allow formatting names as initials
  [3/5]: graph: fix extra spaces in graph_padding_line
  [4/5]: graph: helper functions for printing commit header
  [5/5]: log: add --commit-header option

Each of those commits[1] needs some minor polish, and as I'm not really
that interested in fancy log output myself, I don't plan on working on
them further. I was mostly curious just how close we were. But if you'd
like to pursue it, feel free to use them as a starting point.

-Peff

[1] Actually, I think patch 3 is a legitimate bug fix on its own but I
    do not think there is any way to actually trigger it in practice
    without the rest of this series.

^ permalink raw reply	[relevance 0%]

* [PATCH/RFC] git log --oneline alternative with dates, times and initials
@ 2016-09-29  5:34  1% Kyle J. McKay
  2016-09-29  8:33  0% ` Jeff King
  0 siblings, 1 reply; 13+ results
From: Kyle J. McKay @ 2016-09-29  5:34 UTC (permalink / raw)
  To: Git mailing list; +Cc: Junio C Hamano

Simple example output from the Git repository:

git log-times --graph --date-order --decorate --no-merges -n 5 v2.5.3

    === 2015-09-17 ===
  * ee6ad5f4 12:16 jch (tag: v2.5.3) Git 2.5.3
    === 2015-09-09 ===
  * b9d66899 14:22 js  am --skip/--abort: merge HEAD/ORIG_HEAD tree into index
  |   === 2015-09-04 ===
  | * 27ea6f85 10:46 jch (tag: v2.5.2) Git 2.5.2
  * 74b67638 10:36 jch (tag: v2.4.9) Git 2.4.9
                       ..........
  * ecad27cf 10:32 jch (tag: v2.3.9) Git 2.3.9

I have been wanting a compact one line output format that included dates,
times and initials for some time that is compatible with --graph, clearly
shows root commits and eliminates confusion over whether or not two adjacent
lines in the output are related as parent/child (the --show-linear-break
option does not work with --graph).

The git-log-times utility is the result.  Except for --notes, --pretty and
--format options (which would make the output a non-oneline format) any
other `git log` option may be used (including things like --cherry-mark,
--patch, --raw, --stat, --summary, --show-linear-break etc.),

There are a few new options specific to git-log-times which are described
in the README and the `git-log-times -h` output that can be used to alter
the dates, times and/or initials displayed.

The patch below adds a contrib/git-log-times directory containing the
executable (git-log-times) and the README.

--Kyle

P.S. git am complains about 26 lines with whitespace errors.  They are
     not whitespace errors.  The README is in markdown format and they
     are explicit line break instructions to markdown (2 trailing blanks).
     Removing them would corrupt the markdown output.

P.P.S A picture is worth a thousand words, so the formatted help text,
      and several images of actual git-log-times output are available at
      https://gist.github.com/mackyle/4c33e4802a8269b3f200f2c00352ce6a

-- 8< --
Subject: [PATCH] contrib/git-log-times: alternative git log --oneline utility

The git-log-times utility provides an alternative interface to using
git log --oneline that includes dates, times and author initials.

Additionally root commits are marked for easy identification and
when using --graph mode breaks are inserted when necessary to prevent
two adjacent output lines from being misconstrued as having a parent
child relationship when they actually do not.

Other than --notes, --pretty and --format options which are not
allowed (because that would no longer be a one line format) all git
log options are available for use.

Output will be colorized using the same rules used for git log
output.

The three extra items in the output (dates, times and initials) use
'color.log-times.date', 'color.log-times.time' and
'color.log-times.initials' to change their default color.

Other options specific to git-log-times may be shown by using the
-h option (i.e. `git-log-times -h`).

One or more default options which behave as though they are the
first option argument(s) on the command line may be set by assigning
them to the 'log-times.defaults' config value as space-separated
options each including its leading '-' or '--'.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
---
 contrib/git-log-times/README        | 256 ++++++++++++++++++++
 contrib/git-log-times/git-log-times | 464 ++++++++++++++++++++++++++++++++++++
 2 files changed, 720 insertions(+)
 create mode 100644 contrib/git-log-times/README
 create mode 100755 contrib/git-log-times/git-log-times

diff --git a/contrib/git-log-times/README b/contrib/git-log-times/README
new file mode 100644
index 00000000..65f1d2c5
--- /dev/null
+++ b/contrib/git-log-times/README
@@ -0,0 +1,256 @@
+git-log-times
+=============
+
+An alterative to `git log --oneline` that includes dates, times and
+author initials in a compact one line output format.
+
+The `--notes`, `--pretty` and `--format` options are not allowed but any
+other `git log` options should work fine including `--graph`.
+
+In both `--graph` and non `--graph` modes:
+
+   * Root commits are identified by `_` on either side of the hash
+
+When `--graph` mode is enabled, the graph output is enhanced as follows:
+
+   * Breaks are inserted when necessary to avoid parent/child ambiguity
+
+
+Installation
+------------
+
+Put the `git-log-times` executable file in one of the directories
+included in the `PATH` environment variable.
+
+Optionally set a global alias to save typing such as `lo` like so:
+
+    git config --global alias.lo log-times
+
+Optionally set global default options such as `--two-initials` and
+`--abbrev=8` like so:
+
+    git config --global log-times.defaults "--two-initials --abbrev=8"
+
+
+Dates & Times
+-------------
+
+Dates and times are shown in the local timezone.  Set the TZ variable
+before running `git log-times` (e.g. `TZ=UTC git log-times` to show
+dates and times in UTC) or use the `--time-zone=` option (e.g.
+`git log-times --time-zone=UTC`) to change that.
+
+Dates are shown on a date line all by themselves like so:
+
+    === 2015-11-13 ===
+
+The date line indicates that the times on all the following lines
+(regardless of whether or not `--reverse` is being used) up until
+the next date line take place on the indicated date.  For example
+this output:
+
+    === 2015-09-28 ===
+    be08dee9 13:18 jc (tag: v2.6.0) Git 2.6
+    === 2015-09-21 ===
+    8d530c4d 13:26 jc (tag: v2.6.0-rc3) Git 2.6-rc3
+    904f6e7c 10:51 bn send-email: fix uninitialized var warning for $
+    === 2015-09-20 ===
+    18a21c19 09:49 ps l10n: de.po: better language for one string
+    2e0f3663 09:49 rt l10n: de.po: translate 2 messages
+    5fc31c1f 09:44 tq l10n: Update and review Vietnamese translation
+
+shows one commit on 2015-09-28, two commits on 2015-09-21 and three
+commits on 2015-09-20.
+
+Note that a date line may appear more than once for the same date
+(this is especially common when using `--graph` with its defualt
+`--topo-order`).
+
+The purpose of a date line is to indicate what date has been elided
+from the following lines, nothing more.
+
+
+Examples
+--------
+
+For example, running `git log-times --decorate --graph -n 17 v2.6.1`
+on the Git repository produces this output (which will be colorized
+on the terminal if color is enabled):
+
+      === 2015-09-28 ===
+    * 22f698cb 19:19 jch (tag: v2.6.1) Git 2.6.1
+    *   3adc4ec7 19:16 jch Sync with v2.5.4
+    |\
+    | * 24358560 15:34 jch (tag: v2.5.4) Git 2.5.4
+    | *   11a458be 15:33 jch Sync with 2.4.10
+    | |\
+    | | * a2558fb8 15:30 jch (tag: v2.4.10) Git 2.4.10
+    | | *   6343e2f6 15:28 jch Sync with 2.3.10
+    | | |\
+    | | | * 18b58f70 15:26 jch (tag: v2.3.10) Git 2.3.10
+    | | | *   92cdfd21 14:59 jch Merge branch 'jk/xdiff-memory-limits
+    | | | |\
+    | | | | * 83c4d380 14:58 jk  merge-file: enforce MAX_XDIFF_SIZE o
+    | | | | * dcd1742e 14:57 jk  xdiff: reject files larger than ~1GB
+    | | | | * 3efb9880 14:57 jk  react to errors in xdi_diff
+    | | | * |   f2df3104 14:46 jch Merge branch 'jk/transfer-limit-re
+    | | | |\ \
+    | | | | | | === 2015-09-25 ===
+    | | | | * | b2581164 15:32 bb  http: limit redirection depth
+    | | | | * | f4113cac 15:30 bb  http: limit redirection to protoco
+    | | | | * | 5088d3b3 15:28 jk  transport: refactor protocol white
+    | | | | | |   === 2015-09-28 ===
+    | | | * | |   df37727a 14:33 jch Merge branch 'jk/transfer-limit-
+    | | | |\ \ \
+    | | | | |/ /
+    | | | | | /
+    | | | | |/
+    | | | |/|
+    | | | | | === 2015-09-23 ===
+    | | | | * 33cfccbb 11:35 jk  submodule: allow only certain protoc
+
+The output will be colorized according to the same settings used to enable/
+disable color for git log output.
+
+Additionally, the color of the three new items (dates, times and
+initials) can be controlled with the `color.log-times.date`,
+`color.log-times.time` and `color.log-times.initials` config options.
+
+Running `git log-times --graph --max-parents=0` on the Git repository gives:
+
+      === 2009-04-24 ===
+    *_0ca71b37_11:13 ap  basic options parsing and whatnot.
+      === 2007-01-30 ===
+    *_16d6b8ab_15:16 sh  Initial import of a python script to import ch
+      === 2006-11-06 ===
+    *_cb07fc2a_11:20 sop git-gui: Initial revision.
+      === 2005-08-07 ===
+    *_161332a5_10:49 ks  first working version
+      === 2005-04-11 ===
+    *_2744b234_23:46 lt  Start of early patch applicator tools for git.
+      === 2005-05-08 ===
+    *_1db95b00_21:08 pm  Add initial version of gitk to the CVS reposit
+      === 2005-04-07 ===
+    *_e83c5163_15:13 lt  Initial revision of "git", the information man
+
+Notice the `_` on either side of the hash identifying those commits
+as root commits.  The `_` will only appear on the left side of the
+hash if the selected output format would have normally included a
+space there.  In `--graph` mode, all the spaces between the commit mark
+(e.g. `*`) and the hash are turned into `_`.
+
+Running `git log-times --decorate --graph --no-merges -n 13 v2.6.1`
+on the Git repository results in this output:
+
+      === 2015-09-28 ===
+    * 22f698cb 19:19 jch (tag: v2.6.1) Git 2.6.1
+                         ..........
+    * 24358560 15:34 jch (tag: v2.5.4) Git 2.5.4
+                         ..........
+    * a2558fb8 15:30 jch (tag: v2.4.10) Git 2.4.10
+                         ..........
+    * 18b58f70 15:26 jch (tag: v2.3.10) Git 2.3.10
+                         ..........
+    * 83c4d380 14:58 jk  merge-file: enforce MAX_XDIFF_SIZE on incomi
+    * dcd1742e 14:57 jk  xdiff: reject files larger than ~1GB
+    * 3efb9880 14:57 jk  react to errors in xdi_diff
+    |   === 2015-09-25 ===
+    | * b2581164 15:32 bb  http: limit redirection depth
+    | * f4113cac 15:30 bb  http: limit redirection to protocol-whitel
+    | * 5088d3b3 15:28 jk  transport: refactor protocol whitelist cod
+    | | === 2015-09-23 ===
+    | * 33cfccbb 11:35 jk  submodule: allow only certain protocols fo
+    | * a5adaced 11:35 jk  transport: add a protocol-whitelist enviro
+    |/
+    |   === 2015-09-28 ===
+    | * be08dee9 13:18 jch (tag: v2.6.0) Git 2.6
+
+Notice how four linear breaks (`..........`) were automatically
+inserted to avoid parent child relationship confusion.
+
+In non `--graph` mode, linear breaks are NOT automatically inserted.
+They must be requested with the usual `--show-linear-break` option.
+
+
+Options
+-------
+
+In addition to allowing all the normal `git log` options except for
+`--notes`, `--format` and `--pretty` (`--oneline` is allowed and
+silently ignored), the following additional options may be utilized:
+
+   * `--seconds`  
+     include seconds in the time (i.e. HH:MM:SS instead of just HH:MM)
+
+   * `--minutes`  
+     include minutes but not seconds in the time (i.e. HH:MM not HH:MM:SS)  
+     This is the default
+
+   * `--no-times`  
+     omit the time field entirely
+
+   * `--two-initials`  
+     only show at most two initials instead of the usual three  
+     This is the default if `--initials=author,committer` or
+     `--initials=committer,author` is used.
+
+   * `--three-initials`  
+     show at most three initials  
+     This is the default unless `--initials=author,committer` or
+     `--initials=committer,author` is used.
+
+   * `--no-initials`  
+     omit the initials field entirely
+
+   * `--commit-message`  
+     when using `--walk-reflogs` show commit message not reflog message
+
+   * `--author-date`  
+     force use of author dates and times  
+     The default is to use committer dates and times unless
+     `--author-date-order` is in effect.  This option forces author
+     dates and times to always be used and overrides `--committer-date`.
+
+   * `--committer-date`  
+     force use of committer dates and times  
+     The default is to use committer dates and times if `--date-order` or
+     `--topo-order` is in effect or `--author-date-order` is NOT in effect.
+     This option forces committer dates and times to always be used and
+     overrides a previous `--author-date` option.
+
+   * `--initials=author`  
+     show author initials  
+     This is the default behavior
+
+   * `--initials=committer`  
+     show committer initials instead of author initials
+
+   * `--initials=author,committer`  
+     show author and commiter initials separated by a `/`  
+     This changes the initials width default from three to two.
+
+   * `--initials=committer,author`  
+     show commiter and author initials separated by a `/`  
+     This changes the initials width default from three to two.
+
+   * `--time-zone=zone`  
+     set the TZ environment variable to `zone`  
+     This is an alterative to setting TZ before running `git log-times`
+     and will affect the time zone dates and times are displayed in.
+
+   * `--weekday`  
+     show the weekday with the date
+
+   * `--no-weekday`  
+     do not show the weekday with the date  
+     This is the default behavior
+
+In addition to the above options, color output is controlled as normal
+for `git log` with the addition of `color.log-times.date`,
+`color.log-times.time` and `color.log-times.initials` config options to alter
+the default colors for dates, times and initials respectively.
+
+Furthermore, default options may be set in the `log-times.defaults`
+config value and they will be treated as though they appeared at
+the very beginning of the `git log-times` command line option list
+(e.g. `git config log-times.defaults "--abbrev=8 --seconds"`).
diff --git a/contrib/git-log-times/git-log-times b/contrib/git-log-times/git-log-times
new file mode 100755
index 00000000..d0e5face
--- /dev/null
+++ b/contrib/git-log-times/git-log-times
@@ -0,0 +1,464 @@
+#!/usr/bin/env perl
+
+# git-log-times.pl -- git log --oneline variation with dates, times and initials
+# Copyright (C) 2015,2016 Kyle J. McKay <mackyle@gmail.com>.  All rights reserved.
+
+# License GPL v2
+
+# Version 1.0
+
+use 5.008;
+use strict;
+use warnings;
+use File::Basename qw(basename);
+use POSIX qw(strftime _exit);
+use Encode;
+
+my $USAGE = <<'USAGE';
+usage: git%slog-times [<options>] [<revision-range>] [[--] <path>...]
+
+    -h                    Show this help
+    --seconds             Use HH:MM:SS instead of just the default HH:MM
+    --minutes             Use just HH:MM (default) for times not HH:MM:SS
+    --no-times            Omit the time field entirely
+    --two-initials        Use maximum of two initials instead of default three
+    --three-initials      Use maximum of three initials (default)
+    --no-initials         Omit the initials field entirely
+    --commit-message      Show the commit message when using --walk-reflogs
+    --author-date         Use author dates and times
+    --committer-date      Use committer dates and times (default)
+    --initials=author     Use author initials (default)
+    --initials=committer  Use committer initials
+    --intiials=author,committer
+                          Use author/committer initials and --two-initials
+    --intiials=committer,author
+                          Use committer/author initials and --two-initials
+    --time-zone=<zone>    Set TZ environment variable to <zone>
+    --weekday             Show the weekday with the date
+    --no-weekday          Do not show the weekday with the date (default)
+
+    other log options     See `git help log` for more information
+
+Default colors for dates, times and initials may be changed by setting
+`color.log-times.date`, `color.log-times.time` and/or
+`color.log-times.initials` config values.  Dates and times are shown in the
+local time zone if TZ is not set in the environment and the `--time-zone`
+option has not been used.  Default options may be set in the
+`log-times.defaults` config value and they will be treated as though they were
+listed first in the command line options list (e.g.
+`git config log-times.defaults "--abbrev=8 --seconds"`)
+USAGE
+
+my $timeformat = "%H:%M";
+
+$SIG{PIPE} = sub {_exit 1};
+
+sub dodie {
+	my $msg = join(" ", @_);
+	chomp $msg;
+	die basename($0).": fatal: ".$msg."\n";
+}
+
+my ($setusedecorate, $usedecorate);
+sub use_decorate {
+	return $usedecorate if $setusedecorate;
+	my $do = qx(git config --get log.decorate 2>/dev/null) || "0";
+	chomp $do;
+	return 0 if $do eq "0" || $do eq "false" || $do eq "off";
+	return 0 if $do eq "auto" && ! -t STDOUT;
+	return 1;
+}
+
+my $iw;
+sub get_initials {
+	my $initials = shift;
+	my $wasutf8 = utf8::decode($initials);
+	$initials = lc($initials)." ";
+	$initials =~ s/[.]/ /g;
+	$initials =~ s/ iii? / /g;
+	$initials =~ s/ iv / /g;
+	$initials =~ s/ [js]r / /g;
+	$initials =~ s/[,;:'\042+_-]//g;
+	$initials =~ s/\([^(]*?\)/ /g;
+	$initials =~ s/\[[^[]*?\]/ /g;
+	$initials =~ s/\s+/ /g;
+	$initials =~ s/^ //g;
+	return "jc" if $iw == 2 && $initials eq "junio c hamano ";
+	$initials =~ s/([^ ])[^ ]* /$1/g;
+	if ($iw == 2) {
+		$initials =~ s/^(.).+(.)$/$1$2/;
+	} else {
+		$initials =~ s/^(..).+(.)$/$1$2/;
+	}
+	utf8::encode($initials) if $wasutf8;
+	return $initials;
+}
+
+sub get_nocolor_indent {
+	my $indent = shift;
+	$indent =~ s/\033[^m]*m//g;
+	$indent =~ s/\s+$//;
+	$indent =~ s/-+\.$//;
+	return $indent;
+}
+
+sub get_blank_graph_indent {
+	my $indent = shift;
+	chomp $indent;
+	$indent =~ s/\033[^m]*m//g;
+	$indent =~ s/^[\s|]+//;
+	return $indent;
+}
+
+sub get_first_indent {
+	my $indent = shift;
+	$indent =~ s/\033[^m]*m//g;
+	$indent =~ s/./ /gs;
+	return $indent;
+}
+
+my $nobar;
+my $barcolor;
+my $resetcolor = "";
+
+sub get_bar_color {
+	my ($prefix, $index) = @_;
+	my $c = (split(m{[-=^<>*+o /|\\_]}, $prefix))[$index];
+	$c =~ s/\Q$resetcolor\E//g if $resetcolor;
+	return $c;
+}
+
+sub get_indent {
+	my $indent = shift;
+	if ($nobar) {
+		$indent =~ tr/\-=^<>*+o./         /;
+	} else {
+		$indent =~ s/[-=^<>*+o]/$barcolor ? $barcolor."|".$resetcolor : "|"/e;
+		$indent =~ tr/\-./  /;
+	}
+	return $indent;
+}
+
+sub get_prefix {
+	my $indent = shift;
+	$indent =~ tr'\/'||';
+	return $indent;
+}
+
+sub get_defaults {
+	# defaults are cumulative, but an empty setting resets
+	my @defaults = ();
+	my $opts = qx(git config --get-all log-times.defaults 2>/dev/null);
+	chomp($opts);
+	foreach (split(/\r\n|\r|\n/, $opts, -1)) {
+		s/^\s+//; s/\s+$//;
+		if ($_ eq "") {
+			@defaults = ();
+			next;
+		}
+		push(@defaults, $_);
+	}
+	return split(" ", join(" ", @defaults));
+}
+
+system("git rev-parse --git-dir >/dev/null") == 0 or exit(1);
+my ($usemark, $usegraph, $usereflog, $useboundary, $useleftright, $usecherry, $setusecolor, $usecolor, $usecad);
+my @args = ();
+my $lastwasgrep;
+my $dateopt = "%ct";
+my $usewkday;
+my $reflogsubj = "%gs";
+my $sawdashdash;
+$iw = undef;
+my $iw2 = "";
+my ($committer, $author, $ivar, $ivar2);
+$ivar = \$author;
+foreach my $arg (get_defaults(), @ARGV) {
+	my $nextisgrep;
+	if ($sawdashdash || $lastwasgrep) {
+		push(@args, $arg);
+		$lastwasgrep = $nextisgrep;
+		next;
+	}
+	if ($arg eq "-h") {
+		my $dash = "-";
+		my $exec_path = qx(git --exec-path 2>/dev/null);
+		chomp $exec_path;
+		$dash = " " if $ENV{PATH} =~ /^\Q$exec_path\E:/;
+		printf "$USAGE\n", $dash;
+		exit 0;
+	} elsif ($arg eq "--oneline") {
+		# silently ignore --oneline as we are always in a one line format
+		next;
+	} elsif ($arg eq "--seconds") {
+		# extra option
+		$timeformat = "%H:%M:%S";
+		next;
+	} elsif ($arg eq "--minutes") {
+		# extra option
+		$timeformat = "%H:%M";
+		next;
+	} elsif ($arg eq "--no-times") {
+		# extra option
+		$timeformat = "";
+		next;
+	} elsif ($arg eq "--two-initials") {
+		# extra option
+		$iw = 2;
+		next;
+	} elsif ($arg eq "--three-initials") {
+		# extra option
+		$iw = 3;
+		next;
+	} elsif ($arg eq "--no-initials") {
+		# extra option
+		$iw = 0;
+		next;
+	} elsif ($arg eq "--two-initials") {
+		# extra option
+		$iw = 3;
+		next;
+	} elsif ($arg eq "--commit-message") {
+		# extra option
+		$reflogsubj = "%s";
+		next;
+	} elsif ($arg eq "--author-date") {
+		# extra option
+		$dateopt = "%at";
+		$usecad = 1;
+		next;
+	} elsif ($arg eq "--committer-date") {
+		# extra option
+		$dateopt = "%ct";
+		$usecad = 1;
+		next;
+	} elsif ($arg eq "--weekday") {
+		# extra option
+		$usewkday = 1;
+		next;
+	} elsif ($arg eq "--no-weekday") {
+		# extra option
+		$usewkday = undef;
+		next;
+	} elsif ($arg =~ /^--initials=/) {
+		# extra option
+		$arg =~ s/^--initials=//;
+		if ($arg eq "author") {
+			$ivar = \$author;
+			$ivar2 = undef;
+		} elsif ($arg eq "committer") {
+			$ivar = \$committer;
+			$ivar2 = undef;
+		} elsif ($arg eq "committer,author" || $arg eq "committer/author") {
+			$ivar = \$committer;
+			$ivar2 = \$author;
+		} elsif ($arg eq "author,committer" || $arg eq "author/committer") {
+			$ivar = \$author;
+			$ivar2 = \$committer;
+		} else {
+			dodie "--initials= requires 'author', 'committer' or 'committer,author'";
+		}
+		next;
+	} elsif ($arg =~ /^--time-zone=/) {
+		# extra option
+		$arg =~ s/^--time-zone=//;
+		$ENV{TZ} = $arg;
+		next;
+	} elsif ($arg eq "--date-order" || $arg eq "--topo-order") {
+		$dateopt = "%ct" unless $usecad;
+	} elsif ($arg eq "--author-date-order") {
+		$dateopt = "%at";
+	} elsif ($arg =~ /^--(pretty|pretty=.*|format=.*|notes|show-notes|show-notes=.*|standard-notes)$/) {
+		dodie "formatting/notes option not allowed: $arg";
+	} elsif ($arg eq "--no-decorate" || $arg eq "--decorate=no") {
+		$setusedecorate = 1;
+		$usedecorate = undef;
+	} elsif ($arg eq "--decorate=auto") {
+		$setusedecorate = 1;
+		$usedecorate = -t STDOUT ? 1 : undef;
+	} elsif ($arg eq "--decorate" || $arg =~ /^--decorate=/) {
+		$setusedecorate = 1;
+		$usedecorate = 1;
+	} elsif ($arg eq "--color" || $arg eq "--color=always") {
+		$setusecolor = 1;
+		$usecolor = 1;
+	} elsif ($arg eq "--no-color" || $arg eq "--color=never") {
+		$setusecolor = 1;
+		$usecolor = undef;
+	} elsif ($arg eq "--color=auto") {
+		$setusecolor = 1;
+		$usecolor = -t STDOUT ? 1 : undef;
+	} elsif ($arg eq "-g" || $arg eq "--walk-reflogs") {
+		$usereflog = 1;
+	} elsif ($arg eq "--boundary") {
+		$useboundary = 1;
+		$usemark = 1;
+	} elsif ($arg eq "--cherry-mark" || $arg eq "--cherry") {
+		$usecherry = 1;
+		$usemark = 1;
+	} elsif ($arg eq "--left-right") {
+		$useleftright = 1;
+		$usemark = 1;
+	} elsif ($arg eq "--graph") {
+		$usegraph = 1;
+	} elsif ($arg =~ /^(--grep|--grep-reflog|-S|-G)$/) {
+		$nextisgrep = 1;
+	} elsif ($arg eq "--") {
+		$sawdashdash = 1;
+	}
+	push(@args, $arg);
+	$lastwasgrep = $nextisgrep;
+}
+$iw = defined($ivar2) ? 2 : 3 unless defined($iw);
+$iw = "" if !$iw;
+$iw2 = $iw if defined($ivar2);
+my ($mark, $fixmark) = ("");
+$mark = "%m " unless $usegraph || !$usemark;
+if ($mark && !$useleftright) {
+	$fixmark = " ";
+	$fixmark = "+" if $usecherry;
+}
+
+my $color = "never";
+my ($hashcolor, $datecolor, $timecolor, $initialscolor, $autocolor) = ("", "", "", "", "");
+$usecolor = 1 if !$setusecolor && system("git", "config", "--get-colorbool", "color.diff") == 0;
+if ($usecolor) {
+	$color = "always";
+	$autocolor = "%C(auto)";
+	$hashcolor= qx(git config --get-color color.diff.commit "yellow");
+	$datecolor= qx(git config --get-color color.log-times.date "bold blue");
+	$timecolor= qx(git config --get-color color.log-times.time "green") if $timeformat;
+	$initialscolor = qx(git config --get-color color.log-times.initials "red") if $iw;
+	$resetcolor = qx(git config --get-color "" "reset");
+}
+my $decopt = "";
+$decopt = "$autocolor%d" if use_decorate;
+my $pager = qx(git var GIT_PAGER);
+defined($pager) and chomp $pager;
+$ENV{LESS} = "-FRX" unless exists $ENV{LESS};
+$ENV{LV} = "-c" unless exists $ENV{LV};
+
+my ($lastdate, $lastprefix, $lastplainprefix) = ("");
+my $msgopt = "%s";
+$msgopt = "%gd: $reflogsubj" if $usereflog;
+my $lastwasroot = 1;
+open(LOG, '-|', "git", "log", "--color=$color",
+	"--format=tformat:$mark%x1fCOMMIT %H %h $dateopt%x1f%cn%x1f%an%x1f%P%x1f$decopt $msgopt%x1f",
+	@args) or exit(1);
+if (defined($pager) && $pager ne "cat") {
+	open OUT, "|$pager" or dodie "could not run pager \"$pager\": $!\n";
+} else {
+	open OUT, '>&STDOUT' or die "could not dupe STDOUT: $!";
+}
+select((select(OUT),$|=1)[0]);
+my $delblank;
+my @lastparents = ();
+my $lastwascommit;
+my ($prefix, $data, $parentlist, $subject);
+while (my $logline = <LOG>) {
+	($prefix, $data, $committer, $author, $parentlist, $subject) = split(/\x1f/, $logline, -1);
+	$subject =~ s/ // if $subject;
+	my ($flag, $fullhash, $hash, $timestamp) = split(" ", $data, 4) if defined($data);
+	if (!defined($flag) || $flag ne "COMMIT") {
+		chomp $prefix;
+		$delblank = 0, next if $delblank && !$usegraph && $prefix =~ /^\s*$/;
+		$delblank = 0, next if $delblank && $usegraph && !get_blank_graph_indent($prefix);
+		print OUT "$prefix\n";
+		$lastprefix = $prefix;
+		$lastplainprefix = undef;
+		@lastparents = ();
+		$lastwascommit = undef;
+		next;
+	}
+	my $isroot = !$parentlist;
+	my @parents = split(' ', $parentlist) if $usegraph;
+	my $initials = $iw ? get_initials($$ivar) : "";
+	my $initials2 = $iw2 ? get_initials($$ivar2) : "";
+	my ($newdate, $newday, $newtime) = split(" ", strftime("%Y-%m-%d %a $timeformat", localtime($timestamp)));
+	$newdate .= " " . $newday if $usewkday;
+	my $mightneedbreak = $lastwascommit && !$lastwasroot && $usegraph && !grep($_ eq $fullhash, @lastparents);
+	if ($lastdate ne $newdate || $mightneedbreak) {
+		my $indent = "";
+		if (!$lastdate || $mark) {
+			$indent = get_first_indent($prefix);
+			$lastprefix = $prefix;
+			$lastplainprefix = undef;
+		} elsif ($prefix ne "") {
+			my $newplainprefix = get_nocolor_indent($prefix);
+			defined($lastplainprefix) or $lastplainprefix = get_nocolor_indent($lastprefix);
+			$nobar = undef;
+			$barcolor = undef;
+			if ($newplainprefix =~ /^(.*?[-=^<>*+o])/) {{
+				my $marklen = length($1);
+				my $difflen = length($lastplainprefix) - length($1);
+				$nobar = 1;
+				if ($difflen >= 0) {
+					my $lastmark = substr($lastplainprefix, $marklen-1, 1);
+					$lastmark =~ /[-=^<>*+o]/ and $nobar = $lastwasroot || $mightneedbreak, last;
+					$lastmark eq "|" && $lastdate ne $newdate and
+						$nobar = 0,
+						$barcolor = get_bar_color($lastprefix, $marklen - 1),
+						last;
+				}
+				if ($lastdate eq $newdate) {
+					$lastprefix = $prefix;
+					$lastplainprefix = $newplainprefix;
+					goto NOBREAKNEEDED;
+				}
+				$difflen >= -1 or last;
+				substr($lastplainprefix, $marklen-2, 1) eq "\\" and
+					$nobar = 0,
+					$barcolor = get_bar_color($lastprefix, $marklen - 2),
+					last;
+				$difflen >= 1 &&
+				substr($lastplainprefix, $marklen, 1) eq "/" and
+					$nobar = 0,
+					$barcolor = get_bar_color($lastprefix, $marklen);
+			}}
+			$indent = get_indent($prefix);
+			$lastprefix = $prefix;
+			$prefix = get_prefix($prefix);
+			$lastplainprefix = $newplainprefix;
+		}
+		if ($lastdate ne $newdate) {
+			printf OUT "%s%s=== %s ===%s\n", $indent,
+				$datecolor, $newdate, $resetcolor;
+			$lastdate = $newdate;
+		} else {
+			printf OUT "%s%s %s%s%-${iw}s%s%-${iw2}s %s\n", $indent,
+				' ' x length($hash), ' ' x length($newtime),
+				($iw ? " " : ""), "", ($iw2 ? " " : ""), "",
+				"..........";
+		}
+	} else {
+		$lastprefix = $prefix;
+		$lastplainprefix = undef;
+	}
+NOBREAKNEEDED:
+	$lastwasroot = $isroot;
+	@lastparents = @parents;
+	$lastwascommit = 1;
+	my $rootflag = " ";
+	if ($isroot) {
+		$rootflag = "_";
+		$prefix = substr($prefix, 0, length($prefix) - 1) . "_"
+			if length($prefix);
+		if ($prefix =~ /^(.*?[-=^<>*+o])(.+)$/) {
+			my ($initial, $trail) = ($1, $2);
+			$trail =~ tr/ /_/;
+			$prefix = $initial . $trail;
+		}
+	}
+	if ($fixmark) {
+		$prefix = $fixmark . substr($prefix, 1)
+			if $prefix =~ /^[<>]/;
+	}
+	printf OUT "%s%s%s%s%s%-${iw}s%s%-${iw2}s%s%s\n", $prefix,
+		"$hashcolor$hash$resetcolor",
+		$rootflag, ($timeformat ? "$timecolor$newtime$resetcolor " : ""),
+		$initialscolor, $initials, ($iw2 ? "/" : ""), $initials2,
+		($iw ? "$resetcolor " : ""), $subject;
+	$delblank = 1;
+}
+close LOG;
+close OUT;
---

^ permalink raw reply related	[relevance 1%]

* [ANNOUNCE] Git v2.6.0
@ 2015-09-28 23:20  1% Junio C Hamano
  0 siblings, 0 replies; 13+ results
From: Junio C Hamano @ 2015-09-28 23:20 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest feature release Git v2.6.0 is now available at the
usual places.  It is comprised of 479 non-merge commits since
v2.5.0, contributed by 67 people, 15 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.6.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.5.0 are as follows.
Welcome to the Git development community!

  Antoine Delaite, Brett Randall, Brian Degenhardt, Brian Norris,
  Erik Elfström, Galan Rémi, Guillaume Pagès, Ismael Luceno,
  Jan Viktorin, Jose F. Morales, Lars Schneider, Matthieu Prat,
  Michael Rappazzo, Simon A. Eugster, and Zoë Blade.

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

  Alejandro R. Sedeño, Alexander Shopov, Alex Henrie, Andreas
  Schwab, Beat Bolli, brian m. carlson, Charles Bailey, Christian
  Couder, Clemens Buchacher, Dave Borowitz, David Aguilar, David
  Turner, Edward Thomson, Elia Pinto, Eric Sunshine, Giuseppe
  Bilotta, Heiko Voigt, Ilya Bobyr, Jacob Keller, Jean-Noel
  Avila, Jeff King, Jiang Xin, Jim Hill, Johannes Schindelin,
  Johannes Sixt, Junio C Hamano, Karsten Blees, Karthik Nayak,
  Kevin Daudt, Marc Branchaud, Matthieu Moy, Michael Haggerty,
  Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
  Steinhardt, Paul Mackerras, Paul Tan, Peter Krefting, Philip
  Oakley, Phillip Sz, Ralf Thielow, Ramsay Jones, Ray Chen, Remi
  Lespinet, René Scharfe, Stefan Beller, Sven Strickroth, SZEDER
  Gábor, Thomas Ackermann, Thomas Braun, and Trần Ngọc Quân.

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

Git 2.6 Release Notes
=====================

Updates since v2.5
------------------

UI, Workflows & Features

 * An asterisk as a substring (as opposed to the entirety) of a path
   component for both side of a refspec, e.g.
   "refs/heads/o*:refs/remotes/heads/i*", is now allowed.

 * New userdiff pattern definition for fountain screenwriting markup
   format has been added.

 * "git log" and friends learned a new "--date=format:..." option to
   format timestamps using system's strftime(3).

 * "git fast-import" learned to respond to the get-mark command via
   its cat-blob-fd interface.

 * "git rebase -i" learned "drop commit-object-name subject" command
   as another way to skip replaying of a commit.

 * A new configuration variable can enable "--follow" automatically
   when "git log" is run with one pathspec argument.

 * "git status" learned to show a more detailed information regarding
   the "rebase -i" session in progress.

 * "git cat-file" learned "--batch-all-objects" option to enumerate all
   available objects in the repository more quickly than "rev-list
   --all --objects" (the output includes unreachable objects, though).

 * "git fsck" learned to ignore errors on a set of known-to-be-bad
   objects, and also allows the warning levels of various kinds of
   non-critical breakages to be tweaked.

 * "git rebase -i"'s list of todo is made configurable.

 * "git send-email" now performs alias-expansion on names that are
   given via --cccmd, etc.

 * An environment variable GIT_REPLACE_REF_BASE tells Git to look into
   refs hierarchy other than refs/replace/ for the object replacement
   data.

 * Allow untracked cache (experimental) to be used when sparse
   checkout (experimental) is also in use.

 * "git pull --rebase" has been taught to pay attention to
   rebase.autostash configuration.

 * The command-line completion script (in contrib/) has been updated.

 * A negative !ref entry in multi-value transfer.hideRefs
   configuration can be used to say "don't hide this one".

 * After "git am" without "-3" stops, running "git am -3" pays attention
   to "-3" only for the patch that caused the original invocation
   to stop.

 * When linked worktree is used, simultaneous "notes merge" instances
   for the same ref in refs/notes/* are prevented from stomping on
   each other.

 * "git send-email" learned a new option --smtp-auth to limit the SMTP
   AUTH mechanisms to be used to a subset of what the system library
   supports.

 * A new configuration variable http.sslVersion can be used to specify
   what specific version of SSL/TLS to use to make a connection.

 * "git notes merge" can be told with "--strategy=<how>" option how to
   automatically handle conflicts; this can now be configured by
   setting notes.mergeStrategy configuration variable.

 * "git log --cc" did not show any patch, even though most of the time
   the user meant "git log --cc -p -m" to see patch output for commits
   with a single parent, and combined diff for merge commits.  The
   command is taught to DWIM "--cc" (without "--raw" and other forms
   of output specification) to "--cc -p -m".

 * "git config --list" output was hard to parse when values consist of
   multiple lines.  "--name-only" option is added to help this.

 * A handful of usability & cosmetic fixes to gitk and l10n updates.

 * A completely empty e-mail address <> is now allowed in the authors
   file used by git-svn, to match the way it accepts the output from
   authors-prog.


Performance, Internal Implementation, Development Support etc.

 * In preparation for allowing different "backends" to store the refs
   in a way different from the traditional "one ref per file in
   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
   from scripts and programs has been reduced.

 * Computation of untracked status indicator by bash prompt
   script (in contrib/) has been optimized.

 * Memory use reduction when commit-slab facility is used to annotate
   sparsely (which is not recommended in the first place).

 * Clean up refs API and make "git clone" less intimate with the
   implementation detail.

 * "git pull" was reimplemented in C.

 * The packet tracing machinery allows to capture an incoming pack
   data to a file for debugging.

 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
   and 2G as an option parameter's value from pack-objects to
   parse-options API, to make it available to other codepaths.

 * "git verify-tag" and "git verify-commit" have been taught to share
   more code, and then learned to optionally show the verification
   message from the underlying GPG implementation.

 * Various enhancements around "git am" reading patches generated by
   foreign SCM have been made.

 * Ref listing by "git branch -l" and "git tag -l" commands has
   started to be rebuilt, based on the for-each-ref machinery.

 * The code to perform multi-tree merges has been taught to repopulate
   the cache-tree upon a successful merge into the index, so that
   subsequent "diff-index --cached" (hence "status") and "write-tree"
   (hence "commit") will go faster.

   The same logic in "git checkout" may now be removed, but that is a
   separate issue.

 * Tests that assume how reflogs are represented on the filesystem too
   much have been corrected.

 * "git am" has been rewritten in "C".

 * git_path() and mkpath() are handy helper functions but it is easy
   to misuse, as the callers need to be careful to keep the number of
   active results below 4.  Their uses have been reduced.

 * The "lockfile" API has been rebuilt on top of a new "tempfile" API.

 * To prepare for allowing a different "ref" backend to be plugged in
   to the system, update_ref()/delete_ref() have been taught about
   ref-like things like MERGE_HEAD that are per-worktree (they will
   always be written to the filesystem inside $GIT_DIR).

 * The gitmodules API that is accessed from the C code learned to
   cache stuff lazily.


Also contains various documentation updates and code clean-ups.


Fixes since v2.5
----------------

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

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.
   (merge e7aac44 da/subtree-date-confusion later to maint).

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.
   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.
   (merge d830d39 db/send-pack-user-signingkey later to maint).

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.
   (merge 7d78241 as/sparse-checkout-removal later to maint).

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.
   (merge 100e433 cb/uname-in-untracked later to maint).

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".
   (merge f303016 se/doc-checkout-ours-theirs later to maint).

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.
   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.
   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.
   (merge d95138e nd/export-worktree later to maint).

 * "Is this subdirectory a separate repository that should not be
   touched?" check "git clean" was inefficient.  This was replaced
   with a more optimized check.
   (merge fbf2fec ee/clean-remove-dirs later to maint).

 * The "new-worktree-mode" hack in "checkout" that was added in
   nd/multiple-work-trees topic has been removed by updating the
   implementation of new "worktree add".
   (merge 65f9b75 es/worktree-add-cleanup later to maint).

 * Remove remaining cruft from  "git checkout --to", which
   transitioned to "git worktree add".
   (merge 114ff88 es/worktree-add later to maint).

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.
   (merge bc598c3 mh/get-remote-group-fix later to maint).

 * "git clone $URL", when cloning from a site whose sole purpose is to
   host a single repository (hence, no path after <scheme>://<site>/),
   tried to use the site name as the new repository name, but did not
   remove username or password when <site> part was of the form
   <user>@<pass>:<host>.  The code is taught to redact these.
   (merge adef956 ps/guess-repo-name-at-root later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.
   (merge faacc5a ps/t1509-chroot-test-fixup later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

   Note that this is irrelevant for 'master' with "git pull" rewritten
   in C.
   (merge 13e0e28 mm/pull-upload-pack later to maint).

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.
   (merge dff6f28 cb/open-noatime-clear-errno later to maint).

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().
   (merge f4c3edc jk/long-error-messages later to maint).

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.
   (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).

 * We rewrote one of the build scripts in Perl but this reimplements
   in Bourne shell.
   (merge 57cee8a sg/help-group later to maint).

 * The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.
   (merge 73f9145 dt/untracked-subdir later to maint).

 * "interpret-trailers" helper mistook a single-liner log message that
   has a colon as the end of existing trailer.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.
   (merge 5c99995 cc/trailers-corner-case-fix later to maint).

 * "git describe" without argument defaulted to describe the HEAD
   commit, but "git describe --contains" didn't.  Arguably, in a
   repository used for active development, such defaulting would not
   be very useful as the tip of branch is typically not tagged, but it
   is better to be consistent.
   (merge 2bd0706 sg/describe-contains later to maint).

 * The client side codepaths in "git push" have been cleaned up
   and the user can request to perform an optional "signed push",
   i.e. sign only when the other end accepts signed push.
   (merge 68c757f db/push-sign-if-asked later to maint).

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.
   (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.
   (merge 2aea7a5 jk/rev-list-has-no-notes later to maint).

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).
   (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?
   (merge 88329ca rs/archive-zip-many later to maint).

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.
   (merge 82fde87 nd/fixup-linked-gitdir later to maint).

 * On case insensitive systems, "git p4" did not work well with client
   specs.

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.
   (merge ce11360 jk/log-missing-default-HEAD later to maint).

 * Recent versions of scripted "git am" has a performance regression in
   "git am --skip" codepath, which no longer exists in the built-in
   version on the 'master' front.  Fix the regression in the last
   scripted version that appear in 2.5.x maintenance track and older.
   (merge b9d6689 js/maint-am-skip-performance-regression later to maint).

 * The branch descriptions that are set with "git branch --edit-description"
   option were used in many places but they weren't clearly documented.
   (merge 561d2b7 po/doc-branch-desc later to maint).

 * Code cleanups and documentation updates.
   (merge 1c601af es/doc-clean-outdated-tools later to maint).
   (merge 3581304 kn/tag-doc-fix later to maint).
   (merge 3a59e59 kb/i18n-doc later to maint).
   (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
   (merge 14691e3 sb/parse-options-codeformat later to maint).
   (merge 4a6ada3 ad/bisect-cleanup later to maint).
   (merge da4c5ad ta/docfix-index-format-tech later to maint).
   (merge ae25fd3 sb/check-return-from-read-ref later to maint).
   (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
   (merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
   (merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
   (merge 1269847 sg/t3020-typofix later to maint).
   (merge 8b54c23 jc/calloc-pathspec later to maint).
   (merge a6926b8 po/po-readme later to maint).
   (merge 54d160e ss/fix-config-fd-leak later to maint).
   (merge b80fa84 ah/submodule-typofix-in-error later to maint).
   (merge 99885bc ah/reflog-typofix-in-error later to maint).
   (merge 9476c2c ah/read-tree-usage-string later to maint).
   (merge b8c1d27 ah/pack-objects-usage-strings later to maint).
   (merge 486e1e1 br/svn-doc-include-paths-config later to maint).
   (merge 1733ed3 ee/clean-test-fixes later to maint).
   (merge 5fcadc3 gb/apply-comment-typofix later to maint).
   (merge b894d3e mp/t7060-diff-index-test later to maint).
   (merge d238710 as/config-doc-markup-fix later to maint).

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

Changes since v2.5.0 are as follows:

Alejandro R. Sedeño (1):
      Makefile: use SHELL_PATH when running generate-cmdlist.sh

Alex Henrie (8):
      gitk: Fix bad English grammar "Matches none Commit Info"
      gitk: Remove mc parameter from proc show_error
      reflog: add missing single quote to error message
      git-submodule: remove extraneous space from error message
      pack-objects: place angle brackets around placeholders in usage strings
      read-tree: replace bracket set with parentheses to clarify usage
      show-ref: place angle brackets around variables in usage string
      l10n: ca.po: update translation

Alexander Shopov (2):
      gitk: Update Bulgarian translation (304t)
      gitk: Update Bulgarian translation (307t)

Andreas Schwab (2):
      Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
      Documentation/config: fix formatting for branch.*.rebase and pull.rebase

Antoine Delaite (3):
      bisect: correction of typo
      bisect: replace hardcoded "bad|good" by variables
      bisect: simplify the addition of new bisect terms

Beat Bolli (2):
      gitk: Add a "Copy commit summary" command
      gitk: Adjust the menu line numbers to compensate for the new entry

Brett Randall (1):
      git-svn doc: mention "svn-remote.<name>.include-paths"

Brian Degenhardt (1):
      unpack-trees: populate cache-tree on successful merge

Brian Norris (1):
      send-email: fix uninitialized var warning for $smtp_auth

Charles Bailey (3):
      test-parse-options: update to handle negative ints
      parse-options: move unsigned long option parsing out of pack-objects.c
      untracked: fix detection of uname(2) failure

Christian Couder (3):
      trailer: ignore first line of message
      trailer: retitle a test and correct an in-comment message
      trailer: support multiline title

Clemens Buchacher (1):
      git_open_noatime: return with errno=0 on success

Dave Borowitz (9):
      Documentation/git-push.txt: document when --signed may fail
      Documentation/git-send-pack.txt: wrap long synopsis line
      Documentation/git-send-pack.txt: document --signed
      gitremote-helpers.txt: document pushcert option
      transport: remove git_transport_options.push_cert
      config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
      builtin/send-pack.c: use parse_options API
      push: support signing pushes iff the server supports it
      push: add a config option push.gpgSign for default signed pushes

David Aguilar (1):
      contrib/subtree: ignore log.date configuration

David Turner (22):
      log: add "log.follow" configuration variable
      unpack-trees: don't update files with CE_WT_REMOVE set
      refs.c: add err arguments to reflog functions
      refs: break out check for reflog autocreation
      refs: new public ref function: safe_create_reflog
      git-reflog: add exists command
      refs: add REF_FORCE_CREATE_REFLOG flag
      update-ref and tag: add --create-reflog arg
      git-stash: use update-ref --create-reflog instead of creating files
      t/t7509: remove unnecessary manipulation of reflog
      tests: remove some direct access to .git/logs
      refs: introduce pseudoref and per-worktree ref concepts
      refs: add ref_type function
      pseudorefs: create and use pseudoref update and delete functions
      bisect: use update_ref
      sequencer: replace write_cherry_pick_head with update_ref
      untracked-cache: support sparse checkout
      worktrees: add find_shared_symref
      notes: handle multiple worktrees
      pseudoref: check return values from read_ref()
      untracked-cache: fix subdirectory handling
      commit: don't rewrite shared index unnecessarily

Edward Thomson (1):
      poll: honor the timeout on Win32

Elia Pinto (1):
      http: add support for specifying the SSL version

Eric Sunshine (31):
      config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
      checkout: avoid resolving HEAD unnecessarily
      checkout: name check_linked_checkouts() more meaningfully
      checkout: improve die_if_checked_out() robustness
      checkout: die_if_checked_out: simplify strbuf management
      checkout: generalize die_if_checked_out() branch name argument
      checkout: check_linked_checkout: improve "already checked out" aesthetic
      checkout: check_linked_checkout: simplify symref parsing
      checkout: teach check_linked_checkout() about symbolic link HEAD
      branch: publish die_if_checked_out()
      worktree: improve worktree setup message
      worktree: simplify new branch (-b/-B) option checking
      worktree: introduce options container
      worktree: make --detach mutually exclusive with -b/-B
      worktree: add: suppress auto-vivication with --detach and no <branch>
      worktree: make branch creation distinct from worktree population
      worktree: elucidate environment variables intended for child processes
      worktree: add_worktree: construct worktree-population command locally
      worktree: detect branch-name/detached and error conditions locally
      worktree: make setup of new HEAD distinct from worktree population
      worktree: avoid resolving HEAD unnecessarily
      worktree: populate via "git reset --hard" rather than "git checkout"
      checkout: drop intimate knowledge of newly created worktree
      Documentation/git-worktree: fix broken 'linkgit' invocation
      Documentation/git: drop outdated Cogito reference
      Documentation/git-tools: improve discoverability of Git wiki
      Documentation/git-tools: fix item text formatting
      Documentation/git-tools: drop references to defunct tools
      Documentation/git-tools: retire manually-maintained list
      Documentation/config: mention "now" and "never" for 'expire' settings
      generate-cmdlist: re-implement as shell script

Erik Elfström (6):
      setup: add gentle version of read_gitfile
      setup: sanity check file size in read_gitfile_gently
      t7300: add tests to document behavior of clean and nested git
      p7300: add performance tests for clean
      clean: improve performance when removing lots of directories
      t7300: fix broken && chains

Galan Rémi (3):
      git-rebase -i: add command "drop" to remove a commit
      git rebase -i: warn about removed commits
      git rebase -i: add static check for commands and SHA-1

Giuseppe Bilotta (2):
      apply: comment grammar fix
      gitk: Accelerators for the main menu

Guillaume Pagès (4):
      status: factor two rebase-related messages together
      status: differentiate interactive from non-interactive rebases
      status: give more information during rebase -i
      status: add new tests for status during rebase -i

Heiko Voigt (4):
      submodule: implement a config API for lookup of .gitmodules values
      submodule: extract functions for config set and lookup
      submodule: use new config API for worktree configurations
      submodule: allow erroneous values for the fetchRecurseSubmodules option

Ilya Bobyr (1):
      rev-parse --parseopt: allow [*=?!] in argument hints

Ismael Luceno (1):
      gitk: Make it easier to go quickly to a specific commit

Jacob Keller (8):
      refs: cleanup comments regarding check_refname_component()
      refs: loosen restriction on wildcard "*" refspecs
      notes: document cat_sort_uniq rewriteMode
      notes: extract enum notes_merge_strategy to notes-utils.h
      notes: extract parse_notes_merge_strategy to notes-utils
      notes: add tests for --commit/--abort/--strategy exclusivity
      notes: add notes.mergeStrategy option to select default strategy
      notes: teach git-notes about notes.<name>.mergeStrategy option

Jan Viktorin (1):
      send-email: provide whitelist of SMTP AUTH mechanisms

Jean-Noel Avila (2):
      l10n: fr.po v2.6.0 round 1 (2441t)
      l10n: fr.po v2.6.0 round 2 (2440t)

Jeff King (51):
      pkt-line: simplify starts_with checks in packet tracing
      pkt-line: tighten sideband PACK check when tracing
      pkt-line: support tracing verbatim pack contents
      cat-file: minor style fix in options list
      cat-file: move batch_options definition to top of file
      cat-file: add --buffer option
      cat-file: stop returning value from batch_one_object
      cat-file: split batch_one_object into two stages
      cat-file: add --batch-all-objects option
      read_gitfile_gently: fix use-after-free
      cat-file: sort and de-dup output of --batch-all-objects
      show-branch: use DATE_RELATIVE instead of magic number
      convert "enum date_mode" into a struct
      introduce "format" date-mode
      strbuf: make strbuf_addftime more robust
      docs/config.txt: reorder hideRefs config
      refs: support negative transfer.hideRefs
      test-lib: turn off "-x" tracing during chain-lint check
      test-lib: disable trace when test is not verbose
      clone: add tests for output directory
      clone: use computed length in guess_dir_name
      cache.h: clarify documentation for git_path, et al
      cache.h: complete set of git_path_submodule helpers
      t5700: modernize style
      add_to_alternates_file: don't add duplicate entries
      prefer git_pathdup to git_path in some possibly-dangerous cases
      prefer mkpathdup to mkpath in assignments
      remote.c: drop extraneous local variable from migrate_file
      refs.c: remove extra git_path calls from read_loose_refs
      path.c: drop git_path_submodule
      refs.c: simplify strbufs in reflog setup and writing
      refs.c: avoid repeated git_path calls in rename_tmp_log
      refs.c: avoid git_path assignment in lock_ref_sha1_basic
      refs.c: remove_empty_directories can take a strbuf
      find_hook: keep our own static buffer
      get_repo_path: refactor path-allocation
      memoize common git-path "constant" files
      vreportf: report to arbitrary filehandles
      vreportf: avoid intermediate buffer
      format_config: don't init strbuf
      format_config: simplify buffer handling
      get_urlmatch: avoid useless strbuf write
      config: silence warnings for command names with invalid keys
      rev-list: make it obvious that we do not support notes
      log: diagnose empty HEAD more clearly
      rerere: release lockfile in non-writing functions
      pack-protocol: clarify LF-handling in PKT-LINE()
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Jiang Xin (8):
      receive-pack: crash when checking with non-exist HEAD
      l10n: TEAMS: stash inactive zh_CN team members
      l10n: zh_CN: Add translations for Git glossary
      i18n: am: fix typo in description of -b option
      l10n: git.pot: v2.6.0 round 1 (123 new, 41 removed)
      l10n: zh_CN: for git v2.6.0 l10n round 1
      l10n: git.pot: v2.6.0 round 2 (3 improvements)
      l10n: zh_CN: for git v2.6.0 l10n round 2

Jim Hill (1):
      strbuf_read(): skip unnecessary strbuf_grow() at eof

Johannes Schindelin (20):
      fsck: introduce fsck options
      fsck: introduce identifiers for fsck messages
      fsck: provide a function to parse fsck message IDs
      fsck: offer a function to demote fsck errors to warnings
      fsck (receive-pack): allow demoting errors to warnings
      fsck: report the ID of the error/warning
      fsck: make fsck_ident() warn-friendly
      fsck: make fsck_commit() warn-friendly
      fsck: handle multiple authors in commits specially
      fsck: make fsck_tag() warn-friendly
      fsck: add a simple test for receive.fsck.<msg-id>
      fsck: disallow demoting grave fsck errors to warnings
      fsck: optionally ignore specific fsck issues completely
      fsck: allow upgrading fsck warnings to errors
      fsck: document the new receive.fsck.<msg-id> options
      fsck: support demoting errors to warnings
      fsck: introduce `git fsck --connectivity-only`
      fsck: git receive-pack: support excluding objects from fsck'ing
      fsck: support ignoring objects in `git fsck` via fsck.skiplist
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Johannes Sixt (2):
      t7300-clean: require POSIXPERM for chmod 0 test
      t2019: skip test requiring '*' in a file name non Windows

Jose F. Morales (1):
      Mingw: verify both ends of the pipe () call

Junio C Hamano (40):
      commit-slab: introduce slabname##_peek() function
      builtin/send-pack.c: respect user.signingkey
      Git 2.4.8
      First batch for 2.6
      sha1_file.c: rename move_temp_to_file() to finalize_object_file()
      Second batch for 2.6
      Third batch for 2.6
      Start preparing for 2.5.1
      Fourth batch for 2.6
      ps_matched: xcalloc() takes nmemb and then element size
      log: rename "tweak" helpers
      log: when --cc is given, default to -p unless told otherwise
      log: show merge commit when --cc is given
      builtin/am: introduce write_state_*() helper functions
      builtin/am: make sure state files are text
      write_file(): drop "fatal" parameter
      write_file_v(): do not leave incomplete line at the end
      write_file(): drop caller-supplied LF from calls to create a one-liner file
      builtin/log.c: minor reformat
      Fifth batch for 2.6
      pull: pass upload_pack only when it was given
      Sixth batch for 2.6
      Git 2.5.1
      Seventh batch for 2.6
      Eighth batch for 2.6
      Ninth batch for 2.6
      Git 2.6-rc0
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9
      Git 2.5.2
      am: match --signoff to the original scripted version
      Git 2.6-rc1
      Release Notes: typofix
      Git 2.6-rc2
      Update RelNotes to 2.6 to describe leftover bits since -rc2
      Git 2.5.3
      Update RelNotes to 2.6
      Git 2.6-rc3
      Git 2.6

Karsten Blees (1):
      Documentation/i18n.txt: clarify character encoding support

Karthik Nayak (12):
      for-each-ref: extract helper functions out of grab_single_ref()
      for-each-ref: clean up code
      for-each-ref: rename 'refinfo' to 'ref_array_item'
      for-each-ref: introduce new structures for better organisation
      for-each-ref: introduce 'ref_array_clear()'
      for-each-ref: rename some functions and make them public
      for-each-ref: rename variables called sort to sorting
      ref-filter: add 'ref-filter.h'
      Documentation/tag: remove double occurance of "<pattern>"
      ref-filter: move code from 'for-each-ref'
      for-each-ref: introduce filter_refs()
      ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname

Kevin Daudt (1):
      pull: allow dirty tree when rebase.autostash enabled

Lars Schneider (1):
      git-p4: honor core.ignorecase when using P4 client specs

Marc Branchaud (3):
      gitk: Rearrange window title to be more conventional
      gitk: Show the current view's name in the window title
      gitk: Use translated version of "Command line" in getcommitlines

Matthieu Moy (3):
      Documentation/bisect: move getting help section to the end
      pull.sh: quote $upload_pack when passing it to git-fetch
      bisect: don't mix option parsing and non-trivial code

Matthieu Prat (1):
      t7060: actually test "git diff-index --cached -M"

Michael Haggerty (45):
      delete_ref(): move declaration to refs.h
      remove_branches(): remove temporary
      delete_ref(): handle special case more explicitly
      delete_refs(): new function for the refs API
      delete_refs(): make error message more generic
      delete_refs(): bail early if the packed-refs file cannot be rewritten
      prune_remote(): use delete_refs()
      prune_refs(): use delete_refs()
      repack_without_refs(): make function private
      initial_ref_transaction_commit(): function for initial ref creation
      refs: remove some functions from the module's public interface
      initial_ref_transaction_commit(): check for duplicate refs
      initial_ref_transaction_commit(): check for ref D/F conflicts
      refs: move the remaining ref module declarations to refs.h
      refs.h: add some parameter names to function declarations
      check_branch_commit(): make first parameter const
      update_ref(): don't read old reference value before delete
      cmd_update_ref(): make logic more straightforward
      delete_ref(): use the usual convention for old_sha1
      Documentation/bisect: revise overall content
      fast-import: add a get-mark command
      Documentation/git-worktree: consistently use term "linked working tree"
      Documentation/git-worktree: fix incorrect reference to file "locked"
      Documentation/config: fix stale "git prune --worktree" reference
      Documentation/git-worktree: wordsmith worktree-related manpages
      get_remote_group(): handle remotes with single-character names
      get_remote_group(): rename local variable "space" to "wordlen"
      get_remote_group(): eliminate superfluous call to strcspn()
      get_remote_group(): use skip_prefix()
      lockfile: move documentation to lockfile.h and lockfile.c
      create_bundle(): duplicate file descriptor to avoid closing it twice
      lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
      lockfile: add accessor get_lock_file_path()
      commit_lock_file(): use get_locked_file_path()
      tempfile: a new module for handling temporary files
      prepare_tempfile_object(): new function, extracted from create_tempfile()
      tempfile: add several functions for creating temporary files
      register_tempfile(): new function to handle an existing temporary file
      write_shared_index(): use tempfile module
      setup_temporary_shallow(): use tempfile module
      diff: use tempfile module
      lock_repo_for_gc(): compute the path to "gc.pid" only once
      gc: use tempfile module to handle gc.pid file
      credential-cache--daemon: delete socket from main()
      credential-cache--daemon: use tempfile module

Michael J Gruber (1):
      git-svn: parse authors file more leniently

Michael Rappazzo (2):
      gitk: Add mouse right-click options to copy path and branch name
      git-rebase--interactive.sh: add config option for custom instruction format

Mike Hommey (2):
      Allow to control where the replace refs are looked for
      fast-import: do less work when given "from" matches current branch head

Nguyễn Thái Ngọc Duy (4):
      setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
      t7063: use --force-untracked-cache to speed up a bit
      untracked cache: fix entry invalidation
      setup: update the right file in multiple checkouts

Patrick Steinhardt (6):
      Documentation/git-worktree: fix duplicated 'from'
      tests: fix broken && chains in t1509-root-worktree
      tests: fix cleanup after tests in t1509-root-worktree
      clone: do not include authentication data in guessed dir
      clone: do not use port number as dir name
      clone: abort if no dir name could be guessed

Paul Mackerras (3):
      gitk: Replace catch {unset foo} with unset -nocomplain foo
      gitk: Fix error when changing colors after closing "List references" window
      gitk: Update .po files

Paul Tan (85):
      t4150: test applying StGit patch
      am: teach StGit patch parser how to read from stdin
      t4150: test applying StGit series
      am: use gmtime() to parse mercurial patch date
      am: teach mercurial patch parser how to read from stdin
      parse-options-cb: implement parse_opt_passthru()
      parse-options-cb: implement parse_opt_passthru_argv()
      argv-array: implement argv_array_pushv()
      pull: implement skeletal builtin pull
      pull: implement fetch + merge
      pull: pass verbosity, --progress flags to fetch and merge
      pull: pass git-merge's options to git-merge
      pull: pass git-fetch's options to git-fetch
      pull: error on no merge candidates
      pull: support pull.ff config
      pull: check if in unresolved merge state
      pull: fast-forward working tree if head is updated
      pull: implement pulling into an unborn branch
      pull: set reflog message
      pull: teach git pull about --rebase
      pull: configure --rebase via branch.<name>.rebase or pull.rebase
      pull --rebase: exit early when the working directory is dirty
      pull --rebase: error on no merge candidate cases
      pull: remove redirection to git-pull.sh
      t4150: am.messageid really adds the message id
      t4150: am fails if index is dirty
      t4151: am --abort will keep dirty index intact
      t4150: am refuses patches when paused
      t4150: am --resolved fails if index has no changes
      t4150: am --resolved fails if index has unmerged entries
      t4150: am with applypatch-msg hook
      t4150: am with pre-applypatch hook
      t4150: am with post-applypatch hook
      t4150: tests for am --[no-]scissors
      t3418: non-interactive rebase --continue with rerere enabled
      t3901: test git-am encoding conversion
      wrapper: implement xopen()
      wrapper: implement xfopen()
      builtin-am: implement skeletal builtin am
      builtin-am: implement patch queue mechanism
      builtin-am: split out mbox/maildir patches with git-mailsplit
      builtin-am: auto-detect mbox patches
      builtin-am: extract patch and commit info with git-mailinfo
      builtin-am: apply patch with git-apply
      builtin-am: implement committing applied patch
      builtin-am: refuse to apply patches if index is dirty
      builtin-am: implement --resolved/--continue
      builtin-am: don't parse mail when resuming
      builtin-am: implement --skip
      builtin-am: implement --abort
      builtin-am: reject patches when there's a session in progress
      builtin-am: implement -q/--quiet
      builtin-am: exit with user friendly message on failure
      builtin-am: implement -s/--signoff
      cache-tree: introduce write_index_as_tree()
      builtin-am: implement --3way
      builtin-am: implement --rebasing mode
      builtin-am: bypass git-mailinfo when --rebasing
      builtin-am: handle stray state directory
      builtin-am: implement -u/--utf8
      builtin-am: implement -k/--keep, --keep-non-patch
      builtin-am: implement --[no-]message-id, am.messageid
      builtin-am: support --keep-cr, am.keepcr
      builtin-am: implement --[no-]scissors
      builtin-am: pass git-apply's options to git-apply
      builtin-am: implement --ignore-date
      builtin-am: implement --committer-date-is-author-date
      builtin-am: implement -S/--gpg-sign, commit.gpgsign
      builtin-am: invoke post-rewrite hook
      builtin-am: support automatic notes copying
      builtin-am: invoke applypatch-msg hook
      builtin-am: invoke pre-applypatch hook
      builtin-am: invoke post-applypatch hook
      builtin-am: rerere support
      builtin-am: support and auto-detect StGit patches
      builtin-am: support and auto-detect StGit series files
      builtin-am: support and auto-detect mercurial patches
      builtin-am: implement -i/--interactive
      builtin-am: implement legacy -b/--binary option
      builtin-am: check for valid committer ident
      builtin-am: remove redirection to git-am.sh
      test_terminal: redirect child process' stdin to a pty
      am: let command-line options override saved options
      am: let --signoff override --no-signoff
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Peter Krefting (2):
      gitk: sv.po: Update Swedish translation (305t0f0u)
      l10n: sv.po: Update Swedish translation (2441t0f0u)

Philip Oakley (2):
      po/README: Update directions for l10n contributors
      doc: show usage of branch description

Phillip Sz (1):
      l10n: de.po: better language for one string

Ralf Thielow (5):
      lockfile: remove function "hold_lock_file_for_append"
      pull: don't mark values for option "rebase" for translation
      tag, update-ref: improve description of option "create-reflog"
      l10n: de.po: translate 123 new messages
      l10n: de.po: translate 2 messages

Ramsay Jones (1):
      mailmap: update my entry with new email address

Ray Chen (10):
      l10n: zh_CN: Update Translation: "tag object"
      l10n: zh_CN: Unify Translation of "packfile"
      l10n: zh_CN: Update Translation of "tag"
      l10n: zh_CN: Add Surrounding Spaces
      l10n: zh_CN: Update Git Glossary: SHA-1
      l10n: zh_CN: Update Git Glossary: "dumb", "smart"
      l10n: zh_CN: Update Git Glossary: tag
      l10n: zh_CN: Update Git Glossary: fork
      l10n: zh_CN: Update Git Glossary: pickaxe
      l10n: zh_CN: Update Git Glossary: "commit message"

Remi Lespinet (11):
      t9001-send-email: move script creation in a setup test
      send-email: allow aliases in patch header and command script outputs
      t9001-send-email: refactor header variable fields replacement
      send-email: refactor address list process
      send-email: allow use of aliases in the From field of --compose mode
      send-email: minor code refactoring
      send-email: reduce dependencies impact on parse_address_line
      send-email: consider quote as delimiter instead of character
      send-email: allow multiple emails using --cc, --to and --bcc
      send-email: suppress meaningless whitespaces in from field
      git-am: add am.threeWay config variable

René Scharfe (3):
      t5004: test ZIP archives with many entries
      archive-zip: use a local variable to store the creator version
      archive-zip: support more than 65535 entries

SZEDER Gábor (8):
      bash prompt: test untracked files status indicator with untracked dirs
      bash prompt: faster untracked status indicator with untracked directories
      config: add '--name-only' option to list only variable names
      completion: list variable names reliably with 'git config --name-only'
      t3020: fix typo in test description
      config: restructure format_config() for better control flow
      wt-status: move #include "pathspec.h" to the header
      describe --contains: default to HEAD when no commit-ish is given

Simon A. Eugster (1):
      checkout: document subtlety around --ours/--theirs

Stefan Beller (4):
      parse-options: align curly braces for all options
      add: remove dead code
      transport-helper: die on errors reading refs.
      read-cache: fix indentation in read_index_from

Sven Strickroth (1):
      config: close config file handle in case of error

Thomas Ackermann (1):
      typofix for index-format.txt

Thomas Braun (1):
      completion: offer '--edit-todo' during interactive rebase

Trần Ngọc Quân (2):
      l10n: Updated Vietnamese translation (2441t)
      l10n: Update and review Vietnamese translation (2440t)

Zoë Blade (1):
      userdiff: add support for Fountain documents

brian m. carlson (7):
      verify-tag: add tests
      verify-tag: share code with verify-commit
      verify-commit: add test for exit status on untrusted signature
      gpg: centralize signature check
      gpg: centralize printing signature buffers
      verify-commit: add option to print raw gpg status information
      verify-tag: add option to print raw gpg status information

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.6.0-rc3
@ 2015-09-21 21:49  1% Junio C Hamano
  0 siblings, 0 replies; 13+ results
From: Junio C Hamano @ 2015-09-21 21:49 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

A release candidate Git v2.6.0-rc3 is now available for testing
at the usual places.  It is comprised of 478 non-merge commits
since v2.5.0, contributed by 67 people, 15 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.6.0-rc3' 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.5.0 are as follows.
Welcome to the Git development community!

  Antoine Delaite, Brett Randall, Brian Degenhardt, Brian Norris,
  Erik Elfström, Galan Rémi, Guillaume Pagès, Ismael Luceno,
  Jan Viktorin, Jose F. Morales, Lars Schneider, Matthieu Prat,
  Michael Rappazzo, Simon A. Eugster, and Zoë Blade.

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

  Alejandro R. Sedeño, Alexander Shopov, Alex Henrie, Andreas
  Schwab, Beat Bolli, brian m. carlson, Charles Bailey, Christian
  Couder, Clemens Buchacher, Dave Borowitz, David Aguilar, David
  Turner, Edward Thomson, Elia Pinto, Eric Sunshine, Giuseppe
  Bilotta, Heiko Voigt, Ilya Bobyr, Jacob Keller, Jean-Noel
  Avila, Jeff King, Jiang Xin, Jim Hill, Johannes Schindelin,
  Johannes Sixt, Junio C Hamano, Karsten Blees, Karthik Nayak,
  Kevin Daudt, Marc Branchaud, Matthieu Moy, Michael Haggerty,
  Michael J Gruber, Mike Hommey, Nguyễn Thái Ngọc Duy, Patrick
  Steinhardt, Paul Mackerras, Paul Tan, Peter Krefting, Philip
  Oakley, Phillip Sz, Ralf Thielow, Ramsay Jones, Ray Chen, Remi
  Lespinet, René Scharfe, Stefan Beller, Sven Strickroth, SZEDER
  Gábor, Thomas Ackermann, Thomas Braun, and Trần Ngọc Quân.

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

Git 2.6 Release Notes (draft)
=============================

Updates since v2.5
------------------

UI, Workflows & Features

 * An asterisk as a substring (as opposed to the entirety) of a path
   component for both side of a refspec, e.g.
   "refs/heads/o*:refs/remotes/heads/i*", is now allowed.

 * New userdiff pattern definition for fountain screenwriting markup
   format has been added.

 * "git log" and friends learned a new "--date=format:..." option to
   format timestamps using system's strftime(3).

 * "git fast-import" learned to respond to the get-mark command via
   its cat-blob-fd interface.

 * "git rebase -i" learned "drop commit-object-name subject" command
   as another way to skip replaying of a commit.

 * A new configuration variable can enable "--follow" automatically
   when "git log" is run with one pathspec argument.

 * "git status" learned to show a more detailed information regarding
   the "rebase -i" session in progress.

 * "git cat-file" learned "--batch-all-objects" option to enumerate all
   available objects in the repository more quickly than "rev-list
   --all --objects" (the output includes unreachable objects, though).

 * "git fsck" learned to ignore errors on a set of known-to-be-bad
   objects, and also allows the warning levels of various kinds of
   non-critical breakages to be tweaked.

 * "git rebase -i"'s list of todo is made configurable.

 * "git send-email" now performs alias-expansion on names that are
   given via --cccmd, etc.

 * An environment variable GIT_REPLACE_REF_BASE tells Git to look into
   refs hierarchy other than refs/replace/ for the object replacement
   data.

 * Allow untracked cache (experimental) to be used when sparse
   checkout (experimental) is also in use.

 * "git pull --rebase" has been taught to pay attention to
   rebase.autostash configuration.

 * The command-line completion script (in contrib/) has been updated.

 * A negative !ref entry in multi-value transfer.hideRefs
   configuration can be used to say "don't hide this one".

 * After "git am" without "-3" stops, running "git am -3" pays attention
   to "-3" only for the patch that caused the original invocation
   to stop.

 * When linked worktree is used, simultaneous "notes merge" instances
   for the same ref in refs/notes/* are prevented from stomping on
   each other.

 * "git send-email" learned a new option --smtp-auth to limit the SMTP
   AUTH mechanisms to be used to a subset of what the system library
   supports.

 * A new configuration variable http.sslVersion can be used to specify
   what specific version of SSL/TLS to use to make a connection.

 * "git notes merge" can be told with "--strategy=<how>" option how to
   automatically handle conflicts; this can now be configured by
   setting notes.mergeStrategy configuration variable.

 * "git log --cc" did not show any patch, even though most of the time
   the user meant "git log --cc -p -m" to see patch output for commits
   with a single parent, and combined diff for merge commits.  The
   command is taught to DWIM "--cc" (without "--raw" and other forms
   of output specification) to "--cc -p -m".

 * "git config --list" output was hard to parse when values consist of
   multiple lines.  "--name-only" option is added to help this.

 * A handful of usability & cosmetic fixes to gitk and l10n updates.

 * A completely empty e-mail address <> is now allowed in the authors
   file used by git-svn, to match the way it accepts the output from
   authors-prog.


Performance, Internal Implementation, Development Support etc.

 * In preparation for allowing different "backends" to store the refs
   in a way different from the traditional "one ref per file in
   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
   from scripts and programs has been reduced.

 * Computation of untracked status indicator by bash prompt
   script (in contrib/) has been optimized.

 * Memory use reduction when commit-slab facility is used to annotate
   sparsely (which is not recommended in the first place).

 * Clean up refs API and make "git clone" less intimate with the
   implementation detail.

 * "git pull" was reimplemented in C.

 * The packet tracing machinery allows to capture an incoming pack
   data to a file for debugging.

 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
   and 2G as an option parameter's value from pack-objects to
   parse-options API, to make it available to other codepaths.

 * "git verify-tag" and "git verify-commit" have been taught to share
   more code, and then learned to optionally show the verification
   message from the underlying GPG implementation.

 * Various enhancements around "git am" reading patches generated by
   foreign SCM have been made.

 * Ref listing by "git branch -l" and "git tag -l" commands has
   started to be rebuilt, based on the for-each-ref machinery.

 * The code to perform multi-tree merges has been taught to repopulate
   the cache-tree upon a successful merge into the index, so that
   subsequent "diff-index --cached" (hence "status") and "write-tree"
   (hence "commit") will go faster.

   The same logic in "git checkout" may now be removed, but that is a
   separate issue.

 * Tests that assume how reflogs are represented on the filesystem too
   much have been corrected.

 * "git am" has been rewritten in "C".

 * git_path() and mkpath() are handy helper functions but it is easy
   to misuse, as the callers need to be careful to keep the number of
   active results below 4.  Their uses have been reduced.

 * The "lockfile" API has been rebuilt on top of a new "tempfile" API.

 * To prepare for allowing a different "ref" backend to be plugged in
   to the system, update_ref()/delete_ref() have been taught about
   ref-like things like MERGE_HEAD that are per-worktree (they will
   always be written to the filesystem inside $GIT_DIR).

 * The gitmodules API that is accessed from the C code learned to
   cache stuff lazily.


Also contains various documentation updates and code clean-ups.


Fixes since v2.5
----------------

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

 * "git subtree" (in contrib/) depended on "git log" output to be
   stable, which was a no-no.  Apply a workaround to force a
   particular date format.
   (merge e7aac44 da/subtree-date-confusion later to maint).

 * An attempt to delete a ref by pushing into a repository whose HEAD
   symbolic reference points at an unborn branch that cannot be
   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
   points at refs/heads/a) failed.
   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).

 * The low-level "git send-pack" did not honor 'user.signingkey'
   configuration variable when sending a signed-push.
   (merge d830d39 db/send-pack-user-signingkey later to maint).

 * "sparse checkout" misbehaved for a path that is excluded from the
   checkout when switching between branches that differ at the path.
   (merge 7d78241 as/sparse-checkout-removal later to maint).

 * An experimental "untracked cache" feature used uname(2) in a
   slightly unportable way.
   (merge 100e433 cb/uname-in-untracked later to maint).

 * A "rebase" replays changes of the local branch on top of something
   else, as such they are placed in stage #3 and referred to as
   "theirs", while the changes in the new base, typically a foreign
   work, are placed in stage #2 and referred to as "ours".  Clarify
   the "checkout --ours/--theirs".
   (merge f303016 se/doc-checkout-ours-theirs later to maint).

 * The "rev-parse --parseopt" mode parsed the option specification
   and the argument hint in a strange way to allow '=' and other
   special characters in the option name while forbidding them from
   the argument hint.  This made it impossible to define an option
   like "--pair <key>=<value>" with "pair=key=value" specification,
   which instead would have defined a "--pair=key <value>" option.
   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).

 * Often a fast-import stream builds a new commit on top of the
   previous commit it built, and it often unconditionally emits a
   "from" command to specify the first parent, which can be omitted in
   such a case.  This caused fast-import to forget the tree of the
   previous commit and then re-read it from scratch, which was
   inefficient.  Optimize for this common case.
   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).

 * Running an aliased command from a subdirectory when the .git thing
   in the working tree is a gitfile pointing elsewhere did not work.
   (merge d95138e nd/export-worktree later to maint).

 * "Is this subdirectory a separate repository that should not be
   touched?" check "git clean" was inefficient.  This was replaced
   with a more optimized check.
   (merge fbf2fec ee/clean-remove-dirs later to maint).

 * The "new-worktree-mode" hack in "checkout" that was added in
   nd/multiple-work-trees topic has been removed by updating the
   implementation of new "worktree add".
   (merge 65f9b75 es/worktree-add-cleanup later to maint).

 * Remove remaining cruft from  "git checkout --to", which
   transitioned to "git worktree add".
   (merge 114ff88 es/worktree-add later to maint).

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.
   (merge bc598c3 mh/get-remote-group-fix later to maint).

 * "git clone $URL", when cloning from a site whose sole purpose is to
   host a single repository (hence, no path after <scheme>://<site>/),
   tried to use the site name as the new repository name, but did not
   remove username or password when <site> part was of the form
   <user>@<pass>:<host>.  The code is taught to redact these.
   (merge adef956 ps/guess-repo-name-at-root later to maint).

 * Running tests with the "-x" option to make them verbose had some
   unpleasant interactions with other features of the test suite.
   (merge 9b5fe78 jk/test-with-x later to maint).

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.
   (merge faacc5a ps/t1509-chroot-test-fixup later to maint).

 * "git pull" in recent releases of Git has a regression in the code
   that allows custom path to the --upload-pack=<program>.  This has
   been corrected.

   Note that this is irrelevant for 'master' with "git pull" rewritten
   in C.
   (merge 13e0e28 mm/pull-upload-pack later to maint).

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.
   (merge dff6f28 cb/open-noatime-clear-errno later to maint).

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().
   (merge f4c3edc jk/long-error-messages later to maint).

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.
   (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).

 * We rewrote one of the build scripts in Perl but this reimplements
   in Bourne shell.
   (merge 57cee8a sg/help-group later to maint).

 * The experimental untracked-cache feature were buggy when paths with
   a few levels of subdirectories are involved.
   (merge 73f9145 dt/untracked-subdir later to maint).

 * "interpret-trailers" helper mistook a single-liner log message that
   has a colon as the end of existing trailer.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.
   (merge 5c99995 cc/trailers-corner-case-fix later to maint).

 * "git describe" without argument defaulted to describe the HEAD
   commit, but "git describe --contains" didn't.  Arguably, in a
   repository used for active development, such defaulting would not
   be very useful as the tip of branch is typically not tagged, but it
   is better to be consistent.
   (merge 2bd0706 sg/describe-contains later to maint).

 * The client side codepaths in "git push" have been cleaned up
   and the user can request to perform an optional "signed push",
   i.e. sign only when the other end accepts signed push.
   (merge 68c757f db/push-sign-if-asked later to maint).

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.
   (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint).

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.
   (merge 2aea7a5 jk/rev-list-has-no-notes later to maint).

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).
   (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?
   (merge 88329ca rs/archive-zip-many later to maint).

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.
   (merge 82fde87 nd/fixup-linked-gitdir later to maint).

 * On case insensitive systems, "git p4" did not work well with client
   specs.

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.
   (merge ce11360 jk/log-missing-default-HEAD later to maint).

 * Recent versions of scripted "git am" has a performance regression in
   "git am --skip" codepath, which no longer exists in the built-in
   version on the 'master' front.  Fix the regression in the last
   scripted version that appear in 2.5.x maintenance track and older.
   (merge b9d6689 js/maint-am-skip-performance-regression later to maint).

 * The branch descriptions that are set with "git branch --edit-description"
   option were used in many places but they weren't clearly documented.
   (merge 561d2b7 po/doc-branch-desc later to maint).

 * Code cleanups and documentation updates.
   (merge 1c601af es/doc-clean-outdated-tools later to maint).
   (merge 3581304 kn/tag-doc-fix later to maint).
   (merge 3a59e59 kb/i18n-doc later to maint).
   (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
   (merge 14691e3 sb/parse-options-codeformat later to maint).
   (merge 4a6ada3 ad/bisect-cleanup later to maint).
   (merge da4c5ad ta/docfix-index-format-tech later to maint).
   (merge ae25fd3 sb/check-return-from-read-ref later to maint).
   (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
   (merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
   (merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
   (merge 1269847 sg/t3020-typofix later to maint).
   (merge 8b54c23 jc/calloc-pathspec later to maint).
   (merge a6926b8 po/po-readme later to maint).
   (merge 54d160e ss/fix-config-fd-leak later to maint).
   (merge b80fa84 ah/submodule-typofix-in-error later to maint).
   (merge 99885bc ah/reflog-typofix-in-error later to maint).
   (merge 9476c2c ah/read-tree-usage-string later to maint).
   (merge b8c1d27 ah/pack-objects-usage-strings later to maint).
   (merge 486e1e1 br/svn-doc-include-paths-config later to maint).
   (merge 1733ed3 ee/clean-test-fixes later to maint).
   (merge 5fcadc3 gb/apply-comment-typofix later to maint).
   (merge b894d3e mp/t7060-diff-index-test later to maint).
   (merge d238710 as/config-doc-markup-fix later to maint).

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

Changes since v2.5.0 are as follows:

Alejandro R. Sedeño (1):
      Makefile: use SHELL_PATH when running generate-cmdlist.sh

Alex Henrie (8):
      gitk: Fix bad English grammar "Matches none Commit Info"
      gitk: Remove mc parameter from proc show_error
      reflog: add missing single quote to error message
      git-submodule: remove extraneous space from error message
      pack-objects: place angle brackets around placeholders in usage strings
      read-tree: replace bracket set with parentheses to clarify usage
      show-ref: place angle brackets around variables in usage string
      l10n: ca.po: update translation

Alexander Shopov (2):
      gitk: Update Bulgarian translation (304t)
      gitk: Update Bulgarian translation (307t)

Andreas Schwab (2):
      Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable
      Documentation/config: fix formatting for branch.*.rebase and pull.rebase

Antoine Delaite (3):
      bisect: correction of typo
      bisect: replace hardcoded "bad|good" by variables
      bisect: simplify the addition of new bisect terms

Beat Bolli (2):
      gitk: Add a "Copy commit summary" command
      gitk: Adjust the menu line numbers to compensate for the new entry

Brett Randall (1):
      git-svn doc: mention "svn-remote.<name>.include-paths"

Brian Degenhardt (1):
      unpack-trees: populate cache-tree on successful merge

Brian Norris (1):
      send-email: fix uninitialized var warning for $smtp_auth

Charles Bailey (3):
      test-parse-options: update to handle negative ints
      parse-options: move unsigned long option parsing out of pack-objects.c
      untracked: fix detection of uname(2) failure

Christian Couder (3):
      trailer: ignore first line of message
      trailer: retitle a test and correct an in-comment message
      trailer: support multiline title

Clemens Buchacher (1):
      git_open_noatime: return with errno=0 on success

Dave Borowitz (9):
      Documentation/git-push.txt: document when --signed may fail
      Documentation/git-send-pack.txt: wrap long synopsis line
      Documentation/git-send-pack.txt: document --signed
      gitremote-helpers.txt: document pushcert option
      transport: remove git_transport_options.push_cert
      config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
      builtin/send-pack.c: use parse_options API
      push: support signing pushes iff the server supports it
      push: add a config option push.gpgSign for default signed pushes

David Aguilar (1):
      contrib/subtree: ignore log.date configuration

David Turner (22):
      log: add "log.follow" configuration variable
      unpack-trees: don't update files with CE_WT_REMOVE set
      refs.c: add err arguments to reflog functions
      refs: break out check for reflog autocreation
      refs: new public ref function: safe_create_reflog
      git-reflog: add exists command
      refs: add REF_FORCE_CREATE_REFLOG flag
      update-ref and tag: add --create-reflog arg
      git-stash: use update-ref --create-reflog instead of creating files
      t/t7509: remove unnecessary manipulation of reflog
      tests: remove some direct access to .git/logs
      refs: introduce pseudoref and per-worktree ref concepts
      refs: add ref_type function
      pseudorefs: create and use pseudoref update and delete functions
      bisect: use update_ref
      sequencer: replace write_cherry_pick_head with update_ref
      untracked-cache: support sparse checkout
      worktrees: add find_shared_symref
      notes: handle multiple worktrees
      pseudoref: check return values from read_ref()
      untracked-cache: fix subdirectory handling
      commit: don't rewrite shared index unnecessarily

Edward Thomson (1):
      poll: honor the timeout on Win32

Elia Pinto (1):
      http: add support for specifying the SSL version

Eric Sunshine (31):
      config: rename "gc.pruneWorktreesExpire" to "gc.worktreePruneExpire"
      checkout: avoid resolving HEAD unnecessarily
      checkout: name check_linked_checkouts() more meaningfully
      checkout: improve die_if_checked_out() robustness
      checkout: die_if_checked_out: simplify strbuf management
      checkout: generalize die_if_checked_out() branch name argument
      checkout: check_linked_checkout: improve "already checked out" aesthetic
      checkout: check_linked_checkout: simplify symref parsing
      checkout: teach check_linked_checkout() about symbolic link HEAD
      branch: publish die_if_checked_out()
      worktree: improve worktree setup message
      worktree: simplify new branch (-b/-B) option checking
      worktree: introduce options container
      worktree: make --detach mutually exclusive with -b/-B
      worktree: add: suppress auto-vivication with --detach and no <branch>
      worktree: make branch creation distinct from worktree population
      worktree: elucidate environment variables intended for child processes
      worktree: add_worktree: construct worktree-population command locally
      worktree: detect branch-name/detached and error conditions locally
      worktree: make setup of new HEAD distinct from worktree population
      worktree: avoid resolving HEAD unnecessarily
      worktree: populate via "git reset --hard" rather than "git checkout"
      checkout: drop intimate knowledge of newly created worktree
      Documentation/git-worktree: fix broken 'linkgit' invocation
      Documentation/git: drop outdated Cogito reference
      Documentation/git-tools: improve discoverability of Git wiki
      Documentation/git-tools: fix item text formatting
      Documentation/git-tools: drop references to defunct tools
      Documentation/git-tools: retire manually-maintained list
      Documentation/config: mention "now" and "never" for 'expire' settings
      generate-cmdlist: re-implement as shell script

Erik Elfström (6):
      setup: add gentle version of read_gitfile
      setup: sanity check file size in read_gitfile_gently
      t7300: add tests to document behavior of clean and nested git
      p7300: add performance tests for clean
      clean: improve performance when removing lots of directories
      t7300: fix broken && chains

Galan Rémi (3):
      git-rebase -i: add command "drop" to remove a commit
      git rebase -i: warn about removed commits
      git rebase -i: add static check for commands and SHA-1

Giuseppe Bilotta (2):
      apply: comment grammar fix
      gitk: Accelerators for the main menu

Guillaume Pagès (4):
      status: factor two rebase-related messages together
      status: differentiate interactive from non-interactive rebases
      status: give more information during rebase -i
      status: add new tests for status during rebase -i

Heiko Voigt (4):
      submodule: implement a config API for lookup of .gitmodules values
      submodule: extract functions for config set and lookup
      submodule: use new config API for worktree configurations
      submodule: allow erroneous values for the fetchRecurseSubmodules option

Ilya Bobyr (1):
      rev-parse --parseopt: allow [*=?!] in argument hints

Ismael Luceno (1):
      gitk: Make it easier to go quickly to a specific commit

Jacob Keller (8):
      refs: cleanup comments regarding check_refname_component()
      refs: loosen restriction on wildcard "*" refspecs
      notes: document cat_sort_uniq rewriteMode
      notes: extract enum notes_merge_strategy to notes-utils.h
      notes: extract parse_notes_merge_strategy to notes-utils
      notes: add tests for --commit/--abort/--strategy exclusivity
      notes: add notes.mergeStrategy option to select default strategy
      notes: teach git-notes about notes.<name>.mergeStrategy option

Jan Viktorin (1):
      send-email: provide whitelist of SMTP AUTH mechanisms

Jean-Noel Avila (2):
      l10n: fr.po v2.6.0 round 1 (2441t)
      l10n: fr.po v2.6.0 round 2 (2440t)

Jeff King (51):
      pkt-line: simplify starts_with checks in packet tracing
      pkt-line: tighten sideband PACK check when tracing
      pkt-line: support tracing verbatim pack contents
      cat-file: minor style fix in options list
      cat-file: move batch_options definition to top of file
      cat-file: add --buffer option
      cat-file: stop returning value from batch_one_object
      cat-file: split batch_one_object into two stages
      cat-file: add --batch-all-objects option
      read_gitfile_gently: fix use-after-free
      cat-file: sort and de-dup output of --batch-all-objects
      show-branch: use DATE_RELATIVE instead of magic number
      convert "enum date_mode" into a struct
      introduce "format" date-mode
      strbuf: make strbuf_addftime more robust
      docs/config.txt: reorder hideRefs config
      refs: support negative transfer.hideRefs
      test-lib: turn off "-x" tracing during chain-lint check
      test-lib: disable trace when test is not verbose
      clone: add tests for output directory
      clone: use computed length in guess_dir_name
      cache.h: clarify documentation for git_path, et al
      cache.h: complete set of git_path_submodule helpers
      t5700: modernize style
      add_to_alternates_file: don't add duplicate entries
      prefer git_pathdup to git_path in some possibly-dangerous cases
      prefer mkpathdup to mkpath in assignments
      remote.c: drop extraneous local variable from migrate_file
      refs.c: remove extra git_path calls from read_loose_refs
      path.c: drop git_path_submodule
      refs.c: simplify strbufs in reflog setup and writing
      refs.c: avoid repeated git_path calls in rename_tmp_log
      refs.c: avoid git_path assignment in lock_ref_sha1_basic
      refs.c: remove_empty_directories can take a strbuf
      find_hook: keep our own static buffer
      get_repo_path: refactor path-allocation
      memoize common git-path "constant" files
      vreportf: report to arbitrary filehandles
      vreportf: avoid intermediate buffer
      format_config: don't init strbuf
      format_config: simplify buffer handling
      get_urlmatch: avoid useless strbuf write
      config: silence warnings for command names with invalid keys
      rev-list: make it obvious that we do not support notes
      log: diagnose empty HEAD more clearly
      rerere: release lockfile in non-writing functions
      pack-protocol: clarify LF-handling in PKT-LINE()
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Jiang Xin (8):
      receive-pack: crash when checking with non-exist HEAD
      l10n: TEAMS: stash inactive zh_CN team members
      l10n: zh_CN: Add translations for Git glossary
      i18n: am: fix typo in description of -b option
      l10n: git.pot: v2.6.0 round 1 (123 new, 41 removed)
      l10n: zh_CN: for git v2.6.0 l10n round 1
      l10n: git.pot: v2.6.0 round 2 (3 improvements)
      l10n: zh_CN: for git v2.6.0 l10n round 2

Jim Hill (1):
      strbuf_read(): skip unnecessary strbuf_grow() at eof

Johannes Schindelin (20):
      fsck: introduce fsck options
      fsck: introduce identifiers for fsck messages
      fsck: provide a function to parse fsck message IDs
      fsck: offer a function to demote fsck errors to warnings
      fsck (receive-pack): allow demoting errors to warnings
      fsck: report the ID of the error/warning
      fsck: make fsck_ident() warn-friendly
      fsck: make fsck_commit() warn-friendly
      fsck: handle multiple authors in commits specially
      fsck: make fsck_tag() warn-friendly
      fsck: add a simple test for receive.fsck.<msg-id>
      fsck: disallow demoting grave fsck errors to warnings
      fsck: optionally ignore specific fsck issues completely
      fsck: allow upgrading fsck warnings to errors
      fsck: document the new receive.fsck.<msg-id> options
      fsck: support demoting errors to warnings
      fsck: introduce `git fsck --connectivity-only`
      fsck: git receive-pack: support excluding objects from fsck'ing
      fsck: support ignoring objects in `git fsck` via fsck.skiplist
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Johannes Sixt (2):
      t7300-clean: require POSIXPERM for chmod 0 test
      t2019: skip test requiring '*' in a file name non Windows

Jose F. Morales (1):
      Mingw: verify both ends of the pipe () call

Junio C Hamano (39):
      commit-slab: introduce slabname##_peek() function
      builtin/send-pack.c: respect user.signingkey
      Git 2.4.8
      First batch for 2.6
      sha1_file.c: rename move_temp_to_file() to finalize_object_file()
      Second batch for 2.6
      Third batch for 2.6
      Start preparing for 2.5.1
      Fourth batch for 2.6
      ps_matched: xcalloc() takes nmemb and then element size
      log: rename "tweak" helpers
      log: when --cc is given, default to -p unless told otherwise
      log: show merge commit when --cc is given
      builtin/am: introduce write_state_*() helper functions
      builtin/am: make sure state files are text
      write_file(): drop "fatal" parameter
      write_file_v(): do not leave incomplete line at the end
      write_file(): drop caller-supplied LF from calls to create a one-liner file
      builtin/log.c: minor reformat
      Fifth batch for 2.6
      pull: pass upload_pack only when it was given
      Sixth batch for 2.6
      Git 2.5.1
      Seventh batch for 2.6
      Eighth batch for 2.6
      Ninth batch for 2.6
      Git 2.6-rc0
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9
      Git 2.5.2
      am: match --signoff to the original scripted version
      Git 2.6-rc1
      Release Notes: typofix
      Git 2.6-rc2
      Update RelNotes to 2.6 to describe leftover bits since -rc2
      Git 2.5.3
      Update RelNotes to 2.6
      Git 2.6-rc3

Karsten Blees (1):
      Documentation/i18n.txt: clarify character encoding support

Karthik Nayak (12):
      for-each-ref: extract helper functions out of grab_single_ref()
      for-each-ref: clean up code
      for-each-ref: rename 'refinfo' to 'ref_array_item'
      for-each-ref: introduce new structures for better organisation
      for-each-ref: introduce 'ref_array_clear()'
      for-each-ref: rename some functions and make them public
      for-each-ref: rename variables called sort to sorting
      ref-filter: add 'ref-filter.h'
      Documentation/tag: remove double occurance of "<pattern>"
      ref-filter: move code from 'for-each-ref'
      for-each-ref: introduce filter_refs()
      ref-filter: make 'ref_array_item' use a FLEX_ARRAY for refname

Kevin Daudt (1):
      pull: allow dirty tree when rebase.autostash enabled

Lars Schneider (1):
      git-p4: honor core.ignorecase when using P4 client specs

Marc Branchaud (3):
      gitk: Rearrange window title to be more conventional
      gitk: Show the current view's name in the window title
      gitk: Use translated version of "Command line" in getcommitlines

Matthieu Moy (3):
      Documentation/bisect: move getting help section to the end
      pull.sh: quote $upload_pack when passing it to git-fetch
      bisect: don't mix option parsing and non-trivial code

Matthieu Prat (1):
      t7060: actually test "git diff-index --cached -M"

Michael Haggerty (45):
      delete_ref(): move declaration to refs.h
      remove_branches(): remove temporary
      delete_ref(): handle special case more explicitly
      delete_refs(): new function for the refs API
      delete_refs(): make error message more generic
      delete_refs(): bail early if the packed-refs file cannot be rewritten
      prune_remote(): use delete_refs()
      prune_refs(): use delete_refs()
      repack_without_refs(): make function private
      initial_ref_transaction_commit(): function for initial ref creation
      refs: remove some functions from the module's public interface
      initial_ref_transaction_commit(): check for duplicate refs
      initial_ref_transaction_commit(): check for ref D/F conflicts
      refs: move the remaining ref module declarations to refs.h
      refs.h: add some parameter names to function declarations
      check_branch_commit(): make first parameter const
      update_ref(): don't read old reference value before delete
      cmd_update_ref(): make logic more straightforward
      delete_ref(): use the usual convention for old_sha1
      Documentation/bisect: revise overall content
      fast-import: add a get-mark command
      Documentation/git-worktree: consistently use term "linked working tree"
      Documentation/git-worktree: fix incorrect reference to file "locked"
      Documentation/config: fix stale "git prune --worktree" reference
      Documentation/git-worktree: wordsmith worktree-related manpages
      get_remote_group(): handle remotes with single-character names
      get_remote_group(): rename local variable "space" to "wordlen"
      get_remote_group(): eliminate superfluous call to strcspn()
      get_remote_group(): use skip_prefix()
      lockfile: move documentation to lockfile.h and lockfile.c
      create_bundle(): duplicate file descriptor to avoid closing it twice
      lockfile: add accessors get_lock_file_fd() and get_lock_file_fp()
      lockfile: add accessor get_lock_file_path()
      commit_lock_file(): use get_locked_file_path()
      tempfile: a new module for handling temporary files
      prepare_tempfile_object(): new function, extracted from create_tempfile()
      tempfile: add several functions for creating temporary files
      register_tempfile(): new function to handle an existing temporary file
      write_shared_index(): use tempfile module
      setup_temporary_shallow(): use tempfile module
      diff: use tempfile module
      lock_repo_for_gc(): compute the path to "gc.pid" only once
      gc: use tempfile module to handle gc.pid file
      credential-cache--daemon: delete socket from main()
      credential-cache--daemon: use tempfile module

Michael J Gruber (1):
      git-svn: parse authors file more leniently

Michael Rappazzo (2):
      gitk: Add mouse right-click options to copy path and branch name
      git-rebase--interactive.sh: add config option for custom instruction format

Mike Hommey (2):
      Allow to control where the replace refs are looked for
      fast-import: do less work when given "from" matches current branch head

Nguyễn Thái Ngọc Duy (4):
      setup: set env $GIT_WORK_TREE when work tree is set, like $GIT_DIR
      t7063: use --force-untracked-cache to speed up a bit
      untracked cache: fix entry invalidation
      setup: update the right file in multiple checkouts

Patrick Steinhardt (6):
      Documentation/git-worktree: fix duplicated 'from'
      tests: fix broken && chains in t1509-root-worktree
      tests: fix cleanup after tests in t1509-root-worktree
      clone: do not include authentication data in guessed dir
      clone: do not use port number as dir name
      clone: abort if no dir name could be guessed

Paul Mackerras (3):
      gitk: Replace catch {unset foo} with unset -nocomplain foo
      gitk: Fix error when changing colors after closing "List references" window
      gitk: Update .po files

Paul Tan (85):
      t4150: test applying StGit patch
      am: teach StGit patch parser how to read from stdin
      t4150: test applying StGit series
      am: use gmtime() to parse mercurial patch date
      am: teach mercurial patch parser how to read from stdin
      parse-options-cb: implement parse_opt_passthru()
      parse-options-cb: implement parse_opt_passthru_argv()
      argv-array: implement argv_array_pushv()
      pull: implement skeletal builtin pull
      pull: implement fetch + merge
      pull: pass verbosity, --progress flags to fetch and merge
      pull: pass git-merge's options to git-merge
      pull: pass git-fetch's options to git-fetch
      pull: error on no merge candidates
      pull: support pull.ff config
      pull: check if in unresolved merge state
      pull: fast-forward working tree if head is updated
      pull: implement pulling into an unborn branch
      pull: set reflog message
      pull: teach git pull about --rebase
      pull: configure --rebase via branch.<name>.rebase or pull.rebase
      pull --rebase: exit early when the working directory is dirty
      pull --rebase: error on no merge candidate cases
      pull: remove redirection to git-pull.sh
      t4150: am.messageid really adds the message id
      t4150: am fails if index is dirty
      t4151: am --abort will keep dirty index intact
      t4150: am refuses patches when paused
      t4150: am --resolved fails if index has no changes
      t4150: am --resolved fails if index has unmerged entries
      t4150: am with applypatch-msg hook
      t4150: am with pre-applypatch hook
      t4150: am with post-applypatch hook
      t4150: tests for am --[no-]scissors
      t3418: non-interactive rebase --continue with rerere enabled
      t3901: test git-am encoding conversion
      wrapper: implement xopen()
      wrapper: implement xfopen()
      builtin-am: implement skeletal builtin am
      builtin-am: implement patch queue mechanism
      builtin-am: split out mbox/maildir patches with git-mailsplit
      builtin-am: auto-detect mbox patches
      builtin-am: extract patch and commit info with git-mailinfo
      builtin-am: apply patch with git-apply
      builtin-am: implement committing applied patch
      builtin-am: refuse to apply patches if index is dirty
      builtin-am: implement --resolved/--continue
      builtin-am: don't parse mail when resuming
      builtin-am: implement --skip
      builtin-am: implement --abort
      builtin-am: reject patches when there's a session in progress
      builtin-am: implement -q/--quiet
      builtin-am: exit with user friendly message on failure
      builtin-am: implement -s/--signoff
      cache-tree: introduce write_index_as_tree()
      builtin-am: implement --3way
      builtin-am: implement --rebasing mode
      builtin-am: bypass git-mailinfo when --rebasing
      builtin-am: handle stray state directory
      builtin-am: implement -u/--utf8
      builtin-am: implement -k/--keep, --keep-non-patch
      builtin-am: implement --[no-]message-id, am.messageid
      builtin-am: support --keep-cr, am.keepcr
      builtin-am: implement --[no-]scissors
      builtin-am: pass git-apply's options to git-apply
      builtin-am: implement --ignore-date
      builtin-am: implement --committer-date-is-author-date
      builtin-am: implement -S/--gpg-sign, commit.gpgsign
      builtin-am: invoke post-rewrite hook
      builtin-am: support automatic notes copying
      builtin-am: invoke applypatch-msg hook
      builtin-am: invoke pre-applypatch hook
      builtin-am: invoke post-applypatch hook
      builtin-am: rerere support
      builtin-am: support and auto-detect StGit patches
      builtin-am: support and auto-detect StGit series files
      builtin-am: support and auto-detect mercurial patches
      builtin-am: implement -i/--interactive
      builtin-am: implement legacy -b/--binary option
      builtin-am: check for valid committer ident
      builtin-am: remove redirection to git-am.sh
      test_terminal: redirect child process' stdin to a pty
      am: let command-line options override saved options
      am: let --signoff override --no-signoff
      am --skip/--abort: merge HEAD/ORIG_HEAD tree into index

Peter Krefting (2):
      gitk: sv.po: Update Swedish translation (305t0f0u)
      l10n: sv.po: Update Swedish translation (2441t0f0u)

Philip Oakley (2):
      po/README: Update directions for l10n contributors
      doc: show usage of branch description

Phillip Sz (1):
      l10n: de.po: better language for one string

Ralf Thielow (5):
      lockfile: remove function "hold_lock_file_for_append"
      pull: don't mark values for option "rebase" for translation
      tag, update-ref: improve description of option "create-reflog"
      l10n: de.po: translate 123 new messages
      l10n: de.po: translate 2 messages

Ramsay Jones (1):
      mailmap: update my entry with new email address

Ray Chen (10):
      l10n: zh_CN: Update Translation: "tag object"
      l10n: zh_CN: Unify Translation of "packfile"
      l10n: zh_CN: Update Translation of "tag"
      l10n: zh_CN: Add Surrounding Spaces
      l10n: zh_CN: Update Git Glossary: SHA-1
      l10n: zh_CN: Update Git Glossary: "dumb", "smart"
      l10n: zh_CN: Update Git Glossary: tag
      l10n: zh_CN: Update Git Glossary: fork
      l10n: zh_CN: Update Git Glossary: pickaxe
      l10n: zh_CN: Update Git Glossary: "commit message"

Remi Lespinet (11):
      t9001-send-email: move script creation in a setup test
      send-email: allow aliases in patch header and command script outputs
      t9001-send-email: refactor header variable fields replacement
      send-email: refactor address list process
      send-email: allow use of aliases in the From field of --compose mode
      send-email: minor code refactoring
      send-email: reduce dependencies impact on parse_address_line
      send-email: consider quote as delimiter instead of character
      send-email: allow multiple emails using --cc, --to and --bcc
      send-email: suppress meaningless whitespaces in from field
      git-am: add am.threeWay config variable

René Scharfe (3):
      t5004: test ZIP archives with many entries
      archive-zip: use a local variable to store the creator version
      archive-zip: support more than 65535 entries

SZEDER Gábor (8):
      bash prompt: test untracked files status indicator with untracked dirs
      bash prompt: faster untracked status indicator with untracked directories
      config: add '--name-only' option to list only variable names
      completion: list variable names reliably with 'git config --name-only'
      t3020: fix typo in test description
      config: restructure format_config() for better control flow
      wt-status: move #include "pathspec.h" to the header
      describe --contains: default to HEAD when no commit-ish is given

Simon A. Eugster (1):
      checkout: document subtlety around --ours/--theirs

Stefan Beller (4):
      parse-options: align curly braces for all options
      add: remove dead code
      transport-helper: die on errors reading refs.
      read-cache: fix indentation in read_index_from

Sven Strickroth (1):
      config: close config file handle in case of error

Thomas Ackermann (1):
      typofix for index-format.txt

Thomas Braun (1):
      completion: offer '--edit-todo' during interactive rebase

Trần Ngọc Quân (2):
      l10n: Updated Vietnamese translation (2441t)
      l10n: Update and review Vietnamese translation (2440t)

Zoë Blade (1):
      userdiff: add support for Fountain documents

brian m. carlson (7):
      verify-tag: add tests
      verify-tag: share code with verify-commit
      verify-commit: add test for exit status on untrusted signature
      gpg: centralize signature check
      gpg: centralize printing signature buffers
      verify-commit: add option to print raw gpg status information
      verify-tag: add option to print raw gpg status information

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.5.2, v2.4.9, v2.3.9 and v2.2.3
@ 2015-09-10 20:24  3% Junio C Hamano
  0 siblings, 0 replies; 13+ results
From: Junio C Hamano @ 2015-09-10 20:24 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

The latest maintenance release Git v2.5.2 is now available at the
usual places, together with updates to older maintenance tracks,
v2.4.9, v2.3.9 and v2.2.3.  These updates to older tracks are to
plug buffer overflows due to fixed-sized buffers used to store
pathnames in a handful of codepaths (kudos to Peff).

The maintenance release 2.5.2 for the current maintenance track also
contains other fixes that was recently made on the 'master' front.

The tarballs are found at:

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

The following public repositories all have a copy of the 'v2.5.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 = 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.5.2 Release Notes
========================

Fixes since v2.5.1
------------------

 * "git init empty && git -C empty log" said "bad default revision 'HEAD'",
   which was found to be a bit confusing to new users.

 * The "interpret-trailers" helper mistook a multi-paragraph title of
   a commit log message with a colon in it as the end of the trailer
   block.

 * When re-priming the cache-tree opportunistically while committing
   the in-core index as-is, we mistakenly invalidated the in-core
   index too aggressively, causing the experimental split-index code
   to unnecessarily rewrite the on-disk index file(s).

 * "git archive" did not use zip64 extension when creating an archive
   with more than 64k entries, which nobody should need, right ;-)?

 * The code in "multiple-worktree" support that attempted to recover
   from an inconsistent state updated an incorrect file.

 * "git rev-list" does not take "--notes" option, but did not complain
   when one is given.

 * Because the configuration system does not allow "alias.0foo" and
   "pager.0foo" as the configuration key, the user cannot use '0foo'
   as a custom command name anyway, but "git 0foo" tried to look these
   keys up and emitted useless warnings before saying '0foo is not a
   git command'.  These warning messages have been squelched.

 * We recently rewrote one of the build scripts in Perl, which made it
   necessary to have Perl to build Git.  Reduced Perl dependency by
   rewriting it again using sed.

 * t1509 test that requires a dedicated VM environment had some
   bitrot, which has been corrected.

 * strbuf_read() used to have one extra iteration (and an unnecessary
   strbuf_grow() of 8kB), which was eliminated.

 * The codepath to produce error messages had a hard-coded limit to
   the size of the message, primarily to avoid memory allocation while
   calling die().

 * When trying to see that an object does not exist, a state errno
   leaked from our "first try to open a packfile with O_NOATIME and
   then if it fails retry without it" logic on a system that refuses
   O_NOATIME.  This confused us and caused us to die, saying that the
   packfile is unreadable, when we should have just reported that the
   object does not exist in that packfile to the caller.

 * An off-by-one error made "git remote" to mishandle a remote with a
   single letter nickname.

 * A handful of codepaths that used to use fixed-sized arrays to hold
   pathnames have been corrected to use strbuf and other mechanisms to
   allow longer pathnames without fearing overflows.

Also contains typofixes, documentation updates and trivial code
clean-ups.

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

Changes since v2.5.1 are as follows:

Andreas Schwab (1):
      Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable

Christian Couder (3):
      trailer: ignore first line of message
      trailer: retitle a test and correct an in-comment message
      trailer: support multiline title

Clemens Buchacher (1):
      git_open_noatime: return with errno=0 on success

David Turner (1):
      commit: don't rewrite shared index unnecessarily

Eric Sunshine (1):
      generate-cmdlist: re-implement as shell script

Erik Elfström (1):
      t7300: fix broken && chains

Jeff King (9):
      vreportf: report to arbitrary filehandles
      vreportf: avoid intermediate buffer
      config: silence warnings for command names with invalid keys
      rev-list: make it obvious that we do not support notes
      log: diagnose empty HEAD more clearly
      verify_absent: allow filenames longer than PATH_MAX
      notes: use a strbuf in add_non_note
      read_info_alternates: handle paths larger than PATH_MAX
      show-branch: use a strbuf for reflog descriptions

Jim Hill (1):
      strbuf_read(): skip unnecessary strbuf_grow() at eof

Johannes Sixt (1):
      t2019: skip test requiring '*' in a file name non Windows

Junio C Hamano (5):
      ps_matched: xcalloc() takes nmemb and then element size
      Git 2.2.3
      Git 2.3.9
      Git 2.4.9
      Git 2.5.2

Michael Haggerty (4):
      get_remote_group(): handle remotes with single-character names
      get_remote_group(): rename local variable "space" to "wordlen"
      get_remote_group(): eliminate superfluous call to strcspn()
      get_remote_group(): use skip_prefix()

Nguyễn Thái Ngọc Duy (1):
      setup: update the right file in multiple checkouts

Patrick Steinhardt (2):
      tests: fix broken && chains in t1509-root-worktree
      tests: fix cleanup after tests in t1509-root-worktree

Philip Oakley (1):
      po/README: Update directions for l10n contributors

René Scharfe (3):
      t5004: test ZIP archives with many entries
      archive-zip: use a local variable to store the creator version
      archive-zip: support more than 65535 entries

SZEDER Gábor (2):
      t3020: fix typo in test description
      wt-status: move #include "pathspec.h" to the header

Sven Strickroth (1):
      config: close config file handle in case of error

^ permalink raw reply	[relevance 3%]

Results 1-13 of 13 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2015-09-10 20:24  3% [ANNOUNCE] Git v2.5.2, v2.4.9, v2.3.9 and v2.2.3 Junio C Hamano
2015-09-21 21:49  1% [ANNOUNCE] Git v2.6.0-rc3 Junio C Hamano
2015-09-28 23:20  1% [ANNOUNCE] Git v2.6.0 Junio C Hamano
2016-09-29  5:34  1% [PATCH/RFC] git log --oneline alternative with dates, times and initials Kyle J. McKay
2016-09-29  8:33  0% ` Jeff King
2016-09-29 11:00  0%   ` Kyle J. McKay
2016-10-20  0:13  4% [ANNOUNCE] git-log-compact v1.0 Kyle J. McKay
2018-01-05  3:24     Patch recommendation for replace invoke of error() to that of error_errno() 牛旭
2018-01-28 15:46  7% ` recommendations for log enhancement 牛旭
2018-01-30 22:11  0%   ` Stefan Beller
2020-03-20 23:11  4% [GSoC Project RFC] "git log --oneline" improvements Parth Gala
2020-03-20 23:36  0% ` Junio C Hamano
2020-03-21 22:05  0%   ` Parth Gala
2020-03-21 22:37  0%     ` 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).