Subject: Git User's Survey 2008 partial summary, part 4 - how do we use Git

From: Jakub Narebski <[email-masked]>
Date: Sun, 7 Sep 2008 00:17:08 +0200

This is partial summary of Git User's Survey 2008 after more that 2000 
(yes, that is more than _two thousands_ responses) just after the 6 days
of running the survey.  It is based on "Analysis" page for this survey:
  http://www.survs.com/shareResults?survey=M3PIVU72&rndm=OKJQ45LAG8

Please think of ways to examine this data, and about conclusions that we 
can draw from those statistics.

27 & 28. How often do you use the following forms of git commands or
         extra git tools? (Matrix - One answer per row)
       + never / rarely / sometimes / often

First, even though those questions looks a bit terryfying on first
glance, with this large matrix of commands, most people (around 3/4)
filled those two questions: 1562 responses with 540 skipped for 27.,
and 1454 total and 648 skipped for its continuation, question 28.

This large matrix had the additional advantage of teaching newcomers
to git about some rarer or newer git commands or versions of git
commands.

Below there is very simple statistics based on individual columns,
without taking into consideration any correlation between columns, or
any relation. For example it doesn't take into account that for some
'often' is somene's else 'sometimes'.

Top 10 often used commands

===================================
Command + options      | often [%]
-----------------------------------
git push               | 72% (1120)
git add + git commit   | 65% (1012)
git commit -a          | 63%  (981)
git pull (no remote)   | 44%  (682)
git pull <remote>      | 37%  (578)
git commit <file>...   | 34%  (528)
git merge              | 31%  (482)
gitk                   | 28%  (404)
git rebase             | 25%  (365)
git stash              | 22%  (320)
...................................
git remote update      |   6%  (92)

Analysis: strangely "git add + git commit" is slightly more used than
"git commit -a"; I would suspect that "git commit -a" would dominate a
bit over other forms of committing.  What is for me more suprising is
that "git commit <file>..." has such large presence in often used
commands; I would think that it should be mostly used as 'sometimes'
command.

Pity there was no "git pull . <branch>" to compare if people swith to
newer "git merge <branch>" for merging local branches.

Top 10 sometimes used commands

===================================
Command + options      | sometimes
-----------------------------------
git merge              | 28% (443)
git pull <remote>      | 27% (429)
git stash              | 26% (380)
git remote             | 26% (379)
git revert             | 24% (346)
git rebase             | 23% (332)
gitk                   | 23% (328)
git fetch [<options>]  | 21% (331)
git commit --amend     | 20% (314)
git commit <file>...   | 20% (311)

Analysis: "git commit --amend" and "git commit <file>" are here. That
is understandable, and for me expected.

Top 10 rarely used commands

===================================
Command + options      | rarely [%]
-----------------------------------
git revert             | 31% (454)
git pull <URL> <ref>   | 22% (348)
git blame              | 21% (328)
git fetch [<options>]  | 20% (313)
git rebase             | 20% (291)
git remote             | 20% (289)
git merge              | 18% (286)
git apply              | 18% (284)
git pull --rebase      | 18% (283)

Analysis: "git pull <URL> <ref>", direct pull without using
remote-tracking branches, is quite popular among rarely used
commands.  Strange that "git pull ---rebase" is among rarely
used; I would think it is question of workflow... but perhaps
rarely encountered workflow.

Notice that "git blame" is more 'rare' than gitk, which is in top 10
of both 'often' and 'sometimes' table. I guess that this is caused by
the fact that git has other, often better, ways to examine and browse
history.

Top 12 never used (or not well known) commands

==========================================================
Command + options       never    rarely  sometime   often
----------------------------------------------------------
git relink             1217-84%   37- 3%    6- 0%    1- 0%
git cvsserver          1255-80%   23- 1%    8- 1%    3- 0%
git imap-send          1245-80%   35- 2%    6- 0%    2- 0%
git cvsexportcommit    1227-79%   26- 2%   16- 1%   12- 1%
git citool             1191-76%   51- 3%   15- 1%   17- 1%
git bundle             1184-76%   80- 5%   22- 1%    8- 1%
git request-pull       1110-76%  105- 7%   32- 2%   16- 1%
git instaweb           1142-73%   97- 6%   31- 2%    8- 1%
git ... --dirstat      1141-73%   93- 6%   39- 2%    8- 1%
git am -i              1129-72%  130- 8%   48- 3%    8- 1%
git blame -L           1123-72%  103- 7%   50- 3%   11- 1%
git daemon (pushing)   1110-71%   99- 6%   38- 2%   36- 2%

It is sorted by percentage; note that commands from different
questions might have higher percentage even though lower number of
replies: it is caused by the fact that number of replies (non skipped
responses) is different.

Analysis: Nobody is I think suprised by the commands that appear in
this table...

29. Which of the following features do or did you use? 
30. Which features do you find unique and/or useful ones,
    compared to other systems (other SCMs)?
    (Choice - Multiple answers)

There were 1387 responses / 715 skipped for question 29., and
there were 1190 responses / 912 skipped for question 30.

These two questions were a bit related, but first deals with the
features one uses (even if they are not unique to Git, or very
interesting), while second deals with which features one think to be
useful (even if one doesn't use them).

The 'use' columns conatin percentage of replies for question 29.,
while 'think' column is about question 30.

==================================================
Feature description                     use  think
--------------------------------------------------
gitk or other history viewer            72%   ---
stash                                   56%   63%
the index                               ---   44%
shell completion of commands            42%   ---
add --interactive
  or other partial commit helper        35%   38%
git-gui or other commit tool            31%   ---
interactive rebase                      31%   39%
submodules (subprojects)                30%   25%
bisect                                  28%   37%
my own scripts / scriptability          25%   28%
git-aware shell prompt                  23%   ---
integration with IDE/editor             20%   ---
working with dirty tree                 18%   14%
mergetool                               17%   13%
reflog                                  16%   16%
detaching HEAD                          14%    9%
non-default hooks / hooks system        11%   19%
shallow clone                            9%    6%
eol conversion (crlf)                    8%    6%
separate worktree                        7%   11%
git-filter-branch                        7%    7%
alternates mechanism                     6%    7%
gitattributes                            6%    4%
patch management interface               5%   ---
git bundle (off-line transport)          5%   10%
multiple worktrees (git-new-worktree)    3%   ---
commit templates                         2%    3%

About items which are missing in one of columns: either it is a broad
concept so it is hard to say that one can "use" such feature, or
feature is not unique enough, or is not part of git... or I forgot to
add it to second part.

Analysis: most popular is using history viewer (such as gitk, qgit,
giggle, GitNub, git-cola, etc.); stash even though it is quite new
feature also is very popular.  For me a bit strange is that partial
commits has more users than graphical commit tools like
git-gui/git-citool.  Most (well, 44%) think that the index is unique
and/or useful feature.  Biggest difference in number of replies
between 29. and 30. question belongs, from what I see, to bisect.

31. If you use some important Git features not mentioned above, what
    are those? (Open ended text - Essay)

Total respondents: 115, skipped this question: 1987.

This I guess mean that we were exhaustive in our list of features,
as it doesn't seem to be many omissions...

-- 
Jakub Narebski
Poland