Re: [git-for-windows] Git for Windows v2.24.0-rc0, was Re: [ANNOUNCE] Git v2.24.0-rc0

2019-10-22 Thread Philip Oakley

Hi Dscho,

Install went Ok.

Did a quick test on the config locations and `git config -l 
-show-origin` has 'lost' the ProgramData location as planned.


The minor pedant did notice that the new location is listed slightly 
differently from the release notes.

`file:C:/Program Files/Git/mingw64/../etc/gitconfig`  --system,
while the release notes simplify the path to C:/Program 
Files/Git/etc/gitconfig


Dunno if that's worth a minor fix to the release notes to clarify for 
the broader Windows community. Maybe others can comment if they think 
it's even worth it.


Philip

On 21/10/2019 23:05, Johannes Schindelin wrote:

Team,

a couple of days later than I wanted, but at least it is now here:
https://github.com/git-for-windows/git/releases/tag/v2.24.0-rc0.windows.1

Please test...

Thank you,
Johannes






Re: [ANNOUNCE] Git v2.24.0-rc0

2019-10-21 Thread Jeff King
On Mon, Oct 21, 2019 at 04:04:22PM -0700, Elijah Newren wrote:

> > 4211.3: git log --follow [...]8.56(8.41+0.15) -0.2%   3.67(3.53+0.13) 
> > -57.2%
> 
> Many nice speedups here, not just commit-graph (the rev-list cases)
> but also log -L (from sg/line-log-tree-diff-optim, I believe), and log
> --follow.  I'm curious if the log --follow speedup comes from sg's
> series or something else...

The "log --follow" speedup comes from turning on commit-graphs. You can
see a similar effect without "--follow", since "git log " is going
to be dominated by the commit traversal, and not accessing the trees
(especially if  is at the top-level).

> > 0001.9: rev-list --objects $commit --not --all
> > 0.08(0.05+0.03)   0.08(0.05+0.03) +0.0%   0.09(0.07+0.02) +12.5%
> 
> Looks like this one increased too, with a similar magnitude to the
> 7300.2 you pointed out.  But the base is kinda small; is this just
> noise?

Probably. I also frequently run the perf suite between major version
releases, and this kind of noise is quite common.

> I'm also curious what change it was that made these rebase tests faster.

Perf changes of this magnitude are usually pretty easy to bisect. You
can even do:

  git bisect start --term-old=slow --term-new=fast

so you don't have to confuse yourself with opposite good/bad markers.
I just ran:

  make && (cd t/perf && GIT_SKIP_TESTS=p3400.[3456] ./p3400*)

at each stopping point and eyeballed the resulting time (which for some
reason seems to be about 10x faster than Stolee's machine, but does
still show the same relative speedup). I was surprised that this also
yields 31b1de6a09 (commit-graph: turn on commit-graph by default,
2019-08-13). I wouldn't have expected commit access to dominate the
rebase time so much.

-Peff


Re: [ANNOUNCE] Git v2.24.0-rc0

2019-10-21 Thread Elijah Newren
 On Mon, Oct 21, 2019 at 1:50 PM Derrick Stolee  wrote:
> I ran a few of the performance tests against the Linux repository
> using v2.22.0, v2.23.0, and the new v2.24.0-rc0. I thought it worth
> pointing out that the drastic performance improvements are due to
> turning on the commit-graph by default. I had computed a commit-graph
> for my Linux repo, but used my global config to enable core.commitGraph.
> The global config is ignored by perf tests, so v2.22.0 and v2.23.0 were
> operating without looking at the commit-graph.
>
> (These were run on my old dev machine, which is now running Ubuntu on
> bare metal. No VM this time!)
>
> Test  v2.22.0 
>   v2.23.0 v2.24.0-rc0
> 
> 0001.1: rev-list --all6.01(5.73+0.28) 
>   5.99(5.73+0.25) -0.3%   0.97(0.80+0.16) -83.9%
> 0001.2: rev-list --all --objects  
> 40.40(39.86+0.54) 40.22(39.59+0.62) -0.4% 35.28(34.75+0.52) -12.7%
> 0001.3: rev-list --parents6.11(5.83+0.27) 
>   6.07(5.82+0.25) -0.7%   1.03(0.86+0.16) -83.1%
> 0001.5: rev-list -- dummy 0.64(0.58+0.06) 
>   0.66(0.59+0.07) +3.1%   0.34(0.29+0.05) -46.9%
> 0001.6: rev-list --parents -- dummy   0.66(0.60+0.05) 
>   0.67(0.62+0.05) +1.5%   0.36(0.32+0.03) -45.5%
[...]
> 4211.2: git rev-list --topo-order (baseline)  6.32(6.04+0.28) 
>   6.30(6.09+0.21) -0.3%   1.15(0.96+0.19) -81.8%
> 4211.3: git log --follow (baseline for -M)8.58(8.43+0.14) 
>   8.56(8.41+0.15) -0.2%   3.67(3.53+0.13) -57.2%
> 4211.4: git log -L (renames off)  
> 32.79(30.68+2.10) 32.80(30.69+2.11) +0.0% 27.17(25.24+1.93) -17.1%
> 4211.5: git log -L (renames on)   
> 212.64(210.39+2.24)   213.48(211.26+2.20) +0.4%   27.38(25.53+1.84) -87.1%

Many nice speedups here, not just commit-graph (the rev-list cases)
but also log -L (from sg/line-log-tree-diff-optim, I believe), and log
--follow.  I'm curious if the log --follow speedup comes from sg's
series or something else...

> 0001.9: rev-list --objects $commit --not --all0.08(0.05+0.03) 
>   0.08(0.05+0.03) +0.0%   0.09(0.07+0.02) +12.5%

Looks like this one increased too, with a similar magnitude to the
7300.2 you pointed out.  But the base is kinda small; is this just
noise?

> The tests below are some that I don't run very often, but seemed
> interesting. Interesting that rebase got a lot faster!
>
> Testv2.22.0   
> v2.23.0 v2.24.0-rc0
> ---
> 3400.2: rebase on top of a lot of unrelated changes 
> 18.86(17.80+1.71) 18.80(17.80+1.66) -0.3% 2.63(2.49+0.79) -86.1%
> 3400.4: rebase a lot of unrelated changes without split-index   
> 68.00(62.32+5.04) 68.50(62.34+5.30) +0.7% 45.25(41.37+4.18) -33.5%
> 3400.6: rebase a lot of unrelated changes with split-index  
> 46.39(44.89+2.19) 46.24(44.66+2.30) -0.3% 25.00(24.49+1.23) -46.1%

I'm also curious what change it was that made these rebase tests faster.

> 7300.2: clean many untracked sub dirs, check for nested git 
> 1.36(0.54+0.81)   1.35(0.51+0.82) -0.7%   1.53(0.62+0.90) +12.5%
[...]
> Any thoughts on 7300.2? Seems to not just be noise, or maybe it is?

Well, en/clean-nested-with-ignored is a very likely the cause of any
performance difference here, but given the nasty bug it was fixing
(see sg/clean-nested-repo-with-ignored topic), the performance change
is totally warranted if necessary for the fix.  And it looks like that
test is exercising one of the areas of logic that my series was
modifying (namely the clean -fd case in conjunction with the
possibility of nested .git dirs).

That's enough for me to accept the performance change.  If soemone
else wants to dig a little further to determine whether this perf
change was part of the important fix or just due to a separate change,
I'll provide a few pointers.  Assuming it's one of my commits, I think
it has to be one of the following three:

404ebceda01c ("dir: also check directories for matching pathspecs",
2019-09-17): if this one causes the perf change, I think we just suck
it up.

89a1f4aaf765 ("dir: if our pathspec might match files under a dir,
recurse into it", 2019-09-17): if this one causes the perf change, we
might be able to do something by somehow rearranging the if-block
logic.  Checking bits is going to be faster than calling the
get_dtype() f

Git for Windows v2.24.0-rc0, was Re: [ANNOUNCE] Git v2.24.0-rc0

2019-10-21 Thread Johannes Schindelin
Team,

a couple of days later than I wanted, but at least it is now here:
https://github.com/git-for-windows/git/releases/tag/v2.24.0-rc0.windows.1

Please test...

Thank you,
Johannes




Re: [ANNOUNCE] Git v2.24.0-rc0

2019-10-21 Thread Derrick Stolee
(dropping some of the other aliases from this reply)

I ran a few of the performance tests against the Linux repository
using v2.22.0, v2.23.0, and the new v2.24.0-rc0. I thought it worth
pointing out that the drastic performance improvements are due to
turning on the commit-graph by default. I had computed a commit-graph
for my Linux repo, but used my global config to enable core.commitGraph.
The global config is ignored by perf tests, so v2.22.0 and v2.23.0 were
operating without looking at the commit-graph.

(These were run on my old dev machine, which is now running Ubuntu on
bare metal. No VM this time!)

Test  v2.22.0   
v2.23.0 v2.24.0-rc0 

0001.1: rev-list --all6.01(5.73+0.28)   
5.99(5.73+0.25) -0.3%   0.97(0.80+0.16) -83.9%  
0001.2: rev-list --all --objects  40.40(39.86+0.54) 
40.22(39.59+0.62) -0.4% 35.28(34.75+0.52) -12.7%
0001.3: rev-list --parents6.11(5.83+0.27)   
6.07(5.82+0.25) -0.7%   1.03(0.86+0.16) -83.1%  
0001.5: rev-list -- dummy 0.64(0.58+0.06)   
0.66(0.59+0.07) +3.1%   0.34(0.29+0.05) -46.9%  
0001.6: rev-list --parents -- dummy   0.66(0.60+0.05)   
0.67(0.62+0.05) +1.5%   0.36(0.32+0.03) -45.5%  
0001.8: rev-list $commit --not --all  0.03(0.02+0.01)   
0.03(0.02+0.01) +0.0%   0.03(0.02+0.01) +0.0%   
0001.9: rev-list --objects $commit --not --all0.08(0.05+0.03)   
0.08(0.05+0.03) +0.0%   0.09(0.07+0.02) +12.5%  
0002.1: read_cache/discard_cache 1000 times   3.33(3.07+0.25)   
3.32(3.05+0.27) -0.3%   3.31(3.10+0.21) -0.6%   
0005.2: read-tree status br_ballast (65695)   0.48(0.42+0.23)   
0.46(0.43+0.19) -4.2%   0.49(0.48+0.18) +2.1%   
0006.2: read-tree br_base br_ballast (65695)  0.17(0.14+0.03)   
0.17(0.15+0.01) +0.0%   0.18(0.16+0.02) +5.9%   
0006.3: switch between br_base br_ballast (65695) 7.17(5.35+2.10)   
6.84(5.14+2.04) -4.6%   6.67(5.07+1.88) -7.0%   
0006.4: switch between br_ballast br_ballast_plus_1 (65695)   0.35(0.37+0.29)   
0.34(0.32+0.33) -2.9%   0.35(0.33+0.34) +0.0%   
0006.5: switch between aliases (65695)0.33(0.34+0.31)   
0.32(0.34+0.30) -3.0%   0.34(0.34+0.32) +3.0%   
0007.2: write_locked_index 3 times (65695 files)  0.17(0.16+0.01)   
0.17(0.15+0.02) +0.0%   0.18(0.16+0.01) +5.9%   
0071.2: sort(1)   6.01(17.44+1.78)  
6.05(17.44+1.69) +0.7%  5.85(17.07+1.69) -2.7%  
0071.3: string_list_sort()15.81(14.94+0.87) 
15.80(14.83+0.97) -0.1% 15.86(15.03+0.83) +0.3% 
4205.1: log with %H   6.46(6.14+0.31)   
6.42(6.15+0.26) -0.6%   5.95(5.71+0.24) -7.9%   
4205.2: log with %h   7.06(6.74+0.32)   
7.02(6.75+0.27) -0.6%   6.47(6.26+0.21) -8.4%   
4205.3: log with %T   6.43(6.13+0.29)   
6.41(6.10+0.30) -0.3%   6.24(5.95+0.29) -3.0%   
4205.4: log with %t   7.29(7.04+0.24)   
7.28(6.96+0.32) -0.1%   7.05(6.78+0.27) -3.3%   
4205.5: log with %P   6.44(6.19+0.24)   
6.51(6.19+0.31) +1.1%   5.95(5.69+0.25) -7.6%   
4205.6: log with %p   7.03(6.70+0.33)   
7.01(6.74+0.27) -0.3%   6.52(6.26+0.26) -7.3%   
4205.7: log with %h-%h-%h 7.79(7.57+0.22)   
7.79(7.55+0.24) +0.0%   7.10(6.84+0.26) -8.9%   
4211.2: git rev-list --topo-order (baseline)  6.32(6.04+0.28)   
6.30(6.09+0.21) -0.3%   1.15(0.96+0.19) -81.8%  
4211.3: git log --follow (baseline for -M)8.58(8.43+0.14)   
8.56(8.41+0.15) -0.2%   3.67(3.53+0.13) -57.2%  
4211.4: git log -L (renames off)  32.79(30.68+2.10) 
32.80(30.69+2.11) +0.0% 27.17(25.24+1.93) -17.1%
4211.5: git log -L (renames on)   
212.64(210.39+2.24)   213.48(211.26+2.20) +0.4%   27.38(25.53+1.84) -87.1%
4211.6: git log --oneline --raw --parents 46.41(45.97+0.43) 
46.34(45.81+0.52) -0.2% 46.03(45.46+0.57) -0.8% 
4211.7: git log --oneline --raw --parents -1000   0.09(0.07+0.01)   
0.09(0.09+0.00) +0.0%   0.09(0.08+0.00) +0.0%   

The tests below are some that I don't run very often, but seemed
interesting. Interesting that rebase g