* Bug: global remote.origin.url silently overrides git clone <URL>
@ 2023-05-26 8:28 3% Jan Krag
0 siblings, 0 replies; 30+ results
From: Jan Krag @ 2023-05-26 8:28 UTC (permalink / raw)
To: git
I have stumbled across some very unexpected behaviour in git related
to remote.origin.url. I initially reported it to the security mailing
list because of concern of possible exploits, but Glenn Choo and
Taylor Blau deemed that the issue was outside Git's security boundary,
and thus safe to discuss on the public list.
In short, I found out that if a user for some reason, either
intentionally/maliciously or unintentionally sets `remote.origin.url`
to a repo URL in their *global* config, then a subsequent `git
clone`operation will *silently* use this URL instead of the one
provided as the command line argument to `git clone`.
I believe this is unintentional behaviour, and not just a corner case
I haven’t thought of, because of the following observations:
* The folder name to clone to is still taken from the command-line specified URL
* Git still prints “cloning into…” and the folder name that the user specified
* Git sets sets the *local* `remote.origin.url` to the value provided
* However, Git fetches the actual repo content, and subsequent
workspace checkout, from the URL in the global config, without any
notification to the user.
Security implications: I believe that this behaviour could
theoretically be mis-used for supply-chain attacks, especially on a
build server, but Glenn and Taylor pointed out that if an attacker has
access to modify a global git config, then there are much worse things
they could do. Also, I realise that most build servers these days
don’t actually use `git clone` under normal operations (rather they
use git init, git remote add, git fetch) so the problem isn't that
severe.
If a team disables the regular build server fake cloning behaviour and
does actual cloning in e.g. a shell step for more control, an attacker
with access to pipelines running on the same build node, could
potentially set the global url to a malicious fork of a repo used in
other pipelines, and silently make the other pipelines clone this
forked and patched repo, and potentially execute code within.
What did you do before the bug happened? (Steps to reproduce your issue)
What happened instead? (Actual behaviour)
------------------------------------------------------------------
I discovered the problem in the wild, reproduced it on my Mac (see
later) and then went through the following controlled reproduction in
a Docker environment.
`docker run -it --entrypoint /bin/bash bitnami/git:2.19.2`
```
$ git config --global remote.origin.url https://github.com/JKrag/sc_demo.git
$ git clone https://github.com/eficode-academy/git-katas.git
Cloning into 'git-katas'...
$ cd git-katas
$ ls
README.md (i.e. content from sc_demo, not git-katas)
$ git remote show origin
* remote origin
Fetch URL: https://github.com/JKrag/sc_demo.git
Push URL: https://github.com/JKrag/sc_demo.git
Push URL: https://github.com/eficode-academy/git-katas.git
$ cat .git/config
...
[remote "origin"]
url = https://github.com/eficode-academy/git-katas.git
...
$ git config --list --show-origin |grep "remote\.origin"
file:/root/.gitconfig remote.origin.url=https://github.com/JKrag/sc_demo.git
file:.git/config
remote.origin.url=https://github.com/eficode-academy/git-katas.git
file:.git/config remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
$ git fetch
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git config --global --unset remote.origin.url
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git fetch
remote: Enumerating objects: 2443, done.
remote: Counting objects: 100% (1109/1109), done.
remote: Compressing objects: 100% (465/465), done.
remote: Total 2443 (delta 699), reused 674 (delta 642), pack-reused 1334
Receiving objects: 100% (2443/2443), 2.46 MiB | 6.29 MiB/s, done.
Resolving deltas: 100% (1052/1052), done.
From https://github.com/eficode-academy/git-katas
+ 398b171...8bc6cc8 master -> origin/master (forced update)
* [new branch] brent-clark-SED-Sw-Mgr/improve-overview ->
origin/brent-clark-SED-Sw-Mgr/improve-overview
* [new branch] improve-rebase-powershell -> origin/improve-rebase-powershell
* [new branch] pr-verify -> origin/pr-verify
* [new branch] reorder-instructions-unclear ->
origin/reorder-instructions-unclear
* [new branch] sofusalbertsen-patch-1 -> origin/sofusalbertsen-patch-1
* [new branch] sofusalbertsen-patch-2 -> origin/sofusalbertsen-patch-2
* [new branch] test-script -> origin/test-script
* [new branch] tree-vis -> origin/tree-vis
* [new branch] uppercase -> origin/uppercase
* [new tag] 0.1.1 -> 0.1.1
* [new tag] 0.2.0 -> 0.2.0
* [new tag] 0.3.0 -> 0.3.0
$ git rev-list --max-parents=0 --all
398b17173d150371977cc12d4406f927a4be32ea # Initial commit from sc-demo repo
ad31d12363a181b998317d5f075d89b3fb990122 # Initial commit from git-katas repo
```
What did you expect to happen? (Expected behaviour)
First off, I would expect that Git used the url specified on the
command line, as it is normal that command-line arguments override
both local and global configs.
Alternatively, if there really is a good reason to use the global
configured one, git should at least take the folder name from there
and print out “Cloning into [global configured repo name]”
In reality, I can’t see any reason why there would ever be a need to
configure global remote.origin.url, and ideally doing so could lead to
an error/warning message, but I also know that the philosophy behind
Git config is to basically allow any settings, and there is no natural
place to “stop” such entries, although I guess it might be reasonable
to expect a warning at least when cloning a new repo.
Anything else you want to add:
--------------------------------------------
Yes, I am aware that this is a very obscure scenario, and as an
experienced Git user, it had never crossed my mind that this could
happen, but I saw it “in the wild” a few weeks ago, when delivering a
2-day Git training. I asked the participants to clone our “git-katas”
repo (as in the reproduced scenario above), and then one participant
was VERY confused because the folder then had “her own code”, and she
couldn’t understand why. After going through her bash history and
verifying that there was no other good explanation, I finally found
the explanation by looking in the global config where I found the
unexpected setting. The user had no real idea how it had gotten there,
except some vague idea of having tried “some stuff” to fix “some
issue” a long time ago. Since she only used a single repo on her
computer, she would never really have noticed under normal conditions.
Platform:
----------------
Problem originally seen “in the wild” on an Ubuntu laptop running Git
2.17 as I recall.
Issue reproduced on OSX Git 2.39.2, and in docker containers running
2.19.2 and 2.40.
[ Local Mac ]
[System Info]
git version:
git version 2.39.2
cpu: x86_64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Darwin 22.4.0 Darwin Kernel Version 22.4.0: Mon Mar 6 21:00:17
PST 2023; root:xnu-8796.101.5~3/RELEASE_X86_64 x86_64
compiler info: clang: 14.0.0 (clang-1400.0.29.202)
libc info: no libc information available
$SHELL (typically, interactive shell): /bin/zsh
[ Bitnami/git:2:40 ]
$ docker run -it --entrypoint /bin/bash bitnami/git:2.40.0
root@89543b59ce2c:/# git version --build-options
git version 2.40.0
cpu: x86_64
$SHELL = /bin/bash
[ Bitnami/git:2.19.2 ]
$ docker run -it --entrypoint /bin/bash bitnami/git:2.19.2
root@6a86a5c92e58:/# git version --build-options
git version 2.19.2
cpu: x86_64
$SHELL = /bin/bash
$ uname -a
Linux 6a86a5c92e58 5.15.49-linuxkit #1 SMP Tue Sep 13 07:51:46 UTC
2022 x86_64 GNU/Linux
Regards Jan
-----------------------
Jan Krag
Git Trainer & DevOps Consultant
jan.krag@eficode.com
www.eficode.com
Copenhagen, Denmark
^ permalink raw reply [relevance 3%]
* Merge behavior with merge.conflictStyle diff3
@ 2018-12-18 17:34 6% Adilson de Almeida Junior
0 siblings, 0 replies; 30+ results
From: Adilson de Almeida Junior @ 2018-12-18 17:34 UTC (permalink / raw)
To: git
Hi,
I´m not sure if this is a bug or not.
These are the steps to reproduce it (git 2.17 at least):
- In a repo, with default settings (merge strategy, conflict style,
merge drivers, etc);
- Create a file 'test.xml', and add the following content to it:
[div]
A
[/div]
- Perform a git add and git commit, then, create a branch named branch1;
- Next, on branch1, edit the xml file and add a new div:
[div]
A
[/div]
[div]
B
[/div]
- Then, comit the changes, and after that return to branch master;
- So, perform a similar but slightly different change:
[div]
A
[/div]
[div]
C
[/div]
- Then commit it;
- Now, do a merge (git merge branch1);
When my conflictStyle is default (merge), the merged file becames:
[div]
[[[[[[[ HEAD
C
=======
B
]]]]]]] branch1
[/div]
But when the merge.conflictStyle is set to diff3, I get:
[[[[[[[ HEAD
[div]
C
[/div]
||||||| merged common ancestors
=======
[div]
B
[/div]
]]]]]]] branch1
I guess, most times the second behavior is the expected: two conflict
hunks, not only the divvergent pieces (this case, the second line) of
them. By the doc:
merge.conflictStyle
Specify the style in which conflicted hunks are written out to
working tree files upon merge. The default is "merge", which shows a
[[[[[[[ conflict marker, changes made by one side, a ======= marker,
changes made by the other side, and then a ]]]]]]] marker. An
alternate style, "diff3", adds a ||||||| marker and the original text
before the ======= marker.
I replaced the 'lower than' and 'greater than' symbols by 'open n
close square brackets' to avoid antivirus.
Is this a bug, or something I missunderstood from git docs?
Thanks,
Adilson de Almeida Jr
^ permalink raw reply [relevance 6%]
* Re: Failed stash caused untracked changes to be lost
2018-11-05 9:29 6% ` Quinn, David
@ 2018-11-05 22:16 0% ` Thomas Gummerer
0 siblings, 0 replies; 30+ results
From: Thomas Gummerer @ 2018-11-05 22:16 UTC (permalink / raw)
To: Quinn, David; +Cc: git@vger.kernel.org
On 11/05, Quinn, David wrote:
> Hi,
>
> Thanks for the reply. Sorry I forgot the version number, completely
> slipped my mind. At the time of writing the report it was Git ~ 2.17
> I believe. All of our software is updated centrally at my work, we
> have received an update since writing this to 2.19.1. Unfortunately
> because of it being centrally controlled, I couldn't update and try
> the latest version at the time (and now I can't go back and check
> exactly what version I had).
>
> I've never even looked at the git source or contributing before so I
> wouldn't be sure where to start. If you (or someone) is happy to
> point me in the right direction I'd be happy to take a look, I can't
> promise I'll be able to get anything done in a timely manner (or at
> all)
Sure I'd be happy to help :) There's a nice document in the
git-for-windows repository [*1*] that gives a good introduction into
developing git. Some of the advise is applicable to both Windows and
linux, but it should be especially helpful for you as you seem to be
working in a windows environment.
The stash implementation is currently written in shell script, and
lives in 'git-stash.sh'. There is currently an effort under way of
re-writing this in C, but as we don't know when that's going to be
merged yet, it's probably worth fixing this in the shell script for
now.
Don't worry about making any promises, or getting it done very soon.
This is no longer a data loss bug at this time, so it's not critical
to fix it immediately, but it should definitely be fixed at some
point.
Some of us also hang out on the #git-devel IRC channel on freenode,
which can be a good place to ask questions.
[*1*]: https://github.com/git-for-windows/git/blob/master/CONTRIBUTING.md
> Thanks
>
> -----Original Message-----
> From: Thomas Gummerer <t.gummerer@gmail.com>
> Sent: 03 November 2018 15:35
> To: Quinn, David <David.Quinn@cmegroup.com>
> Cc: git@vger.kernel.org
> Subject: Re: Failed stash caused untracked changes to be lost
>
> Exercise Caution: This email is from an external source.
>
>
> On 10/23, Quinn, David wrote:
> >
> > Issue: While running a git stash command including the '-u' flag to include untracked files, the command failed due to arguments in the incorrect order. After this untracked files the were present had been removed and permanently lost.
>
> Thanks for your report (and sorry for the late reply)!
>
> I believe this (somewhat) fixed in 833622a945 ("stash push: avoid printing errors", 2018-03-19), which was first included in Git 2.18.
> Your message doesn't state which version of Git you encountered the bug, but I'm going to assume with something below 2.18 (For future reference, please include the version of Git in bug reports, or even better test with the latest version of Git, as the bug may have been fixed in the meantime).
>
> Now I'm saying somewhat fixed above, because we still create an stash if a pathspec that doesn't match any files is passed to the command, but then don't remove anything from the working tree, which is a bit confusing.
>
> I think the right solution here would be to error out early if we were given a pathspec that doesn't match anything. I'll look into that, unless you're interested in giving it a try? :)
>
> > Environment: Windows 10, Powershell w/ PoshGit
> >
> >
> > State before running command: 9 Modified files, 2 (new) untracked
> > files
> >
> > Note: I only wanted to commit some of the modified files (essentially
> > all the files/changes I wanted to commit were in one directory)
> >
> > Actual command run: git stash push -u -- Directory/To/Files/* -m "My Message"
> >
> > Returned:
> >
> > Saved working directory and index state WIP on [BranchName]: [Commit hash] [Commit Message]
> > fatal: pathspec '-m' did not match any files
> > error: unrecognized input
> >
> > State after Command ran: 9 Modifed files, 0 untracked files
> >
> >
> > The command I should have ran should have been
> >
> > git stash push -u -m "My Message"? -- Directory/To/Files/*
> >
> >
> > I have found the stash that was created by running this command:
> >
> > gitk --all $(git fsck --no-reflog | Select-String "(dangling
> > commit )(.*)" | %{ $_.Line.Split(' ')[2] }) ?
> > and searching for the commit number that was returned from the original (paritally failed??) stash command. However there is nothing in that stash. It is empty.
> >
> >
> >
> > I think that the fact my untracked files were lost is not correct
> > behaviour and hence why I'm filing this bug report
> >
> >
> >
> >
> > ________________________________
> > NOTICE: This message, and any attachments, are for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at E-Communication Disclaimer<http://www.cmegroup.com/tools-information/communications/e-communication-disclaimer.html>. If you are not the intended recipient, please delete this message. CME Group and its subsidiaries reserve the right to monitor all email communications that occur on CME Group information systems.
^ permalink raw reply [relevance 0%]
* RE: Failed stash caused untracked changes to be lost
@ 2018-11-05 9:29 6% ` Quinn, David
2018-11-05 22:16 0% ` Thomas Gummerer
0 siblings, 1 reply; 30+ results
From: Quinn, David @ 2018-11-05 9:29 UTC (permalink / raw)
To: Thomas Gummerer; +Cc: git@vger.kernel.org
Hi,
Thanks for the reply. Sorry I forgot the version number, completely slipped my mind. At the time of writing the report it was Git ~ 2.17 I believe. All of our software is updated centrally at my work, we have received an update since writing this to 2.19.1. Unfortunately because of it being centrally controlled, I couldn't update and try the latest version at the time (and now I can't go back and check exactly what version I had).
I've never even looked at the git source or contributing before so I wouldn't be sure where to start. If you (or someone) is happy to point me in the right direction I'd be happy to take a look, I can't promise I'll be able to get anything done in a timely manner (or at all)
Thanks
-----Original Message-----
From: Thomas Gummerer <t.gummerer@gmail.com>
Sent: 03 November 2018 15:35
To: Quinn, David <David.Quinn@cmegroup.com>
Cc: git@vger.kernel.org
Subject: Re: Failed stash caused untracked changes to be lost
Exercise Caution: This email is from an external source.
On 10/23, Quinn, David wrote:
>
> Issue: While running a git stash command including the '-u' flag to include untracked files, the command failed due to arguments in the incorrect order. After this untracked files the were present had been removed and permanently lost.
Thanks for your report (and sorry for the late reply)!
I believe this (somewhat) fixed in 833622a945 ("stash push: avoid printing errors", 2018-03-19), which was first included in Git 2.18.
Your message doesn't state which version of Git you encountered the bug, but I'm going to assume with something below 2.18 (For future reference, please include the version of Git in bug reports, or even better test with the latest version of Git, as the bug may have been fixed in the meantime).
Now I'm saying somewhat fixed above, because we still create an stash if a pathspec that doesn't match any files is passed to the command, but then don't remove anything from the working tree, which is a bit confusing.
I think the right solution here would be to error out early if we were given a pathspec that doesn't match anything. I'll look into that, unless you're interested in giving it a try? :)
> Environment: Windows 10, Powershell w/ PoshGit
>
>
> State before running command: 9 Modified files, 2 (new) untracked
> files
>
> Note: I only wanted to commit some of the modified files (essentially
> all the files/changes I wanted to commit were in one directory)
>
> Actual command run: git stash push -u -- Directory/To/Files/* -m "My Message"
>
> Returned:
>
> Saved working directory and index state WIP on [BranchName]: [Commit hash] [Commit Message]
> fatal: pathspec '-m' did not match any files
> error: unrecognized input
>
> State after Command ran: 9 Modifed files, 0 untracked files
>
>
> The command I should have ran should have been
>
> git stash push -u -m "My Message"? -- Directory/To/Files/*
>
>
> I have found the stash that was created by running this command:
>
> gitk --all $(git fsck --no-reflog | Select-String "(dangling
> commit )(.*)" | %{ $_.Line.Split(' ')[2] }) ?
> and searching for the commit number that was returned from the original (paritally failed??) stash command. However there is nothing in that stash. It is empty.
>
>
>
> I think that the fact my untracked files were lost is not correct
> behaviour and hence why I'm filing this bug report
>
>
>
>
> ________________________________
> NOTICE: This message, and any attachments, are for the intended recipient(s) only, may contain information that is privileged, confidential and/or proprietary and subject to important terms and conditions available at E-Communication Disclaimer<http://www.cmegroup.com/tools-information/communications/e-communication-disclaimer.html>. If you are not the intended recipient, please delete this message. CME Group and its subsidiaries reserve the right to monitor all email communications that occur on CME Group information systems.
^ permalink raw reply [relevance 6%]
* [ANNOUNCE] Git v2.19.0
@ 2018-09-10 20:11 1% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-09-10 20:11 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.19.0 is now available at the
usual places. It is comprised of 769 non-merge commits since
v2.18.0, contributed by 72 people, 16 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.19.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.18.0 are as follows.
Welcome to the Git development community!
Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Raphaël Hertzog,
Samuel Maftoul, Sebastian Kisela, Vladimir Parfinenko, and
William Chargin.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
R. Sedeño, Alexander Shopov, Anthony Sottile, Antonio Ospite,
Beat Bolli, Ben Peart, Brandon Williams, brian m. carlson,
Christian Couder, Christopher Díaz Riveros, Derrick Stolee,
Dimitriy Ryazantcev, Elia Pinto, Elijah Newren, Eric Sunshine,
Han-Wen Nienhuys, Jameson Miller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, Johannes
Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kim Gybels,
Kirill Smelkov, Kyle Meyer, Luis Marsano, Łukasz Stelmach,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Peter
Krefting, Phillip Wood, Prathamesh Chavan, Ralf Thielow, Ramsay
Jones, René Scharfe, Stefan Beller, SZEDER Gábor, Taylor Blau,
Thomas Rast, Tobias Klauser, Todd Zullinger, Trần Ngọc Quân,
Ville Skyttä, and Xiaolong Ye.
----------------------------------------------------------------
Git 2.19 Release Notes
======================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
* "git branch --list" learned to take the default sort order from the
'branch.sort' configuration variable, just like "git tag --list"
pays attention to 'tag.sort'.
* "git worktree" command learned "--quiet" option to make it less
verbose.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
* Partially revert the support for multiple hash functions to regain
hash comparison performance; we'd think of a way to do this better
in the next cycle.
* "git help --config" (which is used in command line completion)
missed the configuration variables not described in the main
config.txt file but are described in another file that is included
by it, which has been corrected.
* The test linter code has learned that the end of here-doc mark
"EOF" can be quoted in a double-quote pair, not just in a
single-quote pair.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas. This has been corrected.
* The meaning of the possible values the "core.checkStat"
configuration variable can take were not adequately documented,
which has been fixed.
(merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
* Recent "git rebase -i" update started to write bogusly formatted
author-script, with a matching broken reading code. These are
fixed.
* Recent addition of "directory rename" heuristics to the
merge-recursive backend makes the command susceptible to false
positives and false negatives. In the context of "git am -3",
which does not know about surrounding unmodified paths and thus
cannot inform the merge machinery about the full trees involved,
this risk is particularly severe. As such, the heuristic is
disabled for "git am -3" to keep the machinery "more stupid but
predictable".
* "git merge-base" in 2.19-rc1 has performance regression when the
(experimental) commit-graph feature is in use, which has been
mitigated.
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
(merge ce528de023 ab/unconditional-free-and-null later to maint).
(merge bbc072f5d8 rs/opt-updates later to maint).
(merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
(merge 1820703045 js/larger-timestamps later to maint).
(merge c8b35b95e1 sg/t4051-fix later to maint).
(merge 30612cb670 sg/t0020-conversion-fix later to maint).
(merge 15da753709 sg/t7501-thinkofix later to maint).
(merge 79b04f9b60 sg/t3903-missing-fix later to maint).
(merge 2745817028 sg/t3420-autostash-fix later to maint).
(merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
(merge 6c6ce21baa es/freebsd-iconv-portability later to maint).
----------------------------------------------------------------
Changes since v2.18.0 are as follows:
Aaron Schrab (1):
sequencer: use configured comment character
Alban Gruin (4):
rebase: introduce a dedicated backend for --preserve-merges
rebase: strip unused code in git-rebase--preserve-merges.sh
rebase: use the new git-rebase--preserve-merges.sh
rebase: remove -p code from git-rebase--interactive.sh
Alejandro R. Sedeño (1):
Makefile: tweak sed invocation
Aleksandr Makarov (1):
for-each-ref: consistently pass WM_IGNORECASE flag
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (3958t)
Andrei Rybak (2):
Documentation: fix --color option formatting
t4150: fix broken test for am --scissors
Anthony Sottile (1):
config.c: fix regression for core.safecrlf false
Antonio Ospite (6):
config: move config_from_gitmodules to submodule-config.c
submodule-config: add helper function to get 'fetch' config from .gitmodules
submodule-config: add helper to get 'update-clone' config from .gitmodules
submodule-config: make 'config_from_gitmodules' private
submodule-config: pass repository as argument to config_from_gitmodules
submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
Beat Bolli (10):
builtin/config: work around an unsized array forward declaration
unicode: update the width tables to Unicode 11
connect.h: avoid forward declaration of an enum
refs/refs-internal.h: avoid forward declaration of an enum
convert.c: replace "\e" escapes with "\033".
sequencer.c: avoid empty statements at top level
string-list.c: avoid conversion from void * to function pointer
utf8.c: avoid char overflow
Makefile: add a DEVOPTS flag to get pedantic compilation
packfile: ensure that enum object_type is defined
Ben Peart (3):
convert log_ref_write_fd() to use strbuf
handle lower case drive letters on Windows
t3507: add a testcase showing failure with sparse checkout
Brandon Williams (15):
commit: convert commit_graft_pos() to handle arbitrary repositories
commit: convert register_commit_graft to handle arbitrary repositories
commit: convert read_graft_file to handle arbitrary repositories
test-pkt-line: add unpack-sideband subcommand
docs: link to gitsubmodules
upload-pack: implement ref-in-want
upload-pack: test negotiation with changing repository
fetch: refactor the population of peer ref OIDs
fetch: refactor fetch_refs into two functions
fetch: refactor to make function args narrower
fetch-pack: put shallow info in output parameter
fetch-pack: implement ref-in-want
clone: send ref-prefixes when using protocol v2
fetch-pack: mark die strings for translation
pack-protocol: mention and point to docs for protocol v2
Chen Bin (1):
git-p4: add the `p4-pre-submit` hook
Christian Couder (1):
t9104: kosherly remove remote refs
Christopher Díaz Riveros (1):
l10n: es.po v2.19.0 round 2
Derrick Stolee (46):
ref-filter: fix outdated comment on in_commit_list
commit: add generation number to struct commit
commit-graph: compute generation numbers
commit: use generations in paint_down_to_common()
commit-graph: always load commit-graph information
ref-filter: use generation number for --contains
commit: use generation numbers for in_merge_bases()
commit: add short-circuit to paint_down_to_common()
commit: use generation number in remove_redundant()
merge: check config before loading commits
commit-graph.txt: update design document
commit-graph: fix UX issue when .lock file exists
ewah/bitmap.c: delete unused 'bitmap_clear()'
ewah/bitmap.c: delete unused 'bitmap_each_bit()'
ewah_bitmap: delete unused 'ewah_and()'
ewah_bitmap: delete unused 'ewah_and_not()'
ewah_bitmap: delete unused 'ewah_not()'
ewah_bitmap: delete unused 'ewah_or()'
ewah_io: delete unused 'ewah_serialize()'
t5318-commit-graph.sh: use core.commitGraph
commit-graph: UNLEAK before die()
commit-graph: fix GRAPH_MIN_SIZE
commit-graph: parse commit from chosen graph
commit: force commit to parse from object database
commit-graph: load a root tree from specific graph
commit-graph: add 'verify' subcommand
commit-graph: verify catches corrupt signature
commit-graph: verify required chunks are present
commit-graph: verify corrupt OID fanout and lookup
commit-graph: verify objects exist
commit-graph: verify root tree OIDs
commit-graph: verify parent list
commit-graph: verify generation number
commit-graph: verify commit date
commit-graph: test for corrupted octopus edge
commit-graph: verify contents match checksum
fsck: verify commit-graph
commit-graph: use string-list API for input
commit-graph: add '--reachable' option
gc: automatically write commit-graph files
commit-graph: update design document
commit-graph: fix documentation inconsistencies
coccinelle: update commit.cocci
commit: use timestamp_t for author_date_slab
config: fix commit-graph related config docs
commit: don't use generation numbers if not needed
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elia Pinto (1):
worktree: add --quiet option
Elijah Newren (66):
t6036, t6042: use test_create_repo to keep tests independent
t6036, t6042: use test_line_count instead of wc -l
t6036, t6042: prefer test_path_is_file, test_path_is_missing
t6036, t6042: prefer test_cmp to sequences of test
t6036: prefer test_when_finished to manual cleanup in following test
merge-recursive: fix miscellaneous grammar error in comment
merge-recursive: fix numerous argument alignment issues
merge-recursive: align labels with their respective code blocks
merge-recursive: clarify the rename_dir/RENAME_DIR meaning
merge-recursive: rename conflict_rename_*() family of functions
merge-recursive: add pointer about unduly complex looking code
git-rebase.txt: document incompatible options
git-rebase.sh: update help messages a bit
t3422: new testcases for checking when incompatible options passed
git-rebase: error out when incompatible options passed
git-rebase.txt: address confusion between --no-ff vs --force-rebase
directory-rename-detection.txt: technical docs on abilities and limitations
git-rebase.txt: document behavioral differences between modes
t3401: add directory rename testcases for rebase and am
git-rebase: make --allow-empty-message the default
t3418: add testcase showing problems with rebase -i and strategy options
Fix use of strategy options with interactive rebases
git-rebase--merge: modernize "git-$cmd" to "git $cmd"
apply: fix grammar error in comment
t5407: fix test to cover intended arguments
read-cache.c: move index_has_changes() from merge.c
index_has_changes(): avoid assuming operating on the_index
t6044: verify that merges expected to abort actually abort
t6036: add a failed conflict detection case with symlink modify/modify
t6036: add a failed conflict detection case with symlink add/add
t6036: add a failed conflict detection case with submodule modify/modify
t6036: add a failed conflict detection case with submodule add/add
t6036: add a failed conflict detection case with conflicting types
t6042: add testcase covering rename/add/delete conflict type
t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
t6042: add testcase covering long chains of rename conflicts
t6036: add lots of detail for directory/file conflicts in recursive case
t6036: add a failed conflict detection case: regular files, different modes
t6044: add a testcase for index matching head, when head doesn't match HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
t7405: add a file/submodule conflict
t7405: add a directory/submodule conflict
t7405: verify 'merge --abort' works after submodule/path conflicts
merge-recursive: preserve skip_worktree bit when necessary
t1015: demonstrate directory/file conflict recovery failures
read-cache: fix directory/file conflict handling in read_index_unmerged()
t3031: update test description to mention desired behavior
t7406: fix call that was failing for the wrong reason
t7406: simplify by using diff --name-only instead of diff --raw
t7406: avoid having git commands upstream of a pipe
t7406: prefer test_* helper functions to test -[feds]
t7406: avoid using test_must_fail for commands other than git
git-update-index.txt: reword possibly confusing example
Add missing includes and forward declarations
alloc: make allocate_alloc_state and clear_alloc_state more consistent
Move definition of enum branch_track from cache.h to branch.h
urlmatch.h: fix include guard
compat/precompose_utf8.h: use more common include guard style
Remove forward declaration of an enum
t3401: add another directory rename testcase for rebase and am
merge-recursive: add ability to turn off directory rename detection
am: avoid directory rename detection when calling recursive merge machinery
Eric Sunshine (55):
t: use test_might_fail() instead of manipulating exit code manually
t: use test_write_lines() instead of series of 'echo' commands
t: use sane_unset() rather than 'unset' with broken &&-chain
t: drop unnecessary terminating semicolon in subshell
t/lib-submodule-update: fix "absorbing" test
t5405: use test_must_fail() instead of checking exit code manually
t5406: use write_script() instead of birthing shell script manually
t5505: modernize and simplify hard-to-digest test
t6036: fix broken "merge fails but has appropriate contents" tests
t7201: drop pointless "exit 0" at end of subshell
t7400: fix broken "submodule add/reconfigure --force" test
t7810: use test_expect_code() instead of hand-rolled comparison
t9001: fix broken "invoke hook" test
t9814: simplify convoluted check that command correctly errors out
t0000-t0999: fix broken &&-chains
t1000-t1999: fix broken &&-chains
t2000-t2999: fix broken &&-chains
t3000-t3999: fix broken &&-chains
t3030: fix broken &&-chains
t4000-t4999: fix broken &&-chains
t5000-t5999: fix broken &&-chains
t6000-t6999: fix broken &&-chains
t7000-t7999: fix broken &&-chains
t9000-t9999: fix broken &&-chains
t9119: fix broken &&-chains
t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
t/check-non-portable-shell: stop being so polite
t/check-non-portable-shell: make error messages more compact
t/check-non-portable-shell: detect "FOO=bar shell_func"
t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
t/Makefile: add machinery to check correctness of chainlint.sed
t/chainlint: add chainlint "basic" test cases
t/chainlint: add chainlint "whitespace" test cases
t/chainlint: add chainlint "one-liner" test cases
t/chainlint: add chainlint "nested subshell" test cases
t/chainlint: add chainlint "loop" and "conditional" test cases
t/chainlint: add chainlint "cuddled" test cases
t/chainlint: add chainlint "complex" test cases
t/chainlint: add chainlint "specialized" test cases
diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
mw-to-git/t9360: fix broken &&-chain
t/chainlint.sed: drop extra spaces from regex character class
sequencer: fix "rebase -i --root" corrupting author header
sequencer: fix "rebase -i --root" corrupting author header timezone
sequencer: fix "rebase -i --root" corrupting author header timestamp
sequencer: don't die() on bogus user-edited timestamp
color: protect against out-of-bounds reads and writes
chainlint: match arbitrary here-docs tags rather than hard-coded names
chainlint: match 'quoted' here-doc tags
chainlint: recognize multi-line $(...) when command cuddled with "$("
chainlint: let here-doc and multi-line string commence on same line
chainlint: recognize multi-line quoted strings more robustly
chainlint: add test of pathological case which triggered false positive
chainlint: match "quoted" here-doc tags
config.mak.uname: resolve FreeBSD iconv-related compilation warning
Han-Wen Nienhuys (2):
config: document git config getter return value
sideband: highlight keywords in remote sideband output
Henning Schild (9):
builtin/receive-pack: use check_signature from gpg-interface
gpg-interface: make parse_gpg_output static and remove from interface header
gpg-interface: add new config to select how to sign a commit
t/t7510: check the validation of the new config gpg.format
gpg-interface: introduce an abstraction for multiple gpg formats
gpg-interface: do not hardcode the key string len anymore
gpg-interface: introduce new config to select per gpg format program
gpg-interface: introduce new signature format "x509" using gpgsm
gpg-interface t: extend the existing GPG tests with GPGSM
Isabella Stephens (2):
blame: prevent error if range ends past end of file
log: prevent error if line range ends past end of file
Jameson Miller (8):
read-cache: teach refresh_cache_entry to take istate
read-cache: teach make_cache_entry to take object_id
block alloc: add lifecycle APIs for cache_entry structs
mem-pool: only search head block for available space
mem-pool: add life cycle management functions
mem-pool: fill out functionality
block alloc: allocate cache entries from mem_pool
block alloc: add validations around cache_entry lifecyle
Jean-Noël Avila (3):
i18n: fix mistakes in translated strings
l10n: fr.po v2.19.0 rnd 1
l10n: fr.po v2.19.0 rnd 2
Jeff Hostetler (1):
json_writer: new routines to create JSON data
Jeff King (50):
make show-index a builtin
show-index: update documentation for index v2
fetch-pack: don't try to fetch peel values with --all
ewah: drop ewah_deserialize function
ewah: drop ewah_serialize_native function
t3200: unset core.logallrefupdates when testing reflog creation
t: switch "branch -l" to "branch --create-reflog"
branch: deprecate "-l" option
config: turn die_on_error into caller-facing enum
config: add CONFIG_ERROR_SILENT handler
config: add options parameter to git_config_from_mem
fsck: silence stderr when parsing .gitmodules
t6300: add a test for --ignore-case
ref-filter: avoid backend filtering with --ignore-case
t5500: prettify non-commit tag tests
sequencer: handle empty-set cases consistently
sequencer: don't say BUG on bogus input
has_uncommitted_changes(): fall back to empty tree
fsck: split ".gitmodules too large" error from parse failure
fsck: downgrade gitmodulesParse default to "info"
blame: prefer xsnprintf to strcpy for colors
check_replace_refs: fix outdated comment
check_replace_refs: rename to read_replace_refs
add core.usereplacerefs config option
reencode_string: use st_add/st_mult helpers
reencode_string: use size_t for string lengths
strbuf: use size_t for length in intermediate variables
strbuf_readlink: use ssize_t
pass st.st_size as hint for strbuf_readlink()
strbuf_humanise: use unsigned variables
automatically ban strcpy()
banned.h: mark strcat() as banned
banned.h: mark sprintf() as banned
banned.h: mark strncpy() as banned
score_trees(): fix iteration over trees with missing entries
add a script to diff rendered documentation
t5552: suppress upload-pack trace output
for_each_*_object: store flag definitions in a single location
for_each_*_object: take flag arguments as enum
for_each_*_object: give more comprehensive docstrings
for_each_packed_object: support iterating in pack-order
t1006: test cat-file --batch-all-objects with duplicates
cat-file: rename batch_{loose,packed}_object callbacks
cat-file: support "unordered" output for --batch-all-objects
cat-file: use oidset check-and-insert
cat-file: split batch "buf" into two variables
cat-file: use a single strbuf for all output
for_each_*_object: move declarations to object-store.h
test-tool.h: include git-compat-util.h
hashcmp: assert constant hash size
Jiang Xin (4):
l10n: zh_CN: review for git 2.18.0
l10n: git.pot: v2.19.0 round 1 (382 new, 30 removed)
l10n: git.pot: v2.19.0 round 2 (3 new, 5 removed)
l10n: zh_CN: for git v2.19.0 l10n round 1 to 2
Johannes Schindelin (41):
Makefile: fix the "built from commit" code
merge: allow reading the merge commit message from a file
rebase --rebase-merges: add support for octopus merges
rebase --rebase-merges: adjust man page for octopus support
vcbuild/README: update to accommodate for missing common-cmds.h
t7406: avoid failures solely due to timing issues
contrib: add a script to initialize VS Code configuration
vscode: hard-code a couple defines
cache.h: extract enum declaration from inside a struct declaration
mingw: define WIN32 explicitly
vscode: only overwrite C/C++ settings
vscode: wrap commit messages at column 72 by default
vscode: use 8-space tabs, no trailing ws, etc for Git's source code
vscode: add a dictionary for cSpell
vscode: let cSpell work on commit messages, too
pull --rebase=<type>: allow single-letter abbreviations for the type
t3430: demonstrate what -r, --autosquash & --exec should do
git-compat-util.h: fix typo
remote-curl: remove spurious period
rebase --exec: make it work with --rebase-merges
linear-assignment: a function to solve least-cost assignment problems
Introduce `range-diff` to compare iterations of a topic branch
range-diff: first rudimentary implementation
range-diff: improve the order of the shown commits
range-diff: also show the diff between patches
range-diff: right-trim commit messages
range-diff: indent the diffs just like tbdiff
range-diff: suppress the diff headers
range-diff: adjust the output of the commit pairs
range-diff: do not show "function names" in hunk headers
range-diff: use color for the commit pairs
color: add the meta color GIT_COLOR_REVERSE
diff: add an internal option to dual-color diffs of diffs
range-diff: offer to dual-color the diffs
range-diff --dual-color: skip white-space warnings
range-diff: populate the man page
completion: support `git range-diff`
range-diff: left-pad patch numbers
range-diff: make --dual-color the default mode
range-diff: use dim/bold cues to improve dual color mode
chainlint: fix for core.autocrlf=true
Johannes Sixt (1):
mingw: enable atomic O_APPEND
Jonathan Nieder (12):
object: add repository argument to grow_object_hash
object: move grafts to object parser
commit: add repository argument to commit_graft_pos
commit: add repository argument to register_commit_graft
commit: add repository argument to read_graft_file
commit: add repository argument to prepare_commit_graft
commit: add repository argument to lookup_commit_graft
subtree test: add missing && to &&-chain
subtree test: simplify preparation of expected results
doc hash-function-transition: pick SHA-256 as NewHash
partial-clone: render design doc using asciidoc
Revert "Merge branch 'sb/submodule-core-worktree'"
Jonathan Tan (28):
list-objects: check if filter is NULL before using
fetch-pack: split up everything_local()
fetch-pack: clear marks before re-marking
fetch-pack: directly end negotiation if ACK ready
fetch-pack: use ref adv. to prune "have" sent
fetch-pack: make negotiation-related vars local
fetch-pack: move common check and marking together
fetch-pack: introduce negotiator API
pack-bitmap: remove bitmap_git global variable
pack-bitmap: add free function
fetch-pack: write shallow, then check connectivity
fetch-pack: support negotiation tip whitelist
upload-pack: send refs' objects despite "filter"
clone: check connectivity even if clone is partial
revision: tolerate promised targets of tags
tag: don't warn if target is missing but promised
negotiator/skipping: skip commits during fetch
commit-graph: refactor preparing commit graph
object-store: add missing include
commit-graph: add missing forward declaration
commit-graph: add free_commit_graph
commit-graph: store graph in struct object_store
commit-graph: add repo arg to graph readers
t5702: test fetch with multiple refspecs at a time
fetch: send "refs/tags/" prefix upon CLI refspecs
fetch-pack: unify ref in and out param
repack: refactor setup of pack-objects cmd
repack: repack promisor objects if -a or -A is set
Josh Steadmon (1):
protocol-v2 doc: put HTTP headers after request
Jules Maselbas (1):
send-email: fix tls AUTH when sending batch
Junio C Hamano (23):
tests: clean after SANITY tests
ewah: delete unused 'rlwit_discharge_empty()'
Prepare to start 2.19 cycle
First batch for 2.19 cycle
Second batch for 2.19 cycle
fixup! connect.h: avoid forward declaration of an enum
fixup! refs/refs-internal.h: avoid forward declaration of an enum
t3404: fix use of "VAR=VAL cmd" with a shell function
Third batch for 2.19 cycle
Fourth batch for 2.19 cycle
remote: make refspec follow the same disambiguation rule as local refs
Fifth batch for 2.19 cycle
update-index: there no longer is `apply --index-info`
gpg-interface: propagate exit status from gpg back to the callers
Sixth batch for 2.19 cycle
config.txt: clarify core.checkStat
Seventh batch for 2.19 cycle
sideband: do not read beyond the end of input
Git 2.19-rc0
Getting ready for -rc1
Git 2.19-rc1
Git 2.19-rc2
Git 2.19
Kana Natsuno (2):
t4018: add missing test cases for PHP
userdiff: support new keywords in PHP hunk header
Kim Gybels (1):
gc --auto: release pack files before auto packing
Kirill Smelkov (1):
fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
Kyle Meyer (1):
range-diff: update stale summary of --no-dual-color
Luis Marsano (2):
git-credential-netrc: use in-tree Git.pm for tests
git-credential-netrc: fix exit status when tests fail
Luke Diamand (6):
git-p4: python3: replace <> with !=
git-p4: python3: replace dict.has_key(k) with "k in dict"
git-p4: python3: remove backticks
git-p4: python3: basestring workaround
git-p4: python3: use print() function
git-p4: python3: fix octal constants
Marc Strapetz (1):
Documentation: declare "core.ignoreCase" as internal variable
Martin Ågren (1):
refspec: initalize `refspec_item` in `valid_fetch_refspec()`
Masaya Suzuki (2):
builtin/send-pack: populate the default configs
doc: fix want-capability separator
Max Kirillov (5):
http-backend: cleanup writing to child process
http-backend: respect CONTENT_LENGTH as specified by rfc3875
unpack-trees: do not fail reset because of unmerged skipped entry
http-backend: respect CONTENT_LENGTH for receive-pack
http-backend: allow empty CONTENT_LENGTH
Michael Barabanov (1):
filter-branch: skip commits present on --state-branch
Mike Hommey (1):
fast-import: do not call diff_delta() with empty buffer
Nguyễn Thái Ngọc Duy (100):
commit-slab.h: code split
commit-slab: support shared commit-slab
blame: use commit-slab for blame suspects instead of commit->util
describe: use commit-slab for commit names instead of commit->util
shallow.c: use commit-slab for commit depth instead of commit->util
sequencer.c: use commit-slab to mark seen commits
sequencer.c: use commit-slab to associate todo items to commits
revision.c: use commit-slab for show_source
bisect.c: use commit-slab for commit weight instead of commit->util
name-rev: use commit-slab for rev-name instead of commit->util
show-branch: use commit-slab for commit-name instead of commit->util
show-branch: note about its object flags usage
log: use commit-slab in prepare_bases() instead of commit->util
merge: use commit-slab in merge remote desc instead of commit->util
commit.h: delete 'util' field in struct commit
diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
diff: turn --ita-invisible-in-index on by default
t2203: add a test about "diff HEAD" case
apply: add --intent-to-add
parse-options: option to let --git-completion-helper show negative form
completion: suppress some -no- options
Add and use generic name->id mapping code for color slot parsing
grep: keep all colors in an array
fsck: factor out msg_id_info[] lazy initialization code
help: add --config to list all available config
fsck: produce camelCase config key names
advice: keep config name in camelCase in advice_config[]
am: move advice.amWorkDir parsing back to advice.c
completion: drop the hard coded list of config vars
completion: keep other config var completion in camelCase
completion: support case-insensitive config vars
log-tree: allow to customize 'grafted' color
completion: complete general config vars in two steps
upload-pack: reject shallow requests that would return nothing
completion: collapse extra --no-.. options
pack-objects: fix performance issues on packing large deltas
Update messages in preparation for i18n
archive-tar.c: mark more strings for translation
archive-zip.c: mark more strings for translation
builtin/config.c: mark more strings for translation
builtin/grep.c: mark strings for translation
builtin/pack-objects.c: mark more strings for translation
builtin/replace.c: mark more strings for translation
commit-graph.c: mark more strings for translation
config.c: mark more strings for translation
connect.c: mark more strings for translation
convert.c: mark more strings for translation
dir.c: mark more strings for translation
environment.c: mark more strings for translation
exec-cmd.c: mark more strings for translation
object.c: mark more strings for translation
pkt-line.c: mark more strings for translation
refs.c: mark more strings for translation
refspec.c: mark more strings for translation
replace-object.c: mark more strings for translation
sequencer.c: mark more strings for translation
sha1-file.c: mark more strings for translation
transport.c: mark more strings for translation
transport-helper.c: mark more strings for translation
pack-objects: document about thread synchronization
apply.h: drop extern on func declaration
attr.h: drop extern from function declaration
blame.h: drop extern on func declaration
cache-tree.h: drop extern from function declaration
convert.h: drop 'extern' from function declaration
diffcore.h: drop extern from function declaration
diff.h: remove extern from function declaration
line-range.h: drop extern from function declaration
rerere.h: drop extern from function declaration
repository.h: drop extern from function declaration
revision.h: drop extern from function declaration
submodule.h: drop extern from function declaration
config.txt: reorder blame stuff to keep config keys sorted
Makefile: add missing dependency for command-list.h
diff.c: move read_index() code back to the caller
cache-tree: wrap the_index based wrappers with #ifdef
attr: remove an implicit dependency on the_index
convert.c: remove an implicit dependency on the_index
dir.c: remove an implicit dependency on the_index in pathspec code
preload-index.c: use the right index instead of the_index
ls-files: correct index argument to get_convert_attr_ascii()
unpack-trees: remove 'extern' on function declaration
unpack-trees: add a note about path invalidation
unpack-trees: don't shadow global var the_index
unpack-trees: convert clear_ce_flags* to avoid the_index
unpack-trees: avoid the_index in verify_absent()
pathspec.c: use the right index instead of the_index
submodule.c: use the right index instead of the_index
entry.c: use the right index instead of the_index
attr: remove index from git_attr_set_direction()
grep: use the right index instead of the_index
archive.c: avoid access to the_index
archive-*.c: use the right repository
resolve-undo.c: use the right index instead of the_index
apply.c: pass struct apply_state to more functions
apply.c: make init_apply_state() take a struct repository
apply.c: remove implicit dependency on the_index
blame.c: remove implicit dependency on the_index
cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD
generate-cmdlist.sh: collect config from all config.txt files
Nicholas Guriev (1):
mergetool: don't suggest to continue after last file
Olga Telezhnaya (5):
ref-filter: add info_source to valid_atom
ref-filter: fill empty fields with empty values
ref-filter: initialize eaten variable
ref-filter: merge get_obj and get_object
ref-filter: use oid_object_info() to get object
Peter Krefting (2):
l10n: sv.po: Update Swedish translation(3608t0f0u)
l10n: sv.po: Update Swedish translation (3958t0f0u)
Phillip Wood (7):
add -p: fix counting empty context lines in edited patches
sequencer: do not squash 'reword' commits when we hit conflicts
sequencer: handle errors from read_author_ident()
sequencer: fix quoting in write_author_script
rebase -i: fix numbering in squash message
t3430: add conflicting commit
rebase -i: fix SIGSEGV when 'merge <branch>' fails
Prathamesh Chavan (4):
submodule foreach: correct '$path' in nested submodules from a subdirectory
submodule foreach: document '$sm_path' instead of '$path'
submodule foreach: document variable '$displaypath'
submodule: port submodule subcommand 'foreach' from shell to C
Ralf Thielow (1):
l10n: de.po: translate 108 new messages
Ramsay Jones (3):
fsck: check skiplist for object in fsck_blob()
t6036: fix broken && chain in sub-shell
t5562: avoid non-portable "export FOO=bar" construct
Raphaël Hertzog (1):
l10n: fr: fix a message seen in git bisect
René Scharfe (10):
remote: clear string_list after use in mv()
add, update-index: fix --chmod argument help
difftool: remove angular brackets from argument help
pack-objects: specify --index-version argument help explicitly
send-pack: specify --force-with-lease argument help explicitly
shortlog: correct option help for -w
parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
checkout-index: improve argument help for --stage
remote: improve argument help for add --mirror
parseopt: group literal string alternatives in argument help
SZEDER Gábor (30):
update-ref --stdin: use skip_prefix()
t7510-signed-commit: use 'test_must_fail'
tests: make forging GPG signed commits and tags more robust
t5541: clean up truncating access log
t/lib-httpd: add the strip_access_log() helper function
t/lib-httpd: avoid occasional failures when checking access.log
t5608: fix broken &&-chain
t9300: wait for background fast-import process to die after killing it
travis-ci: run Coccinelle static analysis with two parallel jobs
travis-ci: fail if Coccinelle static analysis found something to transform
coccinelle: mark the 'coccicheck' make target as .PHONY
coccinelle: use $(addsuffix) in 'coccicheck' make target
coccinelle: exclude sha1dc source files from static analysis
coccinelle: put sane filenames into output patches
coccinelle: extract dedicated make target to clean Coccinelle's results
travis-ci: include the trash directories of failed tests in the trace log
t5318: use 'test_cmp_bin' to compare commit-graph files
t5318: avoid unnecessary command substitutions
t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
tests: use 'test_must_be_empty' instead of '! test -s'
tests: use 'test_must_be_empty' instead of 'test ! -s'
tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>'
tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>'
t7501-commit: drop silly command substitution
t0020-crlf: check the right file
t4051-diff-function-context: read the right file
t6018-rev-list-glob: fix 'empty stdin' test
t3903-stash: don't try to grep non-existing file
t3420-rebase-autostash: don't try to grep non-existing files
t/lib-rebase.sh: support explicit 'pick' commands in 'fake_editor.sh'
Samuel Maftoul (1):
branch: support configuring --sort via .gitconfig
Sebastian Kisela (2):
git-instaweb: support Fedora/Red Hat apache module path
git-instaweb: fix apache2 config with apache >= 2.4
Stefan Beller (87):
repository: introduce parsed objects field
object: add repository argument to create_object
alloc: add repository argument to alloc_blob_node
alloc: add repository argument to alloc_tree_node
alloc: add repository argument to alloc_commit_node
alloc: add repository argument to alloc_tag_node
alloc: add repository argument to alloc_object_node
alloc: add repository argument to alloc_report
alloc: add repository argument to alloc_commit_index
object: allow grow_object_hash to handle arbitrary repositories
object: allow create_object to handle arbitrary repositories
alloc: allow arbitrary repositories for alloc functions
object-store: move object access functions to object-store.h
shallow: add repository argument to set_alternate_shallow_file
shallow: add repository argument to register_shallow
shallow: add repository argument to check_shallow_file_for_update
shallow: add repository argument to is_repository_shallow
cache: convert get_graft_file to handle arbitrary repositories
path.c: migrate global git_path_* to take a repository argument
shallow: migrate shallow information into the object parser
commit: allow prepare_commit_graft to handle arbitrary repositories
commit: allow lookup_commit_graft to handle arbitrary repositories
refs/packed-backend.c: close fd of empty file
submodule--helper: plug mem leak in print_default_remote
sequencer.c: plug leaks in do_pick_commit
submodule: fix NULL correctness in renamed broken submodules
t5526: test recursive submodules when fetching moved submodules
submodule: unset core.worktree if no working tree is present
submodule: ensure core.worktree is set after update
submodule deinit: unset core.worktree
submodule.c: report the submodule that an error occurs in
sequencer.c: plug mem leak in git_sequencer_config
.mailmap: merge different spellings of names
object: add repository argument to parse_object
object: add repository argument to lookup_object
object: add repository argument to parse_object_buffer
object: add repository argument to object_as_type
blob: add repository argument to lookup_blob
tree: add repository argument to lookup_tree
commit: add repository argument to lookup_commit_reference_gently
commit: add repository argument to lookup_commit_reference
commit: add repository argument to lookup_commit
commit: add repository argument to parse_commit_buffer
commit: add repository argument to set_commit_buffer
commit: add repository argument to get_cached_commit_buffer
tag: add repository argument to lookup_tag
tag: add repository argument to parse_tag_buffer
tag: add repository argument to deref_tag
object: allow object_as_type to handle arbitrary repositories
object: allow lookup_object to handle arbitrary repositories
blob: allow lookup_blob to handle arbitrary repositories
tree: allow lookup_tree to handle arbitrary repositories
commit: allow lookup_commit to handle arbitrary repositories
tag: allow lookup_tag to handle arbitrary repositories
tag: allow parse_tag_buffer to handle arbitrary repositories
commit.c: allow parse_commit_buffer to handle arbitrary repositories
commit-slabs: remove realloc counter outside of slab struct
commit.c: migrate the commit buffer to the parsed object store
commit.c: allow set_commit_buffer to handle arbitrary repositories
commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
object.c: allow parse_object_buffer to handle arbitrary repositories
object.c: allow parse_object to handle arbitrary repositories
tag.c: allow deref_tag to handle arbitrary repositories
commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
commit.c: allow lookup_commit_reference to handle arbitrary repositories
xdiff/xdiff.h: remove unused flags
xdiff/xdiffi.c: remove unneeded function declarations
t4015: avoid git as a pipe input
diff.c: do not pass diff options as keydata to hashmap
diff.c: adjust hash function signature to match hashmap expectation
diff.c: add a blocks mode for moved code detection
diff.c: decouple white space treatment from move detection algorithm
diff.c: factor advance_or_nullify out of mark_color_as_moved
diff.c: add white space mode to move detection that allows indent changes
diff.c: offer config option to control ws handling in move detection
xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
xdiff/xhistogram: factor out memory cleanup into free_index()
xdiff/xhistogram: move index allocation into find_lcs
Documentation/git-interpret-trailers: explain possible values
xdiff/histogram: remove tail recursion
t1300: document current behavior of setting options
xdiff: reduce indent heuristic overhead
config: fix case sensitive subsection names on writing
git-config: document accidental multi-line setting in deprecated syntax
git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
t7410: update to new style
builtin/submodule--helper: remove stray new line
Taylor Blau (9):
Documentation/config.txt: camel-case lineNumber for consistency
grep.c: expose {,inverted} match column in match_line()
grep.[ch]: extend grep_opt to allow showing matched column
grep.c: display column number of first match
builtin/grep.c: add '--column' option to 'git-grep(1)'
grep.c: add configuration variables to show matched option
contrib/git-jump/git-jump: jump to exact location
grep.c: extract show_line_header()
grep.c: teach 'git grep --only-matching'
Thomas Rast (1):
range-diff: add tests
Tobias Klauser (1):
git-rebase--preserve-merges: fix formatting of todo help message
Todd Zullinger (4):
git-credential-netrc: minor whitespace cleanup in test script
git-credential-netrc: make "all" default target of Makefile
gitignore.txt: clarify default core.excludesfile path
dir.c: fix typos in core.excludesfile comment
Trần Ngọc Quân (1):
l10n: vi.po(3958t): updated Vietnamese translation v2.19.0 round 2
Ville Skyttä (1):
Documentation: spelling and grammar fixes
Vladimir Parfinenko (1):
rebase: fix documentation formatting
William Chargin (2):
sha1-name.c: for ":/", find detached HEAD commits
t: factor out FUNNYNAMES as shared lazy prereq
Xiaolong Ye (1):
format-patch: clear UNINTERESTING flag before prepare_bases
brian m. carlson (21):
send-email: add an auto option for transfer encoding
send-email: accept long lines with suitable transfer encoding
send-email: automatically determine transfer-encoding
docs: correct RFC specifying email line length
sequencer: pass absolute GIT_WORK_TREE to exec commands
cache: update object ID functions for the_hash_algo
tree-walk: replace hard-coded constants with the_hash_algo
hex: switch to using the_hash_algo
commit: express tree entry constants in terms of the_hash_algo
strbuf: allocate space with GIT_MAX_HEXSZ
sha1-name: use the_hash_algo when parsing object names
refs/files-backend: use the_hash_algo for writing refs
builtin/update-index: convert to using the_hash_algo
builtin/update-index: simplify parsing of cacheinfo
builtin/fmt-merge-msg: make hash independent
builtin/merge: switch to use the_hash_algo
builtin/merge-recursive: make hash independent
diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
sha1-file: convert constants to uses of the_hash_algo
pretty: switch hard-coded constants to the_hash_algo
Ævar Arnfjörð Bjarmason (45):
checkout tests: index should be clean after dwim checkout
checkout.h: wrap the arguments to unique_tracking_name()
checkout.c: introduce an *_INIT macro
checkout.c: change "unique" member to "num_matches"
checkout: pass the "num_matches" up to callers
builtin/checkout.c: use "ret" variable for return
checkout: add advice for ambiguous "checkout <branch>"
checkout & worktree: introduce checkout.defaultRemote
refspec: s/refspec_item_init/&_or_die/g
refspec: add back a refspec_item_init() function
doc hash-function-transition: note the lack of a changelog
receive.fsck.<msg-id> tests: remove dead code
config doc: don't describe *.fetchObjects twice
config doc: unify the description of fsck.* and receive.fsck.*
config doc: elaborate on what transfer.fsckObjects does
config doc: elaborate on fetch.fsckObjects security
transfer.fsckObjects tests: untangle confusing setup
fetch: implement fetch.fsck.*
fsck: test & document {fetch,receive}.fsck.* config fallback
fsck: add stress tests for fsck.skipList
fsck: test and document unknown fsck.<msg-id> values
tests: make use of the test_must_be_empty function
tests: make use of the test_must_be_empty function
fetch tests: change "Tag" test tag to "testTag"
push tests: remove redundant 'git push' invocation
push tests: fix logic error in "push" test assertion
push tests: add more testing for forced tag pushing
push tests: assert re-pushing annotated tags
negotiator: unknown fetch.negotiationAlgorithm should error out
fetch doc: cross-link two new negotiation options
sha1dc: update from upstream
push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
fetch tests: correct a comment "remove it" -> "remove them"
pull doc: fix a long-standing grammar error
submodule: add more exhaustive up-path testing
refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)
t2024: mark test using "checkout -p" with PERL prerequisite
tests: fix and add lint for non-portable head -c N
tests: fix and add lint for non-portable seq
tests: fix comment syntax in chainlint.sed for AIX sed
tests: use shorter labels in chainlint.sed for AIX sed
tests: fix version-specific portability issue in Perl JSON
tests: fix and add lint for non-portable grep --file
tests: fix non-portable "${var:-"str"}" construct
tests: fix non-portable iconv invocation
Łukasz Stelmach (1):
completion: complete remote names too
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.19.0-rc2
@ 2018-09-04 22:34 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-09-04 22:34 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.19.0-rc2 is now available for testing
at the usual places. It is comprised of 17 non-merge commits since
v2.19.0-rc1.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.19.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
----------------------------------------------------------------
Git 2.19 Release Notes (draft)
==============================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
* "git branch --list" learned to take the default sort order from the
'branch.sort' configuration variable, just like "git tag --list"
pays attention to 'tag.sort'.
* "git worktree" command learned "--quiet" option to make it less
verbose.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
* Partially revert the support for multiple hash functions to regain
hash comparison performance; we'd think of a way to do this better
in the next cycle.
* "git help --config" (which is used in command line completion)
missed the configuration variables not described in the main
config.txt file but are described in another file that is included
by it, which has been corrected.
* The test linter code has learned that the end of here-doc mark
"EOF" can be quoted in a double-quote pair, not just in a
single-quote pair.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* "git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas. This has been corrected.
* The meaning of the possible values the "core.checkStat"
configuration variable can take were not adequately documented,
which has been fixed.
(merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
* Recent "git rebase -i" update started to write bogusly formatted
author-script, with a matching broken reading code. These are
fixed.
* Recent addition of "directory rename" heuristics to the
merge-recursive backend makes the command susceptible to false
positives and false negatives. In the context of "git am -3",
which does not know about surrounding unmodified paths and thus
cannot inform the merge machinery about the full trees involved,
this risk is particularly severe. As such, the heuristic is
disabled for "git am -3" to keep the machinery "more stupid but
predictable".
* "git merge-base" in 2.19-rc1 has performance regression when the
(experimental) commit-graph feature is in use, which has been
mitigated.
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
(merge ce528de023 ab/unconditional-free-and-null later to maint).
(merge bbc072f5d8 rs/opt-updates later to maint).
(merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
(merge 1820703045 js/larger-timestamps later to maint).
(merge c8b35b95e1 sg/t4051-fix later to maint).
(merge 30612cb670 sg/t0020-conversion-fix later to maint).
(merge 15da753709 sg/t7501-thinkofix later to maint).
(merge 79b04f9b60 sg/t3903-missing-fix later to maint).
(merge 2745817028 sg/t3420-autostash-fix later to maint).
(merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
(merge 6c6ce21baa es/freebsd-iconv-portability later to maint).
^ permalink raw reply [relevance 2%]
* Git for Windows v2.19.0-rc1, was Re: [ANNOUNCE] Git v2.19.0-rc1
2018-08-28 20:03 2% [ANNOUNCE] Git v2.19.0-rc1 Junio C Hamano
@ 2018-08-29 14:50 0% ` Johannes Schindelin
0 siblings, 0 replies; 30+ results
From: Johannes Schindelin @ 2018-08-29 14:50 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, git-for-windows, git-packagers
[-- Attachment #1: Type: text/plain, Size: 32152 bytes --]
Team,
the corresponding Git for Windows v2.19.0-rc1 (most notably with the
Experimental Options page in the installer letting you opt into using the
built-in `stash` and `rebase`) was built by Jameson Miller (and me) last
night and can be found here:
https://github.com/git-for-windows/git/releases/v2.19.0-rc1.windows.1
Ciao,
Johannes
On Tue, 28 Aug 2018, Junio C Hamano wrote:
> A release candidate Git v2.19.0-rc1 is now available for testing
> at the usual places. It is comprised of 735 non-merge commits
> since v2.18.0, contributed by 64 people, 15 of which are new faces.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/testing/
>
> The following public repositories all have a copy of the
> 'v2.19.0-rc1' tag and the 'master' branch that the tag points at:
>
> url = https://kernel.googlesource.com/pub/scm/git/git
> url = git://repo.or.cz/alt-git.git
> url = https://github.com/gitster/git
>
> New contributors whose contributions weren't in v2.18.0 are as follows.
> Welcome to the Git development community!
>
> Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
> Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
> Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Samuel Maftoul,
> Sebastian Kisela, Vladimir Parfinenko, and William Chargin.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
> R. Sedeño, Anthony Sottile, Antonio Ospite, Beat Bolli, Ben
> Peart, Brandon Williams, brian m. carlson, Christian Couder,
> Derrick Stolee, Elia Pinto, Elijah Newren, Eric Sunshine,
> Han-Wen Nienhuys, Jameson Miller, Jean-Noël Avila, Jeff
> Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kim Gybels,
> Kirill Smelkov, Kyle Meyer, Luis Marsano, Łukasz Stelmach,
> Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
> Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya,
> Phillip Wood, Prathamesh Chavan, Ramsay Jones, René Scharfe,
> Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas Rast, Tobias
> Klauser, Todd Zullinger, Ville Skyttä, and Xiaolong Ye.
>
> ----------------------------------------------------------------
>
> Git 2.19 Release Notes (draft)
> ==============================
>
> Updates since v2.18
> -------------------
>
> UI, Workflows & Features
>
> * "git diff" compares the index and the working tree. For paths
> added with intent-to-add bit, the command shows the full contents
> of them as added, but the paths themselves were not marked as new
> files. They are now shown as new by default.
>
> "git apply" learned the "--intent-to-add" option so that an
> otherwise working-tree-only application of a patch will add new
> paths to the index marked with the "intent-to-add" bit.
>
> * "git grep" learned the "--column" option that gives not just the
> line number but the column number of the hit.
>
> * The "-l" option in "git branch -l" is an unfortunate short-hand for
> "--create-reflog", but many users, both old and new, somehow expect
> it to be something else, perhaps "--list". This step warns when "-l"
> is used as a short-hand for "--create-reflog" and warns about the
> future repurposing of the it when it is used.
>
> * The userdiff pattern for .php has been updated.
>
> * The content-transfer-encoding of the message "git send-email" sends
> out by default was 8bit, which can cause trouble when there is an
> overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
> automatically switch to quoted-printable when there is such a line
> in the payload has been introduced and is made the default.
>
> * "git checkout" and "git worktree add" learned to honor
> checkout.defaultRemote when auto-vivifying a local branch out of a
> remote tracking branch in a repository with multiple remotes that
> have tracking branches that share the same names.
> (merge 8d7b558bae ab/checkout-default-remote later to maint).
>
> * "git grep" learned the "--only-matching" option.
>
> * "git rebase --rebase-merges" mode now handles octopus merges as
> well.
>
> * Add a server-side knob to skip commits in exponential/fibbonacci
> stride in an attempt to cover wider swath of history with a smaller
> number of iterations, potentially accepting a larger packfile
> transfer, instead of going back one commit a time during common
> ancestor discovery during the "git fetch" transaction.
> (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
>
> * A new configuration variable core.usereplacerefs has been added,
> primarily to help server installations that want to ignore the
> replace mechanism altogether.
>
> * Teach "git tag -s" etc. a few configuration variables (gpg.format
> that can be set to "openpgp" or "x509", and gpg.<format>.program
> that is used to specify what program to use to deal with the format)
> to allow x.509 certs with CMS via "gpgsm" to be used instead of
> openpgp via "gnupg".
>
> * Many more strings are prepared for l10n.
>
> * "git p4 submit" learns to ask its own pre-submit hook if it should
> continue with submitting.
>
> * The test performed at the receiving end of "git push" to prevent
> bad objects from entering repository can be customized via
> receive.fsck.* configuration variables; we now have gained a
> counterpart to do the same on the "git fetch" side, with
> fetch.fsck.* configuration variables.
>
> * "git pull --rebase=interactive" learned "i" as a short-hand for
> "interactive".
>
> * "git instaweb" has been adjusted to run better with newer Apache on
> RedHat based distros.
>
> * "git range-diff" is a reimplementation of "git tbdiff" that lets us
> compare individual patches in two iterations of a topic.
>
> * The sideband code learned to optionally paint selected keywords at
> the beginning of incoming lines on the receiving end.
>
> * "git branch --list" learned to take the default sort order from the
> 'branch.sort' configuration variable, just like "git tag --list"
> pays attention to 'tag.sort'.
>
> * "git worktree" command learned "--quiet" option to make it less
> verbose.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * The bulk of "git submodule foreach" has been rewritten in C.
>
> * The in-core "commit" object had an all-purpose "void *util" field,
> which was tricky to use especially in library-ish part of the
> code. All of the existing uses of the field has been migrated to a
> more dedicated "commit-slab" mechanism and the field is eliminated.
>
> * A less often used command "git show-index" has been modernized.
> (merge fb3010c31f jk/show-index later to maint).
>
> * The conversion to pass "the_repository" and then "a_repository"
> throughout the object access API continues.
>
> * Continuing with the idea to programatically enumerate various
> pieces of data required for command line completion, teach the
> codebase to report the list of configuration variables
> subcommands care about to help complete them.
>
> * Separate "rebase -p" codepath out of "rebase -i" implementation to
> slim down the latter and make it easier to manage.
>
> * Make refspec parsing codepath more robust.
>
> * Some flaky tests have been fixed.
>
> * Continuing with the idea to programmatically enumerate various
> pieces of data required for command line completion, the codebase
> has been taught to enumerate options prefixed with "--no-" to
> negate them.
>
> * Build and test procedure for netrc credential helper (in contrib/)
> has been updated.
>
> * The conversion to pass "the_repository" and then "a_repository"
> throughout the object access API continues.
>
> * Remove unused function definitions and declarations from ewah
> bitmap subsystem.
>
> * Code preparation to make "git p4" closer to be usable with Python 3.
>
> * Tighten the API to make it harder to misuse in-tree .gitmodules
> file, even though it shares the same syntax with configuration
> files, to read random configuration items from it.
>
> * "git fast-import" has been updated to avoid attempting to create
> delta against a zero-byte-long string, which is pointless.
>
> * The codebase has been updated to compile cleanly with -pedantic
> option.
> (merge 2b647a05d7 bb/pedantic later to maint).
>
> * The character display width table has been updated to match the
> latest Unicode standard.
> (merge 570951eea2 bb/unicode-11-width later to maint).
>
> * test-lint now looks for broken use of "VAR=VAL shell_func" in test
> scripts.
>
> * Conversion from uchar[40] to struct object_id continues.
>
> * Recent "security fix" to pay attention to contents of ".gitmodules"
> while accepting "git push" was a bit overly strict than necessary,
> which has been adjusted.
>
> * "git fsck" learns to make sure the optional commit-graph file is in
> a sane state.
>
> * "git diff --color-moved" feature has further been tweaked.
>
> * Code restructuring and a small fix to transport protocol v2 during
> fetching.
>
> * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
> take has been tweaked.
>
> * lookup_commit_reference() and friends have been updated to find
> in-core object for a specific in-core repository instance.
>
> * Various glitches in the heuristics of merge-recursive strategy have
> been documented in new tests.
>
> * "git fetch" learned a new option "--negotiation-tip" to limit the
> set of commits it tells the other end as "have", to reduce wasted
> bandwidth and cycles, which would be helpful when the receiving
> repository has a lot of refs that have little to do with the
> history at the remote it is fetching from.
>
> * For a large tree, the index needs to hold many cache entries
> allocated on heap. These cache entries are now allocated out of a
> dedicated memory pool to amortize malloc(3) overhead.
>
> * Tests to cover various conflicting cases have been added for
> merge-recursive.
>
> * Tests to cover conflict cases that involve submodules have been
> added for merge-recursive.
>
> * Look for broken "&&" chains that are hidden in subshell, many of
> which have been found and corrected.
>
> * The singleton commit-graph in-core instance is made per in-core
> repository instance.
>
> * "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
> with -pedantic option, which may catch more problematic program
> constructs and potential bugs.
>
> * Preparatory code to later add json output for telemetry data has
> been added.
>
> * Update the way we use Coccinelle to find out-of-style code that
> need to be modernised.
>
> * It is too easy to misuse system API functions such as strcat();
> these selected functions are now forbidden in this codebase and
> will cause a compilation failure.
>
> * Add a script (in contrib/) to help users of VSCode work better with
> our codebase.
>
> * The Travis CI scripts were taught to ship back the test data from
> failed tests.
> (merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
>
> * The parse-options machinery learned to refrain from enclosing
> placeholder string inside a "<bra" and "ket>" pair automatically
> without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
> arguments that are not formatted correctly have been identified and
> fixed.
> (merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
>
> * Noiseword "extern" has been removed from function decls in the
> header files.
>
> * A few atoms like %(objecttype) and %(objectsize) in the format
> specifier of "for-each-ref --format=<format>" can be filled without
> getting the full contents of the object, but just with the object
> header. These cases have been optimized by calling
> oid_object_info() API (instead of reading and inspecting the data).
>
> * The end result of documentation update has been made to be
> inspected more easily to help developers.
>
> * The API to iterate over all objects learned to optionally list
> objects in the order they appear in packfiles, which helps locality
> of access if the caller accesses these objects while as objects are
> enumerated.
>
> * Improve built-in facility to catch broken &&-chain in the tests.
>
> * The more library-ish parts of the codebase learned to work on the
> in-core index-state instance that is passed in by their callers,
> instead of always working on the singleton "the_index" instance.
>
> * A test prerequisite defined by various test scripts with slightly
> different semantics has been consolidated into a single copy and
> made into a lazily defined one.
> (merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
>
> * After a partial clone, repeated fetches from promisor remote would
> have accumulated many packfiles marked with .promisor bit without
> getting them coalesced into fewer packfiles, hurting performance.
> "git repack" now learned to repack them.
>
> * Partially revert the support for multiple hash functions to regain
> hash comparison performance; we'd think of a way to do this better
> in the next cycle.
>
> * "git help --config" (which is used in command line completion)
> missed the configuration variables not described in the main
> config.txt file but are described in another file that is included
> by it, which has been corrected.
>
> Fixes since v2.18
> -----------------
>
> * "git remote update" can take both a single remote nickname and a
> nickname for remote groups, and the completion script (in contrib/)
> has been taught about it.
> (merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
>
> * "git fetch --shallow-since=<cutoff>" that specifies the cut-off
> point that is newer than the existing history used to end up
> grabbing the entire history. Such a request now errors out.
> (merge e34de73c56 nd/reject-empty-shallow-request later to maint).
>
> * Fix for 2.17-era regression around `core.safecrlf`.
> (merge 6cb09125be as/safecrlf-quiet-fix later to maint).
>
> * The recent addition of "partial clone" experimental feature kicked
> in when it shouldn't, namely, when there is no partial-clone filter
> defined even if extensions.partialclone is set.
> (merge cac1137dc4 jh/partial-clone later to maint).
>
> * "git send-pack --signed" (hence "git push --signed" over the http
> transport) did not read user ident from the config mechanism to
> determine whom to sign the push certificate as, which has been
> corrected.
> (merge d067d98887 ms/send-pack-honor-config later to maint).
>
> * "git fetch-pack --all" used to unnecessarily fail upon seeing an
> annotated tag that points at an object other than a commit.
> (merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
>
> * When user edits the patch in "git add -p" and the user's editor is
> set to strip trailing whitespaces indiscriminately, an empty line
> that is unchanged in the patch would become completely empty
> (instead of a line with a sole SP on it). The code introduced in
> Git 2.17 timeframe failed to parse such a patch, but now it learned
> to notice the situation and cope with it.
> (merge f4d35a6b49 pw/add-p-recount later to maint).
>
> * The code to try seeing if a fetch is necessary in a submodule
> during a fetch with --recurse-submodules got confused when the path
> to the submodule was changed in the range of commits in the
> superproject, sometimes showing "(null)". This has been corrected.
>
> * "git submodule" did not correctly adjust core.worktree setting that
> indicates whether/where a submodule repository has its associated
> working tree across various state transitions, which has been
> corrected.
>
> * Bugfix for "rebase -i" corner case regression.
> (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
>
> * Recently added "--base" option to "git format-patch" command did
> not correctly generate prereq patch ids.
> (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
>
> * POSIX portability fix in Makefile to fix a glitch introduced a few
> releases ago.
> (merge 6600054e9b dj/runtime-prefix later to maint).
>
> * "git filter-branch" when used with the "--state-branch" option
> still attempted to rewrite the commits whose filtered result is
> known from the previous attempt (which is recorded on the state
> branch); the command has been corrected not to waste cycles doing
> so.
> (merge 709cfe848a mb/filter-branch-optim later to maint).
>
> * Clarify that setting core.ignoreCase to deviate from reality would
> not turn a case-incapable filesystem into a case-capable one.
> (merge 48294b512a ms/core-icase-doc later to maint).
>
> * "fsck.skipList" did not prevent a blob object listed there from
> being inspected for is contents (e.g. we recently started to
> inspect the contents of ".gitmodules" for certain malicious
> patterns), which has been corrected.
> (merge fb16287719 rj/submodule-fsck-skip later to maint).
>
> * "git checkout --recurse-submodules another-branch" did not report
> in which submodule it failed to update the working tree, which
> resulted in an unhelpful error message.
> (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
>
> * "git rebase" behaved slightly differently depending on which one of
> the three backends gets used; this has been documented and an
> effort to make them more uniform has begun.
> (merge b00bf1c9a8 en/rebase-consistency later to maint).
>
> * The "--ignore-case" option of "git for-each-ref" (and its friends)
> did not work correctly, which has been fixed.
> (merge e674eb2528 jk/for-each-ref-icase later to maint).
>
> * "git fetch" failed to correctly validate the set of objects it
> received when making a shallow history deeper, which has been
> corrected.
> (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
>
> * Partial clone support of "git clone" has been updated to correctly
> validate the objects it receives from the other side. The server
> side has been corrected to send objects that are directly
> requested, even if they may match the filtering criteria (e.g. when
> doing a "lazy blob" partial clone).
> (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
>
> * Handling of an empty range by "git cherry-pick" was inconsistent
> depending on how the range ended up to be empty, which has been
> corrected.
> (merge c5e358d073 jk/empty-pick-fix later to maint).
>
> * "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
> had trouble working correctly in a sparsely checked out working
> tree after a conflict, which has been corrected.
> (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
>
> * Correct a broken use of "VAR=VAL shell_func" in a test.
> (merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
>
> * "git rev-parse ':/substring'" did not consider the history leading
> only to HEAD when looking for a commit with the given substring,
> when the HEAD is detached. This has been fixed.
> (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
>
> * Build doc update for Windows.
> (merge ede8d89bb1 nd/command-list later to maint).
>
> * core.commentchar is now honored when preparing the list of commits
> to replay in "rebase -i".
>
> * "git pull --rebase" on a corrupt HEAD caused a segfault. In
> general we substitute an empty tree object when running the in-core
> equivalent of the diff-index command, and the codepath has been
> corrected to do so as well to fix this issue.
> (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
>
> * httpd tests saw occasional breakage due to the way its access log
> gets inspected by the tests, which has been updated to make them
> less flaky.
> (merge e8b3b2e275 sg/httpd-test-unflake later to maint).
>
> * Tests to cover more D/F conflict cases have been added for
> merge-recursive.
>
> * "git gc --auto" opens file descriptors for the packfiles before
> spawning "git repack/prune", which would upset Windows that does
> not want a process to work on a file that is open by another
> process. The issue has been worked around.
> (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
>
> * The recursive merge strategy did not properly ensure there was no
> change between HEAD and the index before performing its operation,
> which has been corrected.
> (merge 55f39cf755 en/dirty-merge-fixes later to maint).
>
> * "git rebase" started exporting GIT_DIR environment variable and
> exposing it to hook scripts when part of it got rewritten in C.
> Instead of matching the old scripted Porcelains' behaviour,
> compensate by also exporting GIT_WORK_TREE environment as well to
> lessen the damage. This can harm existing hooks that want to
> operate on different repository, but the current behaviour is
> already broken for them anyway.
> (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
>
> * "git send-email" when using in a batched mode that limits the
> number of messages sent in a single SMTP session lost the contents
> of the variable used to choose between tls/ssl, unable to send the
> second and later batches, which has been fixed.
> (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
>
> * The lazy clone support had a few places where missing but promised
> objects were not correctly tolerated, which have been fixed.
>
> * One of the "diff --color-moved" mode "dimmed_zebra" that was named
> in an unusual way has been deprecated and replaced by
> "dimmed-zebra".
> (merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
>
> * The wire-protocol v2 relies on the client to send "ref prefixes" to
> limit the bandwidth spent on the initial ref advertisement. "git
> clone" when learned to speak v2 forgot to do so, which has been
> corrected.
> (merge 402c47d939 bw/clone-ref-prefixes later to maint).
>
> * "git diff --histogram" had a bad memory usage pattern, which has
> been rearranged to reduce the peak usage.
> (merge 79cb2ebb92 sb/histogram-less-memory later to maint).
>
> * Code clean-up to use size_t/ssize_t when they are the right type.
> (merge 7726d360b5 jk/size-t later to maint).
>
> * The wire-protocol v2 relies on the client to send "ref prefixes" to
> limit the bandwidth spent on the initial ref advertisement. "git
> fetch $remote branch:branch" that asks tags that point into the
> history leading to the "branch" automatically followed sent to
> narrow prefix and broke the tag following, which has been fixed.
> (merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
>
> * When the sparse checkout feature is in use, "git cherry-pick" and
> other mergy operations lost the skip_worktree bit when a path that
> is excluded from checkout requires content level merge, which is
> resolved as the same as the HEAD version, without materializing the
> merge result in the working tree, which made the path appear as
> deleted. This has been corrected by preserving the skip_worktree
> bit (and not materializing the file in the working tree).
> (merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
>
> * The "author-script" file "git rebase -i" creates got broken when
> we started to move the command away from shell script, which is
> getting fixed now.
> (merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
>
> * The automatic tree-matching in "git merge -s subtree" was broken 5
> years ago and nobody has noticed since then, which is now fixed.
> (merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
>
> * "git fetch $there refs/heads/s" ought to fetch the tip of the
> branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
> name is "refs/heads/s" exists at the same time, fetched that one
> instead by mistake. This has been corrected to honor the usual
> disambiguation rules for abbreviated refnames.
> (merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
>
> * Futureproofing a helper function that can easily be misused.
> (merge 65bb21e77e es/want-color-fd-defensive later to maint).
>
> * The http-backend (used for smart-http transport) used to slurp the
> whole input until EOF, without paying attention to CONTENT_LENGTH
> that is supplied in the environment and instead expecting the Web
> server to close the input stream. This has been fixed.
> (merge eebfe40962 mk/http-backend-content-length later to maint).
>
> * "git merge --abort" etc. did not clean things up properly when
> there were conflicted entries in the index in certain order that
> are involved in D/F conflicts. This has been corrected.
> (merge ad3762042a en/abort-df-conflict-fixes later to maint).
>
> * "git diff --indent-heuristic" had a bad corner case performance.
> (merge 301ef85401 sb/indent-heuristic-optim later to maint).
>
> * The "--exec" option to "git rebase --rebase-merges" placed the exec
> commands at wrong places, which has been corrected.
>
> * "git verify-tag" and "git verify-commit" have been taught to use
> the exit status of underlying "gpg --verify" to signal bad or
> untrusted signature they found.
> (merge 4e5dc9ca17 jc/gpg-status later to maint).
>
> * "git mergetool" stopped and gave an extra prompt to continue after
> the last path has been handled, which did not make much sense.
> (merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
>
> * Among the three codepaths we use O_APPEND to open a file for
> appending, one used for writing GIT_TRACE output requires O_APPEND
> implementation that behaves sensibly when multiple processes are
> writing to the same file. POSIX emulation used in the Windows port
> has been updated to improve in this area.
> (merge d641097589 js/mingw-o-append later to maint).
>
> * "git pull --rebase -v" in a repository with a submodule barfed as
> an intermediate process did not understand what "-v(erbose)" flag
> meant, which has been fixed.
> (merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
>
> * Recent update to "git config" broke updating variable in a
> subsection, which has been corrected.
> (merge bff7df7a87 sb/config-write-fix later to maint).
>
> * When "git rebase -i" is told to squash two or more commits into
> one, it labeled the log message for each commit with its number.
> It correctly called the first one "1st commit", but the next one
> was "commit #1", which was off-by-one. This has been corrected.
> (merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
>
> * "git rebase -i", when a 'merge <branch>' insn in its todo list
> fails, segfaulted, which has been (minimally) corrected.
> (merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
>
> * "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
> though we won't be in a cherry-pick session after it returns, which
> has been corrected.
> (merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
>
> * In a recent update in 2.18 era, "git pack-objects" started
> producing a larger than necessary packfiles by missing
> opportunities to use large deltas. This has been corrected.
>
> * The meaning of the possible values the "core.checkStat"
> configuration variable can take were not adequately documented,
> which has been fixed.
> (merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
>
> * Code cleanup, docfix, build fix, etc.
> (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
> (merge 037714252f jc/clean-after-sanity-tests later to maint).
> (merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
> (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
> (merge bb4d000e87 bw/protocol-v2 later to maint).
> (merge 928f0ab4ba vs/typofixes later to maint).
> (merge d7f590be84 en/rebase-i-microfixes later to maint).
> (merge 81d395cc85 js/rebase-recreate-merge later to maint).
> (merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
> (merge a9aa3c0927 ds/commit-graph later to maint).
> (merge 5cf8e06474 js/enhanced-version-info later to maint).
> (merge 6aaded5509 tb/config-default later to maint).
> (merge 022d2ac1f3 sb/blame-color later to maint).
> (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
> (merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
> (merge 1e83b9bfdd sb/trailers-docfix later to maint).
> (merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
> (merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
> (merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
> (merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
> (merge fe583c6c7a rs/remote-mv-leakfix later to maint).
> (merge 69885ab015 en/t3031-title-fix later to maint).
> (merge 8578037bed nd/config-blame-sort later to maint).
> (merge 8ad169c4ba hn/config-in-code-comment later to maint).
> (merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
> (merge a8132410ee js/typofixes later to maint).
> (merge 388d0ff6e5 en/update-index-doc later to maint).
> (merge e05aa688dd jc/update-index-doc later to maint).
> (merge 10c600172c sg/t5310-empty-input-fix later to maint).
> (merge 5641eb9465 jh/partial-clone-doc later to maint).
> (merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
> (merge ce528de023 ab/unconditional-free-and-null later to maint).
> (merge bbc072f5d8 rs/opt-updates later to maint).
> (merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
> (merge 1820703045 js/larger-timestamps later to maint).
> (merge c8b35b95e1 sg/t4051-fix later to maint).
> (merge 30612cb670 sg/t0020-conversion-fix later to maint).
> (merge 15da753709 sg/t7501-thinkofix later to maint).
> (merge 79b04f9b60 sg/t3903-missing-fix later to maint).
> (merge 2745817028 sg/t3420-autostash-fix later to maint).
> (merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqftyyfecy.fsf%40gitster-ct.c.googlers.com.
> For more options, visit https://groups.google.com/d/optout.
>
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.19.0-rc1
@ 2018-08-28 20:03 2% Junio C Hamano
2018-08-29 14:50 0% ` Git for Windows v2.19.0-rc1, was " Johannes Schindelin
0 siblings, 1 reply; 30+ results
From: Junio C Hamano @ 2018-08-28 20:03 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.19.0-rc1 is now available for testing
at the usual places. It is comprised of 735 non-merge commits
since v2.18.0, contributed by 64 people, 15 of which are new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.19.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.18.0 are as follows.
Welcome to the Git development community!
Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Samuel Maftoul,
Sebastian Kisela, Vladimir Parfinenko, and William Chargin.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
R. Sedeño, Anthony Sottile, Antonio Ospite, Beat Bolli, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Derrick Stolee, Elia Pinto, Elijah Newren, Eric Sunshine,
Han-Wen Nienhuys, Jameson Miller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kim Gybels,
Kirill Smelkov, Kyle Meyer, Luis Marsano, Łukasz Stelmach,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya,
Phillip Wood, Prathamesh Chavan, Ramsay Jones, René Scharfe,
Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas Rast, Tobias
Klauser, Todd Zullinger, Ville Skyttä, and Xiaolong Ye.
----------------------------------------------------------------
Git 2.19 Release Notes (draft)
==============================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
* "git branch --list" learned to take the default sort order from the
'branch.sort' configuration variable, just like "git tag --list"
pays attention to 'tag.sort'.
* "git worktree" command learned "--quiet" option to make it less
verbose.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
* Partially revert the support for multiple hash functions to regain
hash comparison performance; we'd think of a way to do this better
in the next cycle.
* "git help --config" (which is used in command line completion)
missed the configuration variables not described in the main
config.txt file but are described in another file that is included
by it, which has been corrected.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* "git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas. This has been corrected.
* The meaning of the possible values the "core.checkStat"
configuration variable can take were not adequately documented,
which has been fixed.
(merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
(merge ce528de023 ab/unconditional-free-and-null later to maint).
(merge bbc072f5d8 rs/opt-updates later to maint).
(merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
(merge 1820703045 js/larger-timestamps later to maint).
(merge c8b35b95e1 sg/t4051-fix later to maint).
(merge 30612cb670 sg/t0020-conversion-fix later to maint).
(merge 15da753709 sg/t7501-thinkofix later to maint).
(merge 79b04f9b60 sg/t3903-missing-fix later to maint).
(merge 2745817028 sg/t3420-autostash-fix later to maint).
(merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.19.0-rc0
@ 2018-08-20 22:13 1% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-08-20 22:13 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.19.0-rc0 is now available for
testing at the usual places. It is comprised of 707 non-merge
commits since v2.18.0, contributed by 60 people, 14 of which are
new faces.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.19.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.18.0 are as follows.
Welcome to the Git development community!
Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Sebastian Kisela,
Vladimir Parfinenko, and William Chargin.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
R. Sedeño, Anthony Sottile, Antonio Ospite, Beat Bolli, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Derrick Stolee, Elijah Newren, Eric Sunshine, Han-Wen Nienhuys,
Jameson Miller, Jeff Hostetler, Jeff King, Johannes Schindelin,
Johannes Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
Kim Gybels, Kirill Smelkov, Luis Marsano, Łukasz Stelmach,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya,
Phillip Wood, Prathamesh Chavan, Ramsay Jones, René Scharfe,
Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas Rast, Tobias
Klauser, Todd Zullinger, Ville Skyttä, and Xiaolong Ye.
----------------------------------------------------------------
Git 2.19 Release Notes (draft)
==============================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* "git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
(merge 984cd77ddb sb/submodule-core-worktree later to maint).
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
----------------------------------------------------------------
Changes since v2.18.0 are as follows:
Aaron Schrab (1):
sequencer: use configured comment character
Alban Gruin (4):
rebase: introduce a dedicated backend for --preserve-merges
rebase: strip unused code in git-rebase--preserve-merges.sh
rebase: use the new git-rebase--preserve-merges.sh
rebase: remove -p code from git-rebase--interactive.sh
Alejandro R. Sedeño (1):
Makefile: tweak sed invocation
Aleksandr Makarov (1):
for-each-ref: consistently pass WM_IGNORECASE flag
Andrei Rybak (2):
Documentation: fix --color option formatting
t4150: fix broken test for am --scissors
Anthony Sottile (1):
config.c: fix regression for core.safecrlf false
Antonio Ospite (6):
config: move config_from_gitmodules to submodule-config.c
submodule-config: add helper function to get 'fetch' config from .gitmodules
submodule-config: add helper to get 'update-clone' config from .gitmodules
submodule-config: make 'config_from_gitmodules' private
submodule-config: pass repository as argument to config_from_gitmodules
submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
Beat Bolli (10):
builtin/config: work around an unsized array forward declaration
unicode: update the width tables to Unicode 11
connect.h: avoid forward declaration of an enum
refs/refs-internal.h: avoid forward declaration of an enum
convert.c: replace "\e" escapes with "\033".
sequencer.c: avoid empty statements at top level
string-list.c: avoid conversion from void * to function pointer
utf8.c: avoid char overflow
Makefile: add a DEVOPTS flag to get pedantic compilation
packfile: ensure that enum object_type is defined
Ben Peart (3):
convert log_ref_write_fd() to use strbuf
handle lower case drive letters on Windows
t3507: add a testcase showing failure with sparse checkout
Brandon Williams (15):
commit: convert commit_graft_pos() to handle arbitrary repositories
commit: convert register_commit_graft to handle arbitrary repositories
commit: convert read_graft_file to handle arbitrary repositories
test-pkt-line: add unpack-sideband subcommand
docs: link to gitsubmodules
upload-pack: implement ref-in-want
upload-pack: test negotiation with changing repository
fetch: refactor the population of peer ref OIDs
fetch: refactor fetch_refs into two functions
fetch: refactor to make function args narrower
fetch-pack: put shallow info in output parameter
fetch-pack: implement ref-in-want
clone: send ref-prefixes when using protocol v2
fetch-pack: mark die strings for translation
pack-protocol: mention and point to docs for protocol v2
Chen Bin (1):
git-p4: add the `p4-pre-submit` hook
Christian Couder (1):
t9104: kosherly remove remote refs
Derrick Stolee (43):
ref-filter: fix outdated comment on in_commit_list
commit: add generation number to struct commit
commit-graph: compute generation numbers
commit: use generations in paint_down_to_common()
commit-graph: always load commit-graph information
ref-filter: use generation number for --contains
commit: use generation numbers for in_merge_bases()
commit: add short-circuit to paint_down_to_common()
commit: use generation number in remove_redundant()
merge: check config before loading commits
commit-graph.txt: update design document
commit-graph: fix UX issue when .lock file exists
ewah/bitmap.c: delete unused 'bitmap_clear()'
ewah/bitmap.c: delete unused 'bitmap_each_bit()'
ewah_bitmap: delete unused 'ewah_and()'
ewah_bitmap: delete unused 'ewah_and_not()'
ewah_bitmap: delete unused 'ewah_not()'
ewah_bitmap: delete unused 'ewah_or()'
ewah_io: delete unused 'ewah_serialize()'
t5318-commit-graph.sh: use core.commitGraph
commit-graph: UNLEAK before die()
commit-graph: fix GRAPH_MIN_SIZE
commit-graph: parse commit from chosen graph
commit: force commit to parse from object database
commit-graph: load a root tree from specific graph
commit-graph: add 'verify' subcommand
commit-graph: verify catches corrupt signature
commit-graph: verify required chunks are present
commit-graph: verify corrupt OID fanout and lookup
commit-graph: verify objects exist
commit-graph: verify root tree OIDs
commit-graph: verify parent list
commit-graph: verify generation number
commit-graph: verify commit date
commit-graph: test for corrupted octopus edge
commit-graph: verify contents match checksum
fsck: verify commit-graph
commit-graph: use string-list API for input
commit-graph: add '--reachable' option
gc: automatically write commit-graph files
commit-graph: update design document
commit-graph: fix documentation inconsistencies
coccinelle: update commit.cocci
Elijah Newren (63):
t6036, t6042: use test_create_repo to keep tests independent
t6036, t6042: use test_line_count instead of wc -l
t6036, t6042: prefer test_path_is_file, test_path_is_missing
t6036, t6042: prefer test_cmp to sequences of test
t6036: prefer test_when_finished to manual cleanup in following test
merge-recursive: fix miscellaneous grammar error in comment
merge-recursive: fix numerous argument alignment issues
merge-recursive: align labels with their respective code blocks
merge-recursive: clarify the rename_dir/RENAME_DIR meaning
merge-recursive: rename conflict_rename_*() family of functions
merge-recursive: add pointer about unduly complex looking code
git-rebase.txt: document incompatible options
git-rebase.sh: update help messages a bit
t3422: new testcases for checking when incompatible options passed
git-rebase: error out when incompatible options passed
git-rebase.txt: address confusion between --no-ff vs --force-rebase
directory-rename-detection.txt: technical docs on abilities and limitations
git-rebase.txt: document behavioral differences between modes
t3401: add directory rename testcases for rebase and am
git-rebase: make --allow-empty-message the default
t3418: add testcase showing problems with rebase -i and strategy options
Fix use of strategy options with interactive rebases
git-rebase--merge: modernize "git-$cmd" to "git $cmd"
apply: fix grammar error in comment
t5407: fix test to cover intended arguments
read-cache.c: move index_has_changes() from merge.c
index_has_changes(): avoid assuming operating on the_index
t6044: verify that merges expected to abort actually abort
t6036: add a failed conflict detection case with symlink modify/modify
t6036: add a failed conflict detection case with symlink add/add
t6036: add a failed conflict detection case with submodule modify/modify
t6036: add a failed conflict detection case with submodule add/add
t6036: add a failed conflict detection case with conflicting types
t6042: add testcase covering rename/add/delete conflict type
t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
t6042: add testcase covering long chains of rename conflicts
t6036: add lots of detail for directory/file conflicts in recursive case
t6036: add a failed conflict detection case: regular files, different modes
t6044: add a testcase for index matching head, when head doesn't match HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
t7405: add a file/submodule conflict
t7405: add a directory/submodule conflict
t7405: verify 'merge --abort' works after submodule/path conflicts
merge-recursive: preserve skip_worktree bit when necessary
t1015: demonstrate directory/file conflict recovery failures
read-cache: fix directory/file conflict handling in read_index_unmerged()
t3031: update test description to mention desired behavior
t7406: fix call that was failing for the wrong reason
t7406: simplify by using diff --name-only instead of diff --raw
t7406: avoid having git commands upstream of a pipe
t7406: prefer test_* helper functions to test -[feds]
t7406: avoid using test_must_fail for commands other than git
git-update-index.txt: reword possibly confusing example
Add missing includes and forward declarations
alloc: make allocate_alloc_state and clear_alloc_state more consistent
Move definition of enum branch_track from cache.h to branch.h
urlmatch.h: fix include guard
compat/precompose_utf8.h: use more common include guard style
Remove forward declaration of an enum
Eric Sunshine (53):
t: use test_might_fail() instead of manipulating exit code manually
t: use test_write_lines() instead of series of 'echo' commands
t: use sane_unset() rather than 'unset' with broken &&-chain
t: drop unnecessary terminating semicolon in subshell
t/lib-submodule-update: fix "absorbing" test
t5405: use test_must_fail() instead of checking exit code manually
t5406: use write_script() instead of birthing shell script manually
t5505: modernize and simplify hard-to-digest test
t6036: fix broken "merge fails but has appropriate contents" tests
t7201: drop pointless "exit 0" at end of subshell
t7400: fix broken "submodule add/reconfigure --force" test
t7810: use test_expect_code() instead of hand-rolled comparison
t9001: fix broken "invoke hook" test
t9814: simplify convoluted check that command correctly errors out
t0000-t0999: fix broken &&-chains
t1000-t1999: fix broken &&-chains
t2000-t2999: fix broken &&-chains
t3000-t3999: fix broken &&-chains
t3030: fix broken &&-chains
t4000-t4999: fix broken &&-chains
t5000-t5999: fix broken &&-chains
t6000-t6999: fix broken &&-chains
t7000-t7999: fix broken &&-chains
t9000-t9999: fix broken &&-chains
t9119: fix broken &&-chains
t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
t/check-non-portable-shell: stop being so polite
t/check-non-portable-shell: make error messages more compact
t/check-non-portable-shell: detect "FOO=bar shell_func"
t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
t/Makefile: add machinery to check correctness of chainlint.sed
t/chainlint: add chainlint "basic" test cases
t/chainlint: add chainlint "whitespace" test cases
t/chainlint: add chainlint "one-liner" test cases
t/chainlint: add chainlint "nested subshell" test cases
t/chainlint: add chainlint "loop" and "conditional" test cases
t/chainlint: add chainlint "cuddled" test cases
t/chainlint: add chainlint "complex" test cases
t/chainlint: add chainlint "specialized" test cases
diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
mw-to-git/t9360: fix broken &&-chain
t/chainlint.sed: drop extra spaces from regex character class
sequencer: fix "rebase -i --root" corrupting author header
sequencer: fix "rebase -i --root" corrupting author header timezone
sequencer: fix "rebase -i --root" corrupting author header timestamp
sequencer: don't die() on bogus user-edited timestamp
color: protect against out-of-bounds reads and writes
chainlint: match arbitrary here-docs tags rather than hard-coded names
chainlint: match 'quoted' here-doc tags
chainlint: recognize multi-line $(...) when command cuddled with "$("
chainlint: let here-doc and multi-line string commence on same line
chainlint: recognize multi-line quoted strings more robustly
chainlint: add test of pathological case which triggered false positive
Han-Wen Nienhuys (2):
config: document git config getter return value
sideband: highlight keywords in remote sideband output
Henning Schild (9):
builtin/receive-pack: use check_signature from gpg-interface
gpg-interface: make parse_gpg_output static and remove from interface header
gpg-interface: add new config to select how to sign a commit
t/t7510: check the validation of the new config gpg.format
gpg-interface: introduce an abstraction for multiple gpg formats
gpg-interface: do not hardcode the key string len anymore
gpg-interface: introduce new config to select per gpg format program
gpg-interface: introduce new signature format "x509" using gpgsm
gpg-interface t: extend the existing GPG tests with GPGSM
Isabella Stephens (2):
blame: prevent error if range ends past end of file
log: prevent error if line range ends past end of file
Jameson Miller (8):
read-cache: teach refresh_cache_entry to take istate
read-cache: teach make_cache_entry to take object_id
block alloc: add lifecycle APIs for cache_entry structs
mem-pool: only search head block for available space
mem-pool: add life cycle management functions
mem-pool: fill out functionality
block alloc: allocate cache entries from mem_pool
block alloc: add validations around cache_entry lifecyle
Jeff Hostetler (1):
json_writer: new routines to create JSON data
Jeff King (48):
make show-index a builtin
show-index: update documentation for index v2
fetch-pack: don't try to fetch peel values with --all
ewah: drop ewah_deserialize function
ewah: drop ewah_serialize_native function
t3200: unset core.logallrefupdates when testing reflog creation
t: switch "branch -l" to "branch --create-reflog"
branch: deprecate "-l" option
config: turn die_on_error into caller-facing enum
config: add CONFIG_ERROR_SILENT handler
config: add options parameter to git_config_from_mem
fsck: silence stderr when parsing .gitmodules
t6300: add a test for --ignore-case
ref-filter: avoid backend filtering with --ignore-case
t5500: prettify non-commit tag tests
sequencer: handle empty-set cases consistently
sequencer: don't say BUG on bogus input
has_uncommitted_changes(): fall back to empty tree
fsck: split ".gitmodules too large" error from parse failure
fsck: downgrade gitmodulesParse default to "info"
blame: prefer xsnprintf to strcpy for colors
check_replace_refs: fix outdated comment
check_replace_refs: rename to read_replace_refs
add core.usereplacerefs config option
reencode_string: use st_add/st_mult helpers
reencode_string: use size_t for string lengths
strbuf: use size_t for length in intermediate variables
strbuf_readlink: use ssize_t
pass st.st_size as hint for strbuf_readlink()
strbuf_humanise: use unsigned variables
automatically ban strcpy()
banned.h: mark strcat() as banned
banned.h: mark sprintf() as banned
banned.h: mark strncpy() as banned
score_trees(): fix iteration over trees with missing entries
add a script to diff rendered documentation
t5552: suppress upload-pack trace output
for_each_*_object: store flag definitions in a single location
for_each_*_object: take flag arguments as enum
for_each_*_object: give more comprehensive docstrings
for_each_packed_object: support iterating in pack-order
t1006: test cat-file --batch-all-objects with duplicates
cat-file: rename batch_{loose,packed}_object callbacks
cat-file: support "unordered" output for --batch-all-objects
cat-file: use oidset check-and-insert
cat-file: split batch "buf" into two variables
cat-file: use a single strbuf for all output
for_each_*_object: move declarations to object-store.h
Johannes Schindelin (41):
Makefile: fix the "built from commit" code
merge: allow reading the merge commit message from a file
rebase --rebase-merges: add support for octopus merges
rebase --rebase-merges: adjust man page for octopus support
vcbuild/README: update to accommodate for missing common-cmds.h
t7406: avoid failures solely due to timing issues
contrib: add a script to initialize VS Code configuration
vscode: hard-code a couple defines
cache.h: extract enum declaration from inside a struct declaration
mingw: define WIN32 explicitly
vscode: only overwrite C/C++ settings
vscode: wrap commit messages at column 72 by default
vscode: use 8-space tabs, no trailing ws, etc for Git's source code
vscode: add a dictionary for cSpell
vscode: let cSpell work on commit messages, too
pull --rebase=<type>: allow single-letter abbreviations for the type
t3430: demonstrate what -r, --autosquash & --exec should do
git-compat-util.h: fix typo
remote-curl: remove spurious period
rebase --exec: make it work with --rebase-merges
linear-assignment: a function to solve least-cost assignment problems
Introduce `range-diff` to compare iterations of a topic branch
range-diff: first rudimentary implementation
range-diff: improve the order of the shown commits
range-diff: also show the diff between patches
range-diff: right-trim commit messages
range-diff: indent the diffs just like tbdiff
range-diff: suppress the diff headers
range-diff: adjust the output of the commit pairs
range-diff: do not show "function names" in hunk headers
range-diff: use color for the commit pairs
color: add the meta color GIT_COLOR_REVERSE
diff: add an internal option to dual-color diffs of diffs
range-diff: offer to dual-color the diffs
range-diff --dual-color: skip white-space warnings
range-diff: populate the man page
completion: support `git range-diff`
range-diff: left-pad patch numbers
range-diff: make --dual-color the default mode
range-diff: use dim/bold cues to improve dual color mode
chainlint: fix for core.autocrlf=true
Johannes Sixt (1):
mingw: enable atomic O_APPEND
Jonathan Nieder (11):
object: add repository argument to grow_object_hash
object: move grafts to object parser
commit: add repository argument to commit_graft_pos
commit: add repository argument to register_commit_graft
commit: add repository argument to read_graft_file
commit: add repository argument to prepare_commit_graft
commit: add repository argument to lookup_commit_graft
subtree test: add missing && to &&-chain
subtree test: simplify preparation of expected results
doc hash-function-transition: pick SHA-256 as NewHash
partial-clone: render design doc using asciidoc
Jonathan Tan (28):
list-objects: check if filter is NULL before using
fetch-pack: split up everything_local()
fetch-pack: clear marks before re-marking
fetch-pack: directly end negotiation if ACK ready
fetch-pack: use ref adv. to prune "have" sent
fetch-pack: make negotiation-related vars local
fetch-pack: move common check and marking together
fetch-pack: introduce negotiator API
pack-bitmap: remove bitmap_git global variable
pack-bitmap: add free function
fetch-pack: write shallow, then check connectivity
fetch-pack: support negotiation tip whitelist
upload-pack: send refs' objects despite "filter"
clone: check connectivity even if clone is partial
revision: tolerate promised targets of tags
tag: don't warn if target is missing but promised
negotiator/skipping: skip commits during fetch
commit-graph: refactor preparing commit graph
object-store: add missing include
commit-graph: add missing forward declaration
commit-graph: add free_commit_graph
commit-graph: store graph in struct object_store
commit-graph: add repo arg to graph readers
t5702: test fetch with multiple refspecs at a time
fetch: send "refs/tags/" prefix upon CLI refspecs
fetch-pack: unify ref in and out param
repack: refactor setup of pack-objects cmd
repack: repack promisor objects if -a or -A is set
Josh Steadmon (1):
protocol-v2 doc: put HTTP headers after request
Jules Maselbas (1):
send-email: fix tls AUTH when sending batch
Junio C Hamano (18):
tests: clean after SANITY tests
ewah: delete unused 'rlwit_discharge_empty()'
Prepare to start 2.19 cycle
First batch for 2.19 cycle
Second batch for 2.19 cycle
fixup! connect.h: avoid forward declaration of an enum
fixup! refs/refs-internal.h: avoid forward declaration of an enum
t3404: fix use of "VAR=VAL cmd" with a shell function
Third batch for 2.19 cycle
Fourth batch for 2.19 cycle
remote: make refspec follow the same disambiguation rule as local refs
Fifth batch for 2.19 cycle
update-index: there no longer is `apply --index-info`
gpg-interface: propagate exit status from gpg back to the callers
Sixth batch for 2.19 cycle
Seventh batch for 2.19 cycle
sideband: do not read beyond the end of input
Git 2.19-rc0
Kana Natsuno (2):
t4018: add missing test cases for PHP
userdiff: support new keywords in PHP hunk header
Kim Gybels (1):
gc --auto: release pack files before auto packing
Kirill Smelkov (1):
fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
Luis Marsano (2):
git-credential-netrc: use in-tree Git.pm for tests
git-credential-netrc: fix exit status when tests fail
Luke Diamand (6):
git-p4: python3: replace <> with !=
git-p4: python3: replace dict.has_key(k) with "k in dict"
git-p4: python3: remove backticks
git-p4: python3: basestring workaround
git-p4: python3: use print() function
git-p4: python3: fix octal constants
Marc Strapetz (1):
Documentation: declare "core.ignoreCase" as internal variable
Martin Ågren (1):
refspec: initalize `refspec_item` in `valid_fetch_refspec()`
Masaya Suzuki (2):
builtin/send-pack: populate the default configs
doc: fix want-capability separator
Max Kirillov (4):
http-backend: cleanup writing to child process
http-backend: respect CONTENT_LENGTH as specified by rfc3875
unpack-trees: do not fail reset because of unmerged skipped entry
http-backend: respect CONTENT_LENGTH for receive-pack
Michael Barabanov (1):
filter-branch: skip commits present on --state-branch
Mike Hommey (1):
fast-import: do not call diff_delta() with empty buffer
Nguyễn Thái Ngọc Duy (98):
commit-slab.h: code split
commit-slab: support shared commit-slab
blame: use commit-slab for blame suspects instead of commit->util
describe: use commit-slab for commit names instead of commit->util
shallow.c: use commit-slab for commit depth instead of commit->util
sequencer.c: use commit-slab to mark seen commits
sequencer.c: use commit-slab to associate todo items to commits
revision.c: use commit-slab for show_source
bisect.c: use commit-slab for commit weight instead of commit->util
name-rev: use commit-slab for rev-name instead of commit->util
show-branch: use commit-slab for commit-name instead of commit->util
show-branch: note about its object flags usage
log: use commit-slab in prepare_bases() instead of commit->util
merge: use commit-slab in merge remote desc instead of commit->util
commit.h: delete 'util' field in struct commit
diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
diff: turn --ita-invisible-in-index on by default
t2203: add a test about "diff HEAD" case
apply: add --intent-to-add
parse-options: option to let --git-completion-helper show negative form
completion: suppress some -no- options
Add and use generic name->id mapping code for color slot parsing
grep: keep all colors in an array
fsck: factor out msg_id_info[] lazy initialization code
help: add --config to list all available config
fsck: produce camelCase config key names
advice: keep config name in camelCase in advice_config[]
am: move advice.amWorkDir parsing back to advice.c
completion: drop the hard coded list of config vars
completion: keep other config var completion in camelCase
completion: support case-insensitive config vars
log-tree: allow to customize 'grafted' color
completion: complete general config vars in two steps
upload-pack: reject shallow requests that would return nothing
completion: collapse extra --no-.. options
Update messages in preparation for i18n
archive-tar.c: mark more strings for translation
archive-zip.c: mark more strings for translation
builtin/config.c: mark more strings for translation
builtin/grep.c: mark strings for translation
builtin/pack-objects.c: mark more strings for translation
builtin/replace.c: mark more strings for translation
commit-graph.c: mark more strings for translation
config.c: mark more strings for translation
connect.c: mark more strings for translation
convert.c: mark more strings for translation
dir.c: mark more strings for translation
environment.c: mark more strings for translation
exec-cmd.c: mark more strings for translation
object.c: mark more strings for translation
pkt-line.c: mark more strings for translation
refs.c: mark more strings for translation
refspec.c: mark more strings for translation
replace-object.c: mark more strings for translation
sequencer.c: mark more strings for translation
sha1-file.c: mark more strings for translation
transport.c: mark more strings for translation
transport-helper.c: mark more strings for translation
pack-objects: document about thread synchronization
apply.h: drop extern on func declaration
attr.h: drop extern from function declaration
blame.h: drop extern on func declaration
cache-tree.h: drop extern from function declaration
convert.h: drop 'extern' from function declaration
diffcore.h: drop extern from function declaration
diff.h: remove extern from function declaration
line-range.h: drop extern from function declaration
rerere.h: drop extern from function declaration
repository.h: drop extern from function declaration
revision.h: drop extern from function declaration
submodule.h: drop extern from function declaration
config.txt: reorder blame stuff to keep config keys sorted
Makefile: add missing dependency for command-list.h
diff.c: move read_index() code back to the caller
cache-tree: wrap the_index based wrappers with #ifdef
attr: remove an implicit dependency on the_index
convert.c: remove an implicit dependency on the_index
dir.c: remove an implicit dependency on the_index in pathspec code
preload-index.c: use the right index instead of the_index
ls-files: correct index argument to get_convert_attr_ascii()
unpack-trees: remove 'extern' on function declaration
unpack-trees: add a note about path invalidation
unpack-trees: don't shadow global var the_index
unpack-trees: convert clear_ce_flags* to avoid the_index
unpack-trees: avoid the_index in verify_absent()
pathspec.c: use the right index instead of the_index
submodule.c: use the right index instead of the_index
entry.c: use the right index instead of the_index
attr: remove index from git_attr_set_direction()
grep: use the right index instead of the_index
archive.c: avoid access to the_index
archive-*.c: use the right repository
resolve-undo.c: use the right index instead of the_index
apply.c: pass struct apply_state to more functions
apply.c: make init_apply_state() take a struct repository
apply.c: remove implicit dependency on the_index
blame.c: remove implicit dependency on the_index
cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD
Nicholas Guriev (1):
mergetool: don't suggest to continue after last file
Olga Telezhnaya (5):
ref-filter: add info_source to valid_atom
ref-filter: fill empty fields with empty values
ref-filter: initialize eaten variable
ref-filter: merge get_obj and get_object
ref-filter: use oid_object_info() to get object
Phillip Wood (5):
add -p: fix counting empty context lines in edited patches
sequencer: do not squash 'reword' commits when we hit conflicts
rebase -i: fix numbering in squash message
t3430: add conflicting commit
rebase -i: fix SIGSEGV when 'merge <branch>' fails
Prathamesh Chavan (4):
submodule foreach: correct '$path' in nested submodules from a subdirectory
submodule foreach: document '$sm_path' instead of '$path'
submodule foreach: document variable '$displaypath'
submodule: port submodule subcommand 'foreach' from shell to C
Ramsay Jones (3):
fsck: check skiplist for object in fsck_blob()
t6036: fix broken && chain in sub-shell
t5562: avoid non-portable "export FOO=bar" construct
René Scharfe (7):
remote: clear string_list after use in mv()
add, update-index: fix --chmod argument help
difftool: remove angular brackets from argument help
pack-objects: specify --index-version argument help explicitly
send-pack: specify --force-with-lease argument help explicitly
shortlog: correct option help for -w
parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
SZEDER Gábor (19):
update-ref --stdin: use skip_prefix()
t7510-signed-commit: use 'test_must_fail'
tests: make forging GPG signed commits and tags more robust
t5541: clean up truncating access log
t/lib-httpd: add the strip_access_log() helper function
t/lib-httpd: avoid occasional failures when checking access.log
t5608: fix broken &&-chain
t9300: wait for background fast-import process to die after killing it
travis-ci: run Coccinelle static analysis with two parallel jobs
travis-ci: fail if Coccinelle static analysis found something to transform
coccinelle: mark the 'coccicheck' make target as .PHONY
coccinelle: use $(addsuffix) in 'coccicheck' make target
coccinelle: exclude sha1dc source files from static analysis
coccinelle: put sane filenames into output patches
coccinelle: extract dedicated make target to clean Coccinelle's results
travis-ci: include the trash directories of failed tests in the trace log
t5318: use 'test_cmp_bin' to compare commit-graph files
t5318: avoid unnecessary command substitutions
t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
Sebastian Kisela (2):
git-instaweb: support Fedora/Red Hat apache module path
git-instaweb: fix apache2 config with apache >= 2.4
Stefan Beller (87):
repository: introduce parsed objects field
object: add repository argument to create_object
alloc: add repository argument to alloc_blob_node
alloc: add repository argument to alloc_tree_node
alloc: add repository argument to alloc_commit_node
alloc: add repository argument to alloc_tag_node
alloc: add repository argument to alloc_object_node
alloc: add repository argument to alloc_report
alloc: add repository argument to alloc_commit_index
object: allow grow_object_hash to handle arbitrary repositories
object: allow create_object to handle arbitrary repositories
alloc: allow arbitrary repositories for alloc functions
object-store: move object access functions to object-store.h
shallow: add repository argument to set_alternate_shallow_file
shallow: add repository argument to register_shallow
shallow: add repository argument to check_shallow_file_for_update
shallow: add repository argument to is_repository_shallow
cache: convert get_graft_file to handle arbitrary repositories
path.c: migrate global git_path_* to take a repository argument
shallow: migrate shallow information into the object parser
commit: allow prepare_commit_graft to handle arbitrary repositories
commit: allow lookup_commit_graft to handle arbitrary repositories
refs/packed-backend.c: close fd of empty file
submodule--helper: plug mem leak in print_default_remote
sequencer.c: plug leaks in do_pick_commit
submodule: fix NULL correctness in renamed broken submodules
t5526: test recursive submodules when fetching moved submodules
submodule: unset core.worktree if no working tree is present
submodule: ensure core.worktree is set after update
submodule deinit: unset core.worktree
submodule.c: report the submodule that an error occurs in
sequencer.c: plug mem leak in git_sequencer_config
.mailmap: merge different spellings of names
object: add repository argument to parse_object
object: add repository argument to lookup_object
object: add repository argument to parse_object_buffer
object: add repository argument to object_as_type
blob: add repository argument to lookup_blob
tree: add repository argument to lookup_tree
commit: add repository argument to lookup_commit_reference_gently
commit: add repository argument to lookup_commit_reference
commit: add repository argument to lookup_commit
commit: add repository argument to parse_commit_buffer
commit: add repository argument to set_commit_buffer
commit: add repository argument to get_cached_commit_buffer
tag: add repository argument to lookup_tag
tag: add repository argument to parse_tag_buffer
tag: add repository argument to deref_tag
object: allow object_as_type to handle arbitrary repositories
object: allow lookup_object to handle arbitrary repositories
blob: allow lookup_blob to handle arbitrary repositories
tree: allow lookup_tree to handle arbitrary repositories
commit: allow lookup_commit to handle arbitrary repositories
tag: allow lookup_tag to handle arbitrary repositories
tag: allow parse_tag_buffer to handle arbitrary repositories
commit.c: allow parse_commit_buffer to handle arbitrary repositories
commit-slabs: remove realloc counter outside of slab struct
commit.c: migrate the commit buffer to the parsed object store
commit.c: allow set_commit_buffer to handle arbitrary repositories
commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
object.c: allow parse_object_buffer to handle arbitrary repositories
object.c: allow parse_object to handle arbitrary repositories
tag.c: allow deref_tag to handle arbitrary repositories
commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
commit.c: allow lookup_commit_reference to handle arbitrary repositories
xdiff/xdiff.h: remove unused flags
xdiff/xdiffi.c: remove unneeded function declarations
t4015: avoid git as a pipe input
diff.c: do not pass diff options as keydata to hashmap
diff.c: adjust hash function signature to match hashmap expectation
diff.c: add a blocks mode for moved code detection
diff.c: decouple white space treatment from move detection algorithm
diff.c: factor advance_or_nullify out of mark_color_as_moved
diff.c: add white space mode to move detection that allows indent changes
diff.c: offer config option to control ws handling in move detection
xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
xdiff/xhistogram: factor out memory cleanup into free_index()
xdiff/xhistogram: move index allocation into find_lcs
Documentation/git-interpret-trailers: explain possible values
xdiff/histogram: remove tail recursion
t1300: document current behavior of setting options
xdiff: reduce indent heuristic overhead
config: fix case sensitive subsection names on writing
git-config: document accidental multi-line setting in deprecated syntax
git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
t7410: update to new style
builtin/submodule--helper: remove stray new line
Taylor Blau (9):
Documentation/config.txt: camel-case lineNumber for consistency
grep.c: expose {,inverted} match column in match_line()
grep.[ch]: extend grep_opt to allow showing matched column
grep.c: display column number of first match
builtin/grep.c: add '--column' option to 'git-grep(1)'
grep.c: add configuration variables to show matched option
contrib/git-jump/git-jump: jump to exact location
grep.c: extract show_line_header()
grep.c: teach 'git grep --only-matching'
Thomas Rast (1):
range-diff: add tests
Tobias Klauser (1):
git-rebase--preserve-merges: fix formatting of todo help message
Todd Zullinger (4):
git-credential-netrc: minor whitespace cleanup in test script
git-credential-netrc: make "all" default target of Makefile
gitignore.txt: clarify default core.excludesfile path
dir.c: fix typos in core.excludesfile comment
Ville Skyttä (1):
Documentation: spelling and grammar fixes
Vladimir Parfinenko (1):
rebase: fix documentation formatting
William Chargin (2):
sha1-name.c: for ":/", find detached HEAD commits
t: factor out FUNNYNAMES as shared lazy prereq
Xiaolong Ye (1):
format-patch: clear UNINTERESTING flag before prepare_bases
brian m. carlson (21):
send-email: add an auto option for transfer encoding
send-email: accept long lines with suitable transfer encoding
send-email: automatically determine transfer-encoding
docs: correct RFC specifying email line length
sequencer: pass absolute GIT_WORK_TREE to exec commands
cache: update object ID functions for the_hash_algo
tree-walk: replace hard-coded constants with the_hash_algo
hex: switch to using the_hash_algo
commit: express tree entry constants in terms of the_hash_algo
strbuf: allocate space with GIT_MAX_HEXSZ
sha1-name: use the_hash_algo when parsing object names
refs/files-backend: use the_hash_algo for writing refs
builtin/update-index: convert to using the_hash_algo
builtin/update-index: simplify parsing of cacheinfo
builtin/fmt-merge-msg: make hash independent
builtin/merge: switch to use the_hash_algo
builtin/merge-recursive: make hash independent
diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
sha1-file: convert constants to uses of the_hash_algo
pretty: switch hard-coded constants to the_hash_algo
Ævar Arnfjörð Bjarmason (36):
checkout tests: index should be clean after dwim checkout
checkout.h: wrap the arguments to unique_tracking_name()
checkout.c: introduce an *_INIT macro
checkout.c: change "unique" member to "num_matches"
checkout: pass the "num_matches" up to callers
builtin/checkout.c: use "ret" variable for return
checkout: add advice for ambiguous "checkout <branch>"
checkout & worktree: introduce checkout.defaultRemote
refspec: s/refspec_item_init/&_or_die/g
refspec: add back a refspec_item_init() function
doc hash-function-transition: note the lack of a changelog
receive.fsck.<msg-id> tests: remove dead code
config doc: don't describe *.fetchObjects twice
config doc: unify the description of fsck.* and receive.fsck.*
config doc: elaborate on what transfer.fsckObjects does
config doc: elaborate on fetch.fsckObjects security
transfer.fsckObjects tests: untangle confusing setup
fetch: implement fetch.fsck.*
fsck: test & document {fetch,receive}.fsck.* config fallback
fsck: add stress tests for fsck.skipList
fsck: test and document unknown fsck.<msg-id> values
tests: make use of the test_must_be_empty function
tests: make use of the test_must_be_empty function
fetch tests: change "Tag" test tag to "testTag"
push tests: remove redundant 'git push' invocation
push tests: fix logic error in "push" test assertion
push tests: add more testing for forced tag pushing
push tests: assert re-pushing annotated tags
negotiator: unknown fetch.negotiationAlgorithm should error out
fetch doc: cross-link two new negotiation options
sha1dc: update from upstream
push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
fetch tests: correct a comment "remove it" -> "remove them"
pull doc: fix a long-standing grammar error
submodule: add more exhaustive up-path testing
t2024: mark test using "checkout -p" with PERL prerequisite
Łukasz Stelmach (1):
completion: complete remote names too
^ permalink raw reply [relevance 1%]
* Re: 2.18.0 Regression: packing performance and effectiveness
@ 2018-07-19 5:49 7% ` Jeff King
0 siblings, 0 replies; 30+ results
From: Jeff King @ 2018-07-19 5:49 UTC (permalink / raw)
To: Duy Nguyen; +Cc: Elijah Newren, Git Mailing List
On Thu, Jul 19, 2018 at 07:41:03AM +0200, Duy Nguyen wrote:
> On Thu, Jul 19, 2018 at 12:51 AM Elijah Newren <newren@gmail.com> wrote:
> >
> > I had a user report some poor behavior of 'git gc --aggressive' on a
> > certain repo (which I sadly cannot share). Turns out that on this
> > repo, this operation takes about 60% longer and produces a pack
> > roughly twice the expected size.
>
> The intention was to make life better for weaker machines but
> definitely should not slow down beefier ones, so yes this is
> definitely a regression.
>
> Is it possible to share "verify-pack -v <pack file>" output of the
> pack produced by 2.17.0 and 2.18.0? The only sensitive info there is
> sha-1, which you can replace with just "SHA-1" if you want. I'm more
> interested in delta sizes and distribution.
Try this:
-- >8 --
#!/bin/sh
rm -rf repo
git init repo
cd repo
dd if=/dev/urandom of=one.rand bs=1M count=2
dd if=/dev/urandom of=two.rand bs=1M count=2
dd if=/dev/urandom of=big.rand bs=1M count=20
cat one.rand big.rand >file
git add file
git commit -m one
cat two.rand big.rand >file
git add file
git commit -m two
git repack -ad
git cat-file --batch-all-objects --batch-check='%(objectname) %(deltabase)'
-- 8< --
Using git 2.17 for the repack results in a single delta (which should be
about 2MB, because it will say "delete one.rand and add two.rand" or
vice versa).
Using git 2.18, I get no delta at all.
-Peff
^ permalink raw reply [relevance 7%]
* What's cooking in git.git (Jun 2018, #07; Thu, 28)
@ 2018-06-28 21:40 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-28 21:40 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The tip of 'next' has been rewound and it currently has only 4
topics. Quite a many topics are cooking in 'pu' and need to be
sifted into good bins (for 'next') and the remainder. Help is
appreciated in that area ;-)
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/refspec-init-fix (2018-06-11) 3 commits
(merged to 'next' on 2018-06-13 at 91d71d8435)
+ refspec: initalize `refspec_item` in `valid_fetch_refspec()`
+ refspec: add back a refspec_item_init() function
+ refspec: s/refspec_item_init/&_or_die/g
Make refspec parsing codepath more robust.
* as/safecrlf-quiet-fix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at b163674843)
+ config.c: fix regression for core.safecrlf false
Fix for 2.17-era regression around `core.safecrlf`.
* jc/clean-after-sanity-tests (2018-06-15) 1 commit
(merged to 'next' on 2018-06-22 at 2df77b8af9)
+ tests: clean after SANITY tests
test cleanup.
* jh/partial-clone (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 818f864b0c)
+ list-objects: check if filter is NULL before using
The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
* jk/fetch-all-peeled-fix (2018-06-13) 2 commits
(merged to 'next' on 2018-06-13 at 1333bb9d90)
+ fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
+ fetch-pack: don't try to fetch peel values with --all
"git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
* ms/send-pack-honor-config (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at e2cd933715)
+ builtin/send-pack: populate the default configs
"git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
* nd/completion-negation (2018-06-11) 3 commits
(merged to 'next' on 2018-06-19 at a3be59b450)
+ completion: collapse extra --no-.. options
+ completion: suppress some -no- options
+ parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* pw/add-p-recount (2018-06-11) 1 commit
(merged to 'next' on 2018-06-19 at 1880ecc3f1)
+ add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
* sb/fix-fetching-moved-submodules (2018-06-14) 2 commits
(merged to 'next' on 2018-06-22 at 16039dc62a)
+ t5526: test recursive submodules when fetching moved submodules
+ submodule: fix NULL correctness in renamed broken submodules
The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* sg/gpg-tests-fix (2018-06-11) 2 commits
(merged to 'next' on 2018-06-13 at f3a05f1c41)
+ tests: make forging GPG signed commits and tags more robust
+ t7510-signed-commit: use 'test_must_fail'
Some flaky tests have been fixed.
* tz/cred-netrc-cleanup (2018-06-18) 4 commits
(merged to 'next' on 2018-06-22 at a471dd714c)
+ git-credential-netrc: make "all" default target of Makefile
+ git-credential-netrc: fix exit status when tests fail
+ git-credential-netrc: use in-tree Git.pm for tests
+ git-credential-netrc: minor whitespace cleanup in test script
Build and test procedure for netrc credential helper (in contrib/)
has been updated.
--------------------------------------------------
[New Topics]
* ao/config-from-gitmodules (2018-06-26) 6 commits
- submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
- submodule-config: pass repository as argument to config_from_gitmodules
- submodule-config: make 'config_from_gitmodules' private
- submodule-config: add helper to get 'update-clone' config from .gitmodules
- submodule-config: add helper function to get 'fetch' config from .gitmodules
- config: move config_from_gitmodules to submodule-config.c
Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
Will merge to 'next'.
* as/sequencer-customizable-comment-char (2018-06-28) 1 commit
- sequencer: use configured comment character
Honor core.commentchar when preparing the list of commits to replay
in "rebase -i".
* dj/runtime-prefix (2018-06-26) 1 commit
- Makefile: tweak sed invocation
POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
Will merge to 'next'.
* ds/commit-graph (2018-06-28) 1 commit
- commit-graph: fix documentation inconsistencies
Docfix.
Will merge to 'next'.
* en/rebase-i-microfixes (2018-06-27) 3 commits
- git-rebase--merge: modernize "git-$cmd" to "git $cmd"
- Fix use of strategy options with interactive rebases
- t3418: add testcase showing problems with rebase -i and strategy options
Will merge to 'next'.
* js/enhanced-version-info (2018-06-28) 1 commit
- Makefile: fix the "built from commit" code
Build fix.
Will merge to 'next'.
* js/rebase-recreate-merge (2018-06-27) 1 commit
- rebase: fix documentation formatting
Docfix.
Will merge to 'next'.
* jt/connectivity-check-after-unshallow (2018-06-27) 1 commit
- fetch: when deepening, check connectivity fully
"git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
* jt/fetch-nego-tip (2018-06-27) 1 commit
- fetch-pack: support negotiation tip whitelist
(this branch uses jt/fetch-pack-negotiator.)
"git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* mb/filter-branch-optim (2018-06-26) 1 commit
- filter-branch: skip commits present on --state-branch
"git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
Will merge to 'next'.
* ms/core-icase-doc (2018-06-28) 1 commit
- Documentation: declare "core.ignoreCase" as internal variable
Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
Will merge to 'next'.
* rj/submodule-fsck-skip (2018-06-27) 1 commit
- fsck: check skiplist for object in fsck_blob()
"fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
Will merge to 'next'.
* tb/grep-only-matching (2018-06-27) 3 commits
- SQUASH??? emerg compilation fix
- grep.c: teach 'git grep --only-matching'
- grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
"git grep" learned the "--only-matching" option.
* tz/exclude-doc-smallfixes (2018-06-27) 2 commits
- dir.c: fix typos in core.excludesfile comment
- gitignore.txt: clarify default core.excludesfile path
Doc updates.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-06-13) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ld/p423 (2018-06-19) 6 commits
- git-p4: python3: fix octal constants
- git-p4: python3: use print() function
- git-p4: python3: basestring workaround
- git-p4: python3: remove backticks
- git-p4: python3: replace dict.has_key(k) with "k in dict"
- git-p4: python3: replace <> with !=
Code preparation to make "git p4" closer to be usable with Python 3.
Will merge to 'next'.
* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
- sequencer: do not squash 'reword' commits when we hit conflicts
Bugfix for "rebase -i" corner case regression.
Will merge to 'next'.
* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
- format-patch: clear UNINTERESTING flag before prepare_bases
Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
Will merge to 'next'.
* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
- docs: link to gitsubmodules
Docfix.
Will merge to 'next'.
* bw/ref-in-want (2018-06-28) 8 commits
- fetch-pack: implement ref-in-want
- fetch-pack: put shallow info in output parameter
- fetch: refactor to make function args narrower
- fetch: refactor fetch_refs into two functions
- fetch: refactor the population of peer ref OIDs
- upload-pack: test negotiation with changing repository
- upload-pack: implement ref-in-want
- test-pkt-line: add unpack-sideband subcommand
Protocol v2 has been updated to allow slightly out-of-sync set of
servers to work together to serve a single client, which would be
useful with load-balanced servers that talk smart HTTP transport.
* en/rebase-consistency (2018-06-27) 9 commits
- git-rebase: make --allow-empty-message the default
- t3401: add directory rename testcases for rebase and am
- git-rebase.txt: document behavioral differences between modes
- directory-rename-detection.txt: technical docs on abilities and limitations
- git-rebase.txt: address confusion between --no-ff vs --force-rebase
- git-rebase: error out when incompatible options passed
- t3422: new testcases for checking when incompatible options passed
- git-rebase.sh: update help messages a bit
- git-rebase.txt: document incompatible options
"git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
- pack-bitmap: add free function
- pack-bitmap: remove bitmap_git global variable
The effort to move globals to per-repository in-core structure
continues.
* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
- submodule.c: report the submodule that an error occurs in
Needs a reroll.
cf. <20180622081713.5360-1-szeder.dev@gmail.com>
* bw/protocol-v2 (2018-06-22) 1 commit
- protocol-v2 doc: put HTTP headers after request
Doc fix.
Will merge to 'next'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation.)
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* vs/typofixes (2018-06-22) 1 commit
- Documentation: spelling and grammar fixes
Doc fix.
Will merge to 'next'.
* cc/remote-odb (2018-06-25) 9 commits
. Documentation/config: add odb.<name>.promisorRemote
. t0410: test fetching from many promisor remotes
. Use odb.origin.partialclonefilter instead of core.partialclonefilter
. Use remote_odb_get_direct() and has_remote_odb()
. remote-odb: add remote_odb_reinit()
. remote-odb: implement remote_odb_get_many_direct()
. remote-odb: implement remote_odb_get_direct()
. Add initial remote odb support
. fetch-object: make functions return an error code
Needs a reroll.
* ds/multi-pack-index (2018-06-25) 24 commits
- midx: clear midx on repack
- packfile: skip loading index if in multi-pack-index
- midx: prevent duplicate packfile loads
- midx: use midx in approximate_object_count
- midx: use existing midx when writing new one
- midx: use midx in abbreviation calculations
- midx: read objects from multi-pack-index
- midx: prepare midxed_git struct
- config: create core.multiPackIndex setting
- midx: write object offsets
- midx: write object id fanout chunk
- midx: write object ids in a chunk
- midx: sort and deduplicate objects from packfiles
- midx: read pack names into array
- multi-pack-index: write pack names in chunk
- multi-pack-index: read packfile list
- packfile: generalize pack directory list
- multi-pack-index: expand test data
- multi-pack-index: load into memory
- midx: write header information to lockfile
- multi-pack-index: add 'write' verb
- multi-pack-index: add builtin
- multi-pack-index: add format details
- multi-pack-index: add design document
When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
* nd/use-the-index-compat-less (2018-06-25) 13 commits
- wt-status.c: stop using index compat macros
- sha1-name.c: stop using index compat macros
- sequencer.c: stop using index compat macros
- revision.c: stop using index compat macros
- rerere.c: stop using index compat macros
- merge.c: stop using index compat macros
- merge-recursive.c: stop using index compat macros
- entry.c: stop using index compat macros
- diff.c: stop using index compat macros
- diff-lib.c: stop using index compat macros
- check-racy.c: stop using index compat macros
- blame.c: stop using index compat macros
- apply.c: stop using index compat macros
Use of many convenience functions that operate on the_index
"primary in-core index instance" have been rewritten to explicitly
call the coutnerpart functions that take arbitrary index_state and
pass the_index.
I'd say that alone is a useless code churn, but people seem to be
excited about the change, so it is queued here.
* tb/grep-column (2018-06-22) 7 commits
- contrib/git-jump/git-jump: jump to exact location
- grep.c: add configuration variables to show matched option
- builtin/grep.c: add '--column' option to 'git-grep(1)'
- grep.c: display column number of first match
- grep.[ch]: extend grep_opt to allow showing matched column
- grep.c: expose {,inverted} match column in match_line()
- Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Will merge to 'next'.
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
(this branch is used by jt/fetch-nego-tip.)
Code restructuring and a small fix to transport protocol v2 during
fetching.
Is this ready for 'next'?
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
- rebase--interactive: rewrite append_todo_help() in C
- Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
Needs a reroll.
cf. <nycvar.QRO.7.76.6.1806261125330.21419@tvgsbejvaqbjf.bet>
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
- rebase--interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* sb/submodule-core-worktree (2018-06-19) 3 commits
(merged to 'next' on 2018-06-28 at 96e1a8dbd1)
+ submodule deinit: unset core.worktree
+ submodule: ensure core.worktree is set after update
+ submodule: unset core.worktree if no working tree is present
Originally merged to 'next' on 2018-06-22
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
Will merge to 'master'.
* ds/ewah-cleanup (2018-06-21) 10 commits
(merged to 'next' on 2018-06-28 at 9cd7c0d54a)
+ ewah: delete unused 'rlwit_discharge_empty()'
+ ewah: drop ewah_serialize_native function
+ ewah: drop ewah_deserialize function
+ ewah_io: delete unused 'ewah_serialize()'
+ ewah_bitmap: delete unused 'ewah_or()'
+ ewah_bitmap: delete unused 'ewah_not()'
+ ewah_bitmap: delete unused 'ewah_and_not()'
+ ewah_bitmap: delete unused 'ewah_and()'
+ ewah/bitmap.c: delete unused 'bitmap_each_bit()'
+ ewah/bitmap.c: delete unused 'bitmap_clear()'
Originally merged to 'next' on 2018-06-22
Remove unused function definitions and declarations from ewah
bitmap subsystem.
Will merge to 'master'.
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
(merged to 'next' on 2018-06-28 at 1a3646eb7d)
+ merge-recursive: add pointer about unduly complex looking code
+ merge-recursive: rename conflict_rename_*() family of functions
+ merge-recursive: clarify the rename_dir/RENAME_DIR meaning
+ merge-recursive: align labels with their respective code blocks
+ merge-recursive: fix numerous argument alignment issues
+ merge-recursive: fix miscellaneous grammar error in comment
Originally merged to 'next' on 2018-06-19
Code cleanup.
Will merge to 'master'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* ds/commit-graph-fsck (2018-06-27) 22 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- commit-graph: use string-list API for input
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
- t5318-commit-graph.sh: use core.commitGraph
"git fsck" learns to make sure the optional commit-graph file is in
a sane state.
Is this ready for 'next'?
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Will discard and wait for a cleaned-up rewrite.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* jm/cache-entry-from-mem-pool (2018-06-28) 8 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem-pool
- mem-pool: fill out functionality
- mem-pool: add life cycle management functions
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: make_cache_entry should take object_id struct
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* sb/object-store-grafts (2018-05-18) 19 commits
(merged to 'next' on 2018-06-28 at 02f70d6302)
+ commit: allow lookup_commit_graft to handle arbitrary repositories
+ commit: allow prepare_commit_graft to handle arbitrary repositories
+ shallow: migrate shallow information into the object parser
+ path.c: migrate global git_path_* to take a repository argument
+ cache: convert get_graft_file to handle arbitrary repositories
+ commit: convert read_graft_file to handle arbitrary repositories
+ commit: convert register_commit_graft to handle arbitrary repositories
+ commit: convert commit_graft_pos() to handle arbitrary repositories
+ shallow: add repository argument to is_repository_shallow
+ shallow: add repository argument to check_shallow_file_for_update
+ shallow: add repository argument to register_shallow
+ shallow: add repository argument to set_alternate_shallow_file
+ commit: add repository argument to lookup_commit_graft
+ commit: add repository argument to prepare_commit_graft
+ commit: add repository argument to read_graft_file
+ commit: add repository argument to register_commit_graft
+ commit: add repository argument to commit_graft_pos
+ object: move grafts to object parser
+ object-store: move object access functions to object-store.h
Originally merged to 'next' on 2018-06-22
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to 'master'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/diff-color-move-more (2018-06-25) 11 commits
- diff: fix a sparse 'dubious one-bit signed bitfield' error
- SQUASH??? t/4015 GETTEXT_POISON emergency fix
- SQUASH????? Documentation breakage emergency fix
- diff.c: add white space mode to move detection that allows indent changes
- diff.c: factor advance_or_nullify out of mark_color_as_moved
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Needs to be cleaned-up with various fix-up bits applied inline.
* jk/branch-l-0-deprecation (2018-06-22) 3 commits
- branch: deprecate "-l" option
- t: switch "branch -l" to "branch --create-reflog"
- t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-repurpose.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
Will merge to 'next'.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jun 2018, #06; Mon, 25)
@ 2018-06-25 22:47 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-25 22:47 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Git 2.18 turned out to be an unusually large release in the recent
history, with 900+ individual changes, compared to ~500 for a few
releases before that. Thanks, everybody who participated.
The tip of 'next' hasn't been rewound yet, but I've already reverted
merges of a few topics from there to give them a fresh restart.
I haven't annotated many topics still in 'pu' with short-term plans
and my assessment on their done-ness. Comments and review summaries
to help deciding are appreciated. I'd like to start accepting new
topics only after getting the classification more-or-less right for
the topics already in flight.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ag/rebase-p (2018-06-01) 4 commits
(merged to 'next' on 2018-06-13 at dd6f8a51d7)
+ rebase: remove -p code from git-rebase--interactive.sh
+ rebase: use the new git-rebase--preserve-merges.sh
+ rebase: strip unused code in git-rebase--preserve-merges.sh
+ rebase: introduce a dedicated backend for --preserve-merges
(this branch is used by ag/rebase-i-append-todo-help and ag/rebase-i-rewrite-todo.)
Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 7e2f74431c)
+ t9104: kosherly remove remote refs
Instead of mucking with filesystem directly, use plumbing commands
update-ref etc. to manipulate the refs in the tests.
* ds/commit-graph-lockfile-fix (2018-05-22) 1 commit
(merged to 'next' on 2018-05-24 at 3d12a02b0c)
+ commit-graph: fix UX issue when .lock file exists
(this branch is used by ds/commit-graph-fsck; uses ds/generation-numbers.)
Update to ds/generation-numbers topic.
* ds/generation-numbers (2018-05-22) 11 commits
(merged to 'next' on 2018-05-24 at 56fc38a1b6)
+ commit-graph.txt: update design document
+ merge: check config before loading commits
+ commit: use generation number in remove_redundant()
+ commit: add short-circuit to paint_down_to_common()
+ commit: use generation numbers for in_merge_bases()
+ ref-filter: use generation number for --contains
+ commit-graph: always load commit-graph information
+ commit: use generations in paint_down_to_common()
+ commit-graph: compute generation numbers
+ commit: add generation number to struct commit
+ ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-fsck and ds/commit-graph-lockfile-fix.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
* en/merge-recursive-tests (2018-05-28) 5 commits
(merged to 'next' on 2018-06-01 at 8490b560b4)
+ t6036: prefer test_when_finished to manual cleanup in following test
+ t6036, t6042: prefer test_cmp to sequences of test
+ t6036, t6042: prefer test_path_is_file, test_path_is_missing
+ t6036, t6042: use test_line_count instead of wc -l
+ t6036, t6042: use test_create_repo to keep tests independent
Clean up tests in t6xxx series about 'merge' command.
* en/rename-directory-detection-reboot (2018-06-18) 1 commit
(merged to 'next' on 2018-06-18 at 95c454d3f4)
+ merge-recursive: use xstrdup() instead of fixed buffer
Newly added codepath in merge-recursive had potential buffer
overrun, which has been fixed.
* jk/show-index (2018-05-29) 2 commits
(merged to 'next' on 2018-06-01 at 4b3382d994)
+ show-index: update documentation for index v2
+ make show-index a builtin
Modernize a less often used command.
* ls/complete-remote-update-names (2018-06-01) 1 commit
(merged to 'next' on 2018-06-13 at 86b4d23278)
+ completion: complete remote names too
"git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
* nd/commit-util-to-slab (2018-05-21) 15 commits
(merged to 'next' on 2018-05-24 at bb5643d75c)
+ commit.h: delete 'util' field in struct commit
+ merge: use commit-slab in merge remote desc instead of commit->util
+ log: use commit-slab in prepare_bases() instead of commit->util
+ show-branch: note about its object flags usage
+ show-branch: use commit-slab for commit-name instead of commit->util
+ name-rev: use commit-slab for rev-name instead of commit->util
+ bisect.c: use commit-slab for commit weight instead of commit->util
+ revision.c: use commit-slab for show_source
+ sequencer.c: use commit-slab to associate todo items to commits
+ sequencer.c: use commit-slab to mark seen commits
+ shallow.c: use commit-slab for commit depth instead of commit->util
+ describe: use commit-slab for commit names instead of commit->util
+ blame: use commit-slab for blame suspects instead of commit->util
+ commit-slab: support shared commit-slab
+ commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* nd/complete-config-vars (2018-05-29) 13 commits
(merged to 'next' on 2018-06-13 at c2dd5546d0)
+ completion: complete general config vars in two steps
+ log-tree: allow to customize 'grafted' color
+ completion: support case-insensitive config vars
+ completion: keep other config var completion in camelCase
+ completion: drop the hard coded list of config vars
+ am: move advice.amWorkDir parsing back to advice.c
+ advice: keep config name in camelCase in advice_config[]
+ fsck: produce camelCase config key names
+ help: add --config to list all available config
+ fsck: factor out msg_id_info[] lazy initialization code
+ grep: keep all colors in an array
+ Add and use generic name->id mapping code for color slot parsing
+ Merge branch 'nd/command-list' into nd/complete-config-vars
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* nd/diff-apply-ita (2018-05-29) 4 commits
(merged to 'next' on 2018-05-30 at f98728de81)
+ apply: add --intent-to-add
+ t2203: add a test about "diff HEAD" case
+ diff: turn --ita-invisible-in-index on by default
+ diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* nd/reject-empty-shallow-request (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at d6b6a1c3a7)
+ upload-pack: reject shallow requests that would return nothing
"git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
(merged to 'next' on 2018-05-22 at f22659ad46)
+ submodule: port submodule subcommand 'foreach' from shell to C
+ submodule foreach: document variable '$displaypath'
+ submodule foreach: document '$sm_path' instead of '$path'
+ submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
* sb/object-store-alloc (2018-05-16) 13 commits
(merged to 'next' on 2018-06-13 at 2868c2db9d)
+ alloc: allow arbitrary repositories for alloc functions
+ object: allow create_object to handle arbitrary repositories
+ object: allow grow_object_hash to handle arbitrary repositories
+ alloc: add repository argument to alloc_commit_index
+ alloc: add repository argument to alloc_report
+ alloc: add repository argument to alloc_object_node
+ alloc: add repository argument to alloc_tag_node
+ alloc: add repository argument to alloc_commit_node
+ alloc: add repository argument to alloc_tree_node
+ alloc: add repository argument to alloc_blob_node
+ object: add repository argument to grow_object_hash
+ object: add repository argument to create_object
+ repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* sb/plug-misc-leaks (2018-06-04) 5 commits
(merged to 'next' on 2018-06-13 at bf68cabe28)
+ SQUASH: tentatively cast const-ness away when calling free()
+ sequencer.c: plug mem leak in git_sequencer_config
(merged to 'next' on 2018-06-04 at fbefac1c7a)
+ sequencer.c: plug leaks in do_pick_commit
+ submodule--helper: plug mem leak in print_default_remote
+ refs/packed-backend.c: close fd of empty file
Misc leak plugging.
* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 2b9924760d)
+ update-ref --stdin: use skip_prefix()
Code cleanup.
--------------------------------------------------
[New Topics]
* ld/p423 (2018-06-19) 6 commits
- git-p4: python3: fix octal constants
- git-p4: python3: use print() function
- git-p4: python3: basestring workaround
- git-p4: python3: remove backticks
- git-p4: python3: replace dict.has_key(k) with "k in dict"
- git-p4: python3: replace <> with !=
Code preparation to make "git p4" closer to be usable with Python 3.
Will merge to 'next'.
* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
- sequencer: do not squash 'reword' commits when we hit conflicts
Bugfix for "rebase -i" corner case regression.
Will merge to 'next'.
* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
- format-patch: clear UNINTERESTING flag before prepare_bases
Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
Will merge to 'next'.
* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
- docs: link to gitsubmodules
Docfix.
Will merge to 'next'.
* bw/ref-in-want (2018-06-21) 8 commits
- fetch-pack: implement ref-in-want
- fetch-pack: put shallow info in output parameter
- fetch: refactor to make function args narrower
- fetch: refactor fetch_refs into two functions
- fetch: refactor the population of peer ref OIDs
- upload-pack: test negotiation with changing repository
- upload-pack: implement ref-in-want
- test-pkt-line: add unpack-sideband subcommand
* en/rebase-consistency (2018-06-21) 7 commits
- git-rebase: make --allow-empty-message the default
- git-rebase.txt: address confusion between --no-ff vs --force-rebase
- git-rebase.txt: document behavioral inconsistencies between modes
- git-rebase: error out when incompatible options passed
- t3422: new testcases for checking when incompatible options passed
- git-rebase.sh: update help messages a bit
- git-rebase.txt: document incompatible options
* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
- pack-bitmap: add free function
- pack-bitmap: remove bitmap_git global variable
* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
- submodule.c: report the submodule that an error occurs in
Needs a reroll.
cf. <20180622081713.5360-1-szeder.dev@gmail.com>
* bw/protocol-v2 (2018-06-22) 1 commit
- protocol-v2 doc: put HTTP headers after request
Doc fix.
Will merge to 'next'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation.)
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* vs/typofixes (2018-06-22) 1 commit
- Documentation: spelling and grammar fixes
Doc fix.
Will merge to 'next'.
* cc/remote-odb (2018-06-25) 9 commits
- Documentation/config: add odb.<name>.promisorRemote
- t0410: test fetching from many promisor remotes
- Use odb.origin.partialclonefilter instead of core.partialclonefilter
- Use remote_odb_get_direct() and has_remote_odb()
- remote-odb: add remote_odb_reinit()
- remote-odb: implement remote_odb_get_many_direct()
- remote-odb: implement remote_odb_get_direct()
- Add initial remote odb support
- fetch-object: make functions return an error code
* ds/multi-pack-index (2018-06-25) 24 commits
- midx: clear midx on repack
- packfile: skip loading index if in multi-pack-index
- midx: prevent duplicate packfile loads
- midx: use midx in approximate_object_count
- midx: use existing midx when writing new one
- midx: use midx in abbreviation calculations
- midx: read objects from multi-pack-index
- midx: prepare midxed_git struct
- config: create core.multiPackIndex setting
- midx: write object offsets
- midx: write object id fanout chunk
- midx: write object ids in a chunk
- midx: sort and deduplicate objects from packfiles
- midx: read pack names into array
- multi-pack-index: write pack names in chunk
- multi-pack-index: read packfile list
- packfile: generalize pack directory list
- multi-pack-index: expand test data
- multi-pack-index: load into memory
- midx: write header information to lockfile
- multi-pack-index: add 'write' verb
- multi-pack-index: add builtin
- multi-pack-index: add format details
- multi-pack-index: add design document
* nd/use-the-index-compat-less (2018-06-25) 13 commits
- wt-status.c: stop using index compat macros
- sha1-name.c: stop using index compat macros
- sequencer.c: stop using index compat macros
- revision.c: stop using index compat macros
- rerere.c: stop using index compat macros
- merge.c: stop using index compat macros
- merge-recursive.c: stop using index compat macros
- entry.c: stop using index compat macros
- diff.c: stop using index compat macros
- diff-lib.c: stop using index compat macros
- check-racy.c: stop using index compat macros
- blame.c: stop using index compat macros
- apply.c: stop using index compat macros
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-06-13) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* tb/grep-column (2018-06-22) 7 commits
- contrib/git-jump/git-jump: jump to exact location
- grep.c: add configuration variables to show matched option
- builtin/grep.c: add '--column' option to 'git-grep(1)'
- grep.c: display column number of first match
- grep.[ch]: extend grep_opt to allow showing matched column
- grep.c: expose {,inverted} match column in match_line()
- Documentation/config.txt: camel-case lineNumber for consistency
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* tz/cred-netrc-cleanup (2018-06-18) 4 commits
(merged to 'next' on 2018-06-22 at a471dd714c)
+ git-credential-netrc: make "all" default target of Makefile
+ git-credential-netrc: fix exit status when tests fail
+ git-credential-netrc: use in-tree Git.pm for tests
+ git-credential-netrc: minor whitespace cleanup in test script
Build and test procedure for netrc credential helper (in contrib/)
has been updated.
Will merge to 'master'.
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
Code restructuring and a small fix to transport protocol v2 during
fetching.
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
- rebase--interactive: rewrite append_todo_help() in C
- Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
- rebase--interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* sb/fix-fetching-moved-submodules (2018-06-14) 2 commits
(merged to 'next' on 2018-06-22 at 16039dc62a)
+ t5526: test recursive submodules when fetching moved submodules
+ submodule: fix NULL correctness in renamed broken submodules
The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
Will merge to 'master'.
* sb/submodule-core-worktree (2018-06-19) 3 commits
(merged to 'next' on 2018-06-22 at 2f7f263b30)
+ submodule deinit: unset core.worktree
+ submodule: ensure core.worktree is set after update
+ submodule: unset core.worktree if no working tree is present
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
Will merge to 'master'.
* ds/ewah-cleanup (2018-06-21) 10 commits
(merged to 'next' on 2018-06-22 at ad0ab374a1)
+ ewah: delete unused 'rlwit_discharge_empty()'
+ ewah: drop ewah_serialize_native function
+ ewah: drop ewah_deserialize function
+ ewah_io: delete unused 'ewah_serialize()'
+ ewah_bitmap: delete unused 'ewah_or()'
+ ewah_bitmap: delete unused 'ewah_not()'
+ ewah_bitmap: delete unused 'ewah_and_not()'
+ ewah_bitmap: delete unused 'ewah_and()'
+ ewah/bitmap.c: delete unused 'bitmap_each_bit()'
+ ewah/bitmap.c: delete unused 'bitmap_clear()'
Remove unused function definitions and declarations from ewah
bitmap subsystem.
Will merge to 'master'.
* jc/clean-after-sanity-tests (2018-06-15) 1 commit
(merged to 'next' on 2018-06-22 at 2df77b8af9)
+ tests: clean after SANITY tests
test cleanup.
Will merge to 'master'.
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* ab/refspec-init-fix (2018-06-11) 3 commits
(merged to 'next' on 2018-06-13 at 91d71d8435)
+ refspec: initalize `refspec_item` in `valid_fetch_refspec()`
+ refspec: add back a refspec_item_init() function
+ refspec: s/refspec_item_init/&_or_die/g
Make refspec parsing codepath more robust.
Will merge to 'master'.
* as/safecrlf-quiet-fix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at b163674843)
+ config.c: fix regression for core.safecrlf false
Fix for 2.17-era regression.
Will merge to 'master'.
* sg/gpg-tests-fix (2018-06-11) 2 commits
(merged to 'next' on 2018-06-13 at f3a05f1c41)
+ tests: make forging GPG signed commits and tags more robust
+ t7510-signed-commit: use 'test_must_fail'
Some flaky tests have been fixed.
Will merge to 'master'.
* jk/fetch-all-peeled-fix (2018-06-13) 2 commits
(merged to 'next' on 2018-06-13 at 1333bb9d90)
+ fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
+ fetch-pack: don't try to fetch peel values with --all
"git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
Will merge to 'master'.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
(merged to 'next' on 2018-06-19 at d175cea416)
+ merge-recursive: add pointer about unduly complex looking code
+ merge-recursive: rename conflict_rename_*() family of functions
+ merge-recursive: clarify the rename_dir/RENAME_DIR meaning
+ merge-recursive: align labels with their respective code blocks
+ merge-recursive: fix numerous argument alignment issues
+ merge-recursive: fix miscellaneous grammar error in comment
Code cleanup.
Will merge to 'master'.
* jh/partial-clone (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 818f864b0c)
+ list-objects: check if filter is NULL before using
The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
Will merge to 'master'.
* ms/send-pack-honor-config (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at e2cd933715)
+ builtin/send-pack: populate the default configs
"git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
Will merge to 'master'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* pw/add-p-recount (2018-06-11) 1 commit
(merged to 'next' on 2018-06-19 at 1880ecc3f1)
+ add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
Will merge to 'master'.
* ds/commit-graph-fsck (2018-05-29) 20 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
Expecting a reroll.
cf. <ba3b8e06-b5e1-99a1-0fe4-ff97d6da8f15@gmail.com>
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Waiting for the discussion to settle.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* nd/completion-negation (2018-06-11) 3 commits
(merged to 'next' on 2018-06-19 at a3be59b450)
+ completion: collapse extra --no-.. options
+ completion: suppress some -no- options
+ parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
Will merge to 'master'.
* jm/cache-entry-from-mem-pool (2018-06-21) 8 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- mem-pool: add lifecycle management functions
- mem-pool: tweak math on mp_block allocation size
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Kicked back to 'pu' with a rerolled one.
cf. <20180620201557.77155-1-jamill@microsoft.com>
* sb/object-store-grafts (2018-05-18) 19 commits
(merged to 'next' on 2018-06-22 at 386a6cc66a)
+ commit: allow lookup_commit_graft to handle arbitrary repositories
+ commit: allow prepare_commit_graft to handle arbitrary repositories
+ shallow: migrate shallow information into the object parser
+ path.c: migrate global git_path_* to take a repository argument
+ cache: convert get_graft_file to handle arbitrary repositories
+ commit: convert read_graft_file to handle arbitrary repositories
+ commit: convert register_commit_graft to handle arbitrary repositories
+ commit: convert commit_graft_pos() to handle arbitrary repositories
+ shallow: add repository argument to is_repository_shallow
+ shallow: add repository argument to check_shallow_file_for_update
+ shallow: add repository argument to register_shallow
+ shallow: add repository argument to set_alternate_shallow_file
+ commit: add repository argument to lookup_commit_graft
+ commit: add repository argument to prepare_commit_graft
+ commit: add repository argument to read_graft_file
+ commit: add repository argument to register_commit_graft
+ commit: add repository argument to commit_graft_pos
+ object: move grafts to object parser
+ object-store: move object access functions to object-store.h
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to 'master'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/diff-color-move-more (2018-06-25) 11 commits
- diff: fix a sparse 'dubious one-bit signed bitfield' error
- SQUASH??? t/4015 GETTEXT_POISON emergency fix
- SQUASH????? Documentation breakage emergency fix
- diff.c: add white space mode to move detection that allows indent changes
- diff.c: factor advance_or_nullify out of mark_color_as_moved
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Needs to be cleaned-up with various fix-up bits applied inline.
* jk/branch-l-0-deprecation (2018-06-22) 3 commits
- branch: deprecate "-l" option
- t: switch "branch -l" to "branch --create-reflog"
- t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-repurpose.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
Will merge to 'next'.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jun 2018, #05; Mon, 18)
@ 2018-06-18 21:29 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-18 21:29 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
As -rc2 has slipped by a few days, the final is also slipping by
a couple of days to give the last-minute fixes. Hopefully we can
see the final one within 48 hours ;-)
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/cred-netrc-no-autodie (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 68171b82a7)
+ git-credential-netrc: remove use of "autodie"
Hotfix for contrib/ stuff broken by this cycle.
* es/make-no-iconv (2018-06-15) 1 commit
(merged to 'next' on 2018-06-18 at b53e9933c9)
+ Makefile: make NO_ICONV really mean "no iconv"
"make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
(i.e. linkage of -lintl, -liconv, etc. that are platform-specific
tweaks), which has been corrected.
* jk/ewah-bounds-check (2018-06-18) 2 commits
(merged to 'next' on 2018-06-18 at bf606be1bb)
+ ewah: adjust callers of ewah_read_mmap()
+ ewah_read_mmap: bounds-check mmap reads
(this branch is used by ds/ewah-cleanup.)
The code to read compressed bitmap was not careful to avoid reading
past the end of the file, which has been corrected.
* jl/zlib-restore-nul-termination (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 3fa108363e)
+ packfile: correct zlib buffer handling
Make zlib inflate codepath more robust against versions of zlib
that clobber unused portion of outbuf.
* js/rebase-i-root-fix (2018-06-18) 2 commits
(merged to 'next' on 2018-06-18 at a6a1cf01d5)
+ rebase --root: fix amending root commit messages
+ rebase --root: demonstrate a bug while amending root commit messages
A regression to "rebase -i --root" introduced during this cycle has
been fixed.
* km/doc-workflows-typofix (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 21e6a8e67b)
+ gitworkflows: fix grammar in 'Merge upwards' rule
Typofix.
* ks/branch-set-upstream (2018-06-18) 1 commit
(merged to 'next' on 2018-06-18 at 83b0b87013)
+ t3200: clarify description of --set-upstream test
A test title has been reworded to clarify it.
* ld/git-p4-updates (2018-06-12) 6 commits
(merged to 'next' on 2018-06-13 at 4f7e24b3c4)
+ git-p4: auto-size the block
+ git-p4: narrow the scope of exceptions caught when parsing an int
+ git-p4: raise exceptions from p4CmdList based on error from p4 server
+ git-p4: better error reporting when p4 fails
+ git-p4: add option to disable syncing of p4/master with p4
+ git-p4: disable-rebase: allow setting this via configuration
(this branch uses rm/p4-submit-with-commit-option.)
"git p4" updates.
* mw/doc-merge-enumfix (2018-06-14) 1 commit
(merged to 'next' on 2018-06-14 at 7074d6d48e)
+ doc: update the order of the syntax `git merge --continue`
Fix old merge glitch in Documentation during v2.13-rc0 era.
* rd/comment-typofix-in-sha1-file (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 38ef825556)
+ sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
In code comment typofix
* rd/diff-options-typofix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at a5aa58fa1b)
+ diff-options.txt: fix minor typos, font inconsistencies, in docs
Typofix.
* rd/doc-remote-tracking-with-hyphen (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 013aa6912e)
+ Use hyphenated "remote-tracking branch" (docs and comments)
Doc update.
* rm/p4-submit-with-commit-option (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at d3a272c733)
+ git-p4: add options --commit and --disable-rebase
(this branch is used by ld/git-p4-updates.)
"git p4" updates.
* sb/blame-color (2018-06-14) 1 commit
(merged to 'next' on 2018-06-14 at f8cd824d4d)
+ blame: release string_list after use in parse_color_fields()
Leakfix.
* sg/t7406-chain-fix (2018-06-18) 1 commit
(merged to 'next' on 2018-06-18 at 816d976ea6)
+ t7406-submodule-update: fix broken &&-chains
Test fix.
--------------------------------------------------
[New Topics]
* en/rename-directory-detection-reboot (2018-06-18) 1 commit
(merged to 'next' on 2018-06-18 at 95c454d3f4)
+ merge-recursive: use xstrdup() instead of fixed buffer
Newly added codepath in merge-recursive had potential buffer
overrun, which has been fixed.
Will merge to 'master'.
* tz/cred-netrc-cleanup (2018-06-18) 3 commits
- git-credential-netrc: fix exit status when tests fail
- git-credential-netrc: use in-tree Git.pm for tests
- git-credential-netrc: minor whitespace cleanup in test script
Build and test procedure for netrc credential helper (in contrib/)
has been updated.
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-06-13) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
Code restructuring and a small fix to transport protocol v2 during
fetching.
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
- rebase--interactive: rewrite append_todo_help() in C
- Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo; uses ag/rebase-p.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
- rebase--interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help and ag/rebase-p.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* sb/fix-fetching-moved-submodules (2018-06-14) 2 commits
- t5526: test recursive submodules when fetching moved submodules
- submodule: fix NULL correctness in renamed broken submodules
The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
Will merge to 'next'.
* sb/submodule-core-worktree (2018-06-14) 3 commits
- submodule deinit: unset core.worktree
- submodule: ensure core.worktree is set after update
- submodule: unset core.worktree if no working tree is present
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
Will merge to 'next'.
* ds/ewah-cleanup (2018-06-18) 9 commits
- ewah: drop ewah_serialize_native function
- ewah: drop ewah_deserialize function
- ewah_io: delete unused 'ewah_serialize()'
- ewah_bitmap: delete unused 'ewah_or()'
- ewah_bitmap: delete unused 'ewah_not()'
- ewah_bitmap: delete unused 'ewah_and_not()'
- ewah_bitmap: delete unused 'ewah_and()'
- ewah/bitmap.c: delete unused 'bitmap_each_bit()'
- ewah/bitmap.c: delete unused 'bitmap_clear()'
Remove unused function definitions and declarations from ewah
bitmap subsystem.
Will merge to 'next'.
* jc/clean-after-sanity-tests (2018-06-15) 1 commit
- tests: clean after SANITY tests
test cleanup.
Will merge to 'next'.
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* ab/refspec-init-fix (2018-06-11) 3 commits
(merged to 'next' on 2018-06-13 at 91d71d8435)
+ refspec: initalize `refspec_item` in `valid_fetch_refspec()`
+ refspec: add back a refspec_item_init() function
+ refspec: s/refspec_item_init/&_or_die/g
Make refspec parsing codepath more robust.
Will cook in 'next'.
* as/safecrlf-quiet-fix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at b163674843)
+ config.c: fix regression for core.safecrlf false
Fix for 2.17-era regression.
Will cook in 'next'.
* sg/gpg-tests-fix (2018-06-11) 2 commits
(merged to 'next' on 2018-06-13 at f3a05f1c41)
+ tests: make forging GPG signed commits and tags more robust
+ t7510-signed-commit: use 'test_must_fail'
Some flaky tests have been fixed.
Will cook in 'next'.
* jk/fetch-all-peeled-fix (2018-06-13) 2 commits
(merged to 'next' on 2018-06-13 at 1333bb9d90)
+ fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
+ fetch-pack: don't try to fetch peel values with --all
"git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
Will cook in 'next'.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
- merge-recursive: add pointer about unduly complex looking code
- merge-recursive: rename conflict_rename_*() family of functions
- merge-recursive: clarify the rename_dir/RENAME_DIR meaning
- merge-recursive: align labels with their respective code blocks
- merge-recursive: fix numerous argument alignment issues
- merge-recursive: fix miscellaneous grammar error in comment
Code cleanup.
Will merge to 'next'.
* jh/partial-clone (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 818f864b0c)
+ list-objects: check if filter is NULL before using
The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
Will cook in 'next'.
* ms/send-pack-honor-config (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at e2cd933715)
+ builtin/send-pack: populate the default configs
"git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
Will cook in 'next'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* nd/reject-empty-shallow-request (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at d6b6a1c3a7)
+ upload-pack: reject shallow requests that would return nothing
"git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
Will cook in 'next'.
* pw/add-p-recount (2018-06-11) 1 commit
- add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
Will merge to 'next'.
* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 2b9924760d)
+ update-ref --stdin: use skip_prefix()
Code cleanup.
Will cook in 'next'.
* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 7e2f74431c)
+ t9104: kosherly remove remote refs
Instead of mucking with filesystem directly, use plumbing commands
update-ref etc. to manipulate the refs in the tests.
Will cook in 'next'.
* ag/rebase-p (2018-06-01) 4 commits
(merged to 'next' on 2018-06-13 at dd6f8a51d7)
+ rebase: remove -p code from git-rebase--interactive.sh
+ rebase: use the new git-rebase--preserve-merges.sh
+ rebase: strip unused code in git-rebase--preserve-merges.sh
+ rebase: introduce a dedicated backend for --preserve-merges
(this branch is used by ag/rebase-i-append-todo-help and ag/rebase-i-rewrite-todo.)
Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
Will cook in 'next'.
* ls/complete-remote-update-names (2018-06-01) 1 commit
(merged to 'next' on 2018-06-13 at 86b4d23278)
+ completion: complete remote names too
"git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
Will cook in 'next'.
* sb/plug-misc-leaks (2018-06-04) 5 commits
(merged to 'next' on 2018-06-13 at bf68cabe28)
+ SQUASH: tentatively cast const-ness away when calling free()
+ sequencer.c: plug mem leak in git_sequencer_config
(merged to 'next' on 2018-06-04 at fbefac1c7a)
+ sequencer.c: plug leaks in do_pick_commit
+ submodule--helper: plug mem leak in print_default_remote
+ refs/packed-backend.c: close fd of empty file
Misc leak plugging.
Will cook in 'next'.
* ds/commit-graph-fsck (2018-05-29) 20 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
(this branch uses ds/commit-graph-lockfile-fix and ds/generation-numbers.)
Expecting a reroll.
cf. <ba3b8e06-b5e1-99a1-0fe4-ff97d6da8f15@gmail.com>
* en/merge-recursive-tests (2018-05-28) 5 commits
(merged to 'next' on 2018-06-01 at 8490b560b4)
+ t6036: prefer test_when_finished to manual cleanup in following test
+ t6036, t6042: prefer test_cmp to sequences of test
+ t6036, t6042: prefer test_path_is_file, test_path_is_missing
+ t6036, t6042: use test_line_count instead of wc -l
+ t6036, t6042: use test_create_repo to keep tests independent
Clean up tests in t6xxx series about 'merge' command.
Will cook in 'next'.
* jk/show-index (2018-05-29) 2 commits
(merged to 'next' on 2018-06-01 at 4b3382d994)
+ show-index: update documentation for index v2
+ make show-index a builtin
Modernize a less often used command.
Will cook in 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Waiting for the discussion to settle.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* nd/complete-config-vars (2018-05-29) 13 commits
(merged to 'next' on 2018-06-13 at c2dd5546d0)
+ completion: complete general config vars in two steps
+ log-tree: allow to customize 'grafted' color
+ completion: support case-insensitive config vars
+ completion: keep other config var completion in camelCase
+ completion: drop the hard coded list of config vars
+ am: move advice.amWorkDir parsing back to advice.c
+ advice: keep config name in camelCase in advice_config[]
+ fsck: produce camelCase config key names
+ help: add --config to list all available config
+ fsck: factor out msg_id_info[] lazy initialization code
+ grep: keep all colors in an array
+ Add and use generic name->id mapping code for color slot parsing
+ Merge branch 'nd/command-list' into nd/complete-config-vars
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
Will cook in 'next'.
* nd/completion-negation (2018-06-11) 3 commits
- completion: collapse extra --no-.. options
- completion: suppress some -no- options
- parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
Will merge to 'next'.
* jm/cache-entry-from-mem-pool (2018-05-24) 7 commits
(merged to 'next' on 2018-06-13 at 34a0e21f3e)
+ block alloc: add validations around cache_entry lifecyle
+ block alloc: allocate cache entries from mem_pool
+ mem-pool: fill out functionality
+ mem-pool: add lifecycle management functions
+ mem-pool: only search head block for available space
+ block alloc: add lifecycle APIs for cache_entry structs
+ read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Will cook in 'next'.
* ds/commit-graph-lockfile-fix (2018-05-22) 1 commit
(merged to 'next' on 2018-05-24 at 3d12a02b0c)
+ commit-graph: fix UX issue when .lock file exists
(this branch is used by ds/commit-graph-fsck; uses ds/generation-numbers.)
Update to ds/generation-numbers topic.
Will cook in 'next'.
* nd/commit-util-to-slab (2018-05-21) 15 commits
(merged to 'next' on 2018-05-24 at bb5643d75c)
+ commit.h: delete 'util' field in struct commit
+ merge: use commit-slab in merge remote desc instead of commit->util
+ log: use commit-slab in prepare_bases() instead of commit->util
+ show-branch: note about its object flags usage
+ show-branch: use commit-slab for commit-name instead of commit->util
+ name-rev: use commit-slab for rev-name instead of commit->util
+ bisect.c: use commit-slab for commit weight instead of commit->util
+ revision.c: use commit-slab for show_source
+ sequencer.c: use commit-slab to associate todo items to commits
+ sequencer.c: use commit-slab to mark seen commits
+ shallow.c: use commit-slab for commit depth instead of commit->util
+ describe: use commit-slab for commit names instead of commit->util
+ blame: use commit-slab for blame suspects instead of commit->util
+ commit-slab: support shared commit-slab
+ commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
Will cook in 'next'.
* nd/diff-apply-ita (2018-05-29) 4 commits
(merged to 'next' on 2018-05-30 at f98728de81)
+ apply: add --intent-to-add
+ t2203: add a test about "diff HEAD" case
+ diff: turn --ita-invisible-in-index on by default
+ diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
Will cook in 'next'.
* sb/object-store-grafts (2018-05-18) 19 commits
- commit: allow lookup_commit_graft to handle arbitrary repositories
- commit: allow prepare_commit_graft to handle arbitrary repositories
- shallow: migrate shallow information into the object parser
- path.c: migrate global git_path_* to take a repository argument
- cache: convert get_graft_file to handle arbitrary repositories
- commit: convert read_graft_file to handle arbitrary repositories
- commit: convert register_commit_graft to handle arbitrary repositories
- commit: convert commit_graft_pos() to handle arbitrary repositories
- shallow: add repository argument to is_repository_shallow
- shallow: add repository argument to check_shallow_file_for_update
- shallow: add repository argument to register_shallow
- shallow: add repository argument to set_alternate_shallow_file
- commit: add repository argument to lookup_commit_graft
- commit: add repository argument to prepare_commit_graft
- commit: add repository argument to read_graft_file
- commit: add repository argument to register_commit_graft
- commit: add repository argument to commit_graft_pos
- object: move grafts to object parser
- object-store: move object access functions to object-store.h
(this branch uses sb/object-store-alloc.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to 'next'.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
(merged to 'next' on 2018-05-22 at f22659ad46)
+ submodule: port submodule subcommand 'foreach' from shell to C
+ submodule foreach: document variable '$displaypath'
+ submodule foreach: document '$sm_path' instead of '$path'
+ submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
Will cook in 'next'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/object-store-alloc (2018-05-16) 13 commits
(merged to 'next' on 2018-06-13 at 2868c2db9d)
+ alloc: allow arbitrary repositories for alloc functions
+ object: allow create_object to handle arbitrary repositories
+ object: allow grow_object_hash to handle arbitrary repositories
+ alloc: add repository argument to alloc_commit_index
+ alloc: add repository argument to alloc_report
+ alloc: add repository argument to alloc_object_node
+ alloc: add repository argument to alloc_tag_node
+ alloc: add repository argument to alloc_commit_node
+ alloc: add repository argument to alloc_tree_node
+ alloc: add repository argument to alloc_blob_node
+ object: add repository argument to grow_object_hash
+ object: add repository argument to create_object
+ repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will cook in 'next'.
* tb/grep-column (2018-05-14) 7 commits
. contrib/git-jump/git-jump: jump to match column in addition to line
. grep.c: add configuration variables to show matched option
. builtin/grep.c: add '--column' option to 'git-grep(1)'
. grep.c: display column number of first match
. grep.[ch]: extend grep_opt to allow showing matched column
. grep.c: expose matched column in match_line()
. Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Expecting a reroll.
cf. <20180530160908.GA8340@D-10-19-29-76.dhcp4.washington.edu>
* tb/grep-only-matching (2018-05-14) 2 commits
. builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
. grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
Waiting on tb/grep-column
* sb/diff-color-move-more (2018-05-21) 8 commits
(merged to 'next' on 2018-05-24 at 45f3fb7975)
+ diff: color-moved white space handling options imply color-moved
+ diff.c: add --color-moved-ignore-space-delta option
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will kick back to 'pu'.
cf. <CAGZ79kag9m02xtJKg05aPE4Grq2wBWSmUr3JdwfyHsMawR7m5Q@mail.gmail.com>
* ds/generation-numbers (2018-05-22) 11 commits
(merged to 'next' on 2018-05-24 at 56fc38a1b6)
+ commit-graph.txt: update design document
+ merge: check config before loading commits
+ commit: use generation number in remove_redundant()
+ commit: add short-circuit to paint_down_to_common()
+ commit: use generation numbers for in_merge_bases()
+ ref-filter: use generation number for --contains
+ commit-graph: always load commit-graph information
+ commit: use generations in paint_down_to_common()
+ commit-graph: compute generation numbers
+ commit: add generation number to struct commit
+ ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-fsck and ds/commit-graph-lockfile-fix.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Will cook in 'next'.
* jk/branch-l-0-deprecation (2018-05-25) 5 commits
(merged to 'next' on 2018-05-30 at a94574dfd5)
+ branch: customize "-l" warning in list mode
+ branch: issue "-l" deprecation warning after pager starts
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
Perhaps merge to 'master' immediately after 2.18 release?
* jk/branch-l-1-removal (2018-05-30) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-05-30) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
* ma/doc-expand-tabs (2018-05-02) 1 commit
. revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Discarded.
This approach is less maintainable than the approach taken by
bc/asciidoctor-tab-width topic.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jun 2018, #04; Fri, 15)
@ 2018-06-15 20:27 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-15 20:27 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
We passed -rc2 mark; there are still a few hotfixes that correct
obvious bugs introduced during this cycle in trivial ways that need
to be merged before the final, and I also need to pull the i18n/l10n
updates, but other than that, I think we are in relatively good
shape given the upcoming release is fairly a big one judging from
historical norms. Knock, knock...
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* jk/index-pack-maint (2018-06-11) 3 commits
(merged to 'next' on 2018-06-11 at f85a566b11)
+ index-pack: correct install_packed_git() args
(merged to 'next' on 2018-06-04 at c553a485e8)
+ index-pack: handle --strict checks of non-repo packs
+ prepare_commit_graft: treat non-repository as a noop
"index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
* jk/submodule-fsck-loose-fixup (2018-06-11) 2 commits
(merged to 'next' on 2018-06-11 at 3eadb39c0a)
+ fsck: avoid looking at NULL blob->object
+ t7415: don't bother creating commit for symlink test
Finishing touches to a topic that already is in 'maint'.
* sb/submodule-merge-in-merge-recursive (2018-06-11) 1 commit
(merged to 'next' on 2018-06-11 at ad05b6bc6a)
+ merge-submodule: reduce output verbosity
Finishing touches to a topic that already is in 'master'.
* sg/completion-zsh-workaround (2018-06-12) 1 commit
(merged to 'next' on 2018-06-12 at 331a1db143)
+ completion: correct zsh detection when run from git-completion.zsh
Work around zsh segfaulting when loading git-completion.zsh
--------------------------------------------------
[New Topics]
* ab/cred-netrc-no-autodie (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 68171b82a7)
+ git-credential-netrc: remove use of "autodie"
Hotfix for contrib/ stuff broken by this cycle.
Will merge to 'master'.
* jl/zlib-restore-nul-termination (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 3fa108363e)
+ packfile: correct zlib buffer handling
Make zlib inflate codepath more robust against versions of zlib
that clobber unused portion of outbuf.
Will merge to 'master'.
* rd/doc-remote-tracking-with-hyphen (2018-06-13) 1 commit
(merged to 'next' on 2018-06-14 at 013aa6912e)
+ Use hyphenated "remote-tracking branch" (docs and comments)
Doc update.
Will merge to 'master'.
* en/rename-directory-detection (2018-06-14) 1 commit
(merged to 'next' on 2018-06-14 at 0e4c6bd117)
+ merge-recursive: use xstrdup() instead of fixed buffer
Newly added codepath in merge-recursive had potential buffer
overrun, which has been fixed.
Will merge to 'master'.
* mw/doc-merge-enumfix (2018-06-14) 1 commit
(merged to 'next' on 2018-06-14 at 7074d6d48e)
+ doc: update the order of the syntax `git merge --continue`
Fix old merge glitch in Documentation during v2.13-rc0 era.
Will merge to 'master'.
* sb/blame-color (2018-06-14) 1 commit
(merged to 'next' on 2018-06-14 at f8cd824d4d)
+ blame: release string_list after use in parse_color_fields()
Leakfix.
Will merge to 'master'.
* ks/branch-set-upstream (2018-06-14) 1 commit
- t3200: clarify description of --set-upstream test
A test title has been reworded to clarify it.
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
Code restructuring and a small fix to transport protocol v2 during
fetching.
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
- rebase--interactive: rewrite append_todo_help() in C
- Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo; uses ag/rebase-p.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
- rebase--interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help and ag/rebase-p.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
* sb/fix-fetching-moved-submodules (2018-06-14) 2 commits
- t5526: test recursive submodules when fetching moved submodules
- submodule: fix NULL correctness in renamed broken submodules
The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
Will merge to 'next'.
* sb/submodule-core-worktree (2018-06-14) 3 commits
- submodule deinit: unset core.worktree
- submodule: ensure core.worktree is set after update
- submodule: unset core.worktree if no working tree is present
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
Will merge to 'next'.
* jk/ewah-bounds-check (2018-06-15) 2 commits
- ewah: adjust callers of ewah_read_mmap()
- ewah_read_mmap: bounds-check mmap reads
(this branch is used by ds/ewah-cleanup.)
The code to read compressed bitmap was not careful to avoid reading
past the end of the file, which has been corrected.
Will merge to 'next'.
* ds/ewah-cleanup (2018-06-15) 9 commits
- ewah: drop ewah_serialize_native function
- ewah: drop ewah_deserialize function
- ewah_io: delete unused 'ewah_serialize()'
- ewah_bitmap: delete unused 'ewah_or()'
- ewah_bitmap: delete unused 'ewah_not()'
- ewah_bitmap: delete unused 'ewah_and_not()'
- ewah_bitmap: delete unused 'ewah_and()'
- ewah/bitmap.c: delete unused 'bitmap_each_bit()'
- ewah/bitmap.c: delete unused 'bitmap_clear()'
(this branch uses jk/ewah-bounds-check.)
Remove unused function definitions and declarations from ewah
bitmap subsystem.
Will merge to 'next'.
* jc/clean-after-sanity-tests (2018-06-15) 1 commit
- tests: clean after SANITY tests
test cleanup.
Will merge to 'next'.
* es/make-no-iconv (2018-06-15) 1 commit
- Makefile: make NO_ICONV really mean "no iconv"
"make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
(i.e. linkage of -lintl, -liconv, etc. that are platform-specific
tweaks), which has been corrected.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-06-13) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* ab/refspec-init-fix (2018-06-11) 3 commits
(merged to 'next' on 2018-06-13 at 91d71d8435)
+ refspec: initalize `refspec_item` in `valid_fetch_refspec()`
+ refspec: add back a refspec_item_init() function
+ refspec: s/refspec_item_init/&_or_die/g
Make refspec parsing codepath more robust.
Will cook in 'next'.
* as/safecrlf-quiet-fix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at b163674843)
+ config.c: fix regression for core.safecrlf false
Fix for 2.17-era regression.
Will cook in 'next'.
* sg/gpg-tests-fix (2018-06-11) 2 commits
(merged to 'next' on 2018-06-13 at f3a05f1c41)
+ tests: make forging GPG signed commits and tags more robust
+ t7510-signed-commit: use 'test_must_fail'
Some flaky tests have been fixed.
Will cook in 'next'.
* jk/fetch-all-peeled-fix (2018-06-13) 2 commits
(merged to 'next' on 2018-06-13 at 1333bb9d90)
+ fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
+ fetch-pack: don't try to fetch peel values with --all
"git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
Will cook in 'next'.
* rd/diff-options-typofix (2018-06-11) 1 commit
(merged to 'next' on 2018-06-13 at a5aa58fa1b)
+ diff-options.txt: fix minor typos, font inconsistencies, in docs
Typofix.
Will merge to 'master'.
* ld/git-p4-updates (2018-06-12) 6 commits
(merged to 'next' on 2018-06-13 at 4f7e24b3c4)
+ git-p4: auto-size the block
+ git-p4: narrow the scope of exceptions caught when parsing an int
+ git-p4: raise exceptions from p4CmdList based on error from p4 server
+ git-p4: better error reporting when p4 fails
+ git-p4: add option to disable syncing of p4/master with p4
+ git-p4: disable-rebase: allow setting this via configuration
(this branch uses rm/p4-submit-with-commit-option.)
"git p4" updates.
Will merge to 'master'.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
- merge-recursive: add pointer about unduly complex looking code
- merge-recursive: rename conflict_rename_*() family of functions
- merge-recursive: clarify the rename_dir/RENAME_DIR meaning
- merge-recursive: align labels with their respective code blocks
- merge-recursive: fix numerous argument alignment issues
- merge-recursive: fix miscellaneous grammar error in comment
Code cleanup.
Will merge to 'next'.
* jh/partial-clone (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 818f864b0c)
+ list-objects: check if filter is NULL before using
The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
Will cook in 'next'.
* km/doc-workflows-typofix (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at 21e6a8e67b)
+ gitworkflows: fix grammar in 'Merge upwards' rule
Typofix.
Will merge to 'master'.
* ms/send-pack-honor-config (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at e2cd933715)
+ builtin/send-pack: populate the default configs
"git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
Will cook in 'next'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* nd/reject-empty-shallow-request (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at d6b6a1c3a7)
+ upload-pack: reject shallow requests that would return nothing
"git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
Will cook in 'next'.
* pw/add-p-recount (2018-06-11) 1 commit
- add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
Will merge to 'next'.
* rd/comment-typofix-in-sha1-file (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 38ef825556)
+ sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
In code comment typofix
Will merge to 'master'.
* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 2b9924760d)
+ update-ref --stdin: use skip_prefix()
Code cleanup.
Will cook in 'next'.
* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
(merged to 'next' on 2018-06-13 at 7e2f74431c)
+ t9104: kosherly remove remote refs
Instead of mucking with filesystem directly, use plumbing commands
update-ref etc. to manipulate the refs in the tests.
Will cook in 'next'.
* ag/rebase-p (2018-06-01) 4 commits
(merged to 'next' on 2018-06-13 at dd6f8a51d7)
+ rebase: remove -p code from git-rebase--interactive.sh
+ rebase: use the new git-rebase--preserve-merges.sh
+ rebase: strip unused code in git-rebase--preserve-merges.sh
+ rebase: introduce a dedicated backend for --preserve-merges
(this branch is used by ag/rebase-i-append-todo-help and ag/rebase-i-rewrite-todo.)
Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
Will cook in 'next'.
* ls/complete-remote-update-names (2018-06-01) 1 commit
(merged to 'next' on 2018-06-13 at 86b4d23278)
+ completion: complete remote names too
"git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
Will cook in 'next'.
* sb/plug-misc-leaks (2018-06-04) 5 commits
(merged to 'next' on 2018-06-13 at bf68cabe28)
+ SQUASH: tentatively cast const-ness away when calling free()
+ sequencer.c: plug mem leak in git_sequencer_config
(merged to 'next' on 2018-06-04 at fbefac1c7a)
+ sequencer.c: plug leaks in do_pick_commit
+ submodule--helper: plug mem leak in print_default_remote
+ refs/packed-backend.c: close fd of empty file
Misc leak plugging.
Will cook in 'next'.
* ds/commit-graph-fsck (2018-05-29) 20 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
(this branch uses ds/commit-graph-lockfile-fix and ds/generation-numbers.)
Expecting a reroll.
cf. <ba3b8e06-b5e1-99a1-0fe4-ff97d6da8f15@gmail.com>
* en/merge-recursive-tests (2018-05-28) 5 commits
(merged to 'next' on 2018-06-01 at 8490b560b4)
+ t6036: prefer test_when_finished to manual cleanup in following test
+ t6036, t6042: prefer test_cmp to sequences of test
+ t6036, t6042: prefer test_path_is_file, test_path_is_missing
+ t6036, t6042: use test_line_count instead of wc -l
+ t6036, t6042: use test_create_repo to keep tests independent
Clean up tests in t6xxx series about 'merge' command.
Will cook in 'next'.
* jk/show-index (2018-05-29) 2 commits
(merged to 'next' on 2018-06-01 at 4b3382d994)
+ show-index: update documentation for index v2
+ make show-index a builtin
Modernize a less often used command.
Will cook in 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Waiting for the discussion to settle.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* nd/complete-config-vars (2018-05-29) 13 commits
(merged to 'next' on 2018-06-13 at c2dd5546d0)
+ completion: complete general config vars in two steps
+ log-tree: allow to customize 'grafted' color
+ completion: support case-insensitive config vars
+ completion: keep other config var completion in camelCase
+ completion: drop the hard coded list of config vars
+ am: move advice.amWorkDir parsing back to advice.c
+ advice: keep config name in camelCase in advice_config[]
+ fsck: produce camelCase config key names
+ help: add --config to list all available config
+ fsck: factor out msg_id_info[] lazy initialization code
+ grep: keep all colors in an array
+ Add and use generic name->id mapping code for color slot parsing
+ Merge branch 'nd/command-list' into nd/complete-config-vars
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
Will cook in 'next'.
* nd/completion-negation (2018-06-11) 3 commits
- completion: collapse extra --no-.. options
- completion: suppress some -no- options
- parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
Will merge to 'next'.
* jm/cache-entry-from-mem-pool (2018-05-24) 7 commits
(merged to 'next' on 2018-06-13 at 34a0e21f3e)
+ block alloc: add validations around cache_entry lifecyle
+ block alloc: allocate cache entries from mem_pool
+ mem-pool: fill out functionality
+ mem-pool: add lifecycle management functions
+ mem-pool: only search head block for available space
+ block alloc: add lifecycle APIs for cache_entry structs
+ read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Will cook in 'next'.
* rm/p4-submit-with-commit-option (2018-06-12) 1 commit
(merged to 'next' on 2018-06-13 at d3a272c733)
+ git-p4: add options --commit and --disable-rebase
(this branch is used by ld/git-p4-updates.)
"git p4" updates.
Will merge to 'master'.
* ds/commit-graph-lockfile-fix (2018-05-22) 1 commit
(merged to 'next' on 2018-05-24 at 3d12a02b0c)
+ commit-graph: fix UX issue when .lock file exists
(this branch is used by ds/commit-graph-fsck; uses ds/generation-numbers.)
Update to ds/generation-numbers topic.
Will cook in 'next'.
* nd/commit-util-to-slab (2018-05-21) 15 commits
(merged to 'next' on 2018-05-24 at bb5643d75c)
+ commit.h: delete 'util' field in struct commit
+ merge: use commit-slab in merge remote desc instead of commit->util
+ log: use commit-slab in prepare_bases() instead of commit->util
+ show-branch: note about its object flags usage
+ show-branch: use commit-slab for commit-name instead of commit->util
+ name-rev: use commit-slab for rev-name instead of commit->util
+ bisect.c: use commit-slab for commit weight instead of commit->util
+ revision.c: use commit-slab for show_source
+ sequencer.c: use commit-slab to associate todo items to commits
+ sequencer.c: use commit-slab to mark seen commits
+ shallow.c: use commit-slab for commit depth instead of commit->util
+ describe: use commit-slab for commit names instead of commit->util
+ blame: use commit-slab for blame suspects instead of commit->util
+ commit-slab: support shared commit-slab
+ commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
Will cook in 'next'.
* nd/diff-apply-ita (2018-05-29) 4 commits
(merged to 'next' on 2018-05-30 at f98728de81)
+ apply: add --intent-to-add
+ t2203: add a test about "diff HEAD" case
+ diff: turn --ita-invisible-in-index on by default
+ diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
Will cook in 'next'.
* sb/object-store-grafts (2018-05-18) 19 commits
- commit: allow lookup_commit_graft to handle arbitrary repositories
- commit: allow prepare_commit_graft to handle arbitrary repositories
- shallow: migrate shallow information into the object parser
- path.c: migrate global git_path_* to take a repository argument
- cache: convert get_graft_file to handle arbitrary repositories
- commit: convert read_graft_file to handle arbitrary repositories
- commit: convert register_commit_graft to handle arbitrary repositories
- commit: convert commit_graft_pos() to handle arbitrary repositories
- shallow: add repository argument to is_repository_shallow
- shallow: add repository argument to check_shallow_file_for_update
- shallow: add repository argument to register_shallow
- shallow: add repository argument to set_alternate_shallow_file
- commit: add repository argument to lookup_commit_graft
- commit: add repository argument to prepare_commit_graft
- commit: add repository argument to read_graft_file
- commit: add repository argument to register_commit_graft
- commit: add repository argument to commit_graft_pos
- object: move grafts to object parser
- object-store: move object access functions to object-store.h
(this branch uses sb/object-store-alloc.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to 'next'.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
(merged to 'next' on 2018-05-22 at f22659ad46)
+ submodule: port submodule subcommand 'foreach' from shell to C
+ submodule foreach: document variable '$displaypath'
+ submodule foreach: document '$sm_path' instead of '$path'
+ submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
Will cook in 'next'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/object-store-alloc (2018-05-16) 13 commits
(merged to 'next' on 2018-06-13 at 2868c2db9d)
+ alloc: allow arbitrary repositories for alloc functions
+ object: allow create_object to handle arbitrary repositories
+ object: allow grow_object_hash to handle arbitrary repositories
+ alloc: add repository argument to alloc_commit_index
+ alloc: add repository argument to alloc_report
+ alloc: add repository argument to alloc_object_node
+ alloc: add repository argument to alloc_tag_node
+ alloc: add repository argument to alloc_commit_node
+ alloc: add repository argument to alloc_tree_node
+ alloc: add repository argument to alloc_blob_node
+ object: add repository argument to grow_object_hash
+ object: add repository argument to create_object
+ repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will cook in 'next'.
* tb/grep-column (2018-05-14) 7 commits
. contrib/git-jump/git-jump: jump to match column in addition to line
. grep.c: add configuration variables to show matched option
. builtin/grep.c: add '--column' option to 'git-grep(1)'
. grep.c: display column number of first match
. grep.[ch]: extend grep_opt to allow showing matched column
. grep.c: expose matched column in match_line()
. Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Expecting a reroll.
cf. <20180530160908.GA8340@D-10-19-29-76.dhcp4.washington.edu>
* tb/grep-only-matching (2018-05-14) 2 commits
. builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
. grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
Waiting on tb/grep-column
* sb/diff-color-move-more (2018-05-21) 8 commits
(merged to 'next' on 2018-05-24 at 45f3fb7975)
+ diff: color-moved white space handling options imply color-moved
+ diff.c: add --color-moved-ignore-space-delta option
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will kick back to 'pu'.
cf. <CAGZ79kag9m02xtJKg05aPE4Grq2wBWSmUr3JdwfyHsMawR7m5Q@mail.gmail.com>
* ds/generation-numbers (2018-05-22) 11 commits
(merged to 'next' on 2018-05-24 at 56fc38a1b6)
+ commit-graph.txt: update design document
+ merge: check config before loading commits
+ commit: use generation number in remove_redundant()
+ commit: add short-circuit to paint_down_to_common()
+ commit: use generation numbers for in_merge_bases()
+ ref-filter: use generation number for --contains
+ commit-graph: always load commit-graph information
+ commit: use generations in paint_down_to_common()
+ commit-graph: compute generation numbers
+ commit: add generation number to struct commit
+ ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-fsck and ds/commit-graph-lockfile-fix.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Will cook in 'next'.
* jk/branch-l-0-deprecation (2018-05-25) 5 commits
(merged to 'next' on 2018-05-30 at a94574dfd5)
+ branch: customize "-l" warning in list mode
+ branch: issue "-l" deprecation warning after pager starts
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
Perhaps merge to 'master' immediately after 2.18 release?
* jk/branch-l-1-removal (2018-05-30) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-05-30) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
* ma/doc-expand-tabs (2018-05-02) 1 commit
. revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Discarded.
This approach is less maintainable than the approach taken by
bc/asciidoctor-tab-width topic.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jun 2018, #03; Tue, 12)
@ 2018-06-12 21:00 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-12 21:00 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
A tl;dr summary for -rc2 that hopefully should happen in 24 hours:
the following four topics
jk/submodule-fsck-loose-fixup
sb/submodule-merge-in-merge-recursive
jk/index-pack-maint
sg/completion-zsh-workaround
are planned to be merged in -rc2.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* ab/refspec-init-fix (2018-06-11) 3 commits
- refspec: initalize `refspec_item` in `valid_fetch_refspec()`
- refspec: add back a refspec_item_init() function
- refspec: s/refspec_item_init/&_or_die/g
Make refspec parsing codepath more robust.
Will merge to 'next'.
* as/safecrlf-quiet-fix (2018-06-11) 1 commit
- config.c: fix regression for core.safecrlf false
Fix for 2.17-era regression.
Will merge to 'next'.
* jk/submodule-fsck-loose-fixup (2018-06-11) 2 commits
(merged to 'next' on 2018-06-11 at 3eadb39c0a)
+ fsck: avoid looking at NULL blob->object
+ t7415: don't bother creating commit for symlink test
Finishing touches to a topic that already is in 'maint'.
Will merge to 'master' and then to 'maint'.
* sb/submodule-merge-in-merge-recursive (2018-06-11) 1 commit
(merged to 'next' on 2018-06-11 at ad05b6bc6a)
+ merge-submodule: reduce output verbosity
Finishing touches to a topic that already is in 'master'.
Will merge to 'master'.
* sg/completion-zsh-workaround (2018-06-12) 1 commit
(merged to 'next' on 2018-06-12 at 331a1db143)
+ completion: correct zsh detection when run from git-completion.zsh
Work around zsh segfaulting when loading git-completion.zsh
Will merge to 'master'.
* sg/gpg-tests-fix (2018-06-11) 2 commits
- tests: make forging GPG signed commits and tags more robust
- t7510-signed-commit: use 'test_must_fail'
Some flaky tests have been fixed.
Will merge to 'next'.
* jk/fetch-all-peeled-fix (2018-06-11) 1 commit
- fetch-pack: don't try to fetch peel values with --all
* rd/diff-options-typofix (2018-06-11) 1 commit
- diff-options.txt: fix minor typos, font inconsistencies, in docs
* ld/git-p4-updates (2018-06-12) 6 commits
- git-p4: auto-size the block
- git-p4: narrow the scope of exceptions caught when parsing an int
- git-p4: raise exceptions from p4CmdList based on error from p4 server
- git-p4: better error reporting when p4 fails
- git-p4: add option to disable syncing of p4/master with p4
- git-p4: disable-rebase: allow setting this via configuration
(this branch uses rm/p4-submit-with-commit-option.)
* en/merge-recursive-cleanup (2018-06-12) 6 commits
- merge-recursive: add pointer about unduly complex looking code
- merge-recursive: rename conflict_rename_*() family of functions
- merge-recursive: clarify the rename_dir/RENAME_DIR meaning
- merge-recursive: align labels with their respective code blocks
- merge-recursive: fix numerous argument alignment issues
- merge-recursive: fix miscellaneous grammar error in comment
* jh/partial-clone (2018-06-12) 1 commit
- list-objects: check if filter is NULL before using
* km/doc-workflows-typofix (2018-06-12) 1 commit
- gitworkflows: fix grammar in 'Merge upwards' rule
* ms/send-pack-honor-config (2018-06-12) 1 commit
- builtin/send-pack: populate the default configs
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* is/parsing-line-range (2018-06-01) 2 commits
. log: prevent error if line range ends past end of file
. blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Updated. Still seems to break a few tests.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* nd/reject-empty-shallow-request (2018-06-04) 1 commit
- upload-pack: reject shallow requests that would return nothing
"git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
Will merge to 'next'.
* pw/add-p-recount (2018-06-11) 1 commit
- add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
Will merge to and cook in 'next'.
* rd/comment-typofix-in-sha1-file (2018-06-04) 1 commit
- sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
In code comment typofix
Will merge to 'next'.
* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
- update-ref --stdin: use skip_prefix()
Code cleanup.
Will merge to 'next'.
* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
- t9104: kosherly remove remote refs
Instead of mucking with filesystem directly, use plumbing commands
update-ref etc. to manipulate the refs in the tests.
Will merge to 'next'.
* ag/rebase-p (2018-06-01) 4 commits
- rebase: remove -p code from git-rebase--interactive.sh
- rebase: use the new git-rebase--preserve-merges.sh
- rebase: strip unused code in git-rebase--preserve-merges.sh
- rebase: introduce a dedicated backend for --preserve-merges
Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
Will merge to 'next'.
* jk/index-pack-maint (2018-06-11) 3 commits
(merged to 'next' on 2018-06-11 at f85a566b11)
+ index-pack: correct install_packed_git() args
(merged to 'next' on 2018-06-04 at c553a485e8)
+ index-pack: handle --strict checks of non-repo packs
+ prepare_commit_graft: treat non-repository as a noop
"index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
Will merge to 'master'.
* ls/complete-remote-update-names (2018-06-01) 1 commit
- completion: complete remote names too
"git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
Will merge to and cook in 'next'.
* sb/plug-misc-leaks (2018-06-04) 5 commits
- SQUASH: tentatively cast const-ness away when calling free()
- sequencer.c: plug mem leak in git_sequencer_config
(merged to 'next' on 2018-06-04 at fbefac1c7a)
+ sequencer.c: plug leaks in do_pick_commit
+ submodule--helper: plug mem leak in print_default_remote
+ refs/packed-backend.c: close fd of empty file
Misc leak plugging.
Will merge to 'next'.
* ds/commit-graph-fsck (2018-05-29) 20 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
(this branch uses ds/commit-graph-lockfile-fix and ds/generation-numbers.)
Expecting a reroll.
cf. <ba3b8e06-b5e1-99a1-0fe4-ff97d6da8f15@gmail.com>
* en/merge-recursive-tests (2018-05-28) 5 commits
(merged to 'next' on 2018-06-01 at 8490b560b4)
+ t6036: prefer test_when_finished to manual cleanup in following test
+ t6036, t6042: prefer test_cmp to sequences of test
+ t6036, t6042: prefer test_path_is_file, test_path_is_missing
+ t6036, t6042: use test_line_count instead of wc -l
+ t6036, t6042: use test_create_repo to keep tests independent
Clean up tests in t6xxx series about 'merge' command.
Will cook in 'next'.
* jk/show-index (2018-05-29) 2 commits
(merged to 'next' on 2018-06-01 at 4b3382d994)
+ show-index: update documentation for index v2
+ make show-index a builtin
Modernize a less often used command.
Will cook in 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Waiting for the discussion to settle.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* nd/complete-config-vars (2018-05-29) 13 commits
- completion: complete general config vars in two steps
- log-tree: allow to customize 'grafted' color
- completion: support case-insensitive config vars
- completion: keep other config var completion in camelCase
- completion: drop the hard coded list of config vars
- am: move advice.amWorkDir parsing back to advice.c
- advice: keep config name in camelCase in advice_config[]
- fsck: produce camelCase config key names
- help: add --config to list all available config
- fsck: factor out msg_id_info[] lazy initialization code
- grep: keep all colors in an array
- Add and use generic name->id mapping code for color slot parsing
- Merge branch 'nd/command-list' into nd/complete-config-vars
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
Will merge to and cook in 'next'.
* nd/completion-negation (2018-06-11) 3 commits
- completion: collapse extra --no-.. options
- completion: suppress some -no- options
- parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
Will merge to and cook in 'next'.
* jm/cache-entry-from-mem-pool (2018-05-24) 7 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- mem-pool: add lifecycle management functions
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* rm/p4-submit-with-commit-option (2018-05-21) 1 commit
- git-p4: add options --commit and --disable-rebase
(this branch is used by ld/git-p4-updates.)
Needs sign-off.
* ds/commit-graph-lockfile-fix (2018-05-22) 1 commit
(merged to 'next' on 2018-05-24 at 3d12a02b0c)
+ commit-graph: fix UX issue when .lock file exists
(this branch is used by ds/commit-graph-fsck; uses ds/generation-numbers.)
Update to ds/generation-numbers topic.
Will cook in 'next'.
* nd/commit-util-to-slab (2018-05-21) 15 commits
(merged to 'next' on 2018-05-24 at bb5643d75c)
+ commit.h: delete 'util' field in struct commit
+ merge: use commit-slab in merge remote desc instead of commit->util
+ log: use commit-slab in prepare_bases() instead of commit->util
+ show-branch: note about its object flags usage
+ show-branch: use commit-slab for commit-name instead of commit->util
+ name-rev: use commit-slab for rev-name instead of commit->util
+ bisect.c: use commit-slab for commit weight instead of commit->util
+ revision.c: use commit-slab for show_source
+ sequencer.c: use commit-slab to associate todo items to commits
+ sequencer.c: use commit-slab to mark seen commits
+ shallow.c: use commit-slab for commit depth instead of commit->util
+ describe: use commit-slab for commit names instead of commit->util
+ blame: use commit-slab for blame suspects instead of commit->util
+ commit-slab: support shared commit-slab
+ commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
Will cook in 'next'.
* nd/diff-apply-ita (2018-05-29) 4 commits
(merged to 'next' on 2018-05-30 at f98728de81)
+ apply: add --intent-to-add
+ t2203: add a test about "diff HEAD" case
+ diff: turn --ita-invisible-in-index on by default
+ diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
Will cook in 'next'.
* sb/object-store-grafts (2018-05-18) 19 commits
- commit: allow lookup_commit_graft to handle arbitrary repositories
- commit: allow prepare_commit_graft to handle arbitrary repositories
- shallow: migrate shallow information into the object parser
- path.c: migrate global git_path_* to take a repository argument
- cache: convert get_graft_file to handle arbitrary repositories
- commit: convert read_graft_file to handle arbitrary repositories
- commit: convert register_commit_graft to handle arbitrary repositories
- commit: convert commit_graft_pos() to handle arbitrary repositories
- shallow: add repository argument to is_repository_shallow
- shallow: add repository argument to check_shallow_file_for_update
- shallow: add repository argument to register_shallow
- shallow: add repository argument to set_alternate_shallow_file
- commit: add repository argument to lookup_commit_graft
- commit: add repository argument to prepare_commit_graft
- commit: add repository argument to read_graft_file
- commit: add repository argument to register_commit_graft
- commit: add repository argument to commit_graft_pos
- object: move grafts to object parser
- object-store: move object access functions to object-store.h
(this branch uses sb/object-store-alloc.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to and cook in 'next'.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
(merged to 'next' on 2018-05-22 at f22659ad46)
+ submodule: port submodule subcommand 'foreach' from shell to C
+ submodule foreach: document variable '$displaypath'
+ submodule foreach: document '$sm_path' instead of '$path'
+ submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
Will cook in 'next'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/object-store-alloc (2018-05-16) 13 commits
- alloc: allow arbitrary repositories for alloc functions
- object: allow create_object to handle arbitrary repositories
- object: allow grow_object_hash to handle arbitrary repositories
- alloc: add repository argument to alloc_commit_index
- alloc: add repository argument to alloc_report
- alloc: add repository argument to alloc_object_node
- alloc: add repository argument to alloc_tag_node
- alloc: add repository argument to alloc_commit_node
- alloc: add repository argument to alloc_tree_node
- alloc: add repository argument to alloc_blob_node
- object: add repository argument to grow_object_hash
- object: add repository argument to create_object
- repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to and cook in 'next'.
* tb/grep-column (2018-05-14) 7 commits
. contrib/git-jump/git-jump: jump to match column in addition to line
. grep.c: add configuration variables to show matched option
. builtin/grep.c: add '--column' option to 'git-grep(1)'
. grep.c: display column number of first match
. grep.[ch]: extend grep_opt to allow showing matched column
. grep.c: expose matched column in match_line()
. Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Expecting a reroll.
cf. <20180530160908.GA8340@D-10-19-29-76.dhcp4.washington.edu>
* tb/grep-only-matching (2018-05-14) 2 commits
. builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
. grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
Waiting on tb/grep-column
* sb/diff-color-move-more (2018-05-21) 8 commits
(merged to 'next' on 2018-05-24 at 45f3fb7975)
+ diff: color-moved white space handling options imply color-moved
+ diff.c: add --color-moved-ignore-space-delta option
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will kick back to 'pu'.
cf. <CAGZ79kag9m02xtJKg05aPE4Grq2wBWSmUr3JdwfyHsMawR7m5Q@mail.gmail.com>
* ds/generation-numbers (2018-05-22) 11 commits
(merged to 'next' on 2018-05-24 at 56fc38a1b6)
+ commit-graph.txt: update design document
+ merge: check config before loading commits
+ commit: use generation number in remove_redundant()
+ commit: add short-circuit to paint_down_to_common()
+ commit: use generation numbers for in_merge_bases()
+ ref-filter: use generation number for --contains
+ commit-graph: always load commit-graph information
+ commit: use generations in paint_down_to_common()
+ commit-graph: compute generation numbers
+ commit: add generation number to struct commit
+ ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-fsck and ds/commit-graph-lockfile-fix.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Will cook in 'next'.
* jk/branch-l-0-deprecation (2018-05-25) 5 commits
(merged to 'next' on 2018-05-30 at a94574dfd5)
+ branch: customize "-l" warning in list mode
+ branch: issue "-l" deprecation warning after pager starts
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
Perhaps merge to 'master' immediately after 2.18 release?
* jk/branch-l-1-removal (2018-05-30) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-05-30) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
* ma/doc-expand-tabs (2018-05-02) 1 commit
. revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Discarded.
This approach is less maintainable than the approach taken by
bc/asciidoctor-tab-width topic.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jun 2018, #02; Mon, 4)
@ 2018-06-04 13:57 1% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-06-04 13:57 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Generally I try to avoid sending issues of "What's cooking" report
in close succession, but as I plan to go offline for most of the
remainder of the week, here is how the tree looks like as of
tonight, just after tagging 2.18-rc1. Hopefully we'll have another
rc next week and then the real thing a week after that.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* bc/t3430-fixup (2018-06-04) 1 commit
(merged to 'next' on 2018-06-04 at 892aab2dc8)
+ t3430: test clean-up
Test fix.
* bw/refspec-api (2018-06-01) 1 commit
(merged to 'next' on 2018-06-04 at f244fe357b)
+ refspec-api: avoid uninitialized field in refspec item
Hotfix.
* jt/submodule-pull-recurse-rebase (2018-05-25) 1 commit
(merged to 'next' on 2018-06-01 at cd3e2a1008)
+ submodule: do not pass null OID to setup_revisions
"git pull -recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
* nd/remote-update-doc (2018-06-04) 2 commits
(merged to 'next' on 2018-06-04 at b2901b60ad)
+ remote: doc typofix
(merged to 'next' on 2018-06-04 at 82cce447e5)
+ remote.txt: update documentation for 'update' command
"git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
* rd/p4-doc-markup-env (2018-06-01) 1 commit
(merged to 'next' on 2018-06-04 at 80212295cf)
+ p4.txt: Use backquotes for variable names
Doc markup update.
* tg/doc-sec-list (2018-06-01) 2 commits
(merged to 'next' on 2018-06-04 at e1f80ffe09)
+ note git-security@googlegroups.com in more places
+ SubmittingPatches: replace numbered attributes with names
Doc update.
--------------------------------------------------
[New Topics]
* ab/checkout-default-remote (2018-06-04) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c]: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
* nd/reject-empty-shallow-request (2018-06-04) 1 commit
- upload-pack: reject shallow requests that would return nothing
"git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
* pw/add-p-recount (2018-06-04) 1 commit
- add -p: fix counting empty context lines in edited patches
When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
Will merge to and cook in 'next'.
* rd/comment-typofix-in-sha1-file (2018-06-04) 1 commit
- sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
In code comment typofix
Will merge to 'next'.
* sg/update-ref-stdin-cleanup (2018-06-04) 1 commit
- update-ref --stdin: use skip_prefix()
Code cleanup.
Will merge to 'next'.
* cc/tests-without-assuming-ref-files-backend (2018-06-04) 1 commit
- t9104: kosherly remove remote refs
Instead of mucking with filesystem directly, use plumbing commands
update-ref etc. to manipulate the refs in the tests.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* is/parsing-line-range (2018-06-01) 2 commits
. log: prevent error if line range ends past end of file
. blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Updated. Still seems to break a few tests.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2018-06-04) 3 commits
- SQUASH???
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ag/rebase-p (2018-06-01) 4 commits
- rebase: remove -p code from git-rebase--interactive.sh
- rebase: use the new git-rebase--preserve-merges.sh
- rebase: strip unused code in git-rebase--preserve-merges.sh
- rebase: introduce a dedicated backend for --preserve-merges
Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
Will merge to 'next'.
* jk/index-pack-maint (2018-06-01) 2 commits
(merged to 'next' on 2018-06-04 at c553a485e8)
+ index-pack: handle --strict checks of non-repo packs
+ prepare_commit_graft: treat non-repository as a noop
"index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
Will cook in 'next'.
* ls/complete-remote-update-names (2018-06-01) 1 commit
- completion: complete remote names too
"git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
Will merge to and cook in 'next'.
* sb/plug-misc-leaks (2018-06-04) 5 commits
- SQUASH: tentatively cast const-ness away when calling free()
- sequencer.c: plug mem leak in git_sequencer_config
(merged to 'next' on 2018-06-04 at fbefac1c7a)
+ sequencer.c: plug leaks in do_pick_commit
+ submodule--helper: plug mem leak in print_default_remote
+ refs/packed-backend.c: close fd of empty file
Misc leak plugging.
Will merge to 'next'.
* ds/commit-graph-fsck (2018-05-29) 20 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
(this branch uses ds/commit-graph-lockfile-fix and ds/generation-numbers.)
Expecting a reroll.
cf. <ba3b8e06-b5e1-99a1-0fe4-ff97d6da8f15@gmail.com>
* en/merge-recursive-tests (2018-05-28) 5 commits
(merged to 'next' on 2018-06-01 at 8490b560b4)
+ t6036: prefer test_when_finished to manual cleanup in following test
+ t6036, t6042: prefer test_cmp to sequences of test
+ t6036, t6042: prefer test_path_is_file, test_path_is_missing
+ t6036, t6042: use test_line_count instead of wc -l
+ t6036, t6042: use test_create_repo to keep tests independent
Clean up tests in t6xxx series about 'merge' command.
Will cook in 'next'.
* jk/show-index (2018-05-29) 2 commits
(merged to 'next' on 2018-06-01 at 4b3382d994)
+ show-index: update documentation for index v2
+ make show-index a builtin
Modernize a less often used command.
Will cook in 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Waiting for the discussion to settle.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* nd/complete-config-vars (2018-05-29) 13 commits
- completion: complete general config vars in two steps
- log-tree: allow to customize 'grafted' color
- completion: support case-insensitive config vars
- completion: keep other config var completion in camelCase
- completion: drop the hard coded list of config vars
- am: move advice.amWorkDir parsing back to advice.c
- advice: keep config name in camelCase in advice_config[]
- fsck: produce camelCase config key names
- help: add --config to list all available config
- fsck: factor out msg_id_info[] lazy initialization code
- grep: keep all colors in an array
- Add and use generic name->id mapping code for color slot parsing
- Merge branch 'nd/command-list' into nd/complete-config-vars
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
Will merge to and cook in 'next'.
* nd/completion-negation (2018-05-29) 3 commits
- completion: collapse extra --no-.. options
- completion: suppress some -no- options
- parse-options: option to let --git-completion-helper show negative form
Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
Will merge to and cook in 'next'.
* jm/cache-entry-from-mem-pool (2018-05-24) 7 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- mem-pool: add lifecycle management functions
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* rm/p4-submit-with-commit-option (2018-05-21) 1 commit
- git-p4: add options --commit and --disable-rebase
Needs sign-off.
* ds/commit-graph-lockfile-fix (2018-05-22) 1 commit
(merged to 'next' on 2018-05-24 at 3d12a02b0c)
+ commit-graph: fix UX issue when .lock file exists
(this branch is used by ds/commit-graph-fsck; uses ds/generation-numbers.)
Update to ds/generation-numbers topic.
Wait for ds/generation-numbers
* nd/commit-util-to-slab (2018-05-21) 15 commits
(merged to 'next' on 2018-05-24 at bb5643d75c)
+ commit.h: delete 'util' field in struct commit
+ merge: use commit-slab in merge remote desc instead of commit->util
+ log: use commit-slab in prepare_bases() instead of commit->util
+ show-branch: note about its object flags usage
+ show-branch: use commit-slab for commit-name instead of commit->util
+ name-rev: use commit-slab for rev-name instead of commit->util
+ bisect.c: use commit-slab for commit weight instead of commit->util
+ revision.c: use commit-slab for show_source
+ sequencer.c: use commit-slab to associate todo items to commits
+ sequencer.c: use commit-slab to mark seen commits
+ shallow.c: use commit-slab for commit depth instead of commit->util
+ describe: use commit-slab for commit names instead of commit->util
+ blame: use commit-slab for blame suspects instead of commit->util
+ commit-slab: support shared commit-slab
+ commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
Will cook in 'next'.
* nd/diff-apply-ita (2018-05-29) 4 commits
(merged to 'next' on 2018-05-30 at f98728de81)
+ apply: add --intent-to-add
+ t2203: add a test about "diff HEAD" case
+ diff: turn --ita-invisible-in-index on by default
+ diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
Will cook in 'next'.
* sb/object-store-grafts (2018-05-18) 19 commits
- commit: allow lookup_commit_graft to handle arbitrary repositories
- commit: allow prepare_commit_graft to handle arbitrary repositories
- shallow: migrate shallow information into the object parser
- path.c: migrate global git_path_* to take a repository argument
- cache: convert get_graft_file to handle arbitrary repositories
- commit: convert read_graft_file to handle arbitrary repositories
- commit: convert register_commit_graft to handle arbitrary repositories
- commit: convert commit_graft_pos() to handle arbitrary repositories
- shallow: add repository argument to is_repository_shallow
- shallow: add repository argument to check_shallow_file_for_update
- shallow: add repository argument to register_shallow
- shallow: add repository argument to set_alternate_shallow_file
- commit: add repository argument to lookup_commit_graft
- commit: add repository argument to prepare_commit_graft
- commit: add repository argument to read_graft_file
- commit: add repository argument to register_commit_graft
- commit: add repository argument to commit_graft_pos
- object: move grafts to object parser
- object-store: move object access functions to object-store.h
(this branch uses sb/object-store-alloc.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to and cook in 'next'.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
(merged to 'next' on 2018-05-22 at f22659ad46)
+ submodule: port submodule subcommand 'foreach' from shell to C
+ submodule foreach: document variable '$displaypath'
+ submodule foreach: document '$sm_path' instead of '$path'
+ submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
Will cook in 'next'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* sb/object-store-alloc (2018-05-16) 13 commits
- alloc: allow arbitrary repositories for alloc functions
- object: allow create_object to handle arbitrary repositories
- object: allow grow_object_hash to handle arbitrary repositories
- alloc: add repository argument to alloc_commit_index
- alloc: add repository argument to alloc_report
- alloc: add repository argument to alloc_object_node
- alloc: add repository argument to alloc_tag_node
- alloc: add repository argument to alloc_commit_node
- alloc: add repository argument to alloc_tree_node
- alloc: add repository argument to alloc_blob_node
- object: add repository argument to grow_object_hash
- object: add repository argument to create_object
- repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to and cook in 'next'.
* tb/grep-column (2018-05-14) 7 commits
. contrib/git-jump/git-jump: jump to match column in addition to line
. grep.c: add configuration variables to show matched option
. builtin/grep.c: add '--column' option to 'git-grep(1)'
. grep.c: display column number of first match
. grep.[ch]: extend grep_opt to allow showing matched column
. grep.c: expose matched column in match_line()
. Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Expecting a reroll.
cf. <20180530160908.GA8340@D-10-19-29-76.dhcp4.washington.edu>
* tb/grep-only-matching (2018-05-14) 2 commits
. builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
. grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
Waiting on tb/grep-column
* sb/diff-color-move-more (2018-05-21) 8 commits
(merged to 'next' on 2018-05-24 at 45f3fb7975)
+ diff: color-moved white space handling options imply color-moved
+ diff.c: add --color-moved-ignore-space-delta option
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will kick back to 'pu'.
cf. <CAGZ79kag9m02xtJKg05aPE4Grq2wBWSmUr3JdwfyHsMawR7m5Q@mail.gmail.com>
* ds/generation-numbers (2018-05-22) 11 commits
(merged to 'next' on 2018-05-24 at 56fc38a1b6)
+ commit-graph.txt: update design document
+ merge: check config before loading commits
+ commit: use generation number in remove_redundant()
+ commit: add short-circuit to paint_down_to_common()
+ commit: use generation numbers for in_merge_bases()
+ ref-filter: use generation number for --contains
+ commit-graph: always load commit-graph information
+ commit: use generations in paint_down_to_common()
+ commit-graph: compute generation numbers
+ commit: add generation number to struct commit
+ ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-fsck and ds/commit-graph-lockfile-fix.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Will cook in 'next'.
* jk/branch-l-0-deprecation (2018-05-25) 5 commits
(merged to 'next' on 2018-05-30 at a94574dfd5)
+ branch: customize "-l" warning in list mode
+ branch: issue "-l" deprecation warning after pager starts
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
Perhaps merge to 'master' immediately after 2.18 release?
* jk/branch-l-1-removal (2018-05-30) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-05-30) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
* ma/doc-expand-tabs (2018-05-02) 1 commit
. revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Discarded.
This approach is less maintainable than the approach taken by
bc/asciidoctor-tab-width topic.
^ permalink raw reply [relevance 1%]
* Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file
2018-04-05 19:44 7% ` Eric Wong
@ 2018-04-11 23:18 0% ` Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-04-11 23:18 UTC (permalink / raw)
To: Eric Wong; +Cc: Andreas Heiduk, git, Eric Sunshine
Eric Wong <e@80x24.org> writes:
> Andreas Heiduk <asheiduk@gmail.com> wrote:
>> Am 05.04.2018 um 09:51 schrieb Eric Wong:
>> > Can you confirm it's OK for you? Thanks.
>>
>> Looks good, works for me.
>>
>> Do you squash this patch with with my commit or do you need a reroll?
>
> Nope, no need to reroll. Pushed to my repo for Junio. Thanks all.
>
> The following changes since commit 468165c1d8a442994a825f3684528361727cd8c0:
>
> Git 2.17 (2018-04-02 10:13:35 -0700)
>
> are available in the Git repository at:
>
> git://bogomips.org/git-svn.git svn/authors-prog-2
>
> for you to fetch changes up to cb427e9eb0243fe7a1a22ea3bd0a46b7410c0bf3:
>
> git-svn: allow empty email-address using authors-prog and authors-file (2018-04-05 19:22:06 +0000)
Sorry; this message fell under my radar and I had to privately get
reminded of it. Pulled.
Thanks, both.
^ permalink raw reply [relevance 0%]
* Re: [PATCH 6/8] gpg-interface: find the last gpg signature line
2018-04-10 22:17 5% ` Junio C Hamano
@ 2018-04-11 15:19 0% ` Ben Toews
0 siblings, 0 replies; 30+ results
From: Ben Toews @ 2018-04-11 15:19 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git List, Taylor Blau, Jeff King
On Tue, Apr 10, 2018 at 4:17 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
>>> That test was fixed a week ago:
>>> https://github.com/git/git/commit/a99d903f21d102a5768f19157085a9733aeb68dd
>>
>> Well, you cannot expect any reviewer to know about a change that has
>> never been sent to the list and has never been part of even 'pu'
>> branch, no matter how old such a private "fix" is.
>>
>> What other unpublished things that are not even on 'pu' do these
>> patches depend on?
>
> Answering my own question after digging a bit more, now I know that
> a99d903 comes from the 'private' branch in peff/git/ repository
> hosted at GitHub [*1*]. The branch builds on 'next' by merging many
> private branches, and 'jk/non-pgp-signatures' branch has that commit.
>
> peff.git/private$ git log --oneline --boundary 0c8726318..7a526834e^2
> c9ce7c5b7 gpg-interface: handle multiple signing tools
> 914951682 gpg-interface: handle bool user.signingkey
> 1f2ea84b3 gpg-interface: return signature type from parse_signature()
> 6d2ce6547 gpg-interface: prepare for parsing arbitrary PEM blocks
> fb1d173db gpg-interface: find the last gpg signature line
> 6bc4e7e17 gpg-interface: extract gpg line matching helper
> 4f883ac49 gpg-interface: fix const-correctness of "eol" pointer
> ae6529fdb gpg-interface: use size_t for signature buffer size
> 1bca4296b gpg-interface: modernize function declarations
> a99d903f2 t7004: fix mistaken tag name
> - 468165c1d Git 2.17
>
> It seems to me that Peff did the t7004 change as the earliest
> preliminary step of the series, but it caused confusion when it was
> not sent as part of the series by mistake. Judging from the shape
> of the topic, I do not think this topic has any other hidden
> dependencies as it builds directly on top of v2.17.0.
>
> For those who are reading and reviewing from the sideline, I've
> attached that missing 0.9/8 patch at the end of this message.
Sorry for the confusion Junio. I'm not used to the mailing list
workflow and it seems that I missed a patch. I'll make sure to include
that patch in v2.
>
> [Footnote]
>
> *1* I do not know if it deserves to be called a bug, but it
> certainly is an anomaly GitHub exhibits that a99d903f can be
> viewed at https://github.com/git/git/commit/a99d903f..., as if
> it is part of the official git/git history, when it only exists
> in a fork of that repository. I can understand why it happens
> but it certainly is unexpected.
>
> -- >8 --
> From: Jeff King <peff@peff.net>
> Date: Tue, 3 Apr 2018 17:10:30 -0400
> Subject: [PATCH 0.9/8] t7004: fix mistaken tag name
>
> We have a series of tests which create signed tags with
> various properties, but one test accidentally verifies a tag
> from much earlier in the series.
> ---
> t/t7004-tag.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
> index 2aac77af7..ee093b393 100755
> --- a/t/t7004-tag.sh
> +++ b/t/t7004-tag.sh
> @@ -1056,7 +1056,7 @@ test_expect_success GPG \
> git tag -s -F sigblanknonlfile blanknonlfile-signed-tag &&
> get_tag_msg blanknonlfile-signed-tag >actual &&
> test_cmp expect actual &&
> - git tag -v signed-tag
> + git tag -v blanknonlfile-signed-tag
> '
>
> # messages with commented lines for signed tags:
> --
> 2.17.0-140-g0b0cc9f867
>
--
-Ben Toews
^ permalink raw reply [relevance 0%]
* Re: [PATCH 6/8] gpg-interface: find the last gpg signature line
@ 2018-04-10 22:17 5% ` Junio C Hamano
2018-04-11 15:19 0% ` Ben Toews
0 siblings, 1 reply; 30+ results
From: Junio C Hamano @ 2018-04-10 22:17 UTC (permalink / raw)
To: Ben Toews; +Cc: git, Taylor Blau, Jeff King
Junio C Hamano <gitster@pobox.com> writes:
>> That test was fixed a week ago:
>> https://github.com/git/git/commit/a99d903f21d102a5768f19157085a9733aeb68dd
>
> Well, you cannot expect any reviewer to know about a change that has
> never been sent to the list and has never been part of even 'pu'
> branch, no matter how old such a private "fix" is.
>
> What other unpublished things that are not even on 'pu' do these
> patches depend on?
Answering my own question after digging a bit more, now I know that
a99d903 comes from the 'private' branch in peff/git/ repository
hosted at GitHub [*1*]. The branch builds on 'next' by merging many
private branches, and 'jk/non-pgp-signatures' branch has that commit.
peff.git/private$ git log --oneline --boundary 0c8726318..7a526834e^2
c9ce7c5b7 gpg-interface: handle multiple signing tools
914951682 gpg-interface: handle bool user.signingkey
1f2ea84b3 gpg-interface: return signature type from parse_signature()
6d2ce6547 gpg-interface: prepare for parsing arbitrary PEM blocks
fb1d173db gpg-interface: find the last gpg signature line
6bc4e7e17 gpg-interface: extract gpg line matching helper
4f883ac49 gpg-interface: fix const-correctness of "eol" pointer
ae6529fdb gpg-interface: use size_t for signature buffer size
1bca4296b gpg-interface: modernize function declarations
a99d903f2 t7004: fix mistaken tag name
- 468165c1d Git 2.17
It seems to me that Peff did the t7004 change as the earliest
preliminary step of the series, but it caused confusion when it was
not sent as part of the series by mistake. Judging from the shape
of the topic, I do not think this topic has any other hidden
dependencies as it builds directly on top of v2.17.0.
For those who are reading and reviewing from the sideline, I've
attached that missing 0.9/8 patch at the end of this message.
[Footnote]
*1* I do not know if it deserves to be called a bug, but it
certainly is an anomaly GitHub exhibits that a99d903f can be
viewed at https://github.com/git/git/commit/a99d903f..., as if
it is part of the official git/git history, when it only exists
in a fork of that repository. I can understand why it happens
but it certainly is unexpected.
-- >8 --
From: Jeff King <peff@peff.net>
Date: Tue, 3 Apr 2018 17:10:30 -0400
Subject: [PATCH 0.9/8] t7004: fix mistaken tag name
We have a series of tests which create signed tags with
various properties, but one test accidentally verifies a tag
from much earlier in the series.
---
t/t7004-tag.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh
index 2aac77af7..ee093b393 100755
--- a/t/t7004-tag.sh
+++ b/t/t7004-tag.sh
@@ -1056,7 +1056,7 @@ test_expect_success GPG \
git tag -s -F sigblanknonlfile blanknonlfile-signed-tag &&
get_tag_msg blanknonlfile-signed-tag >actual &&
test_cmp expect actual &&
- git tag -v signed-tag
+ git tag -v blanknonlfile-signed-tag
'
# messages with commented lines for signed tags:
--
2.17.0-140-g0b0cc9f867
^ permalink raw reply related [relevance 5%]
* Re: What's cooking in git.git (Apr 2018, #01; Mon, 9)
2018-04-10 20:22 6% ` Ramsay Jones
@ 2018-04-10 20:37 0% ` Ramsay Jones
0 siblings, 0 replies; 30+ results
From: Ramsay Jones @ 2018-04-10 20:37 UTC (permalink / raw)
To: Derrick Stolee, Junio C Hamano; +Cc: git
On 10/04/18 21:22, Ramsay Jones wrote:
>
>
> On 10/04/18 20:35, Derrick Stolee wrote:
>> On 4/10/2018 3:21 PM, Ramsay Jones wrote:
>>>
>>> On 10/04/18 13:57, Derrick Stolee wrote:
>>>> On 4/9/2018 6:08 PM, Junio C Hamano wrote:
>>>>> I guess we'd want a final cleaned-up round after all ;-) Thanks.
>>>> v8 sent [1]. Thanks.
>>> I just tried to 'git am' this series and I could not get it
>>> to apply cleanly to current 'master', 'next' or 'pu'. I fixed
>>> up a few patches, but just got bored ... ;-)
>>>
>>
>> In my cover letter, I did mention that my patch started here (using 'format-patch --base'):
>>
>> base-commit: 468165c1d8a442994a825f3684528361727cd8c0
>>
>>
>> This corresponds to v2.17.0.
>
> Yep, I forgot to mention that I had already tried that too:
>
> $ git log --oneline -1
> 468165c1d (HEAD -> master-graph, tag: v2.17.0, origin/maint, maint, build) Git 2.17
> $ git am patches/*
> Applying: csum-file: rename hashclose() to finalize_hashfile()
> Applying: csum-file: refactor finalize_hashfile() method
> Applying: commit-graph: add format document
> Applying: graph: add commit graph design document
> Applying: commit-graph: create git-commit-graph builtin
> Applying: commit-graph: create git-commit-graph builtin
> error: patch failed: .gitignore:34
> error: .gitignore: patch does not apply
> error: Documentation/git-commit-graph.txt: already exists in index
> error: patch failed: Makefile:952
> error: Makefile: patch does not apply
> error: patch failed: builtin.h:149
> error: builtin.h: patch does not apply
> error: builtin/commit-graph.c: already exists in index
> error: patch failed: command-list.txt:34
> error: command-list.txt: patch does not apply
> error: patch failed: contrib/completion/git-completion.bash:878
> error: contrib/completion/git-completion.bash: patch does not apply
> error: patch failed: git.c:388
> error: git.c: patch does not apply
> Patch failed at 0006 commit-graph: create git-commit-graph builtin
> Use 'git am --show-current-patch' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> $
Ah, OK, it helps if you don't have an edited patch backup
file in the patches directory! patches now apply cleanly.
sparse is also now clean - thanks!
ATB,
Ramsay Jones
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Apr 2018, #01; Mon, 9)
@ 2018-04-10 20:22 6% ` Ramsay Jones
2018-04-10 20:37 0% ` Ramsay Jones
0 siblings, 1 reply; 30+ results
From: Ramsay Jones @ 2018-04-10 20:22 UTC (permalink / raw)
To: Derrick Stolee, Junio C Hamano; +Cc: git
On 10/04/18 20:35, Derrick Stolee wrote:
> On 4/10/2018 3:21 PM, Ramsay Jones wrote:
>>
>> On 10/04/18 13:57, Derrick Stolee wrote:
>>> On 4/9/2018 6:08 PM, Junio C Hamano wrote:
>>>> I guess we'd want a final cleaned-up round after all ;-) Thanks.
>>> v8 sent [1]. Thanks.
>> I just tried to 'git am' this series and I could not get it
>> to apply cleanly to current 'master', 'next' or 'pu'. I fixed
>> up a few patches, but just got bored ... ;-)
>>
>
> In my cover letter, I did mention that my patch started here (using 'format-patch --base'):
>
> base-commit: 468165c1d8a442994a825f3684528361727cd8c0
>
>
> This corresponds to v2.17.0.
Yep, I forgot to mention that I had already tried that too:
$ git log --oneline -1
468165c1d (HEAD -> master-graph, tag: v2.17.0, origin/maint, maint, build) Git 2.17
$ git am patches/*
Applying: csum-file: rename hashclose() to finalize_hashfile()
Applying: csum-file: refactor finalize_hashfile() method
Applying: commit-graph: add format document
Applying: graph: add commit graph design document
Applying: commit-graph: create git-commit-graph builtin
Applying: commit-graph: create git-commit-graph builtin
error: patch failed: .gitignore:34
error: .gitignore: patch does not apply
error: Documentation/git-commit-graph.txt: already exists in index
error: patch failed: Makefile:952
error: Makefile: patch does not apply
error: patch failed: builtin.h:149
error: builtin.h: patch does not apply
error: builtin/commit-graph.c: already exists in index
error: patch failed: command-list.txt:34
error: command-list.txt: patch does not apply
error: patch failed: contrib/completion/git-completion.bash:878
error: contrib/completion/git-completion.bash: patch does not apply
error: patch failed: git.c:388
error: git.c: patch does not apply
Patch failed at 0006 commit-graph: create git-commit-graph builtin
Use 'git am --show-current-patch' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
$
ATB,
Ramsay Jones
^ permalink raw reply [relevance 6%]
* Re: [PATCH v3] git-svn: allow empty email-address using authors-prog and authors-file
@ 2018-04-05 19:44 7% ` Eric Wong
2018-04-11 23:18 0% ` Junio C Hamano
0 siblings, 1 reply; 30+ results
From: Eric Wong @ 2018-04-05 19:44 UTC (permalink / raw)
To: Junio C Hamano, Andreas Heiduk; +Cc: git, Eric Sunshine
Andreas Heiduk <asheiduk@gmail.com> wrote:
> Am 05.04.2018 um 09:51 schrieb Eric Wong:
> > Can you confirm it's OK for you? Thanks.
>
> Looks good, works for me.
>
> Do you squash this patch with with my commit or do you need a reroll?
Nope, no need to reroll. Pushed to my repo for Junio. Thanks all.
The following changes since commit 468165c1d8a442994a825f3684528361727cd8c0:
Git 2.17 (2018-04-02 10:13:35 -0700)
are available in the Git repository at:
git://bogomips.org/git-svn.git svn/authors-prog-2
for you to fetch changes up to cb427e9eb0243fe7a1a22ea3bd0a46b7410c0bf3:
git-svn: allow empty email-address using authors-prog and authors-file (2018-04-05 19:22:06 +0000)
----------------------------------------------------------------
Andreas Heiduk (2):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
Documentation/git-svn.txt | 13 ++++++++++---
git-svn.perl | 3 ++-
perl/Git/SVN.pm | 13 ++++++-------
t/t9130-git-svn-authors-file.sh | 14 ++++++++++++++
t/t9138-git-svn-authors-prog.sh | 26 +++++++++++++++++++++++++-
5 files changed, 57 insertions(+), 12 deletions(-)
^ permalink raw reply [relevance 7%]
* Re: [ANNOUNCE] Git v2.17.0
@ 2018-04-02 23:19 7% ` Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-04-02 23:19 UTC (permalink / raw)
To: Stefan Beller; +Cc: Randall S. Becker, git
Stefan Beller <sbeller@google.com> writes:
> Patch at https://public-inbox.org/git/010f01d38a9e$a5c4f290$f14ed7b0$@nexbridge.com/
Thanks for a pointer. I think it was left behind and got forgotten
while waiting for a reroll and tying the loose ends.
I'll go offline for most of the rest of the week. It would be
wonderful if Git 2.17 turns out to be flawless, but that is not a
realistic expectation. Wishing for the second best, I'd very much
appreciate it if people worked hard to find and fix regressions and
collect materials for its first maintenance release 2.17.1 ;-)
Thanks.
^ permalink raw reply [relevance 7%]
* [ANNOUNCE] Git v2.17.0
@ 2018-04-02 19:34 2% Junio C Hamano
0 siblings, 1 reply; 30+ results
From: Junio C Hamano @ 2018-04-02 19:34 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.17.0 is now available at the
usual places. It is comprised of 516 non-merge commits since
v2.16.0, contributed by 71 people, 20 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.17.0'
tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Christopher Diaz Riveros,
Gargi Sharma, Genki Sky, Gregory Herrero, Jon Simons, Juan
F. Codagnone, Kim Gybels, Lucas Werkmeister, Mathias Rav,
Michele Locati, Motoki Seki, Stefan Moch, Stephen R Guglielmo,
Tatyana Krasnukha, and Thomas Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée,
Ben Peart, Brandon Williams, brian m. carlson, Changwoo Ryu,
Christian Couder, Daniel Knittl-Frank, David Pursehouse,
Derrick Stolee, Elijah Newren, Eric Sunshine, Eric Wong, Jason
Merrill, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin,
Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Jordi Mas,
Junio C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin
Ågren, Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn
Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya,
Patryk Obara, Peter Krefting, Phillip Wood, Prathamesh Chavan,
Ralf Thielow, Ramsay Jones, Randall S. Becker, Rasmus Villemoes,
Ray Chen, René Scharfe, Robert P. J. Day, Stefan Beller, SZEDER
Gábor, Thomas Gummerer, Todd Zullinger, Torsten Bögershausen,
Trần Ngọc Quân, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes
======================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
* In a way similar to how "git tag" learned to honor the pager
setting only in the list mode, "git config" learned to ignore the
pager setting when it is used for setting values (i.e. when the
purpose of the operation is not to "show").
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* Perl 5.8 or greater has been required since Git 1.7.4 released in
2010, but we continued to assume some core modules may not exist and
used a conditional "eval { require <<module>> }"; we no longer do
this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
without all core modules by default (e.g. Digest::MD5, File::Temp,
File::Spec, Net::Domain, Net::SMTP). Users on such platforms may
need to install these additional modules.
* As a convenience, we install copies of Perl modules we require which
are not part of the core Perl distribution (e.g. Error and
Mail::Address). Users and packagers whose operating system provides
these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
bundled modules.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
* Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.
(merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
* The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.
(merge b8fd6008ec rj/http-code-cleanup later to maint).
* Shell script portability fix.
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
(merge 40c17eb184 ks/t3200-typofix later to maint).
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
(merge 9ee0540a40 js/ming-strftime later to maint).
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
(merge b635ed97a0 jk/attributes-path-doc later to maint).
^ permalink raw reply [relevance 2%]
* [GIT PULL] l10n updates for 2.17.0 round 1
@ 2018-04-01 11:18 5% Jiang Xin
0 siblings, 0 replies; 30+ results
From: Jiang Xin @ 2018-04-01 11:18 UTC (permalink / raw)
To: Junio C Hamano
Cc: Git List, Alexander Shopov, Changwoo Ryu, Christopher Díaz,
Dimitriy Ryazantcev, Jean-Noël Avila, Jiang Xin, Jordi Mas,
Marco Paolone, Peter Krefting, Ralf Thielow, Ray Chen,
Trần Ngọc Quân, Vasco Almeida
Hi Junio,
Would you please pull the following git l10n updates.
The following changes since commit 0afbf6caa5b16dcfa3074982e5b48e27d452dbbb:
Git 2.17-rc0 (2018-03-15 15:01:05 -0700)
are available in the Git repository at:
git://github.com/git-l10n/git-po tags/l10n-2.17.0-rnd1
for you to fetch changes up to 8bb6d60dd6b6f2f72fe091cb03d571dbdc01aa3e:
l10n: de.po: translate 132 new messages (2018-03-31 13:21:09 +0200)
----------------------------------------------------------------
l10n for Git 2.17.0 round 1
----------------------------------------------------------------
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (3376t)
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Christopher Diaz Riveros (2):
l10n: es.po: fixes to Spanish translation
l10n: es.po: Update Spanish translation 2.17.0
Jean-Noël Avila (2):
l10n: fr.po v2.17.0 round 1
l10n: fr.po: v2.17.0 no fuzzy
Jiang Xin (10):
Merge branch 'merge' of https://github.com/ChrisADR/git-po into maint
l10n: git.pot: v2.17.0 round 1 (132 new, 44 removed)
Merge remote-tracking branch 'git-po/maint'
Merge branch 'master' of git://github.com/alshopov/git-po
Merge branch 'master' of https://github.com/vnwildman/git
Merge branch 'fr_v2.17.0' of git://github.com/jnavila/git
Merge branch 'master' of https://github.com/Softcatala/git-po
Merge branch 'master' of git://github.com/nafmo/git-l10n-sv
Merge branch 'fr_v2.17.0' of git://github.com/jnavila/git
l10n: zh_CN: for git v2.17.0 l10n round 1
Jordi Mas (1):
l10n: Update Catalan translation
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (3376t0f0u)
Ralf Thielow (1):
l10n: de.po: translate 132 new messages
Ray Chen (1):
l10n: zh_CN: review for git v2.17.0 l10n round 1
Trần Ngọc Quân (1):
l10n: vi.po(3376t): Updated Vietnamese translation for v2.17
po/bg.po | 4598 ++++++++++++++++++++----------------
po/ca.po | 7551 ++++++++++++++++++++++++++++++-----------------------------
po/de.po | 4670 +++++++++++++++++++-----------------
po/es.po | 5213 ++++++++++++++++++++++-------------------
po/fr.po | 4586 +++++++++++++++++++-----------------
po/git.pot | 4396 ++++++++++++++++++----------------
po/ko.po | 4583 ++++++++++++++++++++----------------
po/sv.po | 4571 ++++++++++++++++++++----------------
po/vi.po | 4591 ++++++++++++++++++++----------------
po/zh_CN.po | 4561 ++++++++++++++++++++----------------
10 files changed, 26709 insertions(+), 22611 deletions(-)
^ permalink raw reply [relevance 5%]
* What's cooking in git.git (Mar 2018, #06; Fri, 30)
@ 2018-03-30 20:38 1% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-03-30 20:38 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Git 2.17 final is expected to be tagged by early next week.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* jh/partial-clone (2018-03-25) 1 commit
(merged to 'next' on 2018-03-28 at 2a0a7aef8e)
+ unpack-trees: release oid_array after use in check_updates()
Hotfix.
--------------------------------------------------
[New Topics]
* rs/status-with-removed-submodule (2018-03-28) 1 commit
(merged to 'next' on 2018-03-30 at 8a7b618bc1)
+ submodule: check for NULL return of get_submodule_ref_store()
"git submodule status" misbehaved on a submodule that has been
removed from the working tree.
Will cook in 'next'.
* lv/tls-1.3 (2018-03-29) 1 commit
(merged to 'next' on 2018-03-30 at 4f13731408)
+ http: allow use of TLS 1.3
When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
Will cook in 'next'.
* nd/warn-more-for-devs (2018-03-29) 3 commits
- Makefile: add EAGER_DEVELOPER mode
- Makefile: detect compiler and enable more warnings in DEVELOPER=1
- connect.c: mark die_initial_contact() NORETURN
The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make EAGER_DEVELOPER=YesPlease"
available now, for those who want to help fixing warnings we
usually ignore.
Will merge to 'next'.
* sb/submodule-move-nested (2018-03-29) 6 commits
- submodule: fixup nested submodules after moving the submodule
- submodule-config: remove submodule_from_cache
- submodule-config: add repository argument to submodule_from_{name, path}
- submodule-config: allow submodule_free to handle arbitrary repositories
- grep: remove "repo" arg from non-supporting funcs
- submodule.h: drop declaration of connect_work_tree_and_git_dir
(this branch uses nd/remove-ignore-env-field and sb/object-store; is tangled with sb/packfiles-in-repository.)
Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* tb/config-type (2018-03-29) 1 commit
- builtin/config.c: prefer `--type=bool` over `--bool`, etc.
(this branch is used by tb/config-default.)
The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
Will merge to 'next'.
* tb/config-default (2018-03-29) 3 commits
- builtin/config: introduce `color` type specifier
- config.c: introduce 'git_config_color' to parse ANSI colors
- builtin/config: introduce `--default`
(this branch uses tb/config-type.)
"git config --get" learned the "--default" option, to help the
calling script. Building on top of the tb/config-type topic, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* eb/cred-helper-ignore-sigpipe (2018-03-29) 1 commit
(merged to 'next' on 2018-03-30 at c48e98c1b1)
+ credential: ignore SIGPIPE when writing to credential helpers
When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
Will cook in 'next'.
* jk/flockfile-stdio (2018-03-30) 1 commit
- config: move flockfile() closer to unlocked functions
* jk/relative-directory-fix (2018-03-30) 5 commits
- refs: use chdir_notify to update cached relative paths
- set_work_tree: use chdir_notify
- add chdir-notify API
- trace.c: export trace_setup_key
- set_git_dir: die when setenv() fails
--------------------------------------------------
[Stalled]
* sb/blame-color (2018-02-13) 3 commits
- builtin/blame: highlight recently changed lines
- builtin/blame: add option to color metadata fields separately
- builtin/blame: dim uninteresting metadata
Expecting a reroll.
cf. https://public-inbox.org/git/20171110011002.10179-1-sbeller@google.com/#t
error messages are funny, can segfault, ...
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ds/bsearch-hash (2018-03-25) 4 commits
(merged to 'next' on 2018-03-29 at 561d5577a7)
+ sha1_name: use bsearch_pack() in unique_in_pack()
+ sha1_name: use bsearch_pack() for abbreviations
+ packfile: define and use bsearch_pack()
+ sha1_name: convert struct min_abbrev_data to object_id
(this branch uses bc/object-id.)
Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
Will cook in 'next'.
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Is this ready for 'next'?
* jk/diff-highlight-graph-fix (2018-03-21) 7 commits
(merged to 'next' on 2018-03-29 at eb995f66e3)
+ diff-highlight: detect --graph by indent
+ diff-highlight: use flush() helper consistently
+ diff-highlight: test graphs with --color
+ diff-highlight: test interleaved parallel lines of history
+ diff-highlight: prefer "echo" to "cat" in tests
+ diff-highlight: use test_tick in graph test
+ diff-highlight: correct test graph diagram
"diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
Will cook in 'next'.
* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
- ref-filter: libify get_ref_atom_value()
- ref-filter: add return value to parsers
- ref-filter: change parsing function error handling
- ref-filter: add return value && strbuf to handlers
- ref-filter: start adding strbufs with errors
- ref-filter: add shortcut to work with strbufs
Code restructuring, in preparation for further work.
Will merge to 'next'.
* ab/doc-hash-brokenness (2018-03-27) 2 commits
(merged to 'next' on 2018-03-29 at e9b2f5cf4a)
+ doc hash-function-transition: clarify what SHAttered means
+ doc hash-function-transition: clarify how older gits die on NewHash
Doc updates.
Will cook in 'next'.
* ab/drop-contrib-examples (2018-03-26) 1 commit
(merged to 'next' on 2018-03-29 at 9d8a7603b5)
+ Remove contrib/examples/*
Will cook in 'next'.
* bc/hash-independent-tests (2018-03-26) 10 commits
(merged to 'next' on 2018-03-29 at 11179d9b71)
+ t2107: abstract away SHA-1-specific constants
+ t2101: abstract away SHA-1-specific constants
+ t2101: modernize test style
+ t2020: abstract away SHA-1 specific constants
+ t1507: abstract away SHA-1-specific constants
+ t1411: abstract away SHA-1-specific constants
+ t1405: sort reflog entries in a hash-independent way
+ t1300: abstract away SHA-1-specific constants
+ t1304: abstract away SHA-1-specific constants
+ t1011: abstract away SHA-1-specific constants
Tests that rely on the exact hardcoded values of object names have
been updated in preparation for hash function migration.
Will cook in 'next'.
* cc/perf-aggregate-sort (2018-03-27) 2 commits
(merged to 'next' on 2018-03-29 at 0251068bac)
+ perf/aggregate: add --sort-by=regression option
+ perf/aggregate: add display_dir()
Perf-test update.
Will cook in 'next'.
* jc/test-must-be-empty (2018-03-27) 1 commit
(merged to 'next' on 2018-03-29 at 2e64650f23)
+ test_must_be_empty: simplify file existence check
Test helper update.
Will cook in 'next'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
(merged to 'next' on 2018-03-29 at 552cef7913)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
* jm/mem-pool (2018-03-27) 3 commits
(merged to 'next' on 2018-03-29 at bfce05db6e)
+ Move reusable parts of memory pool into its own file
+ fast-import: introduce mem_pool type
+ fast-import: rename mem_pool type to mp_block
An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
Will cook in 'next'.
* js/runtime-prefix-windows (2018-03-27) 2 commits
- mingw/msvc: use the new-style RUNTIME_PREFIX helper
- exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
(this branch uses dj/runtime-prefix.)
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Is this, together with the dj/runtime-prefix topic, ready for
'next'?
* nd/combined-test-helper (2018-03-27) 36 commits
(merged to 'next' on 2018-03-30 at ea73d57c30)
+ t/helper: merge test-write-cache into test-tool
+ t/helper: merge test-wildmatch into test-tool
+ t/helper: merge test-urlmatch-normalization into test-tool
+ t/helper: merge test-subprocess into test-tool
+ t/helper: merge test-submodule-config into test-tool
+ t/helper: merge test-string-list into test-tool
+ t/helper: merge test-strcmp-offset into test-tool
+ t/helper: merge test-sigchain into test-tool
+ t/helper: merge test-sha1-array into test-tool
+ t/helper: merge test-scrap-cache-tree into test-tool
+ t/helper: merge test-run-command into test-tool
+ t/helper: merge test-revision-walking into test-tool
+ t/helper: merge test-regex into test-tool
+ t/helper: merge test-ref-store into test-tool
+ t/helper: merge test-read-cache into test-tool
+ t/helper: merge test-prio-queue into test-tool
+ t/helper: merge test-path-utils into test-tool
+ t/helper: merge test-online-cpus into test-tool
+ t/helper: merge test-mktemp into test-tool
+ t/helper: merge (unused) test-mergesort into test-tool
+ t/helper: merge (unused) test-match-trees into test-tool
+ t/helper: merge test-index-version into test-tool
+ t/helper: merge test-hashmap into test-tool
+ t/helper: merge test-genrandom into test-tool
+ t/helper: merge test-example-decorate into test-tool
+ t/helper: merge test-dump-split-index into test-tool
+ t/helper: merge test-dump-cache-tree into test-tool
+ t/helper: merge test-drop-caches into test-tool
+ t/helper: merge (unused) test-delta into test-tool
+ t/helper: merge test-date into test-tool
+ t/helper: merge test-ctype into test-tool
+ t/helper: merge test-config into test-tool
+ t/helper: merge test-lazy-init-name-hash into test-tool
+ t/helper: merge test-sha1 into test-tool
+ t/helper: merge test-chmtime into test-tool
+ t/helper: add an empty test-tool program
Small test-helper programs have been consolidated into a single
binary.
Will cook in 'next'.
* nd/parseopt-completion-more (2018-03-25) 8 commits
(merged to 'next' on 2018-03-29 at 9007b165e2)
+ completion: use __gitcomp_builtin in _git_cherry
+ completion: use __gitcomp_builtin in _git_ls_tree
+ completion: delete option-only completion commands
+ completion: add --option completion for most builtin commands
+ completion: factor out _git_xxx calling code
+ completion: mention the oldest version we need to support
+ git.c: add hidden option --list-parseopt-builtins
+ git.c: move cmd_struct declaration up
The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
Will cook in 'next'.
* nd/trace-with-env (2018-03-25) 1 commit
(merged to 'next' on 2018-03-29 at 6890e2c39b)
+ run-command: use strbuf_addstr() for adding a string to a strbuf
Code cleanup.
Will cook in 'next'.
* pk/test-avoid-pipe-hiding-exit-status (2018-03-28) 1 commit
(merged to 'next' on 2018-03-30 at 4f3df09139)
+ test: avoid pipes in git related commands for test
Test cleanup.
Will cook in 'next'.
* ws/rebase-p (2018-03-23) 8 commits
(merged to 'next' on 2018-03-29 at d20ae8510e)
+ rebase: remove merges_option and a blank line
+ rebase: remove unused code paths from git_rebase__interactive__preserve_merges
+ rebase: remove unused code paths from git_rebase__interactive
+ rebase: add and use git_rebase__interactive__preserve_merges
+ rebase: extract functions out of git_rebase__interactive
+ rebase: reindent function git_rebase__interactive
+ rebase: update invocation of rebase dot-sourced scripts
+ rebase-interactive: simplify pick_on_preserving_merges
Code clean-up.
Will cook in 'next'.
* yk/filter-branch-non-committish-refs (2018-03-25) 1 commit
(merged to 'next' on 2018-03-29 at 8ac3806bcf)
+ filter-branch: fix errors caused by refs that point at non-committish
when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
Will cook in 'next'.
* ys/bisect-object-id-missing-conversion-fix (2018-03-25) 1 commit
(merged to 'next' on 2018-03-29 at 7d988b57d4)
+ bisect: use oid_to_hex() for converting object_id hashes to hex strings
Code clean-up.
Will cook in 'next'.
* ml/filter-branch-no-op-error (2018-03-15) 1 commit
(merged to 'next' on 2018-03-15 at ba8ac48dec)
+ filter-branch: return 2 when nothing to rewrite
"git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
Will cook in 'next'.
* ab/install-symlinks (2018-03-15) 3 commits
(merged to 'next' on 2018-03-15 at 99d6bd6cb3)
+ Makefile: optionally symlink libexec/git-core binaries to bin/git
+ Makefile: add a gitexecdir_relative variable
+ Makefile: fix broken bindir_relative variable
The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
Will cook in 'next'.
* tg/stash-untracked-with-pathspec-fix (2018-03-21) 4 commits
(merged to 'next' on 2018-03-22 at 73c4bef74f)
+ stash: drop superfluos pathspec parameter
(merged to 'next' on 2018-03-21 at 8f5b5ab131)
+ stash push -u: don't create empty stash
+ stash push: avoid printing errors
+ stash: fix nonsense pipeline
"git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
Will cook in 'next'.
* pw/rebase-keep-empty-fixes (2018-03-29) 3 commits
- rebase: respect --no-keep-empty
- rebase -i --keep-empty: don't prune empty commits
- rebase --root: stop assuming squash_onto is unset
(this branch is used by pw/rebase-signoff.)
"git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
Will merge to 'next'.
* pw/rebase-signoff (2018-03-29) 4 commits
- rebase --keep-empty: always use interactive rebase
- rebase -p: error out if --signoff is given
- rebase: extend --signoff support
- Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
(this branch uses pw/rebase-keep-empty-fixes.)
"git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
Will merge to 'next'.
* dj/runtime-prefix (2018-03-25) 3 commits
- exec_cmd: RUNTIME_PREFIX on some POSIX systems
- Makefile: add Perl runtime prefix support
- Makefile: generate Perl header from template file
(this branch is used by js/runtime-prefix-windows.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
Is this, together with the js/runtime-prefix-windows topic, ready
for 'next'?
* ti/fetch-everything-local-optim (2018-03-14) 1 commit
(merged to 'next' on 2018-03-15 at 2be87aa7a7)
+ fetch-pack.c: use oidset to check existence of loose object
A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
Will cook in 'next'.
* ab/nuke-emacs-contrib (2018-03-13) 1 commit
(merged to 'next' on 2018-03-15 at 13eb4e2d8b)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been removed.
Will cook in 'next'.
* bc/object-id (2018-03-14) 36 commits
(merged to 'next' on 2018-03-20 at f1800a33ff)
+ convert: convert to struct object_id
+ sha1_file: introduce a constant for max header length
+ Convert lookup_replace_object to struct object_id
+ sha1_file: convert read_sha1_file to struct object_id
+ sha1_file: convert read_object_with_reference to object_id
+ tree-walk: convert tree entry functions to object_id
+ streaming: convert istream internals to struct object_id
+ tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
+ builtin/notes: convert static functions to object_id
+ builtin/fmt-merge-msg: convert remaining code to object_id
+ sha1_file: convert sha1_object_info* to object_id
+ Convert remaining callers of sha1_object_info_extended to object_id
+ packfile: convert unpack_entry to struct object_id
+ sha1_file: convert retry_bad_packed_offset to struct object_id
+ sha1_file: convert assert_sha1_type to object_id
+ builtin/mktree: convert to struct object_id
+ streaming: convert open_istream to use struct object_id
+ sha1_file: convert check_sha1_signature to struct object_id
+ sha1_file: convert read_loose_object to use struct object_id
+ builtin/index-pack: convert struct ref_delta_entry to object_id
+ archive: convert sha1_file_to_archive to struct object_id
+ archive: convert write_archive_entry_fn_t to object_id
+ builtin/mktag: convert to struct object_id
+ replace_object: convert struct replace_object to object_id
+ send-pack: convert remaining functions to struct object_id
+ http-walker: convert struct object_request to use struct object_id
+ Convert find_unique_abbrev* to struct object_id
+ wt-status: convert struct wt_status_state to object_id
+ strbuf: convert strbuf_add_unique_abbrev to use struct object_id
+ ref-filter: convert grab_objectname to struct object_id
+ tree: convert read_tree_recursive to struct object_id
+ resolve-undo: convert struct resolve_undo_info to object_id
+ cache-tree: convert remnants to struct object_id
+ cache-tree: convert write_*_as_tree to object_id
+ builtin/write-tree: convert to struct object_id
+ bulk-checkin: convert index_bulk_checkin to struct object_id
(this branch is used by ds/bsearch-hash.)
Conversion from uchar[20] to struct object_id continues.
Will cook in 'next'.
* ma/shortlog-revparse (2018-03-15) 3 commits
(merged to 'next' on 2018-03-15 at 2c2de7eb95)
+ shortlog: disallow left-over arguments outside repo
+ shortlog: add usage-string for stdin-reading
+ git-shortlog.txt: reorder usages
"git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
Will cook in 'next'.
* ab/pcre-v2 (2018-03-14) 3 commits
(merged to 'next' on 2018-03-15 at e77b116903)
+ Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
+ configure: detect redundant --with-libpcre & --with-libpcre1
+ configure: fix a regression in PCRE v1 detection
Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
Will cook in 'next'.
* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
- Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
- git-gui: search for all current SSH key types
"git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
- Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
- git-gui: bind CTRL/CMD+numpad ENTER to do_commit
"git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
* cb/git-gui-ttk-style (2018-03-05) 2 commits
- Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
- git-gui: workaround ttk:style theme use
"git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
* nd/pack-objects-pack-struct (2018-03-26) 13 commits
- pack-objects: reorder members to shrink struct object_entry
- pack-objects: shrink delta_size field in struct object_entry
- pack-objects: shrink size field in struct object_entry
- pack-objects: clarify the use of object_entry::size
- pack-objects: don't check size when the object is bad
- pack-objects: shrink z_delta_size field in struct object_entry
- pack-objects: refer to delta objects by index instead of pointer
- pack-objects: move in_pack out of struct object_entry
- pack-objects: move in_pack_pos out of struct object_entry
- pack-objects: use bitfield for object_entry::depth
- pack-objects: use bitfield for object_entry::dfs_state
- pack-objects: turn type and in_pack_type to bitfields
- pack-objects: a bit of document about struct object_entry
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* nd/repack-keep-pack (2018-03-26) 7 commits
- pack-objects: show some progress when counting kept objects
- gc --auto: exclude base pack if not enough mem to "repack -ad"
- gc: handle a corner case in gc.bigPackThreshold
- gc: add gc.bigPackThreshold config
- gc: add --keep-largest-pack option
- repack: add --keep-pack option
- t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
Reroll exists, but it seems to be still slushy.
cf. <20180316192745.19557-1-pclouds@gmail.com>
* nd/worktree-prune (2018-03-15) 3 commits
(merged to 'next' on 2018-03-20 at e2d9677b20)
+ worktree prune: improve prune logic when worktree is moved
+ worktree: delete dead code
+ gc.txt: more details about what gc does
The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
Will cook in 'next'.
* pw/add-p-select (2018-03-16) 3 commits
(merged to 'next' on 2018-03-30 at eae69f5ded)
+ add -p: optimize line selection for short hunks
+ add -p: allow line selection to be inverted
+ add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Will cook in 'next'.
* ld/p4-unshelve (2018-02-22) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will hold, perhaps drop and use format-change that uses a proper "diff".
cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
* ps/contains-id-error-message (2018-03-22) 1 commit
(merged to 'next' on 2018-03-22 at 3bb1dcd506)
+ parse-options: do not show usage upon invalid option value
"git tag --contains no-such-commit" gave a full list of options
after giving an error message.
Will cook in 'next'.
* nd/remove-ignore-env-field (2018-03-23) 6 commits
(merged to 'next' on 2018-03-23 at ba9d0f2565)
+ repository.h: add comment and clarify repo_set_gitdir
(merged to 'next' on 2018-03-15 at 802b6ea1cb)
+ repository: delete ignore_env member
+ sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
+ repository.c: delete dead functions
+ repository.c: move env-related setup code back to environment.c
+ repository: initialize the_repository in main()
(this branch is used by sb/object-store, sb/packfiles-in-repository and sb/submodule-move-nested.)
Code clean-up for the "repository" abstraction.
Will cook in 'next'.
* sb/object-store (2018-03-26) 27 commits
(merged to 'next' on 2018-03-30 at 93e3475178)
+ sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
+ sha1_file: allow map_sha1_file to handle arbitrary repositories
+ sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
+ sha1_file: allow open_sha1_file to handle arbitrary repositories
+ sha1_file: allow stat_sha1_file to handle arbitrary repositories
+ sha1_file: allow sha1_file_name to handle arbitrary repositories
+ sha1_file: add repository argument to sha1_loose_object_info
+ sha1_file: add repository argument to map_sha1_file
+ sha1_file: add repository argument to map_sha1_file_1
+ sha1_file: add repository argument to open_sha1_file
+ sha1_file: add repository argument to stat_sha1_file
+ sha1_file: add repository argument to sha1_file_name
+ sha1_file: allow prepare_alt_odb to handle arbitrary repositories
+ sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
+ sha1_file: add repository argument to prepare_alt_odb
+ sha1_file: add repository argument to link_alt_odb_entries
+ sha1_file: add repository argument to read_info_alternates
+ sha1_file: add repository argument to link_alt_odb_entry
+ sha1_file: add raw_object_store argument to alt_odb_usable
+ pack: move approximate object count to object store
+ pack: move prepare_packed_git_run_once to object store
+ object-store: close all packs upon clearing the object store
+ object-store: move packed_git and packed_git_mru to object store
+ object-store: free alt_odb_list
+ object-store: move alt_odb_list and alt_odb_tail to object store
+ object-store: migrate alternates struct and functions from cache.h
+ repository: introduce raw object store field
(this branch is used by sb/packfiles-in-repository and sb/submodule-move-nested; uses nd/remove-ignore-env-field.)
Refactoring the internal global data structure to make it possible
to open multiple repositories, work with and then close them.
Rerolled by Duy on top of a separate preliminary clean-up topic.
The resulting structure of the topics looked very sensible.
Will cook in 'next'.
* sb/packfiles-in-repository (2018-03-26) 12 commits
(merged to 'next' on 2018-03-30 at caa68db14d)
+ packfile: keep prepare_packed_git() private
+ packfile: allow find_pack_entry to handle arbitrary repositories
+ packfile: add repository argument to find_pack_entry
+ packfile: allow reprepare_packed_git to handle arbitrary repositories
+ packfile: allow prepare_packed_git to handle arbitrary repositories
+ packfile: allow prepare_packed_git_one to handle arbitrary repositories
+ packfile: add repository argument to reprepare_packed_git
+ packfile: add repository argument to prepare_packed_git
+ packfile: add repository argument to prepare_packed_git_one
+ packfile: allow install_packed_git to handle arbitrary repositories
+ packfile: allow rearrange_packed_git to handle arbitrary repositories
+ packfile: allow prepare_packed_git_mru to handle arbitrary repositories
(this branch uses nd/remove-ignore-env-field and sb/object-store; is tangled with sb/submodule-move-nested.)
Refactoring of the internal global data structure continues.
Will cook in 'next'.
* ds/commit-graph (2018-03-14) 17 commits
- SQUASH??? sparse fixes
- commit-graph: implement "--additive" option
- commit-graph: build graph from starting commits
- commit-graph: read only from specific pack-indexes
- commit: integrate commit graph with commit parsing
- commit-graph: close under reachability
- commit-graph: add core.commitGraph setting
- commit-graph: implement git commit-graph read
- commit-graph: implement 'git-commit-graph write'
- commit-graph: implement write_commit_graph()
- commit-graph: create git-commit-graph builtin
- graph: add commit graph design document
- commit-graph: add format document
- csum-file: refactor finalize_hashfile() method
- csum-file: rename hashclose() to finalize_hashfile()
- Merge branch 'jk/cached-commit-buffer' into HEAD
- Merge branch 'jt/binsearch-with-fanout' into HEAD
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
Expecting a reroll.
cf. <d76442f9-5f06-998b-8b2a-84b5ca118aaa@gmail.com>
cf. <0c2f17fa-5c0e-9539-a081-7827a6678bf1@gmail.com>
It seems that this topic is getting there.
* pc/submodule-helper-foreach (2018-02-02) 5 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: clarify the '$toplevel' variable documentation
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
Expecting a response to review comments
e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
* tg/worktree-add-existing-branch (2018-03-27) 6 commits
- t2025: rename now outdated branch name
- worktree: teach "add" to check out existing branches
- worktree: factor out dwim_branch function
- worktree: remove force_new_branch from struct add_opts
- worktree: be clearer when "add" dwim-ery kicks in
- worktree: improve message when creating a new worktree
"git worktree add" learned to check out an existing branch.
Is this ready for 'next'?
* js/rebase-recreate-merge (2018-02-23) 12 commits
(merged to 'next' on 2018-03-15 at 3d1671756f)
+ rebase -i: introduce --recreate-merges=[no-]rebase-cousins
+ pull: accept --rebase=recreate to recreate the branch topology
+ sequencer: handle post-rewrite for merge commands
+ sequencer: make refs generated by the `label` command worktree-local
+ rebase: introduce the --recreate-merges option
+ rebase-helper --make-script: introduce a flag to recreate merges
+ sequencer: fast-forward merge commits, if possible
+ sequencer: introduce the `merge` command
+ sequencer: introduce new commands to reset the revision
+ git-rebase--interactive: clarify arguments
+ sequencer: make rearrange_squash() a bit more obvious
+ sequencer: avoid using errno clobbered by rollback_lock_file()
"git rebase" learned "--recreate-merges" to transplant the whole
topology of commit graph elsewhere.
This serise has been reverted out of 'next', expecting that it will
be replaced by a reroll on top of a couple of topics by Phillip.
* bw/protocol-v2 (2018-03-15) 35 commits
(merged to 'next' on 2018-03-29 at be7f998712)
+ remote-curl: don't request v2 when pushing
+ remote-curl: implement stateless-connect command
+ http: eliminate "# service" line when using protocol v2
+ http: don't always add Git-Protocol header
+ http: allow providing extra headers for http requests
+ remote-curl: store the protocol version the server responded with
+ remote-curl: create copy of the service name
+ pkt-line: add packet_buf_write_len function
+ transport-helper: introduce stateless-connect
+ transport-helper: refactor process_connect_service
+ transport-helper: remove name parameter
+ connect: don't request v2 when pushing
+ connect: refactor git_connect to only get the protocol version once
+ fetch-pack: support shallow requests
+ fetch-pack: perform a fetch using v2
+ upload-pack: introduce fetch server command
+ push: pass ref prefixes when pushing
+ fetch: pass ref prefixes when fetching
+ ls-remote: pass ref prefixes when requesting a remote's refs
+ transport: convert transport_get_remote_refs to take a list of ref prefixes
+ transport: convert get_refs_list to take a list of ref prefixes
+ connect: request remote refs using v2
+ ls-refs: introduce ls-refs server command
+ serve: introduce git-serve
+ test-pkt-line: introduce a packet-line test helper
+ protocol: introduce enum protocol_version value protocol_v2
+ transport: store protocol version
+ connect: discover protocol version outside of get_remote_heads
+ connect: convert get_remote_heads to use struct packet_reader
+ transport: use get_refs_via_connect to get refs
+ upload-pack: factor out processing lines
+ upload-pack: convert to a builtin
+ pkt-line: add delim packet support
+ pkt-line: allow peeking a packet line without consuming it
+ pkt-line: introduce packet_read_with_status
The beginning of the next-gen transfer protocol.
Will cook in 'next'.
* ls/checkout-encoding (2018-03-16) 10 commits
- convert: add round trip check based on 'core.checkRoundtripEncoding'
- convert: add tracing for 'working-tree-encoding' attribute
- convert: check for detectable errors in UTF encodings
- convert: add 'working-tree-encoding' attribute
- utf8: add function to detect a missing UTF-16/32 BOM
- utf8: add function to detect prohibited UTF-16/32 BOM
- utf8: teach same_encoding() alternative UTF encoding names
- strbuf: add a case insensitive starts_with()
- strbuf: add xstrdup_toupper()
- strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
Expecting a reroll.
cf. <B86BE818-A385-4E0C-9AE1-1E974471CEB9@gmail.com>
* en/rename-directory-detection (2018-02-27) 29 commits
(merged to 'next' on 2018-03-06 at d42470f86e)
+ merge-recursive: ensure we write updates for directory-renamed file
+ merge-recursive: avoid spurious rename/rename conflict from dir renames
+ directory rename detection: new testcases showcasing a pair of bugs
+ merge-recursive: fix remaining directory rename + dirty overwrite cases
+ merge-recursive: fix overwriting dirty files involved in renames
+ merge-recursive: avoid clobbering untracked files with directory renames
+ merge-recursive: apply necessary modifications for directory renames
+ merge-recursive: when comparing files, don't include trees
+ merge-recursive: check for file level conflicts then get new name
+ merge-recursive: add computation of collisions due to dir rename & merging
+ merge-recursive: check for directory level conflicts
+ merge-recursive: add get_directory_renames()
+ merge-recursive: make a helper function for cleanup for handle_renames
+ merge-recursive: split out code for determining diff_filepairs
+ merge-recursive: make !o->detect_rename codepath more obvious
+ merge-recursive: fix leaks of allocated renames and diff_filepairs
+ merge-recursive: introduce new functions to handle rename logic
+ merge-recursive: move the get_renames() function
+ directory rename detection: tests for handling overwriting dirty files
+ directory rename detection: tests for handling overwriting untracked files
+ directory rename detection: miscellaneous testcases to complete coverage
+ directory rename detection: testcases exploring possibly suboptimal merges
+ directory rename detection: more involved edge/corner testcases
+ directory rename detection: testcases checking which side did the rename
+ directory rename detection: files/directories in the way of some renames
+ directory rename detection: partially renamed directory testcase/discussion
+ directory rename detection: testcases to avoid taking detection too far
+ directory rename detection: directory splitting testcases
+ directory rename detection: basic testcases
Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work.
Will cook in 'next'.
^ permalink raw reply [relevance 1%]
* What's cooking in git.git (Mar 2018, #05; Wed, 28)
@ 2018-03-28 19:58 1% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-03-28 19:58 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Git 2.17 final is expected to be tagged by early next week.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* bp/refresh-cache-ent-rehash-fix (2018-03-15) 1 commit
(merged to 'next' on 2018-03-15 at bac8745f08)
+ Fix bugs preventing adding updated cache entries to the name hash
The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.
* dp/merge-strategy-doc-fix (2018-03-19) 1 commit
(merged to 'next' on 2018-03-20 at 317e077588)
+ Documentation/merge-strategies: typofix
Doc fix.
* jh/fsck-promisors (2018-03-13) 1 commit
(merged to 'next' on 2018-03-15 at 0c283dbe5e)
+ sha1_file: restore OBJECT_INFO_QUICK functionality
A hotfix to a topic that graduated recently.
* jk/attributes-path-doc (2018-03-20) 1 commit
(merged to 'next' on 2018-03-20 at e965f0c68c)
+ doc/gitattributes: mention non-recursive behavior
Doc update.
* js/ming-strftime (2018-03-19) 1 commit
(merged to 'next' on 2018-03-20 at a9ca8172c7)
+ mingw: abort on invalid strftime formats
* jt/transfer-fsck-with-promissor (2018-03-15) 2 commits
(merged to 'next' on 2018-03-15 at 6d1ccc965b)
+ fetch-pack: do not check links for partial fetch
+ index-pack: support checking objects but not links
The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* ks/t3200-typofix (2018-03-15) 1 commit
(merged to 'next' on 2018-03-15 at 8b8d397787)
+ t/t3200: fix a typo in a test description
Test typofix.
* ma/config-page-only-in-list-mode (2018-02-21) 3 commits
(merged to 'next' on 2018-03-15 at 652430af12)
+ config: change default of `pager.config` to "on"
+ config: respect `pager.config` in list/get-mode only
+ t7006: add tests for how git config paginates
In a way similar to how "git tag" learned to honor the pager
setting only in the list mode, "git config" learned to ignore the
pager setting when it is used for setting values (i.e. when the
purpose of the operation is not to "show").
* ma/skip-writing-unchanged-index (2018-03-01) 1 commit
(merged to 'next' on 2018-03-15 at cdbbc66464)
+ write_locked_index(): add flag to avoid writing unchanged index
Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.
* ml/filter-branch-portability-fix (2018-03-19) 1 commit
(merged to 'next' on 2018-03-20 at c7c17cfc8b)
+ filter-branch: use printf instead of echo -e
Shell script portability fix.
* nd/parseopt-completion (2018-03-23) 2 commits
(merged to 'next' on 2018-03-23 at 2bee77135e)
+ t9902: disable test on the list of merge-strategies under GETTEXT_POISON
(merged to 'next' on 2018-03-22 at 279765c437)
+ completion: clear cached --options when sourcing the completion script
(this branch is used by nd/parseopt-completion-more.)
Hotfix for recently graduated topic that give help to completion
scripts from the Git subcommands that are being completed
* pc/submodule-helper (2018-03-27) 1 commit
(merged to 'next' on 2018-03-27 at 362e0ef09b)
+ submodule deinit: handle non existing pathspecs gracefully
Hotfix.
* rj/http-code-cleanup (2018-03-15) 1 commit
(merged to 'next' on 2018-03-15 at 0dfd462ff8)
+ http: fix an unused variable warning for 'curl_no_proxy'
There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.
This will become unnecessary, when we follow-through the
jk/drop-ancient-curl topic.
* rj/warning-uninitialized-fix (2018-03-20) 2 commits
(merged to 'next' on 2018-03-20 at 9ac9d02b0b)
+ read-cache: fix an -Wmaybe-uninitialized warning
+ -Wuninitialized: remove some 'init-self' workarounds
Compilation fix.
* tg/stash-doc-typofix (2018-03-27) 1 commit
(merged to 'next' on 2018-03-27 at 144a25f09c)
+ git-stash.txt: remove extra square bracket
Hotfix.
* tz/complete-tag-delete-tagname (2018-03-19) 1 commit
(merged to 'next' on 2018-03-20 at d63d45ff16)
+ completion: complete tags with git tag --delete/--verify
* tz/relnotes-1.7-on-perl (2018-03-16) 1 commit
(merged to 'next' on 2018-03-20 at ed4b26e581)
+ RelNotes: add details on Perl module changes
--------------------------------------------------
[New Topics]
* ds/bsearch-hash (2018-03-25) 4 commits
- sha1_name: use bsearch_pack() in unique_in_pack()
- sha1_name: use bsearch_pack() for abbreviations
- packfile: define and use bsearch_pack()
- sha1_name: convert struct min_abbrev_data to object_id
(this branch uses bc/object-id.)
Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
Will merge to 'next'.
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
* jk/diff-highlight-graph-fix (2018-03-21) 7 commits
- diff-highlight: detect --graph by indent
- diff-highlight: use flush() helper consistently
- diff-highlight: test graphs with --color
- diff-highlight: test interleaved parallel lines of history
- diff-highlight: prefer "echo" to "cat" in tests
- diff-highlight: use test_tick in graph test
- diff-highlight: correct test graph diagram
"diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
Will merge to 'next'.
* ot/libify-get-ref-atom-value (2018-03-21) 6 commits
- ref-filter: libify get_ref_atom_value()
- ref-filter: add return value to parsers
- ref-filter: change parsing function error handling
- ref-filter: add return value && strbuf to handlers
- ref-filter: start adding strbufs with errors
- strbuf: add shortcut to work with error messages
Code restructuring, in preparation for further work.
Will merge to 'next'.
* ab/doc-hash-brokenness (2018-03-27) 2 commits
- doc hash-function-transition: clarify what SHAttered means
- doc hash-function-transition: clarify how older gits die on NewHash
* ab/drop-contrib-examples (2018-03-26) 1 commit
- Remove contrib/examples/*
Will merge to 'next'.
* bc/hash-independent-tests (2018-03-26) 10 commits
- t2107: abstract away SHA-1-specific constants
- t2101: abstract away SHA-1-specific constants
- t2101: modernize test style
- t2020: abstract away SHA-1 specific constants
- t1507: abstract away SHA-1-specific constants
- t1411: abstract away SHA-1-specific constants
- t1405: sort reflog entries in a hash-independent way
- t1300: abstract away SHA-1-specific constants
- t1304: abstract away SHA-1-specific constants
- t1011: abstract away SHA-1-specific constants
* cc/perf-aggregate-sort (2018-03-27) 2 commits
- perf/aggregate: add --sort-by=regression option
- perf/aggregate: add display_dir()
* jc/test-must-be-empty (2018-03-27) 1 commit
- test_must_be_empty: simplify file existence check
* jh/partial-clone (2018-03-25) 1 commit
(merged to 'next' on 2018-03-28 at 2a0a7aef8e)
+ unpack-trees: release oid_array after use in check_updates()
Hotfix.
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
- branch: deprecate "-l" option
- t: switch "branch -l" to "branch --create-reflog"
- t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
* jm/mem-pool (2018-03-27) 3 commits
- Move reusable parts of memory pool into its own file
- fast-import: introduce mem_pool type
- fast-import: rename mem_pool type to mp_block
* js/runtime-prefix-windows (2018-03-27) 2 commits
- mingw/msvc: use the new-style RUNTIME_PREFIX helper
- exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
(this branch uses dj/runtime-prefix.)
* nd/combined-test-helper (2018-03-27) 36 commits
- t/helper: merge test-write-cache into test-tool
- t/helper: merge test-wildmatch into test-tool
- t/helper: merge test-urlmatch-normalization into test-tool
- t/helper: merge test-subprocess into test-tool
- t/helper: merge test-submodule-config into test-tool
- t/helper: merge test-string-list into test-tool
- t/helper: merge test-strcmp-offset into test-tool
- t/helper: merge test-sigchain into test-tool
- t/helper: merge test-sha1-array into test-tool
- t/helper: merge test-scrap-cache-tree into test-tool
- t/helper: merge test-run-command into test-tool
- t/helper: merge test-revision-walking into test-tool
- t/helper: merge test-regex into test-tool
- t/helper: merge test-ref-store into test-tool
- t/helper: merge test-read-cache into test-tool
- t/helper: merge test-prio-queue into test-tool
- t/helper: merge test-path-utils into test-tool
- t/helper: merge test-online-cpus into test-tool
- t/helper: merge test-mktemp into test-tool
- t/helper: merge (unused) test-mergesort into test-tool
- t/helper: merge (unused) test-match-trees into test-tool
- t/helper: merge test-index-version into test-tool
- t/helper: merge test-hashmap into test-tool
- t/helper: merge test-genrandom into test-tool
- t/helper: merge test-example-decorate into test-tool
- t/helper: merge test-dump-split-index into test-tool
- t/helper: merge test-dump-cache-tree into test-tool
- t/helper: merge test-drop-caches into test-tool
- t/helper: merge (unused) test-delta into test-tool
- t/helper: merge test-date into test-tool
- t/helper: merge test-ctype into test-tool
- t/helper: merge test-config into test-tool
- t/helper: merge test-lazy-init-name-hash into test-tool
- t/helper: merge test-sha1 into test-tool
- t/helper: merge test-chmtime into test-tool
- t/helper: add an empty test-tool program
* nd/parseopt-completion-more (2018-03-25) 8 commits
- completion: use __gitcomp_builtin in _git_cherry
- completion: use __gitcomp_builtin in _git_ls_tree
- completion: delete option-only completion commands
- completion: add --option completion for most builtin commands
- completion: factor out _git_xxx calling code
- completion: mention the oldest version we need to support
- git.c: add hidden option --list-parseopt-builtins
- git.c: move cmd_struct declaration up
* nd/trace-with-env (2018-03-25) 1 commit
- run-command: use strbuf_addstr() for adding a string to a strbuf
* pk/test-avoid-pipe-hiding-exit-status (2018-03-28) 1 commit
- test: avoid pipes in git related commands for test
* ws/rebase-p (2018-03-23) 8 commits
- rebase: remove merges_option and a blank line
- rebase: remove unused code paths from git_rebase__interactive__preserve_merges
- rebase: remove unused code paths from git_rebase__interactive
- rebase: add and use git_rebase__interactive__preserve_merges
- rebase: extract functions out of git_rebase__interactive
- rebase: reindent function git_rebase__interactive
- rebase: update invocation of rebase dot-sourced scripts
- rebase-interactive: simplify pick_on_preserving_merges
Code clean-up.
Will merge to 'next'.
* yk/filter-branch-non-committish-refs (2018-03-25) 1 commit
- filter-branch: fix errors caused by refs that point at non-committish
* ys/bisect-object-id-missing-conversion-fix (2018-03-25) 1 commit
- bisect: use oid_to_hex() for converting object_id hashes to hex strings
Code clean-up.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* sb/blame-color (2018-02-13) 3 commits
- builtin/blame: highlight recently changed lines
- builtin/blame: add option to color metadata fields separately
- builtin/blame: dim uninteresting metadata
Expecting a reroll.
cf. https://public-inbox.org/git/20171110011002.10179-1-sbeller@google.com/#t
error messages are funny, can segfault, ...
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ml/filter-branch-no-op-error (2018-03-15) 1 commit
(merged to 'next' on 2018-03-15 at ba8ac48dec)
+ filter-branch: return 2 when nothing to rewrite
"git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
Will cook in 'next'.
* ab/install-symlinks (2018-03-15) 3 commits
(merged to 'next' on 2018-03-15 at 99d6bd6cb3)
+ Makefile: optionally symlink libexec/git-core binaries to bin/git
+ Makefile: add a gitexecdir_relative variable
+ Makefile: fix broken bindir_relative variable
The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
Will cook in 'next'.
* tg/stash-untracked-with-pathspec-fix (2018-03-21) 4 commits
(merged to 'next' on 2018-03-22 at 73c4bef74f)
+ stash: drop superfluos pathspec parameter
(merged to 'next' on 2018-03-21 at 8f5b5ab131)
+ stash push -u: don't create empty stash
+ stash push: avoid printing errors
+ stash: fix nonsense pipeline
"git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
Will cook in 'next'.
* pw/rebase-keep-empty-fixes (2018-03-20) 4 commits
- SQUASH???
- rebase: respect --no-keep-empty
- rebase -i --keep-empty: don't prune empty commits
- rebase --root: stop assuming squash_onto is unset
(this branch is used by pw/rebase-signoff.)
"git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
* pw/rebase-signoff (2018-03-20) 4 commits
- rebase --keep-empty: always use interactive rebase
- rebase -p: error out if --signoff is given
- rebase: extend --signoff support
- Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
(this branch uses pw/rebase-keep-empty-fixes.)
"git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* dj/runtime-prefix (2018-03-25) 3 commits
- exec_cmd: RUNTIME_PREFIX on some POSIX systems
- Makefile: add Perl runtime prefix support
- Makefile: generate Perl header from template file
(this branch is used by js/runtime-prefix-windows.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* ti/fetch-everything-local-optim (2018-03-14) 1 commit
(merged to 'next' on 2018-03-15 at 2be87aa7a7)
+ fetch-pack.c: use oidset to check existence of loose object
A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
Will cook in 'next'.
* ab/nuke-emacs-contrib (2018-03-13) 1 commit
(merged to 'next' on 2018-03-15 at 13eb4e2d8b)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been removed.
Will cook in 'next'.
* bc/object-id (2018-03-14) 36 commits
(merged to 'next' on 2018-03-20 at f1800a33ff)
+ convert: convert to struct object_id
+ sha1_file: introduce a constant for max header length
+ Convert lookup_replace_object to struct object_id
+ sha1_file: convert read_sha1_file to struct object_id
+ sha1_file: convert read_object_with_reference to object_id
+ tree-walk: convert tree entry functions to object_id
+ streaming: convert istream internals to struct object_id
+ tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
+ builtin/notes: convert static functions to object_id
+ builtin/fmt-merge-msg: convert remaining code to object_id
+ sha1_file: convert sha1_object_info* to object_id
+ Convert remaining callers of sha1_object_info_extended to object_id
+ packfile: convert unpack_entry to struct object_id
+ sha1_file: convert retry_bad_packed_offset to struct object_id
+ sha1_file: convert assert_sha1_type to object_id
+ builtin/mktree: convert to struct object_id
+ streaming: convert open_istream to use struct object_id
+ sha1_file: convert check_sha1_signature to struct object_id
+ sha1_file: convert read_loose_object to use struct object_id
+ builtin/index-pack: convert struct ref_delta_entry to object_id
+ archive: convert sha1_file_to_archive to struct object_id
+ archive: convert write_archive_entry_fn_t to object_id
+ builtin/mktag: convert to struct object_id
+ replace_object: convert struct replace_object to object_id
+ send-pack: convert remaining functions to struct object_id
+ http-walker: convert struct object_request to use struct object_id
+ Convert find_unique_abbrev* to struct object_id
+ wt-status: convert struct wt_status_state to object_id
+ strbuf: convert strbuf_add_unique_abbrev to use struct object_id
+ ref-filter: convert grab_objectname to struct object_id
+ tree: convert read_tree_recursive to struct object_id
+ resolve-undo: convert struct resolve_undo_info to object_id
+ cache-tree: convert remnants to struct object_id
+ cache-tree: convert write_*_as_tree to object_id
+ builtin/write-tree: convert to struct object_id
+ bulk-checkin: convert index_bulk_checkin to struct object_id
(this branch is used by ds/bsearch-hash.)
Conversion from uchar[20] to struct object_id continues.
Will cook in 'next'.
* ma/shortlog-revparse (2018-03-15) 3 commits
(merged to 'next' on 2018-03-15 at 2c2de7eb95)
+ shortlog: disallow left-over arguments outside repo
+ shortlog: add usage-string for stdin-reading
+ git-shortlog.txt: reorder usages
"git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
Will cook in 'next'.
* ab/pcre-v2 (2018-03-14) 3 commits
(merged to 'next' on 2018-03-15 at e77b116903)
+ Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
+ configure: detect redundant --with-libpcre & --with-libpcre1
+ configure: fix a regression in PCRE v1 detection
Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
Will cook in 'next'.
* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
- Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
- git-gui: search for all current SSH key types
"git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
- Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
- git-gui: bind CTRL/CMD+numpad ENTER to do_commit
"git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
* cb/git-gui-ttk-style (2018-03-05) 2 commits
- Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
- git-gui: workaround ttk:style theme use
"git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
* nd/pack-objects-pack-struct (2018-03-26) 13 commits
- pack-objects: reorder members to shrink struct object_entry
- pack-objects: shrink delta_size field in struct object_entry
- pack-objects: shrink size field in struct object_entry
- pack-objects: clarify the use of object_entry::size
- pack-objects: don't check size when the object is bad
- pack-objects: shrink z_delta_size field in struct object_entry
- pack-objects: refer to delta objects by index instead of pointer
- pack-objects: move in_pack out of struct object_entry
- pack-objects: move in_pack_pos out of struct object_entry
- pack-objects: use bitfield for object_entry::depth
- pack-objects: use bitfield for object_entry::dfs_state
- pack-objects: turn type and in_pack_type to bitfields
- pack-objects: a bit of document about struct object_entry
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* nd/repack-keep-pack (2018-03-26) 7 commits
- pack-objects: show some progress when counting kept objects
- gc --auto: exclude base pack if not enough mem to "repack -ad"
- gc: handle a corner case in gc.bigPackThreshold
- gc: add gc.bigPackThreshold config
- gc: add --keep-largest-pack option
- repack: add --keep-pack option
- t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
Reroll exists, but it seems to be still slushy.
cf. <20180316192745.19557-1-pclouds@gmail.com>
* nd/worktree-prune (2018-03-15) 3 commits
(merged to 'next' on 2018-03-20 at e2d9677b20)
+ worktree prune: improve prune logic when worktree is moved
+ worktree: delete dead code
+ gc.txt: more details about what gc does
The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
Will cook in 'next'.
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
* ld/p4-unshelve (2018-02-22) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will hold, perhaps drop and use format-change that uses a proper "diff".
cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
* ps/contains-id-error-message (2018-03-22) 1 commit
(merged to 'next' on 2018-03-22 at 3bb1dcd506)
+ parse-options: do not show usage upon invalid option value
"git tag --contains no-such-commit" gave a full list of options
after giving an error message.
Will cook in 'next'.
* nd/remove-ignore-env-field (2018-03-23) 6 commits
(merged to 'next' on 2018-03-23 at ba9d0f2565)
+ repository.h: add comment and clarify repo_set_gitdir
(merged to 'next' on 2018-03-15 at 802b6ea1cb)
+ repository: delete ignore_env member
+ sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
+ repository.c: delete dead functions
+ repository.c: move env-related setup code back to environment.c
+ repository: initialize the_repository in main()
(this branch is used by sb/object-store and sb/packfiles-in-repository.)
Code clean-up for the "repository" abstraction.
Will cook in 'next'.
* sb/object-store (2018-03-26) 27 commits
- sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
- sha1_file: allow map_sha1_file to handle arbitrary repositories
- sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
- sha1_file: allow open_sha1_file to handle arbitrary repositories
- sha1_file: allow stat_sha1_file to handle arbitrary repositories
- sha1_file: allow sha1_file_name to handle arbitrary repositories
- sha1_file: add repository argument to sha1_loose_object_info
- sha1_file: add repository argument to map_sha1_file
- sha1_file: add repository argument to map_sha1_file_1
- sha1_file: add repository argument to open_sha1_file
- sha1_file: add repository argument to stat_sha1_file
- sha1_file: add repository argument to sha1_file_name
- sha1_file: allow prepare_alt_odb to handle arbitrary repositories
- sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
- sha1_file: add repository argument to prepare_alt_odb
- sha1_file: add repository argument to link_alt_odb_entries
- sha1_file: add repository argument to read_info_alternates
- sha1_file: add repository argument to link_alt_odb_entry
- sha1_file: add raw_object_store argument to alt_odb_usable
- pack: move approximate object count to object store
- pack: move prepare_packed_git_run_once to object store
- object-store: close all packs upon clearing the object store
- object-store: move packed_git and packed_git_mru to object store
- object-store: free alt_odb_list
- object-store: move alt_odb_list and alt_odb_tail to object store
- object-store: migrate alternates struct and functions from cache.h
- repository: introduce raw object store field
(this branch is used by sb/packfiles-in-repository; uses nd/remove-ignore-env-field.)
Refactoring the internal global data structure to make it possible
to open multiple repositories, work with and then close them.
Rerolled by Duy on top of a separate preliminary clean-up topic.
The resulting structure of the topics looked very sensible.
Waiting for a follow-up discussion.
* sb/packfiles-in-repository (2018-03-26) 12 commits
- packfile: keep prepare_packed_git() private
- packfile: allow find_pack_entry to handle arbitrary repositories
- packfile: add repository argument to find_pack_entry
- packfile: allow reprepare_packed_git to handle arbitrary repositories
- packfile: allow prepare_packed_git to handle arbitrary repositories
- packfile: allow prepare_packed_git_one to handle arbitrary repositories
- packfile: add repository argument to reprepare_packed_git
- packfile: add repository argument to prepare_packed_git
- packfile: add repository argument to prepare_packed_git_one
- packfile: allow install_packed_git to handle arbitrary repositories
- packfile: allow rearrange_packed_git to handle arbitrary repositories
- packfile: allow prepare_packed_git_mru to handle arbitrary repositories
(this branch uses nd/remove-ignore-env-field and sb/object-store.)
Refactoring of the internal global data structure continues.
Waiting for a follow-up discussion.
* ds/commit-graph (2018-03-14) 17 commits
- SQUASH??? sparse fixes
- commit-graph: implement "--additive" option
- commit-graph: build graph from starting commits
- commit-graph: read only from specific pack-indexes
- commit: integrate commit graph with commit parsing
- commit-graph: close under reachability
- commit-graph: add core.commitGraph setting
- commit-graph: implement git commit-graph read
- commit-graph: implement 'git-commit-graph write'
- commit-graph: implement write_commit_graph()
- commit-graph: create git-commit-graph builtin
- graph: add commit graph design document
- commit-graph: add format document
- csum-file: refactor finalize_hashfile() method
- csum-file: rename hashclose() to finalize_hashfile()
- Merge branch 'jk/cached-commit-buffer' into HEAD
- Merge branch 'jt/binsearch-with-fanout' into HEAD
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
It seems that this topic is getting there.
* pc/submodule-helper-foreach (2018-02-02) 5 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: clarify the '$toplevel' variable documentation
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
Expecting a response to review comments
e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
* tg/worktree-add-existing-branch (2018-03-27) 6 commits
- t2025: rename now outdated branch name
- worktree: teach "add" to check out existing branches
- worktree: factor out dwim_branch function
- worktree: remove force_new_branch from struct add_opts
- worktree: be clearer when "add" dwim-ery kicks in
- worktree: improve message when creating a new worktree
"git worktree add" learned to check out an existing branch.
* js/rebase-recreate-merge (2018-02-23) 12 commits
(merged to 'next' on 2018-03-15 at 3d1671756f)
+ rebase -i: introduce --recreate-merges=[no-]rebase-cousins
+ pull: accept --rebase=recreate to recreate the branch topology
+ sequencer: handle post-rewrite for merge commands
+ sequencer: make refs generated by the `label` command worktree-local
+ rebase: introduce the --recreate-merges option
+ rebase-helper --make-script: introduce a flag to recreate merges
+ sequencer: fast-forward merge commits, if possible
+ sequencer: introduce the `merge` command
+ sequencer: introduce new commands to reset the revision
+ git-rebase--interactive: clarify arguments
+ sequencer: make rearrange_squash() a bit more obvious
+ sequencer: avoid using errno clobbered by rollback_lock_file()
"git rebase" learned "--recreate-merges" to transplant the whole
topology of commit graph elsewhere.
This serise has been reverted out of 'next', expecting that it will
be replaced by a reroll on top of a couple of topics by Phillip.
* bw/protocol-v2 (2018-03-15) 35 commits
- remote-curl: don't request v2 when pushing
- remote-curl: implement stateless-connect command
- http: eliminate "# service" line when using protocol v2
- http: don't always add Git-Protocol header
- http: allow providing extra headers for http requests
- remote-curl: store the protocol version the server responded with
- remote-curl: create copy of the service name
- pkt-line: add packet_buf_write_len function
- transport-helper: introduce stateless-connect
- transport-helper: refactor process_connect_service
- transport-helper: remove name parameter
- connect: don't request v2 when pushing
- connect: refactor git_connect to only get the protocol version once
- fetch-pack: support shallow requests
- fetch-pack: perform a fetch using v2
- upload-pack: introduce fetch server command
- push: pass ref prefixes when pushing
- fetch: pass ref prefixes when fetching
- ls-remote: pass ref prefixes when requesting a remote's refs
- transport: convert transport_get_remote_refs to take a list of ref prefixes
- transport: convert get_refs_list to take a list of ref prefixes
- connect: request remote refs using v2
- ls-refs: introduce ls-refs server command
- serve: introduce git-serve
- test-pkt-line: introduce a packet-line test helper
- protocol: introduce enum protocol_version value protocol_v2
- transport: store protocol version
- connect: discover protocol version outside of get_remote_heads
- connect: convert get_remote_heads to use struct packet_reader
- transport: use get_refs_via_connect to get refs
- upload-pack: factor out processing lines
- upload-pack: convert to a builtin
- pkt-line: add delim packet support
- pkt-line: allow peeking a packet line without consuming it
- pkt-line: introduce packet_read_with_status
The beginning of the next-gen transfer protocol.
Is everybody happy with this version? One design decision with
larger consequence "to or not to build in?" has been settled in
favor of status quo, IIRC.
* ls/checkout-encoding (2018-03-16) 10 commits
- convert: add round trip check based on 'core.checkRoundtripEncoding'
- convert: add tracing for 'working-tree-encoding' attribute
- convert: check for detectable errors in UTF encodings
- convert: add 'working-tree-encoding' attribute
- utf8: add function to detect a missing UTF-16/32 BOM
- utf8: add function to detect prohibited UTF-16/32 BOM
- utf8: teach same_encoding() alternative UTF encoding names
- strbuf: add a case insensitive starts_with()
- strbuf: add xstrdup_toupper()
- strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* en/rename-directory-detection (2018-02-27) 29 commits
(merged to 'next' on 2018-03-06 at d42470f86e)
+ merge-recursive: ensure we write updates for directory-renamed file
+ merge-recursive: avoid spurious rename/rename conflict from dir renames
+ directory rename detection: new testcases showcasing a pair of bugs
+ merge-recursive: fix remaining directory rename + dirty overwrite cases
+ merge-recursive: fix overwriting dirty files involved in renames
+ merge-recursive: avoid clobbering untracked files with directory renames
+ merge-recursive: apply necessary modifications for directory renames
+ merge-recursive: when comparing files, don't include trees
+ merge-recursive: check for file level conflicts then get new name
+ merge-recursive: add computation of collisions due to dir rename & merging
+ merge-recursive: check for directory level conflicts
+ merge-recursive: add get_directory_renames()
+ merge-recursive: make a helper function for cleanup for handle_renames
+ merge-recursive: split out code for determining diff_filepairs
+ merge-recursive: make !o->detect_rename codepath more obvious
+ merge-recursive: fix leaks of allocated renames and diff_filepairs
+ merge-recursive: introduce new functions to handle rename logic
+ merge-recursive: move the get_renames() function
+ directory rename detection: tests for handling overwriting dirty files
+ directory rename detection: tests for handling overwriting untracked files
+ directory rename detection: miscellaneous testcases to complete coverage
+ directory rename detection: testcases exploring possibly suboptimal merges
+ directory rename detection: more involved edge/corner testcases
+ directory rename detection: testcases checking which side did the rename
+ directory rename detection: files/directories in the way of some renames
+ directory rename detection: partially renamed directory testcase/discussion
+ directory rename detection: testcases to avoid taking detection too far
+ directory rename detection: directory splitting testcases
+ directory rename detection: basic testcases
Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work.
Will cook in 'next'.
^ permalink raw reply [relevance 1%]
* [ANNOUNCE] Git v2.17.0-rc2
@ 2018-03-28 19:56 6% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-03-28 19:56 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.17.0-rc2 is now available for testing
at the usual places. It is comprised of 499 non-merge commits
since v2.16.0, contributed by 62 people, 19 of which are new faces.
I am hoping that we can have the final version tagged at the end of
coming weekend, before I fly out to Tokyo. I expect to be offline
most of the next week after the final is tagged.
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.17.0-rc2' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,
Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,
Lucas Werkmeister, Mathias Rav, Michele Locati, Motoki Seki,
Stefan Moch, Stephen R Guglielmo, Tatyana Krasnukha, and Thomas
Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Daniel Knittl-Frank, David Pursehouse, Derrick Stolee, Elijah
Newren, Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler,
Jeff King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin
Ågren, Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn
Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya,
Patryk Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones,
Randall S. Becker, Rasmus Villemoes, René Scharfe, Robert
P. J. Day, Stefan Beller, SZEDER Gábor, Thomas Gummerer,
Todd Zullinger, Torsten Bögershausen, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes (draft)
==============================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
* In a way similar to how "git tag" learned to honor the pager
setting only in the list mode, "git config" learned to ignore the
pager setting when it is used for setting values (i.e. when the
purpose of the operation is not to "show").
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* Perl 5.8 or greater has been required since Git 1.7.4 released in
2010, but we continued to assume some core modules may not exist and
used a conditional "eval { require <<module>> }"; we no longer do
this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
without all core modules by default (e.g. Digest::MD5, File::Temp,
File::Spec, Net::Domain, Net::SMTP). Users on such platforms may
need to install these additional modules.
* As a convenience, we install copies of Perl modules we require which
are not part of the core Perl distribution (e.g. Error and
Mail::Address). Users and packagers whose operating system provides
these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
bundled modules.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
* Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.
(merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
* The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.
(merge b8fd6008ec rj/http-code-cleanup later to maint).
* Shell script portability fix.
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
(merge 40c17eb184 ks/t3200-typofix later to maint).
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
(merge 9ee0540a40 js/ming-strftime later to maint).
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
(merge b635ed97a0 jk/attributes-path-doc later to maint).
----------------------------------------------------------------
Changes since v2.16.0 are as follows:
Adam Borowski (1):
hooks/pre-auto-gc-battery: allow gc to run on non-laptops
Alban Gruin (1):
userdiff: add built-in pattern for golang
Alex Bennée (1):
send-email: add test for Linux's get_maintainer.pl
Alexander Shopov (1):
Mark messages for translations
Andreas G. Schacker (1):
doc/read-tree: remove obsolete remark
Ben Peart (4):
dir.c: don't flag the index as dirty for changes to the untracked cache
name-hash: properly fold directory names in adjust_dirname_case()
fsmonitor: update documentation to remove reference to invalid config settings
Fix bugs preventing adding updated cache entries to the name hash
Bernhard M. Wiedemann (1):
perl: call timegm and timelocal with 4-digit year
Brandon Williams (39):
oidmap: ensure map is initialized
object_info: change member name from 'typename' to 'type_name'
object: rename function 'typename' to 'type_name'
blame: rename 'this' variables
pack-objects: rename 'this' variables
rev-parse: rename 'this' variable
submodule: indicate that 'submodule.recurse' doesn't apply to clone
diff: rename 'this' variables
apply: rename 'try' variables
apply: rename 'new' variables
checkout: rename 'new' variables
help: rename 'new' variables
pack-redundant: rename 'new' variables
reflog: rename 'new' variables
remote: rename 'new' variables
combine-diff: rename 'new' variables
commit: rename 'new' variables
diff-lib: rename 'new' variable
diff: rename 'new' variables
diffcore-delta: rename 'new' variables
entry: rename 'new' variables
http: rename 'new' variables
imap-send: rename 'new' variables
line-log: rename 'new' variables
read-cache: rename 'new' variables
ref-filter: rename 'new' variables
remote: rename 'new' variables
split-index: rename 'new' variables
submodule: rename 'new' variables
trailer: rename 'new' variables
unpack-trees: rename 'new' variables
init-db: rename 'template' variables
environment: rename 'template' variables
diff: rename 'template' variables
environment: rename 'namespace' variables
wrapper: rename 'template' variables
tempfile: rename 'template' variables
trailer: rename 'template' variables
replace: rename 'new' variables
Christian Couder (12):
perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
perf/aggregate: refactor printing results
perf/aggregate: implement codespeed JSON output
perf/run: add conf_opts argument to get_var_from_env_or_config()
perf/run: learn about perf.codespeedOutput
perf/run: learn to send output to codespeed server
perf/run: read GIT_PERF_REPO_NAME from perf.repoName
sha1_file: remove static strbuf from sha1_file_name()
sha1_file: improve sha1_file_name() perfs
perf/aggregate: add --subsection option
perf/aggregate: add --reponame option
perf/aggregate: sort JSON fields in output
Christian Ludwig (3):
t9001: use existing helper in send-email test
send-email: rename variable for clarity
send-email: support separate Reply-To address
Daniel Knittl-Frank (1):
describe: prepend "tags/" when describing tags with embedded name
David Pursehouse (1):
Documentation/merge-strategies: typofix
Derrick Stolee (3):
packfile: use get_be64() for large offsets
sha1_name: fix uninitialized memory errors
revision.c: reduce object database queries
Elijah Newren (3):
Tighten and correct a few testcases for merging and cherry-picking
merge-recursive: fix logic ordering issue
merge-recursive: add explanation for src_entry and dst_entry
Eric Sunshine (5):
t5601-clone: test case-conflicting files on case-insensitive filesystem
worktree: add: fix 'post-checkout' not knowing new worktree location
git-worktree.txt: fix missing ")" typo
git-worktree.txt: fix indentation of example and text of 'add' command
t2028: fix minor error and issues in newly-added "worktree move" tests
Eric Wong (2):
fsck: fix leak when traversing trees
git-svn: control destruction order to avoid segfault
Gargi Sharma (1):
mru: Replace mru.[ch] with list.h implementation
Genki Sky (2):
rebase: add --allow-empty-message option
test-lib.sh: unset XDG_CACHE_HOME
Gregory Herrero (1):
rebase -p: fix incorrect commit message when calling `git merge`.
Jason Merrill (1):
git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.
Jeff Hostetler (12):
upload-pack: add object filtering for partial clone
fetch-pack, index-pack, transport: partial clone
fetch-pack: add --no-filter
fetch: support filters
partial-clone: define partial clone settings in config
t5616: end-to-end tests for partial clone
fetch: inherit filter-spec from partial clone
t5616: test bulk prefetch after partial fetch
stat_tracking_info: return +1 when branches not equal
status: add --[no-]ahead-behind to status and commit for V2 format.
status: update short status to respect --no-ahead-behind
status: support --no-ahead-behind in long format
Jeff King (35):
t5600: fix outdated comment about unborn HEAD
t5600: modernize style
clone: factor out dir_exists() helper
clone: do not clean up directories we didn't create
sq_quote_argv: drop maxlen parameter
trace: avoid unnecessary quoting
t5570: use ls-remote instead of clone for interp tests
t/lib-git-daemon: record daemon log
daemon: fix off-by-one in logging extended attributes
daemon: handle NULs in extended attribute string
t/lib-git-daemon: add network-protocol helpers
daemon: fix length computation in newline stripping
t0205: drop redundant test
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
correct error messages for NULL packet_read_line()
CodingGuidelines: mention "static" and "extern"
t0002: simplify error checking
describe: confirm that blobs actually exist
test-hashmap: use ALLOC_ARRAY rather than bare malloc
test-hashmap: check allocation computation for overflow
test-hashmap: use xsnprintf rather than snprintf
test-hashmap: use strbuf_getline rather than fgets
test-hashmap: simplify alloc_test_entry
test-hashmap: use "unsigned int" for hash storage
sq_dequote: fix extra consumption of source string
t5545: factor out http repository setup
remote-curl: unquote incoming push-options
commit: drop uses of get_cached_commit_buffer()
revision: drop --show-all option
t: send verbose test-helper output to fd 4
strbuf_read_file(): preserve errno across close() call
smart-http: document flush after "# service" line
t3701: add a test for interactive.diffFilter
add--interactive: detect bogus diffFilter output
doc/gitattributes: mention non-recursive behavior
Johannes Schindelin (3):
sequencer: assign only free()able strings to gpg_sign
apply: demonstrate a problem applying svn diffs
mingw: abort on invalid strftime formats
Jon Simons (1):
always check for NULL return from packet_read_line()
Jonathan Nieder (1):
perl: treat PERLLIB_EXTRA as an extra path again
Jonathan Tan (23):
extension.partialclone: introduce partial clone extension
fsck: introduce partialclone extension
fsck: support refs pointing to promisor objects
fsck: support referenced promisor objects
fsck: support promisor objects as CLI argument
index-pack: refactor writing of .keep files
introduce fetch-object: fetch one promisor object
sha1_file: support lazily fetching missing objects
rev-list: support termination at promisor objects
gc: do not repack promisor packfiles
fetch-pack: test support excluding large blobs
fetch: refactor calculation of remote list
clone: partial clone
unpack-trees: batch fetching of missing blobs
fetch-pack: restore save_commit_buffer after use
http: support cookie redaction when tracing
http: support omitting data from traces
Docs: split out long-running subprocess handshake
packfile: remove GIT_DEBUG_LOOKUP log statements
packfile: refactor hash search with fanout table
sha1_file: restore OBJECT_INFO_QUICK functionality
index-pack: support checking objects but not links
fetch-pack: do not check links for partial fetch
Juan F. Codagnone (1):
mailinfo: avoid segfault when can't open files
Junio C Hamano (22):
merge: teach -Xours/-Xtheirs to symbolic link merge
worktree: say that "add" takes an arbitrary commit in short-help
Start 2.17 cycle
Git 2.16.1
First batch after 2.16
blame: tighten command line parser
Second batch for 2.17
Third batch for 2.17
Git 2.16.2
merge: allow fast-forward when merging a tracked tag
Fourth batch for 2.17
Fifth batch for 2.17
test_must_be_empty: make sure the file exists, not just empty
untracked cache: use git_env_bool() not getenv() for customization
Sixth batch for 2.17
Seventh batch for 2.17
Eighth batch for 2.17
Git 2.17-rc0
Git 2.17-rc1
Git 2.16.3
t9902: disable test on the list of merge-strategies under GETTEXT_POISON
Git 2.17-rc2
Kaartic Sivaraam (3):
Doc/gitsubmodules: make some changes to improve readability and syntax
Doc/git-submodule: improve readability and grammar of a sentence
t/t3200: fix a typo in a test description
Kim Gybels (1):
packed_ref_cache: don't use mmap() for small files
Lucas Werkmeister (1):
daemon: add --log-destination=(stderr|syslog|none)
Martin Ågren (9):
t7006: add tests for how git config paginates
config: respect `pager.config` in list/get-mode only
config: change default of `pager.config` to "on"
sequencer: make lockfiles non-static
sequencer: always roll back lock in `do_recursive_merge()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
merge: always roll back lock in `checkout_fast_forward()`
sequencer: do not roll back lockfile unnecessarily
write_locked_index(): add flag to avoid writing unchanged index
Mathias Rav (1):
files_initial_transaction_commit(): only unlock if locked
Matthieu Moy (2):
send-email: add and use a local copy of Mail::Address
perl/Git: remove now useless email-address parsing code
Michael Haggerty (5):
struct snapshot: store `start` rather than `header_len`
create_snapshot(): use `xmemdupz()` rather than a strbuf
find_reference_location(): make function safe for empty snapshots
packed_ref_iterator_begin(): make optimization more general
load_contents(): don't try to mmap an empty file
Michele Locati (1):
filter-branch: use printf instead of echo -e
Motoki Seki (1):
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes
Mårten Kongstad (1):
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'
Nathan Payre (1):
send-email: extract email-parsing code into a subroutine
Nguyễn Thái Ngọc Duy (85):
t2203: test status output with porcelain v2 format
Use DIFF_DETECT_RENAME for detect_rename assignments
wt-status.c: coding style fix
wt-status.c: catch unhandled diff status codes
wt-status.c: rename rename-related fields in wt_status_change_data
wt-status.c: handle worktree renames
trace.c: move strbuf_release() out of print_trace_line()
add--interactive: ignore submodule changes except HEAD
read-cache.c: change type of "temp" in write_shared_index()
read-cache.c: move tempfile creation/cleanup out of write_shared_index
diff.c: flush stdout before printing rename warnings
run-command.c: introduce trace_run_command()
run-command.c: print program 'git' when tracing git_cmd mode
run-command.c: print env vars in trace_run_command()
run-command.c: print new cwd in trace_run_command()
read-cache: don't write index twice if we can't write shared index
worktree.c: add validate_worktree()
dir.c: avoid stat() in valid_cached_dir()
dir.c: fix missing dir invalidation in untracked code
format-patch: keep cover-letter diffstat wrapped in 72 columns
completion: fix completing merge strategies on non-C locales
dir.c: stop ignoring opendir() error in open_cached_dir()
format-patch: reduce patch diffstat width to 72
gitignore.txt: elaborate shell glob syntax
trace: measure where the time is spent in the index-heavy operations
diff.c: refactor pprint_rename() to use strbuf
dir.c: ignore paths containing .git when invalidating untracked cache
parse-options: support --git-completion-helper
parse-options: add OPT_xxx_F() variants
parse-options: let OPT__FORCE take optional flags argument
git-completion.bash: introduce __gitcomp_builtin
completion: use __gitcomp_builtin in _git_add
completion: use __gitcomp_builtin in _git_am
completion: use __gitcomp_builtin in _git_apply
completion: use __gitcomp_builtin in _git_branch
completion: use __gitcomp_builtin in _git_checkout
completion: use __gitcomp_builtin in _git_cherry_pick
completion: use __gitcomp_builtin in _git_clean
completion: use __gitcomp_builtin in _git_clone
completion: use __gitcomp_builtin in _git_commit
completion: use __gitcomp_builtin in _git_config
completion: use __gitcomp_builtin in _git_describe
completion: use __gitcomp_builtin in _git_difftool
completion: use __gitcomp_builtin in _git_fetch
completion: use __gitcomp_builtin in _git_fsck
completion: use __gitcomp_builtin in _git_gc
completion: use __gitcomp_builtin in _git_grep
completion: use __gitcomp_builtin in _git_help
completion: use __gitcomp_builtin in _git_init
completion: use __gitcomp_builtin in _git_ls_files
completion: use __gitcomp_builtin in _git_ls_remote
completion: use __gitcomp_builtin in _git_merge
completion: use __gitcomp_builtin in _git_merge_base
completion: use __gitcomp_builtin in _git_mv
completion: use __gitcomp_builtin in _git_name_rev
completion: use __gitcomp_builtin in _git_notes
completion: use __gitcomp_builtin in _git_pull
completion: use __gitcomp_builtin in _git_push
completion: use __gitcomp_builtin in _git_remote
remote: force completing --mirror= instead of --mirror
completion: use __gitcomp_builtin in _git_replace
completion: use __gitcomp_builtin in _git_reset
completion: use __gitcomp_builtin in _git_revert
completion: use __gitcomp_builtin in _git_rm
completion: use __gitcomp_builtin in _git_show_branch
completion: use __gitcomp_builtin in _git_status
completion: use __gitcomp_builtin in _git_tag
completion: use __gitcomp_builtin in _git_worktree
worktree.c: add update_worktree_location()
worktree move: new command
worktree move: accept destination as directory
worktree move: refuse to move worktrees with submodules
worktree remove: new command
worktree remove: allow it when $GIT_WORK_TREE is already gone
am: add --show-current-patch
rebase: add --show-current-patch
rebase: introduce and use pseudo-ref REBASE_HEAD
am: support --quit
diff: add --compact-summary
object.h: update flag allocation comment
object.h: realign object flag allocation comment
completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate
completion: simplify _git_notes
completion: complete --{reuse,reedit}-message= for all notes subcmds
completion: more subcommands in _git_notes()
Nicolas Morey-Chaisemartin (1):
tag: add --edit option
Olga Telezhnaya (3):
mru: use double-linked list from list.h
ref-filter: get rid of duplicate code
ref-filter: get rid of goto
Patryk Obara (14):
clang-format: adjust penalty for return type line break
http-push: improve error log
sha1_file: convert pretend_sha1_file to object_id
dir: convert struct sha1_stat to use object_id
sha1_file: convert hash_sha1_file to object_id
cache: clear whole hash buffer with oidclr
match-trees: convert splice_tree to object_id
commit: convert commit_tree* to object_id
notes: convert combine_notes_* to object_id
notes: convert write_notes_tree to object_id
sha1_file: convert write_sha1_file to object_id
sha1_file: convert force_object_loose to object_id
sha1_file: convert write_loose_object to object_id
sha1_file: rename hash_sha1_file_literally
Phillip Wood (25):
t3404: check intermediate squash messages
commit: move empty message checks to libgit
Add a function to update HEAD after creating a commit
commit: move post-rewrite code to libgit
commit: move print_commit_summary() to libgit
sequencer: simplify adding Signed-off-by: trailer
sequencer: load commit related config
sequencer: try to commit without forking 'git commit'
t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
sequencer: improve config handling
t7505: style fixes
t7505: add tests for cherry-pick and rebase -i/-p
sequencer: run 'prepare-commit-msg' hook
add -p: only display help for active keys
add -p: only bind search key if there's more than one hunk
add -p: improve error messages
add -i: add function to format hunk header
t3701: indent here documents
t3701: use test_write_lines and write_script
t3701: don't hard code sha1 hash values
t3701: add failing test for pathological context lines
add -p: adjust offsets of subsequent hunks when one is skipped
add -p: calculate offset delta for edited patches
add -p: fix counting when splitting and coalescing
add -p: don't rely on apply's '--recount' option
Prathamesh Chavan (2):
submodule: port submodule subcommand 'sync' from shell to C
submodule: port submodule subcommand 'deinit' from shell to C
Ramsay Jones (6):
t4151: consolidate multiple calls to test_i18ngrep
config.mak.uname: remove SPARSE_FLAGS setting for cygwin
Makefile: suppress a sparse warning for pack-revindex.c
http: fix an unused variable warning for 'curl_no_proxy'
-Wuninitialized: remove some 'init-self' workarounds
read-cache: fix an -Wmaybe-uninitialized warning
Randall S. Becker (1):
hashmap.h: remove unused variable
Rasmus Villemoes (2):
grep: move grep_source_init outside critical section
grep: simplify grep_oid and grep_file
René Scharfe (15):
commit: avoid allocation in clear_commit_marks_many()
commit: use clear_commit_marks_many() in remove_redundant()
ref-filter: use clear_commit_marks_many() in do_merge_filter()
object: add clear_commit_marks_all()
bisect: avoid using the rev_info flag leak_pending
bundle: avoid using the rev_info flag leak_pending
checkout: avoid using the rev_info flag leak_pending
revision: remove the unused flag leak_pending
commit: remove unused function clear_commit_marks_for_object_array()
describe: use strbuf_add_unique_abbrev() for adding short hashes
cocci: use format keyword instead of a literal string
cocci: simplify check for trivial format strings
check-ignore: fix mix of directories and other file types
sequencer: factor out strbuf_read_file_or_whine()
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file
Robert P. J. Day (2):
t/: correct obvious typo "detahced"
Correct mispellings of ".gitmodule" to ".gitmodules"
SZEDER Gábor (34):
travis-ci: build Git during the 'script' phase
Use MOVE_ARRAY
travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build
travis-ci: use 'set -e' in the 32 bit Linux build job
travis-ci: don't repeat the path of the cache directory
travis-ci: don't run the test suite as root in the 32 bit Linux build
travis-ci: don't fail if user already exists on 32 bit Linux build job
t5541: add 'test_i18ngrep's missing filename parameter
t5812: add 'test_i18ngrep's missing filename parameter
t6022: don't run 'git merge' upstream of a pipe
t4001: don't run 'git status' upstream of a pipe
t5510: consolidate 'grep' and 'test_i18ngrep' patterns
t5536: let 'test_i18ngrep' read the file without redirection
t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
t: validate 'test_i18ngrep's parameters
t: make 'test_i18ngrep' more informative on failure
t: document 'test_must_fail ok=<signal-name>'
t6300-for-each-ref: fix "more than one quoting style" tests
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
t: prevent '-x' tracing from interfering with test helpers' stderr
t: add means to disable '-x' tracing for individual test scripts
t1507-rev-parse-upstream: don't check the stderr of a shell function
t5536: simplify checking of messages output to stderr
t3030-merge-recursive: don't check the stderr of a subshell
t5500-fetch-pack: don't check the stderr of a subshell
t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
t5570-git-daemon: don't check the stderr of a subshell
t9903-bash-prompt: don't check the stderr of __git_ps1()
t1510-repo-setup: mark as untraceable with '-x'
t/README: add a note about don't saving stderr of compound commands
travis-ci: run tests with '-x' tracing
t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'
t9402-git-cvsserver-refs: don't check the stderr of a subshell
completion: clear cached --options when sourcing the completion script
Stefan Beller (15):
diff.h: make pickaxe_opts an unsigned bit field
diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
diff: introduce DIFF_PICKAXE_KINDS_MASK
diffcore: add a pickaxe option to find a specific blob
diff: properly error out when combining multiple pickaxe options
diff: use HAS_MULTI_BITS instead of counting bits manually
t/lib-submodule-update.sh: clarify test
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
unpack-trees: oneway_merge to update submodules
submodule: submodule_move_head omits old argument in forced case
builtin/pull: respect verbosity settings in submodules
send-email: error out when relogin delay is missing
color.h: document and modernize header
Documentation/git-status: clarify status table for porcelain mode
submodule deinit: handle non existing pathspecs gracefully
Stefan Moch (2):
t7001: add test case for --dry-run
mv: remove unneeded 'if (!show_only)'
Stephen R Guglielmo (1):
subtree: fix add and pull for GPG-signed commits
Tatyana Krasnukha (1):
apply: handle Subversion diffs with /dev/null gracefully
Thomas Gummerer (6):
stash: don't delete untracked files that match pathspec
read-cache: fix reading the shared index for other repos
split-index: don't write cache tree with null oid entries
travis: run tests with GIT_TEST_SPLIT_INDEX
reset --hard: make use of the pretty machinery
git-stash.txt: remove extra square bracket
Thomas Levesque (1):
userdiff.c: add C# async keyword in diff pattern
Todd Zullinger (5):
doc: mention 'git show' defaults to HEAD
Makefile: remove *.spec from clean target
Makefile: add NO_PERL_CPAN_FALLBACKS knob
RelNotes: add details on Perl module changes
completion: complete tags with git tag --delete/--verify
Torsten Bögershausen (1):
convert_to_git(): safe_crlf/checksafe becomes int conv_flags
Yasushi SHOJI (1):
bisect: debug: convert struct object to object_id
brian m. carlson (15):
repository: pre-initialize hash algo pointer
hash: move SHA-1 macros to hash.h
hash: create union for hash context allocation
builtin/index-pack: improve hash function abstraction
builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo
sha1_file: switch uses of SHA-1 to the_hash_algo
fast-import: switch various uses of SHA-1 to the_hash_algo
pack-check: convert various uses of SHA-1 to abstract forms
pack-write: switch various SHA-1 values to abstract forms
read-cache: abstract away uses of SHA-1
csum-file: rename sha1file to hashfile
csum-file: abstract uses of SHA-1
bulk-checkin: abstract SHA-1 usage
hash: update obsolete reference to SHA1_HEADER
docs/interpret-trailers: fix agreement error
Ævar Arnfjörð Bjarmason (53):
Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto
Makefile: under "make dist", include the sha1collisiondetection submodule
sha1dc_git.h: re-arrange an ifdef chain for a subsequent change
Makefile: replace perl/Makefile.PL with simple make rules
commit doc: document that -c, -C, -F and --fixup with -m error
commit: add support for --fixup <commit> -m"<extra message>"
perl: avoid *.pmc and fix Error.pm further
perf: amend the grep tests to test grep.threads
cat-file doc: document that -e will return some output
status: add a failing test showing a core.untrackedCache bug
wildmatch test: indent with tabs, not spaces
wildmatch test: use more standard shell style
wildmatch test: don't try to vertically align our output
wildmatch test: use a paranoia pattern from nul_match()
wildmatch test: remove dead fnmatch() test code
wildmatch test: use test_must_fail, not ! for test-wildmatch
wildmatch test: perform all tests under all wildmatch() modes
wildmatch test: create & test files on disk in addition to in-memory
test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
fetch: don't redundantly NULL something calloc() gave us
fetch: trivially refactor assignment to ref_nr
fetch: stop accessing "remote" variable indirectly
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch tests: refactor in preparation for testing tag pruning
fetch tests: re-arrange arguments for future readability
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: test --prune and refspec interaction
fetch tests: double quote a variable for interpolation
fetch tests: expand case/esac for later change
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
git fetch doc: add a new section to explain the ins & outs of pruning
git remote doc: correct dangerous lies about what prune does
git-fetch & config doc: link to the new PRUNING section
fetch tests: add scaffolding for the new fetch.pruneTags
fetch: add a --prune-tags option and fetch.pruneTags config
fetch: make the --prune-tags work with <url>
update-index doc: note a fixed bug in the untracked cache
update-index doc: note the caveat with "could not open..."
perl: *.pm files should not have the executable bit
Git.pm: remove redundant "use strict" from sub-package
Git.pm: add the "use warnings" pragma
commit: run git gc --auto just before the post-commit hook
gitweb: hard-depend on the Digest::MD5 5.8 module
Git.pm: hard-depend on the File::{Temp,Spec} modules
git-send-email: unconditionally use Net::{SMTP,Domain}
perl: update our ancient copy of Error.pm
perl: update our copy of Mail::Address
perl: move CPAN loader wrappers to another namespace
perl: generalize the Git::LoadCPAN facility
perl: move the perl/Git/FromCPAN tree to perl/FromCPAN
perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
git manpage: note git-security@googlegroups.com
^ permalink raw reply [relevance 6%]
* [ANNOUNCE] Git v2.17.0-rc1
@ 2018-03-21 19:50 2% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-03-21 19:50 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.17.0-rc1 is now available for testing
at the usual places. It is comprised of 493 non-merge commits
since v2.16.0, contributed by 62 people, 19 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.17.0-rc1' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,
Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,
Lucas Werkmeister, Mathias Rav, Michele Locati, Motoki Seki,
Stefan Moch, Stephen R Guglielmo, Tatyana Krasnukha, and Thomas
Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Daniel Knittl-Frank, David Pursehouse, Derrick Stolee, Elijah
Newren, Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler,
Jeff King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin
Ågren, Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn
Thái Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya,
Patryk Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones,
Randall S. Becker, Rasmus Villemoes, René Scharfe, Robert
P. J. Day, Stefan Beller, SZEDER Gábor, Thomas Gummerer,
Todd Zullinger, Torsten Bögershausen, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes (draft)
==============================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
* In a way similar to how "git tag" learned to honor the pager
setting only in the list mode, "git config" learned to ignore the
pager setting when it is used for setting values (i.e. when the
purpose of the operation is not to "show").
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* Perl 5.8 or greater has been required since Git 1.7.4 released in
2010, but we continued to assume some core modules may not exist and
used a conditional "eval { require <<module>> }"; we no longer do
this. Some platforms (Fedora/RedHat/CentOS, for example) ship Perl
without all core modules by default (e.g. Digest::MD5, File::Temp,
File::Spec, Net::Domain, Net::SMTP). Users on such platforms may
need to install these additional modules.
* As a convenience, we install copies of Perl modules we require which
are not part of the core Perl distribution (e.g. Error and
Mail::Address). Users and packagers whose operating system provides
these modules can set NO_PERL_CPAN_FALLBACKS to avoid installing the
bundled modules.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
* Internal API clean-up to allow write_locked_index() optionally skip
writing the in-core index when it is not modified.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* The codepath to replace an existing entry in the index had a bug in
updating the name hash structure, which has been fixed.
(merge 0e267b7a24 bp/refresh-cache-ent-rehash-fix later to maint).
* The transfer.fsckobjects configuration tells "git fetch" to
validate the data and connected-ness of objects in the received
pack; the code to perform this check has been taught about the
narrow clone's convention that missing objects that are reachable
from objects in a pack that came from a promissor remote is OK.
* There was an unused file-scope static variable left in http.c when
building for versions of libCURL that is older than 7.19.4, which
has been fixed.
(merge b8fd6008ec rj/http-code-cleanup later to maint).
* Shell script portability fix.
(merge 206a6ae013 ml/filter-branch-portability-fix later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
(merge 40c17eb184 ks/t3200-typofix later to maint).
(merge bd9958c358 dp/merge-strategy-doc-fix later to maint).
(merge 9ee0540a40 js/ming-strftime later to maint).
(merge 1775e990f7 tz/complete-tag-delete-tagname later to maint).
(merge 00a4b03501 rj/warning-uninitialized-fix later to maint).
(merge b635ed97a0 jk/attributes-path-doc later to maint).
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.17.0-rc0
@ 2018-03-16 0:57 6% Junio C Hamano
0 siblings, 0 replies; 30+ results
From: Junio C Hamano @ 2018-03-16 0:57 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.17.0-rc0 is now available for
testing at the usual places. It is comprised of 474 non-merge
commits since v2.16.0, contributed by 60 people, 18 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.17.0-rc0' tag and the 'master' branch that the tag points at:
url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
url = https://github.com/gitster/git
New contributors whose contributions weren't in v2.16.0 are as follows.
Welcome to the Git development community!
Adam Borowski, Alban Gruin, Andreas G. Schacker, Bernhard
M. Wiedemann, Christian Ludwig, Gargi Sharma, Genki Sky,
Gregory Herrero, Jon Simons, Juan F. Codagnone, Kim Gybels,
Lucas Werkmeister, Mathias Rav, Motoki Seki, Stefan Moch,
Stephen R Guglielmo, Tatyana Krasnukha, and Thomas Levesque.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Alex Bennée,
Ben Peart, Brandon Williams, brian m. carlson, Christian
Couder, Daniel Knittl-Frank, Derrick Stolee, Elijah Newren,
Eric Sunshine, Eric Wong, Jason Merrill, Jeff Hostetler, Jeff
King, Johannes Schindelin, Jonathan Nieder, Jonathan Tan, Junio
C Hamano, Kaartic Sivaraam, Mårten Kongstad, Martin Ågren,
Matthieu Moy, Michael Haggerty, Nathan Payre, Nguyễn Thái
Ngọc Duy, Nicolas Morey-Chaisemartin, Olga Telezhnaya, Patryk
Obara, Phillip Wood, Prathamesh Chavan, Ramsay Jones, Randall
S. Becker, Rasmus Villemoes, René Scharfe, Robert P. J. Day,
Stefan Beller, SZEDER Gábor, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, and Yasushi SHOJI.
----------------------------------------------------------------
Git 2.17 Release Notes (draft)
==============================
Updates since v2.16
-------------------
UI, Workflows & Features
* "diff" family of commands learned "--find-object=<object-id>" option
to limit the findings to changes that involve the named object.
* "git format-patch" learned to give 72-cols to diffstat, which is
consistent with other line length limits the subcommand uses for
its output meant for e-mails.
* The log from "git daemon" can be redirected with a new option; one
relevant use case is to send the log to standard error (instead of
syslog) when running it from inetd.
* "git rebase" learned to take "--allow-empty-message" option.
* "git am" has learned the "--quit" option, in addition to the
existing "--abort" option; having the pair mirrors a few other
commands like "rebase" and "cherry-pick".
* "git worktree add" learned to run the post-checkout hook, just like
"git clone" runs it upon the initial checkout.
* "git tag" learned an explicit "--edit" option that allows the
message given via "-m" and "-F" to be further edited.
* "git fetch --prune-tags" may be used as a handy short-hand for
getting rid of stale tags that are locally held.
* The new "--show-current-patch" option gives an end-user facing way
to get the diff being applied when "git rebase" (and "git am")
stops with a conflict.
* "git add -p" used to offer "/" (look for a matching hunk) as a
choice, even there was only one hunk, which has been corrected.
Also the single-key help is now given only for keys that are
enabled (e.g. help for '/' won't be shown when there is only one
hunk).
* Since Git 1.7.9, "git merge" defaulted to --no-ff (i.e. even when
the side branch being merged is a descendant of the current commit,
create a merge commit instead of fast-forwarding) when merging a
tag object. This was appropriate default for integrators who pull
signed tags from their downstream contributors, but caused an
unnecessary merges when used by downstream contributors who
habitually "catch up" their topic branches with tagged releases
from the upstream. Update "git merge" to default to --no-ff only
when merging a tag object that does *not* sit at its usual place in
refs/tags/ hierarchy, and allow fast-forwarding otherwise, to
mitigate the problem.
* "git status" can spend a lot of cycles to compute the relation
between the current branch and its upstream, which can now be
disabled with "--no-ahead-behind" option.
* "git diff" and friends learned funcname patterns for Go language
source files.
* "git send-email" learned "--reply-to=<address>" option.
* Funcname pattern used for C# now recognizes "async" keyword.
Performance, Internal Implementation, Development Support etc.
* More perf tests for threaded grep
* "perf" test output can be sent to codespeed server.
* The build procedure for perl/ part has been greatly simplified by
weaning ourselves off of MakeMaker.
* In preparation for implementing narrow/partial clone, the machinery
for checking object connectivity used by gc and fsck has been
taught that a missing object is OK when it is referenced by a
packfile specially marked as coming from trusted repository that
promises to make them available on-demand and lazily.
* The machinery to clone & fetch, which in turn involves packing and
unpacking objects, has been told how to omit certain objects using
the filtering mechanism introduced by another topic. It now knows
to mark the resulting pack as a promisor pack to tolerate missing
objects, laying foundation for "narrow" clones.
* The first step to getting rid of mru API and using the
doubly-linked list API directly instead.
* Retire mru API as it does not give enough abstraction over
underlying list API to be worth it.
* Rewrite two more "git submodule" subcommands in C.
* The tracing machinery learned to report tweaking of environment
variables as well.
* Update Coccinelle rules to catch and optimize strbuf_addf(&buf, "%s", str)
* Prevent "clang-format" from breaking line after function return type.
* The sequencer infrastructure is shared across "git cherry-pick",
"git rebase -i", etc., and has always spawned "git commit" when it
needs to create a commit. It has been taught to do so internally,
when able, by reusing the codepath "git commit" itself uses, which
gives performance boost for a few tens of percents in some sample
scenarios.
* Push the submodule version of collision-detecting SHA-1 hash
implementation a bit harder on builders.
* Avoid mmapping small files while using packed refs (especially ones
with zero size, which would cause later munmap() to fail).
* Conversion from uchar[20] to struct object_id continues.
* More tests for wildmatch functions.
* The code to binary search starting from a fan-out table (which is
how the packfile is indexed with object names) has been refactored
into a reusable helper.
* We now avoid using identifiers that clash with C++ keywords. Even
though it is not a goal to compile Git with C++ compilers, changes
like this help use of code analysis tools that targets C++ on our
codebase.
* The executable is now built in 'script' phase in Travis CI integration,
to follow the established practice, rather than during 'before_script'
phase. This allows the CI categorize the failures better ('failed'
is project's fault, 'errored' is build environment's).
(merge 3c93b82920 sg/travis-build-during-script-phase later to maint).
* Writing out the index file when the only thing that changed in it
is the untracked cache information is often wasteful, and this has
been optimized out.
* Various pieces of Perl code we have have been cleaned up.
Also contains various documentation updates and code clean-ups.
Fixes since v2.16
-----------------
* An old regression in "git describe --all $annotated_tag^0" has been
fixed.
* "git status" after moving a path in the working tree (hence making
it appear "removed") and then adding with the -N option (hence
making that appear "added") detected it as a rename, but did not
report the old and new pathnames correctly.
* "git svn dcommit" did not take into account the fact that a
svn+ssh:// URL with a username@ (typically used for pushing) refers
to the same SVN repository without the username@ and failed when
svn.pushmergeinfo option is set.
* API clean-up around revision traversal.
* "git merge -Xours/-Xtheirs" learned to use our/their version when
resolving a conflicting updates to a symbolic link.
* "git clone $there $here" is allowed even when here directory exists
as long as it is an empty directory, but the command incorrectly
removed it upon a failure of the operation.
* "git commit --fixup" did not allow "-m<message>" option to be used
at the same time; allow it to annotate resulting commit with more
text.
* When resetting the working tree files recursively, the working tree
of submodules are now also reset to match.
* "git stash -- <pathspec>" incorrectly blew away untracked files in
the directory that matched the pathspec, which has been corrected.
* Instead of maintaining home-grown email address parsing code, ship
a copy of reasonably recent Mail::Address to be used as a fallback
in 'git send-email' when the platform lacks it.
(merge d60be8acab mm/send-email-fallback-to-local-mail-address later to maint).
* "git add -p" was taught to ignore local changes to submodules as
they do not interfere with the partial addition of regular changes
anyway.
* Avoid showing a warning message in the middle of a line of "git
diff" output.
(merge 4e056c989f nd/diff-flush-before-warning later to maint).
* The http tracing code, often used to debug connection issues,
learned to redact potentially sensitive information from its output
so that it can be more safely sharable.
(merge 8ba18e6fa4 jt/http-redact-cookies later to maint).
* Crash fix for a corner case where an error codepath tried to unlock
what it did not acquire lock on.
(merge 81fcb698e0 mr/packed-ref-store-fix later to maint).
* The split-index mode had a few corner case bugs fixed.
(merge ae59a4e44f tg/split-index-fixes later to maint).
* Assorted fixes to "git daemon".
(merge ed15e58efe jk/daemon-fixes later to maint).
* Completion of "git merge -s<strategy>" (in contrib/) did not work
well in non-C locale.
(merge 7cc763aaa3 nd/list-merge-strategy later to maint).
* Workaround for segfault with more recent versions of SVN.
(merge 7f6f75e97a ew/svn-branch-segfault-fix later to maint).
* Plug recently introduced leaks in fsck.
(merge ba3a08ca0e jt/fsck-code-cleanup later to maint).
* "git pull --rebase" did not pass verbosity setting down when
recursing into a submodule.
(merge a56771a668 sb/pull-rebase-submodule later to maint).
* The way "git reset --hard" reports the commit the updated HEAD
points at is made consistent with the way how the commit title is
generated by the other parts of the system. This matters when the
title is spread across physically multiple lines.
(merge 1cf823fb68 tg/reset-hard-show-head-with-pretty later to maint).
* Test fixes.
(merge 63b1a175ee sg/test-i18ngrep later to maint).
* Some bugs around "untracked cache" feature have been fixed. This
will notice corrupt data in the untracked cache left by old and
buggy code and issue a warning---the index can be fixed by clearing
the untracked cache from it.
(merge 0cacebf099 nd/fix-untracked-cache-invalidation later to maint).
(merge 7bf0be7501 ab/untracked-cache-invalidation-docs later to maint).
* "git blame HEAD COPYING" in a bare repository failed to run, while
"git blame HEAD -- COPYING" run just fine. This has been corrected.
* "git add" files in the same directory, but spelling the directory
path in different cases on case insensitive filesystem, corrupted
the name hash data structure and led to unexpected results. This
has been corrected.
(merge c95525e90d bp/name-hash-dirname-fix later to maint).
* "git rebase -p" mangled log messages of a merge commit, which is
now fixed.
(merge ed5144d7eb js/fix-merge-arg-quoting-in-rebase-p later to maint).
* Some low level protocol codepath could crash when they get an
unexpected flush packet, which is now fixed.
(merge bb1356dc64 js/packet-read-line-check-null later to maint).
* "git check-ignore" with multiple paths got confused when one is a
file and the other is a directory, which has been fixed.
(merge d60771e930 rs/check-ignore-multi later to maint).
* "git describe $garbage" stopped giving any errors when the garbage
happens to be a string with 40 hexadecimal letters.
(merge a8e7a2bf0f sb/describe-blob later to maint).
* Code to unquote single-quoted string (used in the parser for
configuration files, etc.) did not diagnose bogus input correctly
and produced bogus results instead.
(merge ddbbf8eb25 jk/sq-dequote-on-bogus-input later to maint).
* Many places in "git apply" knew that "/dev/null" that signals
"there is no such file on this side of the diff" can be followed by
whitespace and garbage when parsing a patch, except for one, which
made an otherwise valid patch (e.g. ones from subversion) rejected.
(merge e454ad4bec tk/apply-dev-null-verify-name-fix later to maint).
* We no longer create any *.spec file, so "make clean" should not
remove it.
(merge 4321bdcabb tz/do-not-clean-spec-file later to maint).
* "git push" over http transport did not unquote the push-options
correctly.
(merge 90dce21eb0 jk/push-options-via-transport-fix later to maint).
* "git send-email" learned to complain when the batch-size option is
not defined when the relogin-delay option is, since these two are
mutually required.
(merge 9caa70697b xz/send-email-batch-size later to maint).
* Y2k20 fix ;-) for our perl scripts.
(merge a40e06ee33 bw/perl-timegm-timelocal-fix later to maint).
* Threaded "git grep" has been optimized to avoid allocation in code
section that is covered under a mutex.
(merge 38ef24dccf rv/grep-cleanup later to maint).
* "git subtree" script (in contrib/) scripted around "git log", whose
output got affected by end-user configuration like log.showsignature
(merge 8841b5222c sg/subtree-signed-commits later to maint).
* While finding unique object name abbreviation, the code may
accidentally have read beyond the end of the array of object names
in a pack.
(merge 21abed500c ds/find-unique-abbrev-optim later to maint).
* Micro optimization in revision traversal code.
(merge ebbed3ba04 ds/mark-parents-uninteresting-optim later to maint).
* "git commit" used to run "gc --auto" near the end, which was lost
when the command was reimplemented in C by mistake.
(merge 095c741edd ab/gc-auto-in-commit later to maint).
* Allow running a couple of tests with "sh -x".
(merge c20bf94abc sg/cvs-tests-with-x later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge e2a5a028c7 bw/oidmap-autoinit later to maint).
(merge ec3b4b06f8 cl/t9001-cleanup later to maint).
(merge e1b3f3dd38 ks/submodule-doc-updates later to maint).
(merge fbac558a9b rs/describe-unique-abbrev later to maint).
(merge 8462ff43e4 tb/crlf-conv-flags later to maint).
(merge 7d68bb0766 rb/hashmap-h-compilation-fix later to maint).
(merge 3449847168 cc/sha1-file-name later to maint).
(merge ad622a256f ds/use-get-be64 later to maint).
(merge f919ffebed sg/cocci-move-array later to maint).
(merge 4e801463c7 jc/mailinfo-cleanup-fix later to maint).
(merge ef5b3a6c5e nd/shared-index-fix later to maint).
(merge 9f5258cbb8 tz/doc-show-defaults-to-head later to maint).
(merge b780e4407d jc/worktree-add-short-help later to maint).
(merge ae239fc8e5 rs/cocci-strbuf-addf-to-addstr later to maint).
(merge 2e22a85e5c nd/ignore-glob-doc-update later to maint).
(merge 3738031581 jk/gettext-poison later to maint).
(merge 54360a1956 rj/sparse-updates later to maint).
(merge 12e31a6b12 sg/doc-test-must-fail-args later to maint).
(merge 760f1ad101 bc/doc-interpret-trailers-grammofix later to maint).
(merge 4ccf461f56 bp/fsmonitor later to maint).
(merge a6119f82b1 jk/test-hashmap-updates later to maint).
(merge 5aea9fe6cc rd/typofix later to maint).
(merge e4e5da2796 sb/status-doc-fix later to maint).
(merge 7976e901c8 gs/test-unset-xdg-cache-home later to maint).
(merge d023df1ee6 tg/worktree-create-tracking later to maint).
(merge 4cbe92fd41 sm/mv-dry-run-update later to maint).
(merge 75e5e9c3f7 sb/color-h-cleanup later to maint).
(merge 2708ef4af6 sg/t6300-modernize later to maint).
(merge d88e92d4e0 bw/doc-submodule-recurse-config-with-clone later to maint).
(merge f74bbc8dd2 jk/cached-commit-buffer later to maint).
(merge 1316416903 ms/non-ascii-ticks later to maint).
(merge 878056005e rs/strbuf-read-file-or-whine later to maint).
(merge 79f0ba1547 jk/strbuf-read-file-close-error later to maint).
(merge edfb8ba068 ot/ref-filter-cleanup later to maint).
(merge 11395a3b4b jc/test-must-be-empty later to maint).
(merge 768b9d6db7 mk/doc-pretty-fill later to maint).
(merge 2caa7b8d27 ab/man-sec-list later to maint).
----------------------------------------------------------------
Changes since v2.16.0 are as follows:
Adam Borowski (1):
hooks/pre-auto-gc-battery: allow gc to run on non-laptops
Alban Gruin (1):
userdiff: add built-in pattern for golang
Alex Bennée (1):
send-email: add test for Linux's get_maintainer.pl
Alexander Shopov (1):
Mark messages for translations
Andreas G. Schacker (1):
doc/read-tree: remove obsolete remark
Ben Peart (3):
dir.c: don't flag the index as dirty for changes to the untracked cache
name-hash: properly fold directory names in adjust_dirname_case()
fsmonitor: update documentation to remove reference to invalid config settings
Bernhard M. Wiedemann (1):
perl: call timegm and timelocal with 4-digit year
Brandon Williams (39):
oidmap: ensure map is initialized
object_info: change member name from 'typename' to 'type_name'
object: rename function 'typename' to 'type_name'
blame: rename 'this' variables
pack-objects: rename 'this' variables
rev-parse: rename 'this' variable
submodule: indicate that 'submodule.recurse' doesn't apply to clone
diff: rename 'this' variables
apply: rename 'try' variables
apply: rename 'new' variables
checkout: rename 'new' variables
help: rename 'new' variables
pack-redundant: rename 'new' variables
reflog: rename 'new' variables
remote: rename 'new' variables
combine-diff: rename 'new' variables
commit: rename 'new' variables
diff-lib: rename 'new' variable
diff: rename 'new' variables
diffcore-delta: rename 'new' variables
entry: rename 'new' variables
http: rename 'new' variables
imap-send: rename 'new' variables
line-log: rename 'new' variables
read-cache: rename 'new' variables
ref-filter: rename 'new' variables
remote: rename 'new' variables
split-index: rename 'new' variables
submodule: rename 'new' variables
trailer: rename 'new' variables
unpack-trees: rename 'new' variables
init-db: rename 'template' variables
environment: rename 'template' variables
diff: rename 'template' variables
environment: rename 'namespace' variables
wrapper: rename 'template' variables
tempfile: rename 'template' variables
trailer: rename 'template' variables
replace: rename 'new' variables
Christian Couder (12):
perf/aggregate: fix checking ENV{GIT_PERF_SUBSECTION}
perf/aggregate: refactor printing results
perf/aggregate: implement codespeed JSON output
perf/run: add conf_opts argument to get_var_from_env_or_config()
perf/run: learn about perf.codespeedOutput
perf/run: learn to send output to codespeed server
perf/run: read GIT_PERF_REPO_NAME from perf.repoName
sha1_file: remove static strbuf from sha1_file_name()
sha1_file: improve sha1_file_name() perfs
perf/aggregate: add --subsection option
perf/aggregate: add --reponame option
perf/aggregate: sort JSON fields in output
Christian Ludwig (3):
t9001: use existing helper in send-email test
send-email: rename variable for clarity
send-email: support separate Reply-To address
Daniel Knittl-Frank (1):
describe: prepend "tags/" when describing tags with embedded name
Derrick Stolee (3):
packfile: use get_be64() for large offsets
sha1_name: fix uninitialized memory errors
revision.c: reduce object database queries
Elijah Newren (3):
Tighten and correct a few testcases for merging and cherry-picking
merge-recursive: fix logic ordering issue
merge-recursive: add explanation for src_entry and dst_entry
Eric Sunshine (5):
t5601-clone: test case-conflicting files on case-insensitive filesystem
worktree: add: fix 'post-checkout' not knowing new worktree location
git-worktree.txt: fix missing ")" typo
git-worktree.txt: fix indentation of example and text of 'add' command
t2028: fix minor error and issues in newly-added "worktree move" tests
Eric Wong (2):
fsck: fix leak when traversing trees
git-svn: control destruction order to avoid segfault
Gargi Sharma (1):
mru: Replace mru.[ch] with list.h implementation
Genki Sky (2):
rebase: add --allow-empty-message option
test-lib.sh: unset XDG_CACHE_HOME
Gregory Herrero (1):
rebase -p: fix incorrect commit message when calling `git merge`.
Jason Merrill (1):
git-svn: fix svn.pushmergeinfo handling of svn+ssh usernames.
Jeff Hostetler (12):
upload-pack: add object filtering for partial clone
fetch-pack, index-pack, transport: partial clone
fetch-pack: add --no-filter
fetch: support filters
partial-clone: define partial clone settings in config
t5616: end-to-end tests for partial clone
fetch: inherit filter-spec from partial clone
t5616: test bulk prefetch after partial fetch
stat_tracking_info: return +1 when branches not equal
status: add --[no-]ahead-behind to status and commit for V2 format.
status: update short status to respect --no-ahead-behind
status: support --no-ahead-behind in long format
Jeff King (34):
t5600: fix outdated comment about unborn HEAD
t5600: modernize style
clone: factor out dir_exists() helper
clone: do not clean up directories we didn't create
sq_quote_argv: drop maxlen parameter
trace: avoid unnecessary quoting
t5570: use ls-remote instead of clone for interp tests
t/lib-git-daemon: record daemon log
daemon: fix off-by-one in logging extended attributes
daemon: handle NULs in extended attribute string
t/lib-git-daemon: add network-protocol helpers
daemon: fix length computation in newline stripping
t0205: drop redundant test
git-sh-i18n: check GETTEXT_POISON before USE_GETTEXT_SCHEME
correct error messages for NULL packet_read_line()
CodingGuidelines: mention "static" and "extern"
t0002: simplify error checking
describe: confirm that blobs actually exist
test-hashmap: use ALLOC_ARRAY rather than bare malloc
test-hashmap: check allocation computation for overflow
test-hashmap: use xsnprintf rather than snprintf
test-hashmap: use strbuf_getline rather than fgets
test-hashmap: simplify alloc_test_entry
test-hashmap: use "unsigned int" for hash storage
sq_dequote: fix extra consumption of source string
t5545: factor out http repository setup
remote-curl: unquote incoming push-options
commit: drop uses of get_cached_commit_buffer()
revision: drop --show-all option
t: send verbose test-helper output to fd 4
strbuf_read_file(): preserve errno across close() call
smart-http: document flush after "# service" line
t3701: add a test for interactive.diffFilter
add--interactive: detect bogus diffFilter output
Johannes Schindelin (2):
sequencer: assign only free()able strings to gpg_sign
apply: demonstrate a problem applying svn diffs
Jon Simons (1):
always check for NULL return from packet_read_line()
Jonathan Nieder (1):
perl: treat PERLLIB_EXTRA as an extra path again
Jonathan Tan (20):
extension.partialclone: introduce partial clone extension
fsck: introduce partialclone extension
fsck: support refs pointing to promisor objects
fsck: support referenced promisor objects
fsck: support promisor objects as CLI argument
index-pack: refactor writing of .keep files
introduce fetch-object: fetch one promisor object
sha1_file: support lazily fetching missing objects
rev-list: support termination at promisor objects
gc: do not repack promisor packfiles
fetch-pack: test support excluding large blobs
fetch: refactor calculation of remote list
clone: partial clone
unpack-trees: batch fetching of missing blobs
fetch-pack: restore save_commit_buffer after use
http: support cookie redaction when tracing
http: support omitting data from traces
Docs: split out long-running subprocess handshake
packfile: remove GIT_DEBUG_LOOKUP log statements
packfile: refactor hash search with fanout table
Juan F. Codagnone (1):
mailinfo: avoid segfault when can't open files
Junio C Hamano (18):
merge: teach -Xours/-Xtheirs to symbolic link merge
worktree: say that "add" takes an arbitrary commit in short-help
Start 2.17 cycle
Git 2.16.1
First batch after 2.16
blame: tighten command line parser
Second batch for 2.17
Third batch for 2.17
Git 2.16.2
merge: allow fast-forward when merging a tracked tag
Fourth batch for 2.17
Fifth batch for 2.17
test_must_be_empty: make sure the file exists, not just empty
untracked cache: use git_env_bool() not getenv() for customization
Sixth batch for 2.17
Seventh batch for 2.17
Eighth batch for 2.17
Git 2.17-rc0
Kaartic Sivaraam (2):
Doc/gitsubmodules: make some changes to improve readability and syntax
Doc/git-submodule: improve readability and grammar of a sentence
Kim Gybels (1):
packed_ref_cache: don't use mmap() for small files
Lucas Werkmeister (1):
daemon: add --log-destination=(stderr|syslog|none)
Martin Ågren (5):
sequencer: make lockfiles non-static
sequencer: always roll back lock in `do_recursive_merge()`
merge-recursive: always roll back lock in `merge_recursive_generic()`
merge: always roll back lock in `checkout_fast_forward()`
sequencer: do not roll back lockfile unnecessarily
Mathias Rav (1):
files_initial_transaction_commit(): only unlock if locked
Matthieu Moy (2):
send-email: add and use a local copy of Mail::Address
perl/Git: remove now useless email-address parsing code
Michael Haggerty (5):
struct snapshot: store `start` rather than `header_len`
create_snapshot(): use `xmemdupz()` rather than a strbuf
find_reference_location(): make function safe for empty snapshots
packed_ref_iterator_begin(): make optimization more general
load_contents(): don't try to mmap an empty file
Motoki Seki (1):
Documentation/gitsubmodules.txt: avoid non-ASCII apostrophes
Mårten Kongstad (1):
docs/pretty-formats: fix typo '% <(<N>)' -> '%<|(<N>)'
Nathan Payre (1):
send-email: extract email-parsing code into a subroutine
Nguyễn Thái Ngọc Duy (85):
t2203: test status output with porcelain v2 format
Use DIFF_DETECT_RENAME for detect_rename assignments
wt-status.c: coding style fix
wt-status.c: catch unhandled diff status codes
wt-status.c: rename rename-related fields in wt_status_change_data
wt-status.c: handle worktree renames
trace.c: move strbuf_release() out of print_trace_line()
add--interactive: ignore submodule changes except HEAD
read-cache.c: change type of "temp" in write_shared_index()
read-cache.c: move tempfile creation/cleanup out of write_shared_index
diff.c: flush stdout before printing rename warnings
run-command.c: introduce trace_run_command()
run-command.c: print program 'git' when tracing git_cmd mode
run-command.c: print env vars in trace_run_command()
run-command.c: print new cwd in trace_run_command()
read-cache: don't write index twice if we can't write shared index
worktree.c: add validate_worktree()
dir.c: avoid stat() in valid_cached_dir()
dir.c: fix missing dir invalidation in untracked code
format-patch: keep cover-letter diffstat wrapped in 72 columns
completion: fix completing merge strategies on non-C locales
dir.c: stop ignoring opendir() error in open_cached_dir()
format-patch: reduce patch diffstat width to 72
gitignore.txt: elaborate shell glob syntax
trace: measure where the time is spent in the index-heavy operations
diff.c: refactor pprint_rename() to use strbuf
dir.c: ignore paths containing .git when invalidating untracked cache
parse-options: support --git-completion-helper
parse-options: add OPT_xxx_F() variants
parse-options: let OPT__FORCE take optional flags argument
git-completion.bash: introduce __gitcomp_builtin
completion: use __gitcomp_builtin in _git_add
completion: use __gitcomp_builtin in _git_am
completion: use __gitcomp_builtin in _git_apply
completion: use __gitcomp_builtin in _git_branch
completion: use __gitcomp_builtin in _git_checkout
completion: use __gitcomp_builtin in _git_cherry_pick
completion: use __gitcomp_builtin in _git_clean
completion: use __gitcomp_builtin in _git_clone
completion: use __gitcomp_builtin in _git_commit
completion: use __gitcomp_builtin in _git_config
completion: use __gitcomp_builtin in _git_describe
completion: use __gitcomp_builtin in _git_difftool
completion: use __gitcomp_builtin in _git_fetch
completion: use __gitcomp_builtin in _git_fsck
completion: use __gitcomp_builtin in _git_gc
completion: use __gitcomp_builtin in _git_grep
completion: use __gitcomp_builtin in _git_help
completion: use __gitcomp_builtin in _git_init
completion: use __gitcomp_builtin in _git_ls_files
completion: use __gitcomp_builtin in _git_ls_remote
completion: use __gitcomp_builtin in _git_merge
completion: use __gitcomp_builtin in _git_merge_base
completion: use __gitcomp_builtin in _git_mv
completion: use __gitcomp_builtin in _git_name_rev
completion: use __gitcomp_builtin in _git_notes
completion: use __gitcomp_builtin in _git_pull
completion: use __gitcomp_builtin in _git_push
completion: use __gitcomp_builtin in _git_remote
remote: force completing --mirror= instead of --mirror
completion: use __gitcomp_builtin in _git_replace
completion: use __gitcomp_builtin in _git_reset
completion: use __gitcomp_builtin in _git_revert
completion: use __gitcomp_builtin in _git_rm
completion: use __gitcomp_builtin in _git_show_branch
completion: use __gitcomp_builtin in _git_status
completion: use __gitcomp_builtin in _git_tag
completion: use __gitcomp_builtin in _git_worktree
worktree.c: add update_worktree_location()
worktree move: new command
worktree move: accept destination as directory
worktree move: refuse to move worktrees with submodules
worktree remove: new command
worktree remove: allow it when $GIT_WORK_TREE is already gone
am: add --show-current-patch
rebase: add --show-current-patch
rebase: introduce and use pseudo-ref REBASE_HEAD
am: support --quit
diff: add --compact-summary
object.h: update flag allocation comment
object.h: realign object flag allocation comment
completion: don't set PARSE_OPT_NOCOMPLETE on --rerere-autoupdate
completion: simplify _git_notes
completion: complete --{reuse,reedit}-message= for all notes subcmds
completion: more subcommands in _git_notes()
Nicolas Morey-Chaisemartin (1):
tag: add --edit option
Olga Telezhnaya (3):
mru: use double-linked list from list.h
ref-filter: get rid of duplicate code
ref-filter: get rid of goto
Patryk Obara (14):
clang-format: adjust penalty for return type line break
http-push: improve error log
sha1_file: convert pretend_sha1_file to object_id
dir: convert struct sha1_stat to use object_id
sha1_file: convert hash_sha1_file to object_id
cache: clear whole hash buffer with oidclr
match-trees: convert splice_tree to object_id
commit: convert commit_tree* to object_id
notes: convert combine_notes_* to object_id
notes: convert write_notes_tree to object_id
sha1_file: convert write_sha1_file to object_id
sha1_file: convert force_object_loose to object_id
sha1_file: convert write_loose_object to object_id
sha1_file: rename hash_sha1_file_literally
Phillip Wood (25):
t3404: check intermediate squash messages
commit: move empty message checks to libgit
Add a function to update HEAD after creating a commit
commit: move post-rewrite code to libgit
commit: move print_commit_summary() to libgit
sequencer: simplify adding Signed-off-by: trailer
sequencer: load commit related config
sequencer: try to commit without forking 'git commit'
t3512/t3513: remove KNOWN_FAILURE_CHERRY_PICK_SEES_EMPTY_COMMIT=1
sequencer: improve config handling
t7505: style fixes
t7505: add tests for cherry-pick and rebase -i/-p
sequencer: run 'prepare-commit-msg' hook
add -p: only display help for active keys
add -p: only bind search key if there's more than one hunk
add -p: improve error messages
add -i: add function to format hunk header
t3701: indent here documents
t3701: use test_write_lines and write_script
t3701: don't hard code sha1 hash values
t3701: add failing test for pathological context lines
add -p: adjust offsets of subsequent hunks when one is skipped
add -p: calculate offset delta for edited patches
add -p: fix counting when splitting and coalescing
add -p: don't rely on apply's '--recount' option
Prathamesh Chavan (2):
submodule: port submodule subcommand 'sync' from shell to C
submodule: port submodule subcommand 'deinit' from shell to C
Ramsay Jones (3):
t4151: consolidate multiple calls to test_i18ngrep
config.mak.uname: remove SPARSE_FLAGS setting for cygwin
Makefile: suppress a sparse warning for pack-revindex.c
Randall S. Becker (1):
hashmap.h: remove unused variable
Rasmus Villemoes (2):
grep: move grep_source_init outside critical section
grep: simplify grep_oid and grep_file
René Scharfe (15):
commit: avoid allocation in clear_commit_marks_many()
commit: use clear_commit_marks_many() in remove_redundant()
ref-filter: use clear_commit_marks_many() in do_merge_filter()
object: add clear_commit_marks_all()
bisect: avoid using the rev_info flag leak_pending
bundle: avoid using the rev_info flag leak_pending
checkout: avoid using the rev_info flag leak_pending
revision: remove the unused flag leak_pending
commit: remove unused function clear_commit_marks_for_object_array()
describe: use strbuf_add_unique_abbrev() for adding short hashes
cocci: use format keyword instead of a literal string
cocci: simplify check for trivial format strings
check-ignore: fix mix of directories and other file types
sequencer: factor out strbuf_read_file_or_whine()
perf: use GIT_PERF_REPEAT_COUNT=3 by default even without config file
Robert P. J. Day (2):
t/: correct obvious typo "detahced"
Correct mispellings of ".gitmodule" to ".gitmodules"
SZEDER Gábor (33):
travis-ci: build Git during the 'script' phase
Use MOVE_ARRAY
travis-ci: use 'set -x' for the commands under 'su' in the 32 bit Linux build
travis-ci: use 'set -e' in the 32 bit Linux build job
travis-ci: don't repeat the path of the cache directory
travis-ci: don't run the test suite as root in the 32 bit Linux build
travis-ci: don't fail if user already exists on 32 bit Linux build job
t5541: add 'test_i18ngrep's missing filename parameter
t5812: add 'test_i18ngrep's missing filename parameter
t6022: don't run 'git merge' upstream of a pipe
t4001: don't run 'git status' upstream of a pipe
t5510: consolidate 'grep' and 'test_i18ngrep' patterns
t5536: let 'test_i18ngrep' read the file without redirection
t: move 'test_i18ncmp' and 'test_i18ngrep' to 'test-lib-functions.sh'
t: validate 'test_i18ngrep's parameters
t: make 'test_i18ngrep' more informative on failure
t: document 'test_must_fail ok=<signal-name>'
t6300-for-each-ref: fix "more than one quoting style" tests
Makefile: generate Git(3pm) as dependency of the 'doc' and 'man' targets
t: prevent '-x' tracing from interfering with test helpers' stderr
t: add means to disable '-x' tracing for individual test scripts
t1507-rev-parse-upstream: don't check the stderr of a shell function
t5536: simplify checking of messages output to stderr
t3030-merge-recursive: don't check the stderr of a subshell
t5500-fetch-pack: don't check the stderr of a subshell
t5526: use $TRASH_DIRECTORY to specify the path of GIT_TRACE log file
t5570-git-daemon: don't check the stderr of a subshell
t9903-bash-prompt: don't check the stderr of __git_ps1()
t1510-repo-setup: mark as untraceable with '-x'
t/README: add a note about don't saving stderr of compound commands
travis-ci: run tests with '-x' tracing
t9400-git-cvsserver-server: don't rely on the output of 'test_cmp'
t9402-git-cvsserver-refs: don't check the stderr of a subshell
Stefan Beller (14):
diff.h: make pickaxe_opts an unsigned bit field
diff: migrate diff_flags.pickaxe_ignore_case to a pickaxe_opts bit
diff: introduce DIFF_PICKAXE_KINDS_MASK
diffcore: add a pickaxe option to find a specific blob
diff: properly error out when combining multiple pickaxe options
diff: use HAS_MULTI_BITS instead of counting bits manually
t/lib-submodule-update.sh: clarify test
t/lib-submodule-update.sh: fix test ignoring ignored files in submodules
unpack-trees: oneway_merge to update submodules
submodule: submodule_move_head omits old argument in forced case
builtin/pull: respect verbosity settings in submodules
send-email: error out when relogin delay is missing
color.h: document and modernize header
Documentation/git-status: clarify status table for porcelain mode
Stefan Moch (2):
t7001: add test case for --dry-run
mv: remove unneeded 'if (!show_only)'
Stephen R Guglielmo (1):
subtree: fix add and pull for GPG-signed commits
Tatyana Krasnukha (1):
apply: handle Subversion diffs with /dev/null gracefully
Thomas Gummerer (5):
stash: don't delete untracked files that match pathspec
read-cache: fix reading the shared index for other repos
split-index: don't write cache tree with null oid entries
travis: run tests with GIT_TEST_SPLIT_INDEX
reset --hard: make use of the pretty machinery
Thomas Levesque (1):
userdiff.c: add C# async keyword in diff pattern
Todd Zullinger (3):
doc: mention 'git show' defaults to HEAD
Makefile: remove *.spec from clean target
Makefile: add NO_PERL_CPAN_FALLBACKS knob
Torsten Bögershausen (1):
convert_to_git(): safe_crlf/checksafe becomes int conv_flags
Yasushi SHOJI (1):
bisect: debug: convert struct object to object_id
brian m. carlson (15):
repository: pre-initialize hash algo pointer
hash: move SHA-1 macros to hash.h
hash: create union for hash context allocation
builtin/index-pack: improve hash function abstraction
builtin/unpack-objects: switch uses of SHA-1 to the_hash_algo
sha1_file: switch uses of SHA-1 to the_hash_algo
fast-import: switch various uses of SHA-1 to the_hash_algo
pack-check: convert various uses of SHA-1 to abstract forms
pack-write: switch various SHA-1 values to abstract forms
read-cache: abstract away uses of SHA-1
csum-file: rename sha1file to hashfile
csum-file: abstract uses of SHA-1
bulk-checkin: abstract SHA-1 usage
hash: update obsolete reference to SHA1_HEADER
docs/interpret-trailers: fix agreement error
Ævar Arnfjörð Bjarmason (53):
Makefile: don't error out under DC_SHA1_EXTERNAL if DC_SHA1_SUBMODULE=auto
Makefile: under "make dist", include the sha1collisiondetection submodule
sha1dc_git.h: re-arrange an ifdef chain for a subsequent change
Makefile: replace perl/Makefile.PL with simple make rules
commit doc: document that -c, -C, -F and --fixup with -m error
commit: add support for --fixup <commit> -m"<extra message>"
perl: avoid *.pmc and fix Error.pm further
perf: amend the grep tests to test grep.threads
cat-file doc: document that -e will return some output
status: add a failing test showing a core.untrackedCache bug
wildmatch test: indent with tabs, not spaces
wildmatch test: use more standard shell style
wildmatch test: don't try to vertically align our output
wildmatch test: use a paranoia pattern from nul_match()
wildmatch test: remove dead fnmatch() test code
wildmatch test: use test_must_fail, not ! for test-wildmatch
wildmatch test: perform all tests under all wildmatch() modes
wildmatch test: create & test files on disk in addition to in-memory
test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
fetch: don't redundantly NULL something calloc() gave us
fetch: trivially refactor assignment to ref_nr
fetch: stop accessing "remote" variable indirectly
remote: add a macro for "refs/tags/*:refs/tags/*"
fetch tests: refactor in preparation for testing tag pruning
fetch tests: re-arrange arguments for future readability
fetch tests: add a tag to be deleted to the pruning tests
fetch tests: test --prune and refspec interaction
fetch tests: double quote a variable for interpolation
fetch tests: expand case/esac for later change
fetch tests: fetch <url> <spec> as well as fetch [<remote>]
git fetch doc: add a new section to explain the ins & outs of pruning
git remote doc: correct dangerous lies about what prune does
git-fetch & config doc: link to the new PRUNING section
fetch tests: add scaffolding for the new fetch.pruneTags
fetch: add a --prune-tags option and fetch.pruneTags config
fetch: make the --prune-tags work with <url>
update-index doc: note a fixed bug in the untracked cache
update-index doc: note the caveat with "could not open..."
perl: *.pm files should not have the executable bit
Git.pm: remove redundant "use strict" from sub-package
Git.pm: add the "use warnings" pragma
commit: run git gc --auto just before the post-commit hook
gitweb: hard-depend on the Digest::MD5 5.8 module
Git.pm: hard-depend on the File::{Temp,Spec} modules
git-send-email: unconditionally use Net::{SMTP,Domain}
perl: update our ancient copy of Error.pm
perl: update our copy of Mail::Address
perl: move CPAN loader wrappers to another namespace
perl: generalize the Git::LoadCPAN facility
perl: move the perl/Git/FromCPAN tree to perl/FromCPAN
perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
git manpage: note git-security@googlegroups.com
^ permalink raw reply [relevance 6%]
Results 1-30 of 30 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2018-03-16 0:57 6% [ANNOUNCE] Git v2.17.0-rc0 Junio C Hamano
2018-03-20 22:07 [PATCH v2 2/2] git-svn: allow empty email-address in authors-prog and authors-file Eric Wong
2018-03-24 10:20 ` [PATCH v3] git-svn: allow empty email-address using " Andreas Heiduk
2018-04-05 7:51 ` Eric Wong
2018-04-05 18:23 ` Andreas Heiduk
2018-04-05 19:44 7% ` Eric Wong
2018-04-11 23:18 0% ` Junio C Hamano
2018-03-21 19:50 2% [ANNOUNCE] Git v2.17.0-rc1 Junio C Hamano
2018-03-28 19:56 6% [ANNOUNCE] Git v2.17.0-rc2 Junio C Hamano
2018-03-28 19:58 1% What's cooking in git.git (Mar 2018, #05; Wed, 28) Junio C Hamano
2018-03-30 20:38 1% What's cooking in git.git (Mar 2018, #06; Fri, 30) Junio C Hamano
2018-04-01 11:18 5% [GIT PULL] l10n updates for 2.17.0 round 1 Jiang Xin
2018-04-02 19:34 2% [ANNOUNCE] Git v2.17.0 Junio C Hamano
2018-04-02 19:57 ` Randall S. Becker
2018-04-02 20:01 ` Stefan Beller
2018-04-02 23:19 7% ` Junio C Hamano
2018-04-09 10:21 What's cooking in git.git (Apr 2018, #01; Mon, 9) Junio C Hamano
2018-04-09 13:37 ` Derrick Stolee
2018-04-09 16:49 ` Ramsay Jones
2018-04-09 22:08 ` Junio C Hamano
2018-04-10 12:57 ` Derrick Stolee
2018-04-10 19:21 ` Ramsay Jones
2018-04-10 19:35 ` Derrick Stolee
2018-04-10 20:22 6% ` Ramsay Jones
2018-04-10 20:37 0% ` Ramsay Jones
2018-04-09 20:41 [PATCH 0/8] gpg-interface: Multiple signing tools Ben Toews
2018-04-09 20:41 ` [PATCH 6/8] gpg-interface: find the last gpg signature line Ben Toews
2018-04-10 9:44 ` Junio C Hamano
2018-04-10 14:47 ` Ben Toews
2018-04-10 21:04 ` Junio C Hamano
2018-04-10 22:17 5% ` Junio C Hamano
2018-04-11 15:19 0% ` Ben Toews
2018-06-04 13:57 1% What's cooking in git.git (Jun 2018, #02; Mon, 4) Junio C Hamano
2018-06-12 21:00 2% What's cooking in git.git (Jun 2018, #03; Tue, 12) Junio C Hamano
2018-06-15 20:27 2% What's cooking in git.git (Jun 2018, #04; Fri, 15) Junio C Hamano
2018-06-18 21:29 2% What's cooking in git.git (Jun 2018, #05; Mon, 18) Junio C Hamano
2018-06-25 22:47 2% What's cooking in git.git (Jun 2018, #06; Mon, 25) Junio C Hamano
2018-06-28 21:40 2% What's cooking in git.git (Jun 2018, #07; Thu, 28) Junio C Hamano
2018-07-18 22:51 2.18.0 Regression: packing performance and effectiveness Elijah Newren
2018-07-19 5:41 ` Duy Nguyen
2018-07-19 5:49 7% ` Jeff King
2018-08-20 22:13 1% [ANNOUNCE] Git v2.19.0-rc0 Junio C Hamano
2018-08-28 20:03 2% [ANNOUNCE] Git v2.19.0-rc1 Junio C Hamano
2018-08-29 14:50 0% ` Git for Windows v2.19.0-rc1, was " Johannes Schindelin
2018-09-04 22:34 2% [ANNOUNCE] Git v2.19.0-rc2 Junio C Hamano
2018-09-10 20:11 1% [ANNOUNCE] Git v2.19.0 Junio C Hamano
2018-10-23 11:02 Failed stash caused untracked changes to be lost Quinn, David
2018-11-03 15:34 ` Thomas Gummerer
2018-11-05 9:29 6% ` Quinn, David
2018-11-05 22:16 0% ` Thomas Gummerer
2018-12-18 17:34 6% Merge behavior with merge.conflictStyle diff3 Adilson de Almeida Junior
2023-05-26 8:28 3% Bug: global remote.origin.url silently overrides git clone <URL> Jan Krag
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).