title | layout | date | author | categories | navbar | |
---|---|---|---|---|---|---|
Git Rev News Edition 63 (May 28th, 2020) |
default |
2020-05-28 12:06:51 +0100 |
chriscool |
|
false |
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
andgit 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 wherepush.default
was set toupstream
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 whenpush.default
was set tonothing
.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 tomaster
, while hopefully the fixes related to triangular workflows will be re-sent separately.
- Git 2.27.0-rc2, 2.27.0-rc1, 2.27.0-rc0
- Git for Windows 2.27.0-rc2, 2.27.0-rc1, 2.27.0-rc0
- GitHub Enterprise 2.20.8, 2.19.14, 2.18.19, 2.17.25, 2.20.7, 2.19.13, 2.18.18, 2.17.24
- GitLab 13.0, 12.10.6, 12.10.5, 12.10.3, 12.10.2, 12.9.5, 12.8.10
- Bitbucket Server 7.2
- Gerrit Code Review 2.16.19, 2.16.18
- GitKraken 7.0.0
- GitHub Desktop 2.5.0, 2.4.3
- isomorphic-git 1.0.0
Various
- New git-filter-repo resources: a cheat sheet for converting filter-branch commands which shows equivalents for all examples from the filter-branch manpage, and a similar cheat sheet for converting BFG repo cleaner commands which shows equivalents for all the examples from the BFG web page.
- Java 16: Migration to Git and GitHub gets closer (from Mercurial).
- Why AppsFlyer moved from Bitbucket to [self-hosted] GitLab.
- GitHub Codespaces lets you code in your browser without any setup; see also New from Satellite 2020: Start coding in seconds on GitHub with Codespaces.
- DVC 3 Years 🎉 and 1.0 Pre-release 🚀; DVC (Data Version Control), an open-source version control system for Data Science projects was first mentioned in Git Rev News #42.
Light reading
- Patterns for Managing Source Code Branches by Martin Fowler (author of the Refactoring: Improving the Design of Existing Code book); note that this article is being released in installments, and at the time of publishing this edition it finished describing all the patterns but was not yet complete.
- How LinkedIn handles merging code in high-velocity repositories by Niket Parikh.
- How to Set up the HTTP Git Server for Private Projects on Ubuntu 18.04 with nginx, by Jack Wallen.
- Git on Windows by Gabor Szabo, a video series where you can learn how to use Git on MS Windows (half of links to videos are behind a Code Maven paywall).
- Git Explained: The Basics by Milu Franz.
- Git Explained: An In-Depth Comparison
of the commands
revert
,checkout
,reset
,merge
, andrebase
by Milu Franz. - The life-changing magic of
git rebase -i
by Dave Neary. - How to resolve a git merge conflict by Brian Breniser.
- Managing Git projects with submodules and subtrees by Manaswini Das.
- Improve Git Diffs for Structured Data
by fREW Schmidt. The solution uses
.gitattributes
and a custom shell script for wrapping thegit diff
command, usingjq
andsponge
to process JSON files. - Comparing Code Quality Meta Tools, that is linters and beautifiers operating on the whole project (many of those tools being systems for managing Git hooks): tidyall, pre-commit, lefthook, husky, overcommit, and precious; article by Dave Rolsky.
Git tools and sites
- Fork, a fast and friendly proprietary git client for Mac and Windows (with free evaluation).
- Git-Stats is an open-source GitHub contribution analyzer service written in Node.js.
- Git Insights is an open-source analytics tool to give you insights on your software projects and teams, currently supporting only GitHub (as GitHub App); support for Bitbucket, GitLab and self-hosted repositories is planned.
- GitSavvy is an open-source Sublime Text 3 plugin providing full Git and GitHub integration.
This edition of Git Rev News was curated by Christian Couder <[email protected]>, Jakub Narębski <[email protected]>, Markus Jansen <[email protected]> and Kaartic Sivaraam <[email protected]> with help from Johannes Schindelin, Elijah Newren and Damien Robert.