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: |
* [regression] `make profile-install` fails in 2.10.1
@ 2016-10-19 11:15  7% Jan Keromnes
  0 siblings, 0 replies; 46+ results
From: Jan Keromnes @ 2016-10-19 11:15 UTC (permalink / raw)
  To: git

Hello,

TL;DR - Probably a regression of a previously reported bug. [0]

I'm trying to `profile-install` Git from source on Ubuntu 16.04, to
have the latest stable Git optimized for my machine.

However, this often fails, because the profile build runs all Git
tests (to get an idea of how Git behaves on my hardware, and optimize
for it), but it bails out if there are any test failures (for me, this
has happened on most Git version upgrades this year, see also [0] and
[1]).

- Problem: Is there a way to `make profile-install` but ignore
occasional test failures, as these are not critical to get a useful
hardware profile? (Note: In a previous thread, Dennis Kaarsemaker
mentioned this is fixing a symptom, not the root cause, but it would
still be great to get a working profile in spite of occasional test
failures.)

- Related problem: `t3700-add.sh` fails again in 2.10.1 for me. More
details below, and I can provide further debug information if you
don't already know the problem.

Thanks,
Jan

[0] "`make profile-install` fails in 2.9.3" -
https://marc.info/?l=git&m=147274608823171&w=2

[1] "Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile
build" - https://marc.info/?l=git&m=146193443529229&w=2

---

Steps to reproduce:

    curl https://www.kernel.org/pub/software/scm/git/git-2.10.1.tar.xz
| tar xJ \
     && cd git-2.10.1 \
     && make prefix=/usr profile-install install-man -j18

Expected result:

    - runs all tests to get a profile (ignoring occasional failures)
    - rebuilds Git with the profile
    - installs Git

Actual result:

    - runs all tests to get a profile
    - at least one test fails, interrupting the whole process
    - Git is not installed

Failure log:

    (snip)
    *** t3700-add.sh ***
    ok 1 - Test of git add
    ok 2 - Post-check that foo is in the index
    ok 3 - Test that "git add -- -q" works
    ok 4 - git add: Test that executable bit is not used if core.filemode=0
    ok 5 - git add: filemode=0 should not get confused by symlink
    (snip)
    ok 38 - git add --chmod=[+-]x stages correctly
    ok 39 - git add --chmod=+x with symlinks
    not ok 40 - git add --chmod=[+-]x changes index with already added file
    #
    #               echo foo >foo3 &&
    #               git add foo3 &&
    #               git add --chmod=+x foo3 &&
    #               test_mode_in_index 100755 foo3 &&
    #               echo foo >xfoo3 &&
    #               chmod 755 xfoo3 &&
    #               git add xfoo3 &&
    #               git add --chmod=-x xfoo3 &&
    #               test_mode_in_index 100644 xfoo3
    #
    ok 41 - git add --chmod=[+-]x does not change the working tree
    ok 42 - no file status change if no pathspec is given
    ok 43 - no file status change if no pathspec is given in subdir
    ok 44 - all statuses changed in folder if . is given
    # failed 1 among 44 test(s)
    1..44
    Makefile:43: recipe for target 't3700-add.sh' failed
    make[3]: Leaving directory '/tmp/git/git-2.10.1/t'
    make[3]: *** [t3700-add.sh] Error 1
    Makefile:36: recipe for target 'test' failed
    make[2]: Leaving directory '/tmp/git/git-2.10.1/t'
    make[2]: *** [test] Error 2
    Makefile:2273: recipe for target 'test' failed
    make[1]: *** [test] Error 2
    make[1]: Leaving directory '/tmp/git/git-2.10.1'
    Makefile:1679: recipe for target 'profile' failed
    make: *** [profile] Error 2
    The command '/bin/sh -c mkdir /tmp/git  && cd /tmp/git  && curl
https://www.kernel.org/pub/software/scm/git/git-2.10.1.tar.xz | tar xJ
 && cd git-2.10.1  && make prefix=/usr profile-install install-man
-j18  && rm -rf /tmp/git' returned a non-zero code: 2

^ permalink raw reply	[relevance 7%]

* Re: interactive rebase should better highlight the not-applying commit
  2016-10-12 13:27  0%   ` Joshua N Pritikin
@ 2016-10-12 16:24  0%     ` Johannes Schindelin
  0 siblings, 0 replies; 46+ results
From: Johannes Schindelin @ 2016-10-12 16:24 UTC (permalink / raw)
  To: Joshua N Pritikin; +Cc: Stefan Beller, git@vger.kernel.org

Hi Joshua,

On Wed, 12 Oct 2016, Joshua N Pritikin wrote:

> On Tue, Oct 11, 2016 at 01:55:22PM -0700, Stefan Beller wrote:
> > On Tue, Oct 11, 2016 at 12:07 PM, Joshua N Pritikin <jpritikin@pobox.com> wrote:
> > > I assume somebody familiar with GIT's code base could make this
> > > change in about 10 minutes.
> >
> > Can you elaborate how you come to that estimate?
> 
> Hm, a false belief in the general awesomeness of GIT developers?

No, a false belief in your own shortcomings, as you thought it would be
easier to address your wishes for somebody else than you.

> On Tue, Oct 11, 2016 at 02:25:19PM -0700, Stefan Beller wrote:
> > On Tue, Oct 11, 2016 at 12:07 PM, Joshua N Pritikin <jpritikin@pobox.com> wrote:
> > > As of GIT 2.8.1, if you do an interactive rebase and get some conflict
> > > in the stack of patches then the commit with the conflict is buried in
> > > 4-5 lines of output. It is visually difficult to immediately pick out
> > > which commit did not apply cleanly. I suggest highlighting the 1 line
> > > commit summary in red or green or some color to help it stand out from
> > > all the other output.
> > >
> > > I decided to suggest this change after I realized that I probably
> > > skipped a commit during an interactive rebase instead of resolving the
> > > conflict. I knew I had to skip some commit so I assumed that I just need
> > > to skip without reading the commit summary carefully. Now it is 7-15
> > > days after I did the erroneous rebase. I had to spend a few hours today
> > > with GIT's archaeology tools to find the lost code.
> > 
> > Looking at the actual code, this is not as easy as one might assume, 
> > because rebase is written in shell. (One of the last remaining large 
> > commands in shell), and there is no color support in the die(..) 
> > function.
> 
> I'm sorry to hear that.
> 
> > However IIUC currently rebase is completely rewritten/ported to C 
> > where it is easier to add color support as we do have some color 
> > support in there already.
> 
> Sounds great. Is there a beta release that I can try out?

There is no release as such, unless you count Git for Windows v2.10.0.

But you can try the `interactive-rebase` branch of
https://github.com/dscho/git; please note, though, that my main aim was to
be as faithful as possible in the conversion (modulo speed, of course).

> Also, I have another wishlist item for (interactive) rebase.

Hmm. You know, I cannot say that I am a fan of wishlists for Git, unless
the originator of said wishlist takes on their responsibility as an Open
Source user to make their wishes come true.

But maybe I read it all wrong and you do want to make this happen
yourself, and you simply want a little advice how to go about it?

> Sometimes I do a rebase to fix some tiny thing 10-15 commits from HEAD.
> Maybe only 1 file is affected and there are no merge conflicts, but when
> rebase reapplies all the commits, the timestamps of lots of unmodified
> files change even though they are unmodified compared to before the
> rebase.

Well, they *were* modified, right?

A workaround would be to create a new worktree using the awesome `git
worktree` command, perform the rebase there (on an unnamed branch -- AKA
"detached HEAD", no relation to Helloween), and then come back to the
original worktree and reset --hard to the new revision. That reset would
detect that there are actually no changes required to said files.

> Since the modification times are used by 'make' to compute dependencies, 
> this creates a lot of useless recompilation that slows things down. It 
> would be great if rebase only changed the timestamps of files that were 
> actually modified.

Rebase will always have to change those timestamps. Because it really
changes those files. So the mtimes *need* to be updated. As far as rebase
is concerned, it does not matter that the final contents are identical to
*some* previous version...

Ciao,
Johannes

^ permalink raw reply	[relevance 0%]

* Re: interactive rebase should better highlight the not-applying commit
  2016-10-11 21:25  0% ` Stefan Beller
@ 2016-10-12 13:27  0%   ` Joshua N Pritikin
  2016-10-12 16:24  0%     ` Johannes Schindelin
  0 siblings, 1 reply; 46+ results
From: Joshua N Pritikin @ 2016-10-12 13:27 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git@vger.kernel.org

On Tue, Oct 11, 2016 at 01:55:22PM -0700, Stefan Beller wrote:
> On Tue, Oct 11, 2016 at 12:07 PM, Joshua N Pritikin <jpritikin@pobox.com> wrote:
> > I assume somebody familiar with GIT's code base could make this change
> > in about 10 minutes.
>
> Can you elaborate how you come to that estimate?

Hm, a false belief in the general awesomeness of GIT developers?

On Tue, Oct 11, 2016 at 02:25:19PM -0700, Stefan Beller wrote:
> On Tue, Oct 11, 2016 at 12:07 PM, Joshua N Pritikin <jpritikin@pobox.com> wrote:
> > As of GIT 2.8.1, if you do an interactive rebase and get some conflict
> > in the stack of patches then the commit with the conflict is buried in
> > 4-5 lines of output. It is visually difficult to immediately pick out
> > which commit did not apply cleanly. I suggest highlighting the 1 line
> > commit summary in red or green or some color to help it stand out from
> > all the other output.
> >
> > I decided to suggest this change after I realized that I probably
> > skipped a commit during an interactive rebase instead of resolving the
> > conflict. I knew I had to skip some commit so I assumed that I just need
> > to skip without reading the commit summary carefully. Now it is 7-15
> > days after I did the erroneous rebase. I had to spend a few hours today
> > with GIT's archaeology tools to find the lost code.
> 
> Looking at the actual code, this is not as easy as one might assume, 
> because rebase is written in shell. (One of the last remaining large 
> commands in shell), and there is no color support in the die(..) 
> function.

I'm sorry to hear that.

> However IIUC currently rebase is completely rewritten/ported to C 
> where it is easier to add color support as we do have some color 
> support in there already.

Sounds great. Is there a beta release that I can try out?

Also, I have another wishlist item for (interactive) rebase. Sometimes I 
do a rebase to fix some tiny thing 10-15 commits from HEAD. Maybe only 1 
file is affected and there are no merge conflicts, but when rebase 
reapplies all the commits, the timestamps of lots of unmodified files 
change even though they are unmodified compared to before the rebase. 
Since the modification times are used by 'make' to compute dependencies, 
this creates a lot of useless recompilation that slows things down. It 
would be great if rebase only changed the timestamps of files that were 
actually modified.

Thank you.

-- 
Joshua N. Pritikin, Ph.D.
Virginia Institute for Psychiatric and Behavioral Genetics
Virginia Commonwealth University
PO Box 980126
800 E Leigh St, Biotech One, Suite 1-133
Richmond, VA 23219
http://people.virginia.edu/~jnp3bc

^ permalink raw reply	[relevance 0%]

* Re: interactive rebase should better highlight the not-applying commit
  2016-10-11 19:07  9% interactive rebase should better highlight the not-applying commit Joshua N Pritikin
@ 2016-10-11 21:25  0% ` Stefan Beller
  2016-10-12 13:27  0%   ` Joshua N Pritikin
  0 siblings, 1 reply; 46+ results
From: Stefan Beller @ 2016-10-11 21:25 UTC (permalink / raw)
  To: Joshua N Pritikin; +Cc: git@vger.kernel.org

On Tue, Oct 11, 2016 at 12:07 PM, Joshua N Pritikin <jpritikin@pobox.com> wrote:
> As of GIT 2.8.1, if you do an interactive rebase and get some conflict
> in the stack of patches then the commit with the conflict is buried in
> 4-5 lines of output. It is visually difficult to immediately pick out
> which commit did not apply cleanly. I suggest highlighting the 1 line
> commit summary in red or green or some color to help it stand out from
> all the other output.
>
> I decided to suggest this change after I realized that I probably
> skipped a commit during an interactive rebase instead of resolving the
> conflict. I knew I had to skip some commit so I assumed that I just need
> to skip without reading the commit summary carefully. Now it is 7-15
> days after I did the erroneous rebase. I had to spend a few hours today
> with GIT's archaeology tools to find the lost code.
>

Looking at the actual code, this is not as easy as one might assume,
because rebase is written in shell. (One of the last remaining large commands
in shell), and there is no color support in the die(..) function.

However IIUC currently rebase is completely rewritten/ported to C where it is
easier to add color support as we do have some color support in there already.

^ permalink raw reply	[relevance 0%]

* interactive rebase should better highlight the not-applying commit
@ 2016-10-11 19:07  9% Joshua N Pritikin
  2016-10-11 21:25  0% ` Stefan Beller
  0 siblings, 1 reply; 46+ results
From: Joshua N Pritikin @ 2016-10-11 19:07 UTC (permalink / raw)
  To: git

As of GIT 2.8.1, if you do an interactive rebase and get some conflict 
in the stack of patches then the commit with the conflict is buried in 
4-5 lines of output. It is visually difficult to immediately pick out 
which commit did not apply cleanly. I suggest highlighting the 1 line 
commit summary in red or green or some color to help it stand out from 
all the other output.

I decided to suggest this change after I realized that I probably 
skipped a commit during an interactive rebase instead of resolving the 
conflict. I knew I had to skip some commit so I assumed that I just need 
to skip without reading the commit summary carefully. Now it is 7-15 
days after I did the erroneous rebase. I had to spend a few hours today 
with GIT's archaeology tools to find the lost code.

I assume somebody familiar with GIT's code base could make this change 
in about 10 minutes.

-- 
Joshua N. Pritikin, Ph.D.
Virginia Institute for Psychiatric and Behavioral Genetics
Virginia Commonwealth University
PO Box 980126
800 E Leigh St, Biotech One, Suite 1-133
Richmond, VA 23219
http://people.virginia.edu/~jnp3bc

^ permalink raw reply	[relevance 9%]

* Re: git add --intent-to-add silently creates empty commits
  2016-09-15 17:48  0% ` Junio C Hamano
@ 2016-09-19 13:16  0%   ` Duy Nguyen
  0 siblings, 0 replies; 46+ results
From: Duy Nguyen @ 2016-09-19 13:16 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Aviv Eyal, Git Mailing List

On Fri, Sep 16, 2016 at 12:48 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Aviv Eyal <avivey@gmail.com> writes:
>
>> Using `git add -N` allows creating of empty commits:
>>
>> git init test && cd test
>> echo text > file
>> git add --intent-to-add file
>> git commit -m 'Empty commit'
>> echo $?                                    # prints 0
>> ...
>> I'd expect `git commit` to error out instead of producing an empty commit.
>>
>> I've seen this with git 2.8.1 and 2.10.0.129.g35f6318
>
> I think I've seen this reported some time ago.
>
> https://public-inbox.org/git/%3CCACsJy8A8-RgpYxYsJBaLrMia7D3DfQPr4cxASNsaLyCnmgm3ZQ@mail.gmail.com%3E/
>
> I do not offhand recall what happend to the topic after that.

Yeah. I'm a bit behind, no, I'm waaaay behind my git backlog. This
definitely gets a rise-up, together with the multiworktree bug fix in
git-init.
-- 
Duy

^ permalink raw reply	[relevance 0%]

* Re: git add --intent-to-add silently creates empty commits
  2016-09-15  5:01  9% git add --intent-to-add silently creates empty commits Aviv Eyal
@ 2016-09-15 17:48  0% ` Junio C Hamano
  2016-09-19 13:16  0%   ` Duy Nguyen
  0 siblings, 1 reply; 46+ results
From: Junio C Hamano @ 2016-09-15 17:48 UTC (permalink / raw)
  To: Aviv Eyal, Nguyễn Thái Ngọc Duy; +Cc: git

Aviv Eyal <avivey@gmail.com> writes:

> Using `git add -N` allows creating of empty commits:
>
> git init test && cd test
> echo text > file
> git add --intent-to-add file
> git commit -m 'Empty commit'
> echo $?                                    # prints 0
> ...
> I'd expect `git commit` to error out instead of producing an empty commit.
>
> I've seen this with git 2.8.1 and 2.10.0.129.g35f6318

I think I've seen this reported some time ago.

https://public-inbox.org/git/%3CCACsJy8A8-RgpYxYsJBaLrMia7D3DfQPr4cxASNsaLyCnmgm3ZQ@mail.gmail.com%3E/

I do not offhand recall what happend to the topic after that.

^ permalink raw reply	[relevance 0%]

* git add --intent-to-add silently creates empty commits
@ 2016-09-15  5:01  9% Aviv Eyal
  2016-09-15 17:48  0% ` Junio C Hamano
  0 siblings, 1 reply; 46+ results
From: Aviv Eyal @ 2016-09-15  5:01 UTC (permalink / raw)
  To: git

Hello,

I think this is an unintended behavior, but I might be wrong:

Using `git add -N` allows creating of empty commits:


git init test && cd test
echo text > file
git add --intent-to-add file
git commit -m 'Empty commit'
echo $?                                    # prints 0
git log -1 -p --format='' HEAD | wc -l     # prints 0
git status -s                              # prints `AM file`


I'd expect `git commit` to error out instead of producing an empty commit.

I've seen this with git 2.8.1 and 2.10.0.129.g35f6318

Thanks,
Aviv

^ permalink raw reply	[relevance 9%]

* Re: Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
  2016-07-09  6:24 14% ` Johannes Schindelin
@ 2016-07-09  7:26 14%   ` Johannes Schindelin
  0 siblings, 0 replies; 46+ results
From: Johannes Schindelin @ 2016-07-09  7:26 UTC (permalink / raw)
  To: Naja Melan; +Cc: git

Hi,

On Sat, 9 Jul 2016, Johannes Schindelin wrote:

> On Fri, 8 Jul 2016, Naja Melan wrote:
> 
> > When diffing with --patience and --ignore-space-at-eol, a change that
> > adds or removes just one character a the end of a line isn't picked up.
> 
> Confirmed with the current 'master'. I am on it [...]

And I fixed it:

http://thread.gmane.org/gmane.comp.version-control.git/299176/focus=299178

Ciao,
Johannes

^ permalink raw reply	[relevance 14%]

* Re: Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
  2016-07-08 16:51 13% Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol? Naja Melan
@ 2016-07-09  6:24 14% ` Johannes Schindelin
  2016-07-09  7:26 14%   ` Johannes Schindelin
  0 siblings, 1 reply; 46+ results
From: Johannes Schindelin @ 2016-07-09  6:24 UTC (permalink / raw)
  To: Naja Melan; +Cc: git

Hi Naja,

On Fri, 8 Jul 2016, Naja Melan wrote:

> When diffing with --patience and --ignore-space-at-eol, a change that
> adds or removes just one character a the end of a line isn't picked up.

Confirmed with the current 'master'. I am on it, building on top of this
diff:

-- snipsnap --
diff --git a/t/t4033-diff-patience.sh b/t/t4033-diff-patience.sh
index 3c9932e..6da435b 100755
--- a/t/t4033-diff-patience.sh
+++ b/t/t4033-diff-patience.sh
@@ -5,6 +5,13 @@ test_description='patience diff algorithm'
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/lib-diff-alternative.sh
 
+test_expect_failure '--ignore-space-at-eol with a single appended character' '
+	printf "a\nb\nc\n" >pre &&
+	printf "a\nbX\nc\n" >post &&
+	git diff --no-index --patience --ignore-space-at-eol pre post >diff &&
+	grep "^+.*X" diff
+'
+
 test_diff_frobnitz "patience"
 
 test_diff_unique "patience"

^ permalink raw reply related	[relevance 14%]

* Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
@ 2016-07-08 16:51 13% Naja Melan
  2016-07-09  6:24 14% ` Johannes Schindelin
  0 siblings, 1 reply; 46+ results
From: Naja Melan @ 2016-07-08 16:51 UTC (permalink / raw)
  To: git

When diffing with --patience and --ignore-space-at-eol, a change that
adds or removes just one character a the end of a line isn't picked up.

Other diff algorithms don't suffer from this and patience doesn't if I
don't put --ignore-space-at-eol.

See the following output for a proof:


$ git diff --ignore-space-at-eol lib/gitomate/facts/path.rb

diff --git a/lib/gitomate/facts/path.rb b/lib/gitomate/facts/path.rb
index bc99661..a5cd184 100644
--- a/lib/gitomate/facts/path.rb
+++ b/lib/gitomate/facts/path.rb
@@ -77,7 +77,7 @@ def check( update = false )
      options( :exist ) and warn "#{@info[ :path ].inspect} does not exist."
      options( :exist ) or  warn "#{@info[ :path ].inspect} exists but
it shouldn't."

-     @checked = true
+     @checked = trued
      return @checkPassed = false

   end

$ git diff --patience --ignore-space-at-eol lib/gitomate/facts/path.rb
-> no output

$ git diff --patience lib/gitomate/facts/path.rb

diff --git a/lib/gitomate/facts/path.rb b/lib/gitomate/facts/path.rb
index bc99661..a5cd184 100644
--- a/lib/gitomate/facts/path.rb
+++ b/lib/gitomate/facts/path.rb
@@ -77,7 +77,7 @@ def check( update = false )
      options( :exist ) and warn "#{@info[ :path ].inspect} does not exist."
      options( :exist ) or  warn "#{@info[ :path ].inspect} exists but
it shouldn't."

-     @checked = true
+     @checked = trued
      return @checkPassed = false

   end


Naja Melan

^ permalink raw reply related	[relevance 13%]

* Re: problems installing GIT on my MAC OS X 10.11.5
  2016-06-14 16:48  0%       ` Torsten Bögershausen
@ 2016-06-14 16:49  0%         ` Maria Jose Fernandez
  0 siblings, 0 replies; 46+ results
From: Maria Jose Fernandez @ 2016-06-14 16:49 UTC (permalink / raw)
  To: Torsten Bögershausen; +Cc: Konstantin Khomoutov, git

I am very sorry but I am not understanding what you are saying. 
I will try with homebrew and see if it works that way.

> On 14 Jun 2016, at 17:48, Torsten Bögershausen <tboegi@web.de> wrote:
> 
> On 14.06.16 18:45, Maria Jose Fernandez wrote:
>> From http://git-scm.com/download/mac I clicked to download manually.
>> Then it goes to https://sourceforge.net/projects/git-osx-installer/files/git-2.8.1-intel-universal-mavericks.dmg/download?use_mirror=autoselect
>> I found the git - 2.8.1-intel-universal-mavericks.dmg <https://sourceforge.net/projects/git-osx-installer/files/git-2.8.1-intel-universal-mavericks.dmg/download?use_mirror=autoselect> downloaded on my desktop. I open that and go through the installation process and then it says is installed but not found anywhere on my computer. 
>> 
>> 
> It says ?
> 
> Do you think that you open a terminal and type
> which git
> git --version
> and post the output here ?
> 
> 

^ permalink raw reply	[relevance 0%]

* Re: problems installing GIT on my MAC OS X 10.11.5
       [not found]         ` <E9D8E5F7-BBD1-4384-A6D6-B9184AEDE881@gmail.com>
@ 2016-06-14 16:48  0%       ` Torsten Bögershausen
  2016-06-14 16:49  0%         ` Maria Jose Fernandez
  0 siblings, 1 reply; 46+ results
From: Torsten Bögershausen @ 2016-06-14 16:48 UTC (permalink / raw)
  To: Maria Jose Fernandez; +Cc: Konstantin Khomoutov, git

On 14.06.16 18:45, Maria Jose Fernandez wrote:
> From http://git-scm.com/download/mac I clicked to download manually.
> Then it goes to https://sourceforge.net/projects/git-osx-installer/files/git-2.8.1-intel-universal-mavericks.dmg/download?use_mirror=autoselect
> I found the git - 2.8.1-intel-universal-mavericks.dmg <https://sourceforge.net/projects/git-osx-installer/files/git-2.8.1-intel-universal-mavericks.dmg/download?use_mirror=autoselect> downloaded on my desktop. I open that and go through the installation process and then it says is installed but not found anywhere on my computer. 
>
>
It says ?

Do you think that you open a terminal and type
which git
git --version
and post the output here ?

^ permalink raw reply	[relevance 0%]

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

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

The tarballs are found at:

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

UI, Workflows & Features

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

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

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

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

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

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

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

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

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

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

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

 * Shell completion (in contrib/) updates.

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

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

 * "git mergetools" learned to drive ExamDiff.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Performance, Internal Implementation, Development Support etc.

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

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

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

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

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

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

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

 * Build updates for MSVC.

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

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

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

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

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

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

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

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

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

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

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

 * Add perf test for "rebase -i".

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

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

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

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

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

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

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

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


Also contains various documentation updates and code clean-ups.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * UI consistency improvements for "git mergetool".

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

 * Fix a broken "p4 lfs" test.

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

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

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

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

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

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

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

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

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

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

 * CI test was taught to build documentation pages.

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

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

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

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

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

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

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

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

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

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

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

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

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

Changes since v2.8.0 are as follows:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Keller Fuchs (1):
      Documentation: clarify signature verification

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Trần Ngọc Quân (1):
      l10n: Updated Vietnamese translation (2597t)

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

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

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

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

^ permalink raw reply	[relevance 1%]

* Re: t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie
  2016-06-07 13:07  0%   ` Pirate Praveen
@ 2016-06-08  7:12  0%     ` Johannes Schindelin
  0 siblings, 0 replies; 46+ results
From: Johannes Schindelin @ 2016-06-08  7:12 UTC (permalink / raw)
  To: Pirate Praveen; +Cc: git

Hi Pirate Praveen,

On Tue, 7 Jun 2016, Pirate Praveen wrote:

> On Tuesday 07 June 2016 04:00 PM, Johannes Schindelin wrote:
> > Hi Pirate Praveen,
> > 
> > On Tue, 7 Jun 2016, Pirate Praveen wrote:
> > 
> >> I'm trying to rebuild git 2.8.1 on debian jessie/stable and I get this
> >> error (tests upto this succeeds).
> >>
> >> not ok 32 - should avoid cleaning possible submodules
> > 
> > How about re-running the script with -i -v -x? If the output is still
> > not shining enough light on it, maybe you want to paste the (relevant part
> > of the) output into a reply?
> 
> + rm -fr to_clean possible_sub1
> [...]

Sorry, I must have missed your diligent analysis.

Ciao,
Johannes

^ permalink raw reply	[relevance 0%]

* Re: t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie
  2016-06-07 10:30  0% ` Johannes Schindelin
@ 2016-06-07 13:07  0%   ` Pirate Praveen
  2016-06-08  7:12  0%     ` Johannes Schindelin
  0 siblings, 1 reply; 46+ results
From: Pirate Praveen @ 2016-06-07 13:07 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

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

On Tuesday 07 June 2016 04:00 PM, Johannes Schindelin wrote:
> Hi Pirate Praveen,
> 
> On Tue, 7 Jun 2016, Pirate Praveen wrote:
> 
>> I'm trying to rebuild git 2.8.1 on debian jessie/stable and I get this
>> error (tests upto this succeeds).
>>
>> not ok 32 - should avoid cleaning possible submodules
> 
> How about re-running the script with -i -v -x? If the output is still
> not shining enough light on it, maybe you want to paste the (relevant part
> of the) output into a reply?

+ rm -fr to_clean possible_sub1
+ mkdir to_clean possible_sub1
+ test_when_finished rm -rf possible_sub*
+ test 0 = 0
+ test_cleanup={ rm -rf possible_sub*
                } && (exit "$eval_ret"); eval_ret=$?; :
+ echo gitdir: foo
+
+ chmod 0 possible_sub1/.git
+
+ git clean -f -d
Skipping repository baz/boo

Skipping repository foo/
Removing possible_sub1/
Skipping repository repo/
Skipping repository sub2/
Removing to_clean/
+ test_path_is_file possible_sub1/.git
+ test -f possible_sub1/.git
+ echo File possible_sub1/.git doesn't exist.
File possible_sub1/.git doesn't exist.
+ false
error: last command exited with $?=1
not ok 32 - should avoid cleaning possible submodules
#
#               rm -fr to_clean possible_sub1 &&
#               mkdir to_clean possible_sub1 &&
#               test_when_finished "rm -rf possible_sub*" &&
#               echo "gitdir: foo" >possible_sub1/.git &&
#               >possible_sub1/hello.world &&
#               chmod 0 possible_sub1/.git &&
#               >to_clean/should_clean.this &&
#               git clean -f -d &&
#               test_path_is_file possible_sub1/.git &&
#               test_path_is_file possible_sub1/hello.world &&
#               test_path_is_missing to_clean
#

> Ciao,
> Johannes
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[relevance 0%]

* Re: t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie
  2016-06-07  8:27  9% t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie Pirate Praveen
@ 2016-06-07 10:30  0% ` Johannes Schindelin
  2016-06-07 13:07  0%   ` Pirate Praveen
  0 siblings, 1 reply; 46+ results
From: Johannes Schindelin @ 2016-06-07 10:30 UTC (permalink / raw)
  To: Pirate Praveen; +Cc: git

Hi Pirate Praveen,

On Tue, 7 Jun 2016, Pirate Praveen wrote:

> I'm trying to rebuild git 2.8.1 on debian jessie/stable and I get this
> error (tests upto this succeeds).
> 
> not ok 32 - should avoid cleaning possible submodules

How about re-running the script with -i -v -x? If the output is still
not shining enough light on it, maybe you want to paste the (relevant part
of the) output into a reply?

Ciao,
Johannes

^ permalink raw reply	[relevance 0%]

* t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie
@ 2016-06-07  8:27  9% Pirate Praveen
  2016-06-07 10:30  0% ` Johannes Schindelin
  0 siblings, 1 reply; 46+ results
From: Pirate Praveen @ 2016-06-07  8:27 UTC (permalink / raw)
  To: git

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

Hi,

I'm trying to rebuild git 2.8.1 on debian jessie/stable and I get this
error (tests upto this succeeds).

not ok 32 - should avoid cleaning possible submodules

I added debian stretch repo to apt sources.list and ran apt-get source
-b git.

You can see the build options passed here
http://repo.or.cz/git/debian.git/blob/HEAD:/debian/rules

Since it is a working fine on debian sid/unstable, I did not want to
report it to debian package maintainers.

I noticed the same failure for git 2.8.0-rc3 as well. I could ignore the
test failure and go ahead, but I'd like to fix this if possible.

Thanks
Praveen


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[relevance 9%]

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

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

The tarballs are found at:

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

UI, Workflows & Features

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

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

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

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

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

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

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

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

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

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

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

 * Shell completion (in contrib/) updates.

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

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

 * "git mergetools" learned to drive ExamDiff.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Performance, Internal Implementation, Development Support etc.

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

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

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

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

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

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

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

 * Build updates for MSVC.

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

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

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

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

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

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

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

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

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

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

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

 * Add perf test for "rebase -i".

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

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

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

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

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

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

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

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


Also contains various documentation updates and code clean-ups.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * UI consistency improvements for "git mergetool".

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

 * Fix a broken "p4 lfs" test.

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

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

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

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

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

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

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

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

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

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

 * CI test was taught to build documentation pages.

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

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

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

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

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

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

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

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

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

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

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

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

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

Changes since v2.8.0 are as follows:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Keller Fuchs (1):
      Documentation: clarify signature verification

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.9.0-rc1
@ 2016-05-31 21:53  1% Junio C Hamano
  0 siblings, 0 replies; 46+ results
From: Junio C Hamano @ 2016-05-31 21:53 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

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

There still are a few topics yet to be merged to 'master' for the
upcoming release, but otherwise this is pretty much "feature
complete".  One known brown-paper-bag breakage exists in t/perf/,
whose fix is still in 'next'.

The tarballs are found at:

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

UI, Workflows & Features

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

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

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

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

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

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

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

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

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

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

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

 * Shell completion (in contrib/) updates.

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

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

 * "git mergetools" learned to drive ExamDiff.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Performance, Internal Implementation, Development Support etc.

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

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

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

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

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

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

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

 * Build updates for MSVC.

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

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

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

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

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

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

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

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

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

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

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

 * Add perf test for "rebase -i".

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

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

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

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

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


Also contains various documentation updates and code clean-ups.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * UI consistency improvements for "git mergetool".

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

 * Fix a broken "p4 lfs" test.

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

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

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

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

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

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.
   (merge e5a39ad bn/http-cookiefile-config later to maint).

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.
   (merge dca83ab jc/config-pathname-type later to maint).

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.
   (merge f6a5279 sb/submodule-deinit-all later to maint).

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.
   (merge 1cca17d jc/linkgit-fix later to maint).

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

 * CI test was taught to build documentation pages.
   (merge b98712b ls/travis-build-doc later to maint).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.
   (merge 6d2d780 jc/fsck-nul-in-commit later to maint).

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).
   (merge 8e98b35 jk/rebase-interactive-eval-fix later to maint).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.
   (merge ebf31e7 js/windows-dotgit later to maint).

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.
   (merge 05a5869 kf/gpg-sig-verification-doc later to maint).

 * A couple of bugs around core.autocrlf have been fixed.
   (merge caa47ad tb/core-eol-fix later to maint).

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.
   (merge 90a78b8 ar/diff-args-osx-precompose later to maint).

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.
   (merge 366f9ce da/difftool later to maint).

 * The "are we talking with TTY, doing an interactive session?"
   detection has been updated to work better for "Git for Windows".
   (merge f7f90e0 kb/msys2-tty later to maint).

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

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

 * Other minor clean-ups and documentation updates
   (merge 832c0e5 lp/typofixes later to maint).
   (merge f5ee54a sb/z-is-gnutar-ism later to maint).
   (merge 2e3926b va/i18n-misc-updates later to maint).
   (merge f212dcc bn/config-doc-tt-varnames later to maint).
   (merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
   (merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
   (merge 4df4313 jc/test-seq later to maint).
   (merge a75a308 tb/t5601-sed-fix later to maint).
   (merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
   (merge dee2303 va/mailinfo-doc-typofix later to maint).

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

Changes since v2.8.0 are as follows:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Johannes Sixt (3):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing
      t6044: replace seq by test_seq

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

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

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

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

Keller Fuchs (1):
      Documentation: clarify signature verification

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SZEDER Gábor (5):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground

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

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

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

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

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

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

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

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

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

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

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

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

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

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.9.0-rc0
@ 2016-05-23 23:23  1% Junio C Hamano
  0 siblings, 0 replies; 46+ results
From: Junio C Hamano @ 2016-05-23 23:23 UTC (permalink / raw)
  To: git

An early preview release Git v2.9.0-rc0 is now available for
testing at the usual places.  It is comprised of 443 non-merge
commits since v2.8.0, contributed by 60 people, 24 of which are
new faces.

The tarballs are found at:

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

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

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

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

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

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

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

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

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

Backward compatibility note
---------------------------

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

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

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

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


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

UI, Workflows & Features

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

 * The end-user facing Porcelain level commands like "diff" and "log"
   now enables the rename detection by default.

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

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

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

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

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

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

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

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

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

 * Shell completion (in contrib/) updates.

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

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

 * "git mergetools" learned to drive ExamDiff.

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

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

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

 * "git rerere" can encounter two or more files with the same conflict
   signature that have to be resolved in different ways, but there was
   no way to record these separate resolutions.
   (merge d9d501b068 jc/rerere-multi later to maint).

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

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

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

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

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

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

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

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

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

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

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


Performance, Internal Implementation, Development Support etc.

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

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

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

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

 * A major part of "git submodule update" has been ported to C to take
   advantage of the recently added framework to run download tasks in
   parallel.

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

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

 * Build updates for MSVC.

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

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

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

 * Unify internal logic between "git tag -v" and "git verify-tag"
   commands by making one directly call into the other.
   (merge bef234b st/verify-tag later to maint).

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

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

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

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

 * Update of "git submodule" to move pieces of logic to C continues.

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

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

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

 * Add perf test for "rebase -i"

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

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

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


Also contains various documentation updates and code clean-ups.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 * "git submodule" reports the paths of submodules the command
   recurses into, but this was incorrect when the command was not run
   from the root level of the superproject.

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

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

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

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

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

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

 * UI consistency improvements for "git mergetool".

 * "git rebase -m" could be asked to rebase an entire branch starting
   from the root, but failed by assuming that there always is a parent
   commit to the first commit on the branch.
   (merge 79f4344 bw/rebase-merge-entire-branch later to maint).

 * Fix a broken "p4 lfs" test.

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

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

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

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

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

 * "http.cookieFile" configuration variable clearly wants a pathname,
   but we forgot to treat it as such by e.g. applying tilde expansion.
   (merge e5a39ad bn/http-cookiefile-config later to maint).

 * Consolidate description of tilde-expansion that is done to
   configuration variables that take pathname to a single place.
   (merge dca83ab jc/config-pathname-type later to maint).

 * Correct faulty recommendation to use "git submodule deinit ." when
   de-initialising all submodules, which would result in a strange
   error message in a pathological corner case.
   (merge f6a5279 sb/submodule-deinit-all later to maint).

 * Many 'linkgit:<git documentation page>' references were broken,
   which are all fixed with this.
   (merge 1cca17d jc/linkgit-fix later to maint).

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

 * CI test was taught to build documentation pages.
   (merge b98712b ls/travis-build-doc later to maint).

 * "git fsck" learned to catch NUL byte in a commit object as
   potential error and warn.
   (merge 6d2d780 jc/fsck-nul-in-commit later to maint).

 * Portability enhancement for "rebase -i" to help platforms whose
   shell does not like "for i in <empty>" (which is not POSIX-kosher).
   (merge 8e98b35 jk/rebase-interative-eval-fix later to maint).

 * On Windows, .git and optionally any files whose name starts with a
   dot are now marked as hidden, with a core.hideDotFiles knob to
   customize this behaviour.
   (merge ebf31e7 js/windows-dotgit later to maint).

 * Documentation for "git merge --verify-signatures" has been updated
   to clarify that the signature of only the commit at the tip is
   verified.  Also the phrasing used for signature and key validity is
   adjusted to align with that used by OpenPGP.
   (merge 05a5869 kf/gpg-sig-verification-doc later to maint).

 * A couple of bugs around core.autocrlf have been fixed.
   (merge caa47ad tb/core-eol-fix later to maint).

 * Many commands normalize command line arguments from NFD to NFC
   variant of UTF-8 on OSX, but commands in the "diff" family did
   not, causing "git diff $path" to complain that no such path is
   known to Git.  They have been taught to do the normalization.
   (merge 90a78b8 ar/diff-args-osx-precompose later to maint).

 * "git difftool" learned to handle unmerged paths correctly in
   dir-diff mode.
   (merge 366f9ce da/difftool later to maint).

 * Other minor clean-ups and documentation updates
   (merge 832c0e5 lp/typofixes later to maint).
   (merge f5ee54a sb/z-is-gnutar-ism later to maint).
   (merge 2e3926b va/i18n-misc-updates later to maint).
   (merge f212dcc bn/config-doc-tt-varnames later to maint).
   (merge f54bea4 nd/remote-plural-ours-plus-theirs later to maint).
   (merge 2bb0518 ak/t4151-ls-files-could-be-empty later to maint).
   (merge 4df4313 jc/test-seq later to maint).
   (merge a75a308 tb/t5601-sed-fix later to maint).
   (merge 6c1fbe1 va/i18n-remote-comment-to-align later to maint).
   (merge dee2303 va/mailinfo-doc-typofix later to maint).

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

Changes since v2.8.0 are as follows:

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

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

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

Armin Kunaschik (1):
      t4151: make sure argument to 'test -z' is given

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

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

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

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

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

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

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

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

Eric Sunshine (5):
      lib-gpg: drop unnecessary "missing GPG" warning
      t6302: normalize names and descriptions of signed tags
      t6302: also test annotated in addition to signed tags
      t6302: skip only signed tags rather than all tests when GPG is missing
      git-format-patch.txt: don't show -s as shorthand for multiple options

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

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

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

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

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

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

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

Johannes Sixt (2):
      Windows: shorten code by re-using convert_slashes()
      Windows: add pthread_sigmask() that does nothing

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

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

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

Keller Fuchs (1):
      Documentation: clarify signature verification

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ramsay Jones (2):
      xdiff/xprepare: use the XDF_DIFF_ALG() macro to access flag bits
      xdiff/xprepare: fix a memory leak

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

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

SZEDER Gábor (5):
      diffcore: fix iteration order of identical files during rename detection
      for-each-ref: fix description of '--contains' in manpage
      test-lib: simplify '--option=value' parsing
      t9824: fix broken &&-chain in a subshell
      t5510: run auto-gc in the foreground

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

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

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

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

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

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

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

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

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

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

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

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

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

^ permalink raw reply	[relevance 1%]

* Re: bug report
  2016-05-13  5:23  9% ` Pranit Bauva
@ 2016-05-13  5:58  0%   ` 李本超
  0 siblings, 0 replies; 46+ results
From: 李本超 @ 2016-05-13  5:58 UTC (permalink / raw)
  To: Pranit Bauva; +Cc: Git List

git version 2.6.4 (Apple Git-63)
system version: OS X EI Capitan 10.11.4

below is the steps:
$ mkdir test_repo
$ cd test_repo
$ git init
$ echo "hello" > README.md
$ git commit -a -m 'Add README.md'

$ git checkout -b A
$ echo "world" > README.md
$ git commit -a -m 'Add one line'

$ git checkout master
$ git checkout -b B
$ echo "world" > README.md
$ git commit -a -m 'Add one line too'
$ [midify 'world' line to other things like 'git' using vi]
$ git commit -a -m 'Modify one line'

$ git checkout master
$ git merge A

$ git checkout B
$ git rebase master [problem is here, cat README.rd we will get :
hello and git instead of hello world git]

2016-05-13 13:23 GMT+08:00 Pranit Bauva <pranit.bauva@gmail.com>:
> Please mention the version no of git you are using and your system.
> I am answering according to git 2.8.1 Lubuntu 15.04
>
> On Fri, May 13, 2016 at 10:34 AM, 李本超 <libenchao@gmail.com> wrote:
>> Hi all,
>>
>>       Yestoday when I worked using Git, I found a bug. It's about
>> rebase. Or I don't know if it is a bug, maybe that is Git. Below is my
>> problem:
>>
>>       There is a master branch, and we develop in our own branch.
>> Let's simplify this: there are two branches created at the same commit
>> point at master. Then branch A add a function X. Branch B add funciton
>> X too (yes, they are very same). Then branch B modify function X to
>> function Y.
>
> What do you mean by this? Did you amend the previous commit, or
> introduced another separate commit ?
>
>>       Branch A finishes it's job first and merged to master
>> successfully and happily without any conflicts. When branch B wants to
>> merge to master, he finds that master has updated. So branch B must
>> rebase to the current master. Then problem happends: git rebase
>> successfully without any conflicts. But branch B cannot see function X
>> from master (or branch A), only its own function Y.
>>       I think that's because Git is based on file instead of patch.
>> But I think Git can report it in this situation.
>>       How do you think ? Thank you anyway for maintaining this amazing software.
>
> Well I tried to reproduce the problem. I did the following steps:
> $ mdkir test_repo
> $ cd test_repo
> $ git init
> $ echo Hello >hi
> $ git commit -a -m "C1"
> $ git checkout -b A
> $ echo Bye >hi
> $ git commit -a -m "C2 - A"
> $ git checkout -
> $ git checkout -b B
> $ echo "Bye." >hi
> $ git commit -a -m "C3 - B"
> $ git checkout -
> $ git merge A
> $ git checkout B
> $ git rebase master
>
> This shows that some merge conflicts needs resolving. Did I follow
> your steps or I missed something? It would be better if you could
> reproduce your steps like I did so as to make things more clear to us.
>
> Regards,
> Pranit Bauva



-- 
Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

^ permalink raw reply	[relevance 0%]

* Re: bug report
  @ 2016-05-13  5:23  9% ` Pranit Bauva
  2016-05-13  5:58  0%   ` 李本超
  0 siblings, 1 reply; 46+ results
From: Pranit Bauva @ 2016-05-13  5:23 UTC (permalink / raw)
  To: 李本超; +Cc: Git List

Please mention the version no of git you are using and your system.
I am answering according to git 2.8.1 Lubuntu 15.04

On Fri, May 13, 2016 at 10:34 AM, 李本超 <libenchao@gmail.com> wrote:
> Hi all,
>
>       Yestoday when I worked using Git, I found a bug. It's about
> rebase. Or I don't know if it is a bug, maybe that is Git. Below is my
> problem:
>
>       There is a master branch, and we develop in our own branch.
> Let's simplify this: there are two branches created at the same commit
> point at master. Then branch A add a function X. Branch B add funciton
> X too (yes, they are very same). Then branch B modify function X to
> function Y.

What do you mean by this? Did you amend the previous commit, or
introduced another separate commit ?

>       Branch A finishes it's job first and merged to master
> successfully and happily without any conflicts. When branch B wants to
> merge to master, he finds that master has updated. So branch B must
> rebase to the current master. Then problem happends: git rebase
> successfully without any conflicts. But branch B cannot see function X
> from master (or branch A), only its own function Y.
>       I think that's because Git is based on file instead of patch.
> But I think Git can report it in this situation.
>       How do you think ? Thank you anyway for maintaining this amazing software.

Well I tried to reproduce the problem. I did the following steps:
$ mdkir test_repo
$ cd test_repo
$ git init
$ echo Hello >hi
$ git commit -a -m "C1"
$ git checkout -b A
$ echo Bye >hi
$ git commit -a -m "C2 - A"
$ git checkout -
$ git checkout -b B
$ echo "Bye." >hi
$ git commit -a -m "C3 - B"
$ git checkout -
$ git merge A
$ git checkout B
$ git rebase master

This shows that some merge conflicts needs resolving. Did I follow
your steps or I missed something? It would be better if you could
reproduce your steps like I did so as to make things more clear to us.

Regards,
Pranit Bauva

^ permalink raw reply	[relevance 9%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03 19:00 14%               ` Jeff King
@ 2016-05-03 21:28 11%                 ` erik elfström
  0 siblings, 0 replies; 46+ results
From: erik elfström @ 2016-05-03 21:28 UTC (permalink / raw)
  To: Jeff King
  Cc: Stefan Beller, Junio C Hamano, Jan Keromnes, git@vger.kernel.org

Thanks for fixing the missing SANITY prerequisite Stefan.

As for the error handling logic in setup.c: is_nonbare_repository_dir
(was clean.c: is_git_repository) my reasoning is as follows:

READ_GITFILE_ERR_STAT_FAILED
READ_GITFILE_ERR_NOT_A_FILE:

When checking random paths for .git files these are the common error
modes, file is not there or it is a directory. This should not be
interpreted as a valid .git file.


READ_GITFILE_ERR_OPEN_FAILED
READ_GITFILE_ERR_READ_FAILED:

Here we found a .git file but could not open and read it to verify
that it is valid. Treating it as valid is the safest option for clean.
For resolve_gitlink_ref I think it maybe leads to the creation of a
redundant ref cache entries but I don't think this is a problem unless
someone has a huge amount of unreadable .git files lying around.


READ_GITFILE_ERR_TOO_LARGE:

File is absurdly large (1MB), very unlikely to be a valid .git file.


READ_GITFILE_ERR_INVALID_FORMAT
READ_GITFILE_ERR_NO_PATH:

File is malformed in some way, either the "gitdir:" prefix is missing
or the path is missing. Could theoretically be a corrupted .git file
but seems unlikely.


READ_GITFILE_ERR_NOT_A_REPO:

This is maybe a bit more suspicious. Here we have found a .git file,
it has the format "gitdir: some/path" but
is_git_directory("some/path") returned false, meaning that "some/path"
does not fulfill:

/*
 * Test if it looks like we're at a git directory.
 * We want to see:
 *
 *  - either an objects/ directory _or_ the proper
 *    GIT_OBJECT_DIRECTORY environment variable
 *  - a refs/ directory
 *  - either a HEAD symlink or a HEAD file that is formatted as
 *    a proper "ref:", or a regular file HEAD that has a properly
 *    formatted sha1 object name.
*/

Technically we don't have a valid .git file here but we have something
that really tries to be. I guess it is debatable what the correct
conservative choice is here and if it is the same for all callers.

/Erik

^ permalink raw reply	[relevance 11%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03 18:53 14%             ` Stefan Beller
@ 2016-05-03 19:00 14%               ` Jeff King
  2016-05-03 21:28 11%                 ` erik elfström
  0 siblings, 1 reply; 46+ results
From: Jeff King @ 2016-05-03 19:00 UTC (permalink / raw)
  To: Stefan Beller
  Cc: Junio C Hamano, Jan Keromnes, Erik Elfström,
	git@vger.kernel.org

On Tue, May 03, 2016 at 11:53:36AM -0700, Stefan Beller wrote:

> > is related or worth doing on top. But I don't think so. That code is
> > just trying to convert some error-cases into "let's err on the side of
> > assuming it is a repo". Doing that for all values of gitfile_error is
> > definitely the wrong thing (it would treat a totally non-existent
> > ".git" file as "yes, it's there", which is clearly bogus).
> 
> The proposed change is overly eager indeed.
> What if we get back a READ_GITFILE_ERR_STAT_FAILED ?
> I would think that is a reasonable indicator of a submodule being there?
> (The stat failure may be transient ENOMEM Out of memory (i.e., kernel memory).)

That would certainly be wrong with read_gitfile_gently() as it is today;
it does not distinguish various values of errno for stat(), so that
would get the "there's not even a .git file here at all" case wrong.

So the first step would be to have read_gitfile_gently() start looking
for ENOENT versus other errors. I don't know if that's worth the
trouble; we're pretty cavalier about treating stat failure as "file does
not exist" in the rest of the code.

-Peff

^ permalink raw reply	[relevance 14%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03 18:48 13%           ` Jeff King
@ 2016-05-03 18:53 14%             ` Stefan Beller
  2016-05-03 19:00 14%               ` Jeff King
  0 siblings, 1 reply; 46+ results
From: Stefan Beller @ 2016-05-03 18:53 UTC (permalink / raw)
  To: Jeff King
  Cc: Junio C Hamano, Jan Keromnes, Erik Elfström,
	git@vger.kernel.org

On Tue, May 3, 2016 at 11:48 AM, Jeff King <peff@peff.net> wrote:
> On Tue, May 03, 2016 at 11:05:09AM -0700, Junio C Hamano wrote:
>
>> On Tue, May 3, 2016 at 11:02 AM, Stefan Beller <sbeller@google.com> wrote:
>> >
>> > So I wonder if is_nonbare_repository_dir() is the culprit here.
>> > (We do a chmod 0 on the .git before the `git clean` in the test to confuse Git)
>>
>> Ask if the test is run as root; if so, then mark the test to require
>> SANITY prerequisite.
>
> Yeah, I can easily reproduce the failure with `sudo ./t7300-clean.sh`.
> So the immediate fix is the SANITY prereq.
>
> Looking at Stefan's message, I wondered if the patch he came up with:
>
>         diff --git a/setup.c b/setup.c
>         index 3439ec6..4cfba8f 100644
>         --- a/setup.c
>         +++ b/setup.c
>         @@ -323,8 +323,7 @@ int is_nonbare_repository_dir(struct strbuf *path)
>                 strbuf_addstr(path, ".git");
>                 if (read_gitfile_gently(path->buf, &gitfile_error) ||
> is_git_directory(path->buf))
>                         ret = 1;
>         -       if (gitfile_error == READ_GITFILE_ERR_OPEN_FAILED ||
>         -           gitfile_error == READ_GITFILE_ERR_READ_FAILED)
>         +       if (gitfile_error)
>                         ret = 1;
>                 strbuf_setlen(path, orig_path_len);
>                 return ret;
>
> is related or worth doing on top. But I don't think so. That code is
> just trying to convert some error-cases into "let's err on the side of
> assuming it is a repo". Doing that for all values of gitfile_error is
> definitely the wrong thing (it would treat a totally non-existent
> ".git" file as "yes, it's there", which is clearly bogus).

The proposed change is overly eager indeed.
What if we get back a READ_GITFILE_ERR_STAT_FAILED ?
I would think that is a reasonable indicator of a submodule being there?
(The stat failure may be transient ENOMEM Out of memory (i.e., kernel memory).)

By being overly eager I wanted to make sure the assumptions I had were
wrong.

I'm about to send the SANITY prerequisite patch,

Thanks,
Stefan

>
> -Peff

^ permalink raw reply	[relevance 14%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03 18:05 14%         ` Junio C Hamano
@ 2016-05-03 18:48 13%           ` Jeff King
  2016-05-03 18:53 14%             ` Stefan Beller
  0 siblings, 1 reply; 46+ results
From: Jeff King @ 2016-05-03 18:48 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Stefan Beller, Jan Keromnes, Erik Elfström,
	git@vger.kernel.org

On Tue, May 03, 2016 at 11:05:09AM -0700, Junio C Hamano wrote:

> On Tue, May 3, 2016 at 11:02 AM, Stefan Beller <sbeller@google.com> wrote:
> >
> > So I wonder if is_nonbare_repository_dir() is the culprit here.
> > (We do a chmod 0 on the .git before the `git clean` in the test to confuse Git)
> 
> Ask if the test is run as root; if so, then mark the test to require
> SANITY prerequisite.

Yeah, I can easily reproduce the failure with `sudo ./t7300-clean.sh`.
So the immediate fix is the SANITY prereq.

Looking at Stefan's message, I wondered if the patch he came up with:

        diff --git a/setup.c b/setup.c
        index 3439ec6..4cfba8f 100644
        --- a/setup.c
        +++ b/setup.c
        @@ -323,8 +323,7 @@ int is_nonbare_repository_dir(struct strbuf *path)
                strbuf_addstr(path, ".git");
                if (read_gitfile_gently(path->buf, &gitfile_error) ||
is_git_directory(path->buf))
                        ret = 1;
        -       if (gitfile_error == READ_GITFILE_ERR_OPEN_FAILED ||
        -           gitfile_error == READ_GITFILE_ERR_READ_FAILED)
        +       if (gitfile_error)
                        ret = 1;
                strbuf_setlen(path, orig_path_len);
                return ret;

is related or worth doing on top. But I don't think so. That code is
just trying to convert some error-cases into "let's err on the side of
assuming it is a repo". Doing that for all values of gitfile_error is
definitely the wrong thing (it would treat a totally non-existent
".git" file as "yes, it's there", which is clearly bogus).

-Peff

^ permalink raw reply	[relevance 13%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03 18:02 10%       ` Stefan Beller
@ 2016-05-03 18:05 14%         ` Junio C Hamano
  2016-05-03 18:48 13%           ` Jeff King
  0 siblings, 1 reply; 46+ results
From: Junio C Hamano @ 2016-05-03 18:05 UTC (permalink / raw)
  To: Stefan Beller
  Cc: Jan Keromnes, Jeff King, Erik Elfström, git@vger.kernel.org

On Tue, May 3, 2016 at 11:02 AM, Stefan Beller <sbeller@google.com> wrote:
>
> So I wonder if is_nonbare_repository_dir() is the culprit here.
> (We do a chmod 0 on the .git before the `git clean` in the test to confuse Git)

Ask if the test is run as root; if so, then mark the test to require
SANITY prerequisite.

^ permalink raw reply	[relevance 14%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-05-03  9:19 12%     ` Jan Keromnes
@ 2016-05-03 18:02 10%       ` Stefan Beller
  2016-05-03 18:05 14%         ` Junio C Hamano
  0 siblings, 1 reply; 46+ results
From: Stefan Beller @ 2016-05-03 18:02 UTC (permalink / raw)
  To: Jan Keromnes, Jeff King, Erik Elfström; +Cc: git@vger.kernel.org

On Tue, May 3, 2016 at 2:19 AM, Jan Keromnes <janx@linux.com> wrote:
> Thanks for your replies! I was able to reproduce to failure on Git 2.8.2.
>
> Steps:
>
> # Build Git 2.8.2 and run t/t7300-clean.sh in a Dockerfile based on
> ubuntu:14.04.
> RUN mkdir /tmp/git \
>  && cd /tmp/git \
>  && curl https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.xz | tar xJ \
>  && cd git-2.8.2 \
>  && make all && cd t && ./t7300-clean.sh -d -i -v -x

I am on a Ubuntu 14.04.1 LTS derivative (plain, not inside a docker) and running
that list of commands (getting that tarball from kernel.org and testing) doesn't
reproduce the failure for me.

expecting success:
         rm -fr to_clean possible_sub1 &&
         mkdir to_clean possible_sub1 &&
         test_when_finished "rm -rf possible_sub*" &&
         echo "gitdir: foo" >possible_sub1/.git &&
         >possible_sub1/hello.world &&
         chmod 0 possible_sub1/.git &&
         >to_clean/should_clean.this &&
         git clean -f -d &&
         test_path_is_file possible_sub1/.git &&
         test_path_is_file possible_sub1/hello.world &&
         test_path_is_missing to_clean

++ rm -fr to_clean possible_sub1
++ mkdir to_clean possible_sub1
++ test_when_finished 'rm -rf possible_sub*'
++ test 0 = 0
++ test_cleanup='{ rm -rf possible_sub*
} && (exit "$eval_ret"); eval_ret=$?; :'
++ echo 'gitdir: foo'
++ chmod 0 possible_sub1/.git
++ git clean -f -d
Skipping repository baz/boo
Skipping repository foo/
Skipping repository possible_sub1/
Skipping repository repo/
Skipping repository sub2/
Removing to_clean/
++ test_path_is_file possible_sub1/.git
++ test -f possible_sub1/.git
++ test_path_is_file possible_sub1/hello.world
++ test -f possible_sub1/hello.world
++ test_path_is_missing to_clean
++ test -e to_clean
++ rm -rf possible_sub1
++ exit 0
++ eval_ret=0
++ :
ok 32 - should avoid cleaning possible submodules

>
> Judging from the line "Removing possible_sub1/", it looks like Git
> 2.8.2 removes a possible submodule while executing `git clean -f -d`,
> whereas the test expects it not to.

Yeah that is my conclusion as well. (The successful test doesn't remove it)
Reading the clean code at [1], specifically the loop starting at line 958,
there are two cases. Either the entry is a directory (submodules are
treated as special directories) or files.


So the line 975 is executed for that submodule as remove_dirs has the printing
in both cases.

Apparently the remove_dirs exits early for me in the condition

    if ((force_flag & REMOVE_DIR_KEEP_NESTED_GIT) &&
is_nonbare_repository_dir(path)) {

and your case doesn't. (I assume it falls through and later produces
the output in line 243.

So I wonder if is_nonbare_repository_dir() is the culprit here.
(We do a chmod 0 on the .git before the `git clean` in the test to confuse Git)

is_nonbare_repository_dir is only used in `git clean` as well as for the
files backend (which is rather new. I don't know the state of the usage there).

What I find suspicious about is_nonbare_repository_dir (found in setup.c:316),
is the assumption of only READ_GITFILE_ERR_OPEN_FAILED and
READ_GITFILE_ERR_READ_FAILED
leading to a repository.

I have cc'd Jeff and Erik, who have touched the code there, maybe they
have a thought on it.
In the mean time I would be interested if this change helps for you:

        diff --git a/setup.c b/setup.c
        index 3439ec6..4cfba8f 100644
        --- a/setup.c
        +++ b/setup.c
        @@ -323,8 +323,7 @@ int is_nonbare_repository_dir(struct strbuf *path)
                strbuf_addstr(path, ".git");
                if (read_gitfile_gently(path->buf, &gitfile_error) ||
is_git_directory(path->buf))
                        ret = 1;
        -       if (gitfile_error == READ_GITFILE_ERR_OPEN_FAILED ||
        -           gitfile_error == READ_GITFILE_ERR_READ_FAILED)
        +       if (gitfile_error)
                        ret = 1;
                strbuf_setlen(path, orig_path_len);
                return ret;

Do you do anything fancy with your file system?

Thanks,
Stefan


[1] https://github.com/git/git/blob/v2.8.2/builtin/clean.c#L854


>
> Is it possible to make Git's output even more verbose, so that it
> tells why it decides to remove "possible_sub1"? Are you able to
> reproduce this test fail on your side?
>
> This prevents doing a full profile build.
>
> Best,
> Jan
>
> On Fri, Apr 29, 2016 at 7:06 PM, Stefan Beller <sbeller@google.com> wrote:
>> On Fri, Apr 29, 2016 at 5:53 AM, Jan Keromnes <janx@linux.com> wrote:
>>> Hello,
>>>
>>> I tried running a full profile build of Git 2.8.1, but it looks like
>>> test #32 in `t7300-clean.sh` fails:
>>>
>>> Commands:
>>>
>>>> curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ
>>>> cd git-2.8.1
>>>> make prefix=/usr profile-install install-man -j18
>>>
>>> Logs of test-suite that fails:
>>>
>>> *** t7300-clean.sh ***
>>> ok 1 - setup
>>> ok 2 - git clean with skip-worktree .gitignore
>>> ok 3 - git clean
>>> ok 4 - git clean src/
>>> ok 5 - git clean src/ src/
>>> ok 6 - git clean with prefix
>>> ok 7 - git clean with relative prefix
>>> ok 8 - git clean with absolute path
>>> ok 9 - git clean with out of work tree relative path
>>> ok 10 - git clean with out of work tree absolute path
>>> ok 11 - git clean -d with prefix and path
>>> ok 12 - git clean symbolic link
>>> ok 13 - git clean with wildcard
>>> ok 14 - git clean -n
>>> ok 15 - git clean -d
>>> ok 16 - git clean -d src/ examples/
>>> ok 17 - git clean -x
>>> ok 18 - git clean -d -x
>>> ok 19 - git clean -d -x with ignored tracked directory
>>> ok 20 - git clean -X
>>> ok 21 - git clean -d -X
>>> ok 22 - git clean -d -X with ignored tracked directory
>>> ok 23 - clean.requireForce defaults to true
>>> ok 24 - clean.requireForce
>>> ok 25 - clean.requireForce and -n
>>> ok 26 - clean.requireForce and -f
>>> ok 27 - core.excludesfile
>>> ok 28 # skip removal failure (missing SANITY)
>>> ok 29 - nested git work tree
>>> ok 30 - should clean things that almost look like git but are not
>>> ok 31 - should not clean submodules
>>> not ok 32 - should avoid cleaning possible submodules
>>> #
>>> #               rm -fr to_clean possible_sub1 &&
>>> #               mkdir to_clean possible_sub1 &&
>>> #               test_when_finished "rm -rf possible_sub*" &&
>>> #               echo "gitdir: foo" >possible_sub1/.git &&
>>> #               >possible_sub1/hello.world &&
>>> #               chmod 0 possible_sub1/.git &&
>>> #               >to_clean/should_clean.this &&
>>> #               git clean -f -d &&
>>> #               test_path_is_file possible_sub1/.git &&
>>> #               test_path_is_file possible_sub1/hello.world &&
>>> #               test_path_is_missing to_clean
>>> #
>>>
>>> Best,
>>> Jan
>>
>> Thanks for reporting the bug!
>>
>> Have a look at t/README to run the tests with command line arguments.
>> (I usually run tests as ./tXXXfoo.sh -d -i -v -x with these arguments,
>> though I cannot remember what each of that does. One of it makes the
>> test suite stop on a failing test, such that you can cd into the testing
>> directory and check the state of the file. (Which are present, which are gone?)
>>
>> With these arguments it is also very verbose, and it would tell
>> you what is wrong (is the assertion wrong in the `test_path_is_file/missing`
>> or is it `git clean` segfaulting?)
>>
>> As Johannes said, it makes sense that you debug into that as
>> no one could reproduce it thus far on their system.
>>
>> Thanks,
>> Stefan

^ permalink raw reply	[relevance 10%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-04-29 17:06 13%   ` Stefan Beller
@ 2016-05-03  9:19 12%     ` Jan Keromnes
  2016-05-03 18:02 10%       ` Stefan Beller
  0 siblings, 1 reply; 46+ results
From: Jan Keromnes @ 2016-05-03  9:19 UTC (permalink / raw)
  To: Stefan Beller; +Cc: git@vger.kernel.org

Thanks for your replies! I was able to reproduce to failure on Git 2.8.2.

Steps:

# Build Git 2.8.2 and run t/t7300-clean.sh in a Dockerfile based on
ubuntu:14.04.
RUN mkdir /tmp/git \
 && cd /tmp/git \
 && curl https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.xz | tar xJ \
 && cd git-2.8.2 \
 && make all && cd t && ./t7300-clean.sh -d -i -v -x

Logs:

expecting success:
        rm -fr to_clean possible_sub1 &&
        mkdir to_clean possible_sub1 &&
        test_when_finished "rm -rf possible_sub*" &&
        echo "gitdir: foo" >possible_sub1/.git &&
        >possible_sub1/hello.world &&
        chmod 0 possible_sub1/.git &&
        >to_clean/should_clean.this &&
        git clean -f -d &&
        test_path_is_file possible_sub1/.git &&
        test_path_is_file possible_sub1/hello.world &&
        test_path_is_missing to_clean

+ rm -fr to_clean possible_sub1
+ mkdir to_clean possible_sub1
+ test_when_finished rm -rf possible_sub*
+ test 0 = 0
+ test_cleanup={ rm -rf possible_sub*
                } && (exit "$eval_ret"); eval_ret=$?; :
+ echo gitdir: foo
+
+ chmod 0 possible_sub1/.git
+
+ git clean -f -d
Skipping repository baz/boo
Skipping repository foo/
Removing possible_sub1/
Skipping repository repo/
Skipping repository sub2/
Removing to_clean/
+ test_path_is_file possible_sub1/.git
+ test -f possible_sub1/.git
+ echo File possible_sub1/.git doesn't exist.
+ false
error: last command exited with $?=1
File possible_sub1/.git doesn't exist.
not ok 32 - should avoid cleaning possible submodules
#
#               rm -fr to_clean possible_sub1 &&
#               mkdir to_clean possible_sub1 &&
#               test_when_finished "rm -rf possible_sub*" &&
#               echo "gitdir: foo" >possible_sub1/.git &&
#               >possible_sub1/hello.world &&
#               chmod 0 possible_sub1/.git &&
#               >to_clean/should_clean.this &&
#               git clean -f -d &&
#               test_path_is_file possible_sub1/.git &&
#               test_path_is_file possible_sub1/hello.world &&
#               test_path_is_missing to_clean
#

Judging from the line "Removing possible_sub1/", it looks like Git
2.8.2 removes a possible submodule while executing `git clean -f -d`,
whereas the test expects it not to.

Is it possible to make Git's output even more verbose, so that it
tells why it decides to remove "possible_sub1"? Are you able to
reproduce this test fail on your side?

This prevents doing a full profile build.

Best,
Jan

On Fri, Apr 29, 2016 at 7:06 PM, Stefan Beller <sbeller@google.com> wrote:
> On Fri, Apr 29, 2016 at 5:53 AM, Jan Keromnes <janx@linux.com> wrote:
>> Hello,
>>
>> I tried running a full profile build of Git 2.8.1, but it looks like
>> test #32 in `t7300-clean.sh` fails:
>>
>> Commands:
>>
>>> curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ
>>> cd git-2.8.1
>>> make prefix=/usr profile-install install-man -j18
>>
>> Logs of test-suite that fails:
>>
>> *** t7300-clean.sh ***
>> ok 1 - setup
>> ok 2 - git clean with skip-worktree .gitignore
>> ok 3 - git clean
>> ok 4 - git clean src/
>> ok 5 - git clean src/ src/
>> ok 6 - git clean with prefix
>> ok 7 - git clean with relative prefix
>> ok 8 - git clean with absolute path
>> ok 9 - git clean with out of work tree relative path
>> ok 10 - git clean with out of work tree absolute path
>> ok 11 - git clean -d with prefix and path
>> ok 12 - git clean symbolic link
>> ok 13 - git clean with wildcard
>> ok 14 - git clean -n
>> ok 15 - git clean -d
>> ok 16 - git clean -d src/ examples/
>> ok 17 - git clean -x
>> ok 18 - git clean -d -x
>> ok 19 - git clean -d -x with ignored tracked directory
>> ok 20 - git clean -X
>> ok 21 - git clean -d -X
>> ok 22 - git clean -d -X with ignored tracked directory
>> ok 23 - clean.requireForce defaults to true
>> ok 24 - clean.requireForce
>> ok 25 - clean.requireForce and -n
>> ok 26 - clean.requireForce and -f
>> ok 27 - core.excludesfile
>> ok 28 # skip removal failure (missing SANITY)
>> ok 29 - nested git work tree
>> ok 30 - should clean things that almost look like git but are not
>> ok 31 - should not clean submodules
>> not ok 32 - should avoid cleaning possible submodules
>> #
>> #               rm -fr to_clean possible_sub1 &&
>> #               mkdir to_clean possible_sub1 &&
>> #               test_when_finished "rm -rf possible_sub*" &&
>> #               echo "gitdir: foo" >possible_sub1/.git &&
>> #               >possible_sub1/hello.world &&
>> #               chmod 0 possible_sub1/.git &&
>> #               >to_clean/should_clean.this &&
>> #               git clean -f -d &&
>> #               test_path_is_file possible_sub1/.git &&
>> #               test_path_is_file possible_sub1/hello.world &&
>> #               test_path_is_missing to_clean
>> #
>>
>> Best,
>> Jan
>
> Thanks for reporting the bug!
>
> Have a look at t/README to run the tests with command line arguments.
> (I usually run tests as ./tXXXfoo.sh -d -i -v -x with these arguments,
> though I cannot remember what each of that does. One of it makes the
> test suite stop on a failing test, such that you can cd into the testing
> directory and check the state of the file. (Which are present, which are gone?)
>
> With these arguments it is also very verbose, and it would tell
> you what is wrong (is the assertion wrong in the `test_path_is_file/missing`
> or is it `git clean` segfaulting?)
>
> As Johannes said, it makes sense that you debug into that as
> no one could reproduce it thus far on their system.
>
> Thanks,
> Stefan

^ permalink raw reply	[relevance 12%]

* Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-04-29 12:53 21% ` Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build Jan Keromnes
  2016-04-29 12:58 14%   ` Johannes Schindelin
@ 2016-04-29 17:06 13%   ` Stefan Beller
  2016-05-03  9:19 12%     ` Jan Keromnes
  1 sibling, 1 reply; 46+ results
From: Stefan Beller @ 2016-04-29 17:06 UTC (permalink / raw)
  To: Jan Keromnes; +Cc: git@vger.kernel.org

On Fri, Apr 29, 2016 at 5:53 AM, Jan Keromnes <janx@linux.com> wrote:
> Hello,
>
> I tried running a full profile build of Git 2.8.1, but it looks like
> test #32 in `t7300-clean.sh` fails:
>
> Commands:
>
>> curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ
>> cd git-2.8.1
>> make prefix=/usr profile-install install-man -j18
>
> Logs of test-suite that fails:
>
> *** t7300-clean.sh ***
> ok 1 - setup
> ok 2 - git clean with skip-worktree .gitignore
> ok 3 - git clean
> ok 4 - git clean src/
> ok 5 - git clean src/ src/
> ok 6 - git clean with prefix
> ok 7 - git clean with relative prefix
> ok 8 - git clean with absolute path
> ok 9 - git clean with out of work tree relative path
> ok 10 - git clean with out of work tree absolute path
> ok 11 - git clean -d with prefix and path
> ok 12 - git clean symbolic link
> ok 13 - git clean with wildcard
> ok 14 - git clean -n
> ok 15 - git clean -d
> ok 16 - git clean -d src/ examples/
> ok 17 - git clean -x
> ok 18 - git clean -d -x
> ok 19 - git clean -d -x with ignored tracked directory
> ok 20 - git clean -X
> ok 21 - git clean -d -X
> ok 22 - git clean -d -X with ignored tracked directory
> ok 23 - clean.requireForce defaults to true
> ok 24 - clean.requireForce
> ok 25 - clean.requireForce and -n
> ok 26 - clean.requireForce and -f
> ok 27 - core.excludesfile
> ok 28 # skip removal failure (missing SANITY)
> ok 29 - nested git work tree
> ok 30 - should clean things that almost look like git but are not
> ok 31 - should not clean submodules
> not ok 32 - should avoid cleaning possible submodules
> #
> #               rm -fr to_clean possible_sub1 &&
> #               mkdir to_clean possible_sub1 &&
> #               test_when_finished "rm -rf possible_sub*" &&
> #               echo "gitdir: foo" >possible_sub1/.git &&
> #               >possible_sub1/hello.world &&
> #               chmod 0 possible_sub1/.git &&
> #               >to_clean/should_clean.this &&
> #               git clean -f -d &&
> #               test_path_is_file possible_sub1/.git &&
> #               test_path_is_file possible_sub1/hello.world &&
> #               test_path_is_missing to_clean
> #
>
> Best,
> Jan

Thanks for reporting the bug!

Have a look at t/README to run the tests with command line arguments.
(I usually run tests as ./tXXXfoo.sh -d -i -v -x with these arguments,
though I cannot remember what each of that does. One of it makes the
test suite stop on a failing test, such that you can cd into the testing
directory and check the state of the file. (Which are present, which are gone?)

With these arguments it is also very verbose, and it would tell
you what is wrong (is the assertion wrong in the `test_path_is_file/missing`
or is it `git clean` segfaulting?)

As Johannes said, it makes sense that you debug into that as
no one could reproduce it thus far on their system.

Thanks,
Stefan

^ permalink raw reply	[relevance 13%]

* Re: Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
  2016-04-29 12:53 21% ` Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build Jan Keromnes
@ 2016-04-29 12:58 14%   ` Johannes Schindelin
  2016-04-29 17:06 13%   ` Stefan Beller
  1 sibling, 0 replies; 46+ results
From: Johannes Schindelin @ 2016-04-29 12:58 UTC (permalink / raw)
  To: Jan Keromnes; +Cc: git

Hi Jan,

On Fri, 29 Apr 2016, Jan Keromnes wrote:

> I tried running a full profile build of Git 2.8.1, but it looks like
> test #32 in `t7300-clean.sh` fails:
> 
> Commands:
> 
> > curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ
> > cd git-2.8.1
> > make prefix=/usr profile-install install-man -j18
> 
> Logs of test-suite that fails:
> 
> *** t7300-clean.sh ***
> ok 1 - setup
> ok 2 - git clean with skip-worktree .gitignore
> ok 3 - git clean
> ok 4 - git clean src/
> ok 5 - git clean src/ src/
> ok 6 - git clean with prefix
> ok 7 - git clean with relative prefix
> ok 8 - git clean with absolute path
> ok 9 - git clean with out of work tree relative path
> ok 10 - git clean with out of work tree absolute path
> ok 11 - git clean -d with prefix and path
> ok 12 - git clean symbolic link
> ok 13 - git clean with wildcard
> ok 14 - git clean -n
> ok 15 - git clean -d
> ok 16 - git clean -d src/ examples/
> ok 17 - git clean -x
> ok 18 - git clean -d -x
> ok 19 - git clean -d -x with ignored tracked directory
> ok 20 - git clean -X
> ok 21 - git clean -d -X
> ok 22 - git clean -d -X with ignored tracked directory
> ok 23 - clean.requireForce defaults to true
> ok 24 - clean.requireForce
> ok 25 - clean.requireForce and -n
> ok 26 - clean.requireForce and -f
> ok 27 - core.excludesfile
> ok 28 # skip removal failure (missing SANITY)
> ok 29 - nested git work tree
> ok 30 - should clean things that almost look like git but are not
> ok 31 - should not clean submodules
> not ok 32 - should avoid cleaning possible submodules
> #
> #               rm -fr to_clean possible_sub1 &&
> #               mkdir to_clean possible_sub1 &&
> #               test_when_finished "rm -rf possible_sub*" &&
> #               echo "gitdir: foo" >possible_sub1/.git &&
> #               >possible_sub1/hello.world &&
> #               chmod 0 possible_sub1/.git &&
> #               >to_clean/should_clean.this &&
> #               git clean -f -d &&
> #               test_path_is_file possible_sub1/.git &&
> #               test_path_is_file possible_sub1/hello.world &&
> #               test_path_is_missing to_clean
> #

This log does not really help, in particular because your report does not
include vital information such as host OS, installed libraries, etc.

To debug further on your side (which is really the only logical thing to
do from here), have a look at this documentation:

	https://github.com/git-for-windows/git/wiki/Running-Git's-regression-tests#running-individual-tests

(even if it is on Git for Windows' wiki, you will find that the
suggestions apply to any development environment.)

Ciao,
Johannes

^ permalink raw reply	[relevance 14%]

* Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
       [not found]     <CAA6PgK7b=ithSYREV5axaE3fmRG5Vp06UtWiZXD-aJuZKfEVYA@mail.gmail.com>
@ 2016-04-29 12:53 21% ` Jan Keromnes
  2016-04-29 12:58 14%   ` Johannes Schindelin
  2016-04-29 17:06 13%   ` Stefan Beller
  0 siblings, 2 replies; 46+ results
From: Jan Keromnes @ 2016-04-29 12:53 UTC (permalink / raw)
  To: git

Hello,

I tried running a full profile build of Git 2.8.1, but it looks like
test #32 in `t7300-clean.sh` fails:

Commands:

> curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ
> cd git-2.8.1
> make prefix=/usr profile-install install-man -j18

Logs of test-suite that fails:

*** t7300-clean.sh ***
ok 1 - setup
ok 2 - git clean with skip-worktree .gitignore
ok 3 - git clean
ok 4 - git clean src/
ok 5 - git clean src/ src/
ok 6 - git clean with prefix
ok 7 - git clean with relative prefix
ok 8 - git clean with absolute path
ok 9 - git clean with out of work tree relative path
ok 10 - git clean with out of work tree absolute path
ok 11 - git clean -d with prefix and path
ok 12 - git clean symbolic link
ok 13 - git clean with wildcard
ok 14 - git clean -n
ok 15 - git clean -d
ok 16 - git clean -d src/ examples/
ok 17 - git clean -x
ok 18 - git clean -d -x
ok 19 - git clean -d -x with ignored tracked directory
ok 20 - git clean -X
ok 21 - git clean -d -X
ok 22 - git clean -d -X with ignored tracked directory
ok 23 - clean.requireForce defaults to true
ok 24 - clean.requireForce
ok 25 - clean.requireForce and -n
ok 26 - clean.requireForce and -f
ok 27 - core.excludesfile
ok 28 # skip removal failure (missing SANITY)
ok 29 - nested git work tree
ok 30 - should clean things that almost look like git but are not
ok 31 - should not clean submodules
not ok 32 - should avoid cleaning possible submodules
#
#               rm -fr to_clean possible_sub1 &&
#               mkdir to_clean possible_sub1 &&
#               test_when_finished "rm -rf possible_sub*" &&
#               echo "gitdir: foo" >possible_sub1/.git &&
#               >possible_sub1/hello.world &&
#               chmod 0 possible_sub1/.git &&
#               >to_clean/should_clean.this &&
#               git clean -f -d &&
#               test_path_is_file possible_sub1/.git &&
#               test_path_is_file possible_sub1/hello.world &&
#               test_path_is_missing to_clean
#

Best,
Jan

^ permalink raw reply	[relevance 21%]

* [Bug] "git stash -u": Data loss of ignored content in directories
@ 2016-04-16 13:14 12% Ulrich Buchgraber
  0 siblings, 0 replies; 46+ results
From: Ulrich Buchgraber @ 2016-04-16 13:14 UTC (permalink / raw)
  To: git

Hello,

A "git stash -u" cleans all untracked files (after storing them), and
normally does not clean ignored files.

But: It cleans ignored files _within_ a directory, when the directory
itself is not ignored, but its content (e.g. a "dir/*" ignore filter).

The bug seems to be that in the cleanup phase of "git stash -u" Git
immediately deletes untracked directories without checking if there
are ignored files in there.

See the following reproduction sample. The last "ls" command shows
that the file "ignored_dir_with_star/ignored.txt" is lost.

    git init

    mkdir ignored_dir && touch ignored_dir/ignored.txt
    mkdir ignored_dir_with_star && touch ignored_dir_with_star/ignored.txt

    echo "/ignored_dir" >> .gitignore
    echo "/ignored_dir_with_star/*" >> .gitignore
    git add .gitignore
    git commit -m "added ignores"

    touch untracked.txt

    ls -R
    # => Output:
    # .:
    # ignored_dir/  ignored_dir_with_star/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt
    #
    # ./ignored_dir_with_star:
    # ignored.txt

    git stash -u
    git stash pop

    ls -R
    # => Output:
    # .:
    # ignored_dir/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt

Note that there is no data loss when instead using "git stash" or "git
stash -a".

(Tested with Git 2.8.1 on Ubuntu and Git for Windows version 2.8.1.windows.1.)

Ulrich

^ permalink raw reply	[relevance 12%]

* Data loss when using "git stash -u" and ignored content in directories
@ 2016-04-14  9:16 12% Ulrich Buchgraber
  0 siblings, 0 replies; 46+ results
From: Ulrich Buchgraber @ 2016-04-14  9:16 UTC (permalink / raw)
  To: git

Hello,

A "git stash -u" cleans all untracked files (after storing them), and
normally does not clean ignored files.

But: It cleans ignored files _within_ a directory, when the directory
itself is not ignored, but its content (e.g. a "dir/*" ignore filter).

The bug seems to be that in the cleanup phase of "git stash -u" Git
immediately deletes untracked directories without checking if there
are ignored files in there.

See the following reproduction sample. The last "ls" command shows
that the file "ignored_dir_with_star/ignored.txt" is lost.

    git init

    mkdir ignored_dir && touch ignored_dir/ignored.txt
    mkdir ignored_dir_with_star && touch ignored_dir_with_star/ignored.txt

    echo "/ignored_dir" >> .gitignore
    echo "/ignored_dir_with_star/*" >> .gitignore
    git add .gitignore
    git commit -m "added ignores"

    touch untracked.txt

    ls -R
    # => Output:
    # .:
    # ignored_dir/  ignored_dir_with_star/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt
    #
    # ./ignored_dir_with_star:
    # ignored.txt

    git stash -u
    git stash pop

    ls -R
    # => Output:
    # .:
    # ignored_dir/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt

Note that there is no data loss when instead using "git stash" or "git
stash -a".

(Tested with Git 2.8.1 on Ubuntu and Git for Windows version 2.8.1.windows.1.)

Ulrich

^ permalink raw reply	[relevance 12%]

* Re: git 2.8.1 not working with socks5h https proxy anymore
  2016-04-09 12:05 14%   ` Felix Ruess
@ 2016-04-10 18:11 12%     ` Junio C Hamano
  0 siblings, 0 replies; 46+ results
From: Junio C Hamano @ 2016-04-10 18:11 UTC (permalink / raw)
  To: Felix Ruess; +Cc: git, Daniel Stenberg, Pat Thoyts

Felix Ruess <felix.ruess@gmail.com> writes:

> Thanks a lot!
> Tested the patch and it works as expected :-)

Thanks, lets do this, then.

-- >8 --
Subject: [PATCH] http: differentiate socks5:// and socks5h://

Felix Ruess <felix.ruess@gmail.com> noticed that with configuration

    $ git config --global 'http.proxy=socks5h://127.0.0.1:1080'

connections to remote sites time out, waiting for DNS resolution.

The logic to detect various flavours of SOCKS proxy and ask the
libcurl layer to use appropriate one understands the proxy string
that begin with socks5, socks4a, etc., but does not know socks5h,
and we end up using CURLPROXY_SOCKS5.  The correct one to use is
CURLPROXY_SOCKS5_HOSTNAME.

https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html says

  ..., socks5h:// (the last one to enable socks5 and asking the
  proxy to do the resolving, also known as CURLPROXY_SOCKS5_HOSTNAME
  type).

which is consistent with the way the breakage was reported.

Tested-by: Felix Ruess <felix.ruess@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 http.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/http.c b/http.c
index c29ce81..b560c13 100644
--- a/http.c
+++ b/http.c
@@ -466,7 +466,10 @@ static CURL *get_curl_handle(void)
 	if (curl_http_proxy) {
 		curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
 #if LIBCURL_VERSION_NUM >= 0x071800
-		if (starts_with(curl_http_proxy, "socks5"))
+		if (starts_with(curl_http_proxy, "socks5h"))
+			curl_easy_setopt(result,
+				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+		else if (starts_with(curl_http_proxy, "socks5"))
 			curl_easy_setopt(result,
 				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
 		else if (starts_with(curl_http_proxy, "socks4a"))
-- 
2.8.1-339-gc925d85

^ permalink raw reply related	[relevance 12%]

* Re: git 2.8.1 not working with socks5h https proxy anymore
  2016-04-08 19:16 12% ` Junio C Hamano
@ 2016-04-09 12:05 14%   ` Felix Ruess
  2016-04-10 18:11 12%     ` Junio C Hamano
  0 siblings, 1 reply; 46+ results
From: Felix Ruess @ 2016-04-09 12:05 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Daniel Stenberg, Pat Thoyts

Thanks a lot!
Tested the patch and it works as expected :-)

On Fri, Apr 8, 2016 at 9:16 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Felix Ruess <felix.ruess@gmail.com> writes:
>
>> I just encountered a problem with the latest git version (2.8.1) that
>> looks like a regression to me:
>> When trying to clone a repo via a https socks5 proxy the connection times out:
>>
>> $ git config --global 'http.proxy=socks5h://127.0.0.1:1080'
>
> The first version of Git that has code that explicitly supports
> socks proxy is 2.6.4, it seems.  Since then we have always used
> CURLPROXY_SOCKS5 for curl_http_proxy that begins with a string
> "socks5".
>
> Checking
>
>     https://github.com/curl/curl/blob/master/docs/libcurl/symbols-in-versions
>
> I find that that at curl 7.18.0, curl added a separate
> CURLPROXY_SOCKS5_HOSTNAME that can be triggered by "socks5h:" that
> is separate from CURLPROXY_SOCKS5, and I am guessing that the
> differences in behaviour between these two is what is causing you
> trouble.  https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html says
>
>   ..., socks5h:// (the last one to enable socks5 and asking the proxy
>   to do the resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type)
>
> and because not using _HOSTNAME variant would likely not ask the
> proxy to do the resolving, it explains the stall on your end, if
> your box cannot resolve external hostname.
>
> Perhaps the attached patch may help?
>
> I do not know if Pat is still active as a developer, but I am
> wondering what the reason was to use starts_with(..., "socks5")
> instead of "socks5:", "socks4a:", etc. when identifying the proxy
> type.
>
>  http.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/http.c b/http.c
> index 69da445..4304b80 100644
> --- a/http.c
> +++ b/http.c
> @@ -605,7 +605,10 @@ static CURL *get_curl_handle(void)
>         if (curl_http_proxy) {
>                 curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
>  #if LIBCURL_VERSION_NUM >= 0x071800
> -               if (starts_with(curl_http_proxy, "socks5"))
> +               if (starts_with(curl_http_proxy, "socks5h"))
> +                       curl_easy_setopt(result,
> +                               CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
> +               else if (starts_with(curl_http_proxy, "socks5"))
>                         curl_easy_setopt(result,
>                                 CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
>                 else if (starts_with(curl_http_proxy, "socks4a"))

^ permalink raw reply	[relevance 14%]

* Re: git segfaults on older Solaris releases
  @ 2016-04-09  7:02 11%       ` Tom G. Christensen
  0 siblings, 0 replies; 46+ results
From: Tom G. Christensen @ 2016-04-09  7:02 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Jeff King

On 07/04/16 22:19, Tom G. Christensen wrote:
> On 07/04/16 20:50, Junio C Hamano wrote:
>> Junio C Hamano <gitster@pobox.com> writes:
>> So perhaps this is all we need to fix your box.
>>
>>   setup.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>
> I applied this patch to 2.8.0 and have completed a testsuite run on
> Solaris 2.6/x86 with only a few unrelated problems.
> I will continue testing on the other Solaris < 10 releases but I do not
> expect any difference in the outcome.
>

I've finished testing 2.8.1 and I found one more case where a null is 
being printed and causing a segfault. This happens even on Solaris 8 and 9.
The failling test is t3200.63.

Here is the backtrace from a Solaris 8/SPARC machine:

(gdb) core trash directory.t3200-branch/core
[New LWP 1]
[Thread debugging using libthread_db enabled]
[New Thread 1 (LWP 1)]
Core was generated by `/export/home/tgc/buildpkg/git/src/git-2.8.1/git 
branch --unset-upstream'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0xfecb32cc in strlen () from /usr/lib/libc.so.1
(gdb) bt
#0  0xfecb32cc in strlen () from /usr/lib/libc.so.1
#1  0xfed06508 in _doprnt () from /usr/lib/libc.so.1
#2  0xfed08690 in vfprintf () from /usr/lib/libc.so.1
#3  0x001487bc in vreportf (prefix=<optimized out>, err=<optimized out>, 
params=0xffbfe408) at usage.c:23
#4  0x0014881c in die_builtin (err=0x198f90 "Could not set '%s' to 
'%s'", params=0xffbfe408) at usage.c:35
#5  0x00148934 in die (err=0x198f90 "Could not set '%s' to '%s'") at 
usage.c:108
#6  0x000af1b0 in git_config_set_multivar_in_file (value=0x0, 
key=0x1ecca0 "branch.master.remote",
     config_filename=<optimized out>, value_regex=<optimized out>, 
multi_replace=<optimized out>) at config.c:2226
#7  git_config_set_multivar_in_file (config_filename=0x0, key=0x1ecca0 
"branch.master.remote", value=0x0,
     value_regex=0x0, multi_replace=1) at config.c:2220
#8  0x0003aa6c in cmd_branch (argc=0, argv=0xffbfec00, prefix=<optimized 
out>) at builtin/branch.c:793
#9  0x000255e8 in run_builtin (argv=0xffbfec00, argc=2, p=0x1c365c 
<commands+84>) at git.c:353
#10 handle_builtin (argc=2, argv=0xffbfec00) at git.c:540
#11 0x00168ecc in run_argv (argv=0xffbfeb30, argcp=0xffbfebdc) at git.c:594
#12 main (argc=2, av=<optimized out>) at git.c:701
(gdb)


-tgc

^ permalink raw reply	[relevance 11%]

* Re: git 2.8.1 not working with socks5h https proxy anymore
  2016-04-08 18:46 13% git 2.8.1 not working with socks5h https proxy anymore Felix Ruess
  2016-04-08 19:07 14% ` Dennis Kaarsemaker
@ 2016-04-08 19:16 12% ` Junio C Hamano
  2016-04-09 12:05 14%   ` Felix Ruess
  1 sibling, 1 reply; 46+ results
From: Junio C Hamano @ 2016-04-08 19:16 UTC (permalink / raw)
  To: Felix Ruess; +Cc: git, Daniel Stenberg, Pat Thoyts

Felix Ruess <felix.ruess@gmail.com> writes:

> I just encountered a problem with the latest git version (2.8.1) that
> looks like a regression to me:
> When trying to clone a repo via a https socks5 proxy the connection times out:
>
> $ git config --global 'http.proxy=socks5h://127.0.0.1:1080'

The first version of Git that has code that explicitly supports
socks proxy is 2.6.4, it seems.  Since then we have always used
CURLPROXY_SOCKS5 for curl_http_proxy that begins with a string
"socks5".

Checking

    https://github.com/curl/curl/blob/master/docs/libcurl/symbols-in-versions

I find that that at curl 7.18.0, curl added a separate
CURLPROXY_SOCKS5_HOSTNAME that can be triggered by "socks5h:" that
is separate from CURLPROXY_SOCKS5, and I am guessing that the
differences in behaviour between these two is what is causing you
trouble.  https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html says

  ..., socks5h:// (the last one to enable socks5 and asking the proxy
  to do the resolving, also known as CURLPROXY_SOCKS5_HOSTNAME type)

and because not using _HOSTNAME variant would likely not ask the
proxy to do the resolving, it explains the stall on your end, if
your box cannot resolve external hostname.

Perhaps the attached patch may help?

I do not know if Pat is still active as a developer, but I am
wondering what the reason was to use starts_with(..., "socks5")
instead of "socks5:", "socks4a:", etc. when identifying the proxy
type.

 http.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/http.c b/http.c
index 69da445..4304b80 100644
--- a/http.c
+++ b/http.c
@@ -605,7 +605,10 @@ static CURL *get_curl_handle(void)
 	if (curl_http_proxy) {
 		curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
 #if LIBCURL_VERSION_NUM >= 0x071800
-		if (starts_with(curl_http_proxy, "socks5"))
+		if (starts_with(curl_http_proxy, "socks5h"))
+			curl_easy_setopt(result,
+				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+		else if (starts_with(curl_http_proxy, "socks5"))
 			curl_easy_setopt(result,
 				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
 		else if (starts_with(curl_http_proxy, "socks4a"))

^ permalink raw reply related	[relevance 12%]

* Re: git 2.8.1 not working with socks5h https proxy anymore
  2016-04-08 18:46 13% git 2.8.1 not working with socks5h https proxy anymore Felix Ruess
@ 2016-04-08 19:07 14% ` Dennis Kaarsemaker
  2016-04-08 19:16 12% ` Junio C Hamano
  1 sibling, 0 replies; 46+ results
From: Dennis Kaarsemaker @ 2016-04-08 19:07 UTC (permalink / raw)
  To: Felix Ruess, git

On vr, 2016-04-08 at 20:46 +0200, Felix Ruess wrote:
> Hi all,
> 
> I just encountered a problem with the latest git version (2.8.1) that
> looks like a regression to me:
> When trying to clone a repo via a https socks5 proxy the connection
> times out:
> 
> $ git config --global 'http.proxy=socks5h://127.0.0.1:1080'
> $ export GIT_CURL_VERBOSE=1
> $ git clone https://foo.de/bar.git
> Cloning into 'bar'...
> * Couldn't find host foo.de in the .netrc file; using defaults
> * Hostname was NOT found in DNS cache
> *   Trying 127.0.0.1...
> * Hostname was NOT found in DNS cache
> * 80
> * 147
> * 201
> * 194
> channel 2: open failed: connect failed: Connection timed out
> channel 4: open failed: connect failed: Connection timed out
> * Failed to receive SOCKS5 connect request ack.
> * Closing connection 0
> fatal: unable to access 'https://foo.de/bar.git/': Failed to receive
> SOCKS5 connect request ack.
> 
> I'm on Ubuntu 14.04 64bit and it works perfectly fine with git 1.9.1
> (and was also working with older git 2.x versions, although not sure
> any more what the last working version was).

I think that's 6d7afe07f29df75f831a46fb0f657fa37e561779, which
interprets that as a socks5 proxy.

I think this should fix it (but haven't tested it beyond 'it
compiles'):

diff --git a/http.c b/http.c
index 69da445..4304b80 100644
--- a/http.c
+++ b/http.c
@@ -605,7 +605,10 @@ static CURL *get_curl_handle(void)
 	if (curl_http_proxy) {
 		curl_easy_setopt(result, CURLOPT_PROXY, curl_http_proxy);
 #if LIBCURL_VERSION_NUM >= 0x071800
-		if (starts_with(curl_http_proxy, "socks5"))
+		if (starts_with(curl_http_proxy, "socks5h"))
+			curl_easy_setopt(result,
+				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+		else if (starts_with(curl_http_proxy, "socks5"))
 			curl_easy_setopt(result,
 				CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
 		else if (starts_with(curl_http_proxy, "socks4a"))

But I have no socks5h proxy to test with. Can you give this patch a spin?
-- 
Dennis Kaarsemaker
www.kaarsemaker.net

^ permalink raw reply related	[relevance 14%]

* git 2.8.1 not working with socks5h https proxy anymore
@ 2016-04-08 18:46 13% Felix Ruess
  2016-04-08 19:07 14% ` Dennis Kaarsemaker
  2016-04-08 19:16 12% ` Junio C Hamano
  0 siblings, 2 replies; 46+ results
From: Felix Ruess @ 2016-04-08 18:46 UTC (permalink / raw)
  To: git

Hi all,

I just encountered a problem with the latest git version (2.8.1) that
looks like a regression to me:
When trying to clone a repo via a https socks5 proxy the connection times out:

$ git config --global 'http.proxy=socks5h://127.0.0.1:1080'
$ export GIT_CURL_VERBOSE=1
$ git clone https://foo.de/bar.git
Cloning into 'bar'...
* Couldn't find host foo.de in the .netrc file; using defaults
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Hostname was NOT found in DNS cache
* 80
* 147
* 201
* 194
channel 2: open failed: connect failed: Connection timed out
channel 4: open failed: connect failed: Connection timed out
* Failed to receive SOCKS5 connect request ack.
* Closing connection 0
fatal: unable to access 'https://foo.de/bar.git/': Failed to receive
SOCKS5 connect request ack.

I'm on Ubuntu 14.04 64bit and it works perfectly fine with git 1.9.1
(and was also working with older git 2.x versions, although not sure
any more what the last working version was).

Cheers, Felix

^ permalink raw reply	[relevance 13%]

* Fwd: Data loss when using "git stash -u" and ignored content in directories
       [not found]     <CAGxq=N8C5YWYt_GMYVp6ZSoGkgEKhOikfUydwiD-Xm8zRD8qWA@mail.gmail.com>
@ 2016-04-07 20:34 12% ` Ulrich Buchgraber
  0 siblings, 0 replies; 46+ results
From: Ulrich Buchgraber @ 2016-04-07 20:34 UTC (permalink / raw)
  To: git

Hello,

A "git stash -u" cleans all untracked files (after storing them), and
normally does not clean ignored files.

But: It cleans ignored files within a directory, when the directory
itself is not ignored (e.g. a "dir/*" ignore filter) and untracked.

See the following reproduction sample. The last "ls" command shows
that the file "ignored_dir_with_star/ignored.txt" is lost.

    git init

    mkdir ignored_dir && touch ignored_dir/ignored.txt
    mkdir ignored_dir_with_star && touch ignored_dir_with_star/ignored.txt

    echo "/ignored_dir" >> .gitignore
    echo "/ignored_dir_with_star/*" >> .gitignore
    git add .gitignore
    git commit -m "added ignores"

    touch untracked.txt

    ls -R
    # => Output:
    # .:
    # ignored_dir/  ignored_dir_with_star/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt
    #
    # ./ignored_dir_with_star:
    # ignored.txt

    git stash -u
    git stash pop

    ls -R
    # => Output:
    # .:
    # ignored_dir/  untracked.txt
    #
    # ./ignored_dir:
    # ignored.txt

Note that there is no data loss when instead using "git stash" or "git
stash -a".

(Tested with Git 2.8.1 on Ubuntu and Git for Windows version 2.8.1.windows.1.)

Ulrich

^ permalink raw reply	[relevance 12%]

* Re: [PATCH v3][Outreachy] branch -D: allow - as abbreviation of @{-1}
  @ 2016-04-06 20:05  9%         ` Remi Galan Alfonso
  0 siblings, 0 replies; 46+ results
From: Remi Galan Alfonso @ 2016-04-06 20:05 UTC (permalink / raw)
  To: elena petrashen; +Cc: git

elena petrashen <elena.petrashen@gmail.com> wrote:
> On Tue, Apr 5, 2016 at 12:53 AM, Remi Galan Alfonso
> <remi.galan-alfonso@ensimag.grenoble-inp.fr> wrote:
> > elena petrashen <elena.petrashen@gmail.com> wrote:
> >> On Thu, Mar 31, 2016 at 6:31 PM, Remi Galan Alfonso
> >> <remi.galan-alfonso@ensimag.grenoble-inp.fr> wrote:
> >> > Elena Petrashen <elena.petrashen@gmail.com> wrote:
> >> >> +void delete_branch_advice(const char *name, const char *ref)
> >> >> +{
> >> >> +        const char fmt[] =
> >> >> +        "\nNote: to restore the deleted branch:\n\ngit branch %s %s\n";
> >> >
> >> > Shouldn't that be marked for translation, like is done with the other
> >> > strings?
> >> >
> >> > Thanks,
> >> > Rémi
> >>
> >> Thank you for letting me know about that! Could you please
> >> help me out and explain how do I mark it for translation? I tried
> >> to do it the same way as with the other strings but evidently
> >> didn't quite succeed.
> >
> > I am not sure.
> > I tried to grep similar cases, it seems that you can do the following:
> >
> >         const char fmt[] = N_("\nNote: to restore [...] \ngit branch %s %s\n");
> >         fprintf(stderr, _(fmt), name, ref);
> >
> > Some similar example in builtin/add.c:
> >
> >         static const char ignore_error[] =
> >         N_("The following paths are ignored by one of your .gitignore files:\n");
> >         [...]
> >                         fprintf(stderr, _(ignore_error));
> >
> > Or you can define fmt as a 'const char *' and in that case do the
> > following:
> >
> >         const char *fmt = _("\nNote: to restore [...] \n git branch %s %s\n");
> >         fprintf(stderr, fmt, name, ref);
> >
> >
> > In builtin/am.c:
> >                 const char *invalid_line = _("Malformed input line: '%s'.");
> >         [...]
> >                                 ret = error(invalid_line, sb.buf);
> >
> > I don't know which one is the best way to go though.
> >
> > Thanks,
> > Rémi
> 
> Thank you! I'm a bit confused though as the previous implemented advice function
> in advice.c (the one I used for reference) doesn't seem to employ this... does
> this mean it's also not marked for translation?
> 
> void detach_advice(const char *new_name)
> {
> const char fmt[] =
> "Note: checking out '%s'.\n\n"
> "You are in 'detached HEAD' state. <.........>Example:\n\n"
> "  git checkout -b <new-branch-name>\n\n";
> 
> fprintf(stderr, fmt, new_name);
> }

It doesn't seem so, at least it doesn't translate:

# $ LANG=fr_FR.UTF-8 git checkout 9494c39
# Note: checking out '9494c39'.
# 
# You are in 'detached HEAD' state. You can look around, make experimental
# changes and commit them, and you can discard any commits you make in this
# state without impacting any branches by performing another checkout.
# 
# If you want to create a new branch to retain commits you create, you may
# do so (now or later) by using -b with the checkout command again. Example:
# 
#   git checkout -b <new-branch-name>
# 
# HEAD est maintenant sur 9494c39... Sync with Git 2.8.1
Only the last line is translated.

Blame traces it back to commit 2857093b that was in 2012 so obviously
the lack of translation isn't due to the message being recent.

Thanks,
Rémi

^ permalink raw reply	[relevance 9%]

* Re: [ANNOUNCE] Git v2.8.1 (and call-for-help to "make rpmbuild" users)
  2016-04-03 19:21  7% [ANNOUNCE] Git v2.8.1 (and call-for-help to "make rpmbuild" users) Junio C Hamano
@ 2016-04-05 10:39  0% ` Elia Pinto
  0 siblings, 0 replies; 46+ results
From: Elia Pinto @ 2016-04-05 10:39 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git@vger.kernel.org, Linux Kernel

2016-04-03 21:21 GMT+02:00 Junio C Hamano <gitster@pobox.com>:
> If you do not build RPM binary packages from our pristine source,
> you can safely ignore this release and stop reading this message.
>
> Now that the audience of this message has been limited to a narrow
> target, before I make an announcement, here is a call-for-help to
> you.
>
> Git v2.8 removed README file and added a corresponding README.md
> file.  The change however did not adjust git.spec.in that still
> referred to README, causing "make rpmbuild" to fail.  The breakage
> was not noticed by anybody who tested v2.8.0-rc0 and later release
> candidates, and ended up in the final v2.8 release, and we saw a
> handful of bug reports on the list after the release happened.
>
> This maintenance release is to correct this bug for those who run
> "make rpmbuild". It has no other changes.
>
> It is clear that nobody who relies on being able to "make rpmbuild"
> ever tried any of the 5 release candidate snapshots that happened
> during Feb 26-Mar 28.  We had a whole month and nobody noticed?
>
> This incident clearly shows that something needs to happen, if
> people want "make rpmbuild" to keep working.  Even though this
> maintenance release may fix this single bug, breakages similar to it
> that only affect "make rpmbuild" users are guaranteed to appear in
> future releases, unless those who can prevent them from happening
> start helping to test at least release candidate snapshots.
>
> It is even more preferrable if they can test the tip of 'next'
> branch regularly, in order to prevent such breakages from hitting
> the 'master' branch to be included in the next release, which is
> what the other parts of the system aims at.
>
> The other obvious option is for us to stop pretending that "make
> rpmbuild" does anything useful to do and drop the build target and
> the unmaintained git.spec.in file on which nobody in the active
> development community keeps eyes.  I do not mean this as a threat
> "help us or else"; there is a precedent.  We used to ship our own
> debian/rules and friends for those who wanted to debbuild from the
> source, but the Debian packagers wanted to have their own proper
> ones and ours ended up confusing the users, and we made the world
> a better place by removing our copy.  If "make rpmbuild" people want
> us to take this route, that is also OK for us.
>
> So that's the call for help.  Now to the announcement.

How old contributor to rpm5.org (as devzero2000) I have been following
these issues in the past.
Unfortunately, to my knowledge, no one has ever come to a convergence
of views between the distros
that use rpm on the various differences.
Keeping for a project a spec file that then no distro uses (and i
think also a local sysadmin)
i do not think it is worth the effort.

http://lists.rpm.org/pipermail/rpm-maint/2008-June/002185.html

IMHO

Best

>
> The latest maintenance release Git v2.8.1 is now available at
> the usual places.
>
> The tarballs are found at:
>
>     https://www.kernel.org/pub/software/scm/git/
>
> The following public repositories all have a copy of the 'v2.8.1'
> 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.8.1 Release Notes
> ========================
>
> Fixes since v2.8
> ----------------
>
>  * "make rpmbuild" target was broken as its input, git.spec.in, was
>    not updated to match a file it describes that has been renamed
>    recently.  This has been fixed.
>
> ----------------------------------------------------------------
>
> Changes since v2.8.0 are as follows:
>
> Junio C Hamano (1):
>       Git 2.8.1
>
> Matthieu Moy (1):
>       git.spec.in: use README.md, not README
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git for Windows 2.8.1
@ 2016-04-04  8:27 15% Johannes Schindelin
  0 siblings, 0 replies; 46+ results
From: Johannes Schindelin @ 2016-04-04  8:27 UTC (permalink / raw)
  To: git-for-windows, git

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=X-UNKNOWN, Size: 1156 bytes --]

Dear Git users,

It is my pleasure to announce that Git for Windows 2.8.1 is available from:

	https://git-for-windows.github.io/

Changes since Git for Windows v2.8.0 (March 29th 2016)

New Features

  • Comes with Git v2.8.1.
  • The Git for Windows project updated its contributor guidelines to
    the Contributor Covenant 1.4.

Bug Fixes

  • Git's default editor (vim) is no longer freezing in CMD windows.
  • GIT_SSH (and other executable paths that Git wants to spawn) can
    now contain spaces.

Filename | SHA-256
-------- | -------
Git-2.8.1-64-bit.exe | 5e5283990cc91d1e9bd0858f8411e7d0afb70ce26e23680252fb4869288c7cfb
Git-2.8.1-32-bit.exe | 17418c2e507243b9c98db161e9e5e8041d958b93ce6078530569b8edaec6b8a4
PortableGit-2.8.1-64-bit.7z.exe | dc9d971156cf3b6853bc0c1ad0ca76f1d2c24478cca80036919f12fe46acd64e
PortableGit-2.8.1-32-bit.7z.exe | 0b6efaaeb4b127edb3a534261b2c9175bd86ee8683dff6e12ccb194e6abb990e
Git-2.8.1-64-bit.tar.bz2 | 3ebc00b96607174fffb35cf6d96b3b3246aefa504a4bd30375182fea6ab64bde
Git-2.8.1-32-bit.tar.bz2 | 9e754d83190ba154f012d8eaa7433d29517f7c85fff229d4fb62e6418acf8d41

Ciao,
Johannes

^ permalink raw reply	[relevance 15%]

* [ANNOUNCE] Git v2.8.1 (and call-for-help to "make rpmbuild" users)
@ 2016-04-03 19:21  7% Junio C Hamano
  2016-04-05 10:39  0% ` Elia Pinto
  0 siblings, 1 reply; 46+ results
From: Junio C Hamano @ 2016-04-03 19:21 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel

If you do not build RPM binary packages from our pristine source,
you can safely ignore this release and stop reading this message.

Now that the audience of this message has been limited to a narrow
target, before I make an announcement, here is a call-for-help to
you.

Git v2.8 removed README file and added a corresponding README.md
file.  The change however did not adjust git.spec.in that still
referred to README, causing "make rpmbuild" to fail.  The breakage
was not noticed by anybody who tested v2.8.0-rc0 and later release
candidates, and ended up in the final v2.8 release, and we saw a
handful of bug reports on the list after the release happened.

This maintenance release is to correct this bug for those who run
"make rpmbuild". It has no other changes.

It is clear that nobody who relies on being able to "make rpmbuild"
ever tried any of the 5 release candidate snapshots that happened
during Feb 26-Mar 28.  We had a whole month and nobody noticed?

This incident clearly shows that something needs to happen, if
people want "make rpmbuild" to keep working.  Even though this
maintenance release may fix this single bug, breakages similar to it
that only affect "make rpmbuild" users are guaranteed to appear in
future releases, unless those who can prevent them from happening
start helping to test at least release candidate snapshots.

It is even more preferrable if they can test the tip of 'next'
branch regularly, in order to prevent such breakages from hitting
the 'master' branch to be included in the next release, which is
what the other parts of the system aims at.

The other obvious option is for us to stop pretending that "make
rpmbuild" does anything useful to do and drop the build target and
the unmaintained git.spec.in file on which nobody in the active
development community keeps eyes.  I do not mean this as a threat
"help us or else"; there is a precedent.  We used to ship our own
debian/rules and friends for those who wanted to debbuild from the
source, but the Debian packagers wanted to have their own proper
ones and ours ended up confusing the users, and we made the world
a better place by removing our copy.  If "make rpmbuild" people want
us to take this route, that is also OK for us.

So that's the call for help.  Now to the announcement.

The latest maintenance release Git v2.8.1 is now available at
the usual places.

The tarballs are found at:

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

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

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

 * "make rpmbuild" target was broken as its input, git.spec.in, was
   not updated to match a file it describes that has been renamed
   recently.  This has been fixed.

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

Changes since v2.8.0 are as follows:

Junio C Hamano (1):
      Git 2.8.1

Matthieu Moy (1):
      git.spec.in: use README.md, not README

^ permalink raw reply	[relevance 7%]

Results 1-46 of 46 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2016-03-31  9:25     [PATCH v3][Outreachy] branch -D: allow - as abbreviation of @{-1} Elena Petrashen
2016-03-31 15:31     ` Remi Galan Alfonso
2016-04-04 20:31       ` elena petrashen
2016-04-04 21:53         ` Remi Galan Alfonso
2016-04-06 10:00           ` elena petrashen
2016-04-06 20:05  9%         ` Remi Galan Alfonso
2016-04-03 19:21  7% [ANNOUNCE] Git v2.8.1 (and call-for-help to "make rpmbuild" users) Junio C Hamano
2016-04-05 10:39  0% ` Elia Pinto
2016-04-04  8:27 15% [ANNOUNCE] Git for Windows 2.8.1 Johannes Schindelin
2016-04-07 18:18     git segfaults on older Solaris releases Tom G. Christensen
2016-04-07 18:32     ` Junio C Hamano
2016-04-07 18:50       ` Junio C Hamano
2016-04-07 20:19         ` Tom G. Christensen
2016-04-09  7:02 11%       ` Tom G. Christensen
     [not found]     <CAGxq=N8C5YWYt_GMYVp6ZSoGkgEKhOikfUydwiD-Xm8zRD8qWA@mail.gmail.com>
2016-04-07 20:34 12% ` Fwd: Data loss when using "git stash -u" and ignored content in directories Ulrich Buchgraber
2016-04-08 18:46 13% git 2.8.1 not working with socks5h https proxy anymore Felix Ruess
2016-04-08 19:07 14% ` Dennis Kaarsemaker
2016-04-08 19:16 12% ` Junio C Hamano
2016-04-09 12:05 14%   ` Felix Ruess
2016-04-10 18:11 12%     ` Junio C Hamano
2016-04-14  9:16 12% Data loss when using "git stash -u" and ignored content in directories Ulrich Buchgraber
2016-04-16 13:14 12% [Bug] "git stash -u": Data loss of " Ulrich Buchgraber
     [not found]     <CAA6PgK7b=ithSYREV5axaE3fmRG5Vp06UtWiZXD-aJuZKfEVYA@mail.gmail.com>
2016-04-29 12:53 21% ` Fwd: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build Jan Keromnes
2016-04-29 12:58 14%   ` Johannes Schindelin
2016-04-29 17:06 13%   ` Stefan Beller
2016-05-03  9:19 12%     ` Jan Keromnes
2016-05-03 18:02 10%       ` Stefan Beller
2016-05-03 18:05 14%         ` Junio C Hamano
2016-05-03 18:48 13%           ` Jeff King
2016-05-03 18:53 14%             ` Stefan Beller
2016-05-03 19:00 14%               ` Jeff King
2016-05-03 21:28 11%                 ` erik elfström
2016-05-13  5:04     bug report 李本超
2016-05-13  5:23  9% ` Pranit Bauva
2016-05-13  5:58  0%   ` 李本超
2016-05-23 23:23  1% [ANNOUNCE] Git v2.9.0-rc0 Junio C Hamano
2016-05-31 21:53  1% [ANNOUNCE] Git v2.9.0-rc1 Junio C Hamano
2016-06-07  5:57  1% [ANNOUNCE] Git v2.9.0-rc2 Junio C Hamano
2016-06-07  8:27  9% t7300-clean.sh fails "not ok 32 - should avoid cleaning possible submodules" on debian jessie Pirate Praveen
2016-06-07 10:30  0% ` Johannes Schindelin
2016-06-07 13:07  0%   ` Pirate Praveen
2016-06-08  7:12  0%     ` Johannes Schindelin
2016-06-13 19:45  1% [ANNOUNCE] Git v2.9.0 Junio C Hamano
2016-06-14 15:56     problems installing GIT on my MAC OS X 10.11.5 Maria Jose Fernandez
2016-06-14 16:06     ` Konstantin Khomoutov
2016-06-14 16:14       ` Torsten Bögershausen
     [not found]         ` <E9D8E5F7-BBD1-4384-A6D6-B9184AEDE881@gmail.com>
2016-06-14 16:48  0%       ` Torsten Bögershausen
2016-06-14 16:49  0%         ` Maria Jose Fernandez
2016-07-08 16:51 13% Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol? Naja Melan
2016-07-09  6:24 14% ` Johannes Schindelin
2016-07-09  7:26 14%   ` Johannes Schindelin
2016-09-15  5:01  9% git add --intent-to-add silently creates empty commits Aviv Eyal
2016-09-15 17:48  0% ` Junio C Hamano
2016-09-19 13:16  0%   ` Duy Nguyen
2016-10-11 19:07  9% interactive rebase should better highlight the not-applying commit Joshua N Pritikin
2016-10-11 21:25  0% ` Stefan Beller
2016-10-12 13:27  0%   ` Joshua N Pritikin
2016-10-12 16:24  0%     ` Johannes Schindelin
2016-10-19 11:15  7% [regression] `make profile-install` fails in 2.10.1 Jan Keromnes

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).