Skip to content

Commit f9db35b

Browse files
committed
rn-69: add interview with Philippe Blain
1 parent dbb83ee commit f9db35b

File tree

1 file changed

+69
-3
lines changed

1 file changed

+69
-3
lines changed

‎rev_news/drafts/edition-69.md‎

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,75 @@ This edition covers what happened during the month of October 2020.
2929
### Support
3030
-->
3131

32-
<!---
33-
## Developer Spotlight:
34-
-->
32+
## Developer Spotlight: Philippe Blain
33+
34+
* Who are you and what do you do?
35+
36+
I'm a scientist at the Canadian Center for Meteorological and
37+
Environmental Prediction, in Montréal, Québec, Canada. I'm part of the
38+
development team for the numerical model we use to predict the movement,
39+
growth and melt of sea-ice, the frozen parts of the Arctic and Antarctic
40+
oceans. Like most computer models in the field of weather forecasting,
41+
this software is written in good old Fortran, and runs on our
42+
supercomputers. We use Git extensively to track changes across all
43+
layers of our technological stack, and I quickly developed an interest
44+
in Git's inner workings.
45+
46+
* What would you name your most important contribution to Git?
47+
48+
Since I started contributing to the project a little more than one year
49+
ago, I've mostly been trying to fix the bugs I encounter in the course
50+
of my daily work. So I'm not sure which one of my topics has had the
51+
biggest impact on other users. However, I can say that the contribution
52+
I'm most proud of is [fixing `git checkout --recurse-submodules`](https://github.com/git/git/compare/d0654dc308b0ba76dd8ed7bbb33c8d8f7aacd783...846f34d3514b81764dea7c2a4851f6187ab31aad)
53+
to correctly switch between branches when one branch has nested
54+
submodules and the other branch has no submodules at all. I learned
55+
enormously during the process of developing this fix, not only about how
56+
Git ["unpack trees"](https://github.com/git/git/blob/master/unpack-trees.c)
57+
to keep the index, working directory and HEAD consistent, but also how
58+
[`fork` and `exec`](https://en.wikipedia.org/wiki/Fork%E2%80%93exec)
59+
calls work and especially how to debug such spawned process using GDB
60+
and LLDB.
61+
62+
* What are you doing on the Git project these days, and why?
63+
64+
Right now I'm working on a fix to prevent `git checkout
65+
--recurse-submodules` from losing uncommitted work in submodules.
66+
Although the documentation says this shouldn't happen, I've found a few
67+
cases where it does, and since it's never a nice experience to lose
68+
work, I'd like to fix that.
69+
70+
* If you could get a team of expert developers to work full time on
71+
something in Git for a full year, what would it be?
72+
73+
Apart from rewriting the whole thing in C++, you mean? Jokes aside, I
74+
would like for more work to be put towards better submodule support.
75+
There was a colossal effort a couple of years ago to add
76+
`--recurse-submodules` flags to several Git commands, so that submodules
77+
worktrees stay up to date when switching between superproject commits.
78+
Unfortunately this effort has died off due to core contributors to the
79+
submodule code changing jobs, and some porcelain commands still lack
80+
that capability.
81+
82+
* If you could remove something from Git without worrying about
83+
backwards compatibility, what would it be?
84+
85+
I think it's unfortunate that the dot-dot vs. dot-dot-dot syntax mean
86+
different things in `git diff` than in the rest of Git commands. It's
87+
another one of those tricky things that users have to remember. The fact
88+
that `checkout` and `reset` have so many different modes of operation
89+
also make them confusing for beginners. The introduction of `git switch`
90+
and `git restore` should help with that, though.
91+
92+
* What is your favorite Git-related tool/library, outside of Git itself?
93+
94+
Since I've heard of it I've been using
95+
[`diff-so-fancy`](https://github.com/so-fancy/diff-so-fancy#readme) as a
96+
way to make Git diffs more easily readable. Apart from that I mostly
97+
stick to the Git command line. Recently I discovered
98+
[`git-crecord`](https://github.com/andrewshadura/git-crecord#readme), an
99+
ncurses interface for, among other features, interactive line-by-line
100+
staging.
35101

36102
## Releases
37103

0 commit comments

Comments
(0)