Welcome to the 63rd edition of Git Rev News, a digest of all things Git. For our goals, the archives, the way we work, and how to contribute or to subscribe, see the Git Rev News page on git.github.io.
This edition covers what happened during the month of April 2020.
GSoC 2020 Students and Projects
The following three students have been officially accepted to work on Git as part of the GSoC (Google Summer of Code) 2020:
Abhishek Kumar will work on Implement Generation Number v2. He will be co-mentored by Jakub Narebski and Derrick Stolee. More information is available on his proposal and blog.
Hariom Verma will work on Unify ref-filter formats with other --pretty formats. He will be co-mentored by Heba Waly and Christian Couder. More information is available on his proposal and blog.
Shourya Shukla will work on Convert submodule to builtin. He will be co-mentored by Kaartic Sivaraam and Christian Couder. More information is available on his proposal and blog.
It will be the 13th Summer that the Git project will mentor students as part of the GSoC. Shourya, Hariom and Abhishek will be the 30th, 31st and 32nd students mentored since 2007 when Git started participating in the GSoC.
It will be the 16th year of the GSoC, but unfortunately because of the current sanitary situation in the world, there will be no GSoC Mentor Summit, and no swag will be sent to participants this year.
remote.c: fix handling of push:remote_ref
Last February Damien Robert sent a patch to change how
‘ref-filter.c’ interprets %(push:remoteref)
.
Damien had already sent a patch
in April 2019 to fix another bug in ‘ref-filter.c’
related to %(push:track)
. This patch was incorporated in Git 2.22.
‘ref-filter.c’ is some internal API that formats information about
Git refs or Git objects. It’s used by commands like git branch
and
git for-each-ref
.
The issue Damien wanted to fix was that ‘ref-filter.c’ didn’t take
into account the push.default
config option
which is used when no refspec is specified for the push.
Peff, alias Jeff King, replied to Damien, and made it clear that it
was about taking push.default
into account. He also found that
Damien’s patch wouldn’t work in the case where push.default
was set
to upstream
and a branch has been set to track a specific branch
different than the default one.
Peff then commented on the code and asked for some tests, saying that the current tests were not covering this case and that they would wrongly fail if Damien’s patch was applied.
Damien replied to Peff agreeing about the upstream
case and to add
more tests. He found that his initial code also wouldn’t work when
push.default
was set to nothing
.
Peff and Damien discussed a bit more some details of the possible changes in the code, while Peff proposed a preparatory patch to clean up the current code before Damien’s changes. Then Damien sent a version 2 of his patch along with Peff’s preparatory patch.
The version 2 handled all push.default
cases and added tests for
them, but Junio Hamano, the Git maintainer, suggested improvements
in the commit message of the preparatory patch. Peff suggested
improvements of his own but agreed with Junio’s suggestion too.
Meanwhile Damien found issues in version 2 of his own patch, and separately Junio commented on it and suggested some improvements. Damien and Junio soon agreed, and then Damien sent a version 3 of his patch. This version contained only Damien’s patch, as Peff’s patch was merged separately.
Peff found a memory leak around Damien’s patch, but the leak had already been there before the patch. Peff also suggested small improvements to the tests, and eventually sent his own version of Damien’s patch for him to “to try it out or hack on it further”.
Damien found an issue in Peff’s patch though, and, after improving the tests in his patch, more existing issues in the current code in case of a triangular workflow. Peff commented that these issues could be left for a separate fix though.
Damien then sent a version 6 of his patch, though the title in the cover letter mistakenly contains “v4”, saying version 4 and version 5 were intermediate versions he made but did not send to the mailing list.
This version contained a preparatory patch to fix the triangular workflow issues Damien had found, as well as his updated patch with tests for both his fixes in this patch and the triangular workflow fixes. However, this patch series was marked as RFC, since its first patch was not very polished and did not fix all corner triangular workflow cases.
This led to some release confusion
as Junio then had merged the 2 patches to the next
branch, while
Damien had sent a
version 8
that contained only his patch without the triangular workflow fixes
and test cases.
This last version is now merged in the pu
branch, and is
likely to find its way to master
, while hopefully the fixes
related to triangular workflows will be re-sent separately.
Various
Light reading
revert
, checkout
, reset
, merge
, and rebase
by Milu Franz.git rebase -i
by Dave Neary..gitattributes
and a custom shell script
for wrapping the git diff
command, using jq
and sponge
to process JSON files.Git tools and sites
This edition of Git Rev News was curated by Christian Couder <christian.couder@gmail.com>, Jakub Narębski <jnareb@gmail.com>, Markus Jansen <mja@jansen-preisler.de> and Kaartic Sivaraam <kaartic.sivaraam@gmail.com> with help from Johannes Schindelin, Elijah Newren and Damien Robert.