GitSurvey2009
OBSOLETE CONTENT
This wiki has been archived and the content is no longer updated. Please visit git-scm.com/doc for up-to-date documentation.
Git User's Survey 2009 summary
The Git User's Survey 2009 has been closed on September 15, 2009.
The survey could be found here:
- Git User's Survey 2009 (http://tinyurl.com/GitSurvey2009) at Survs.com ('closed').
This survey was open from 15 July to 15 September 2009 (for 2 months).
You can get raw data (individual responses) for the survey here:
- Git User's Survey 2009 - results num Sep 16, 09.csv.gz (CSV + gzip, 505 KB)
- Git User's Survey 2009 - results txt Sep 16, 09.xls.zip (XLS, 7.24 MB)
You can use survey_parse_Survs_CSV(num).com.perl script from http://github.com/jnareb/GitSurvey-scripts repository to analyze data from CSV export linked above.
Results of the survey:
- "partial summary" threads on git mailing list, via GMANE (done during survey was open)
- Git User's Survey 2009 partial summary, part 1 - announcing survey, participation
- Git User's Survey 2009 partial summary, part 2 - from first 10 (git difficulty, proficiency, uses, install, OS, editors)
- Git User's Survey 2009 partial summary, part 3 - last 10 questions (incl. getting help)
- Graphical final results of the survey on Survs.com (http://tinyurl.com/GitSurvey2009Analyze)
Note: you can use existing on-line filters for basic survey analysis - Further final results will follow and will be put into the wiki.
There were 3868 individual responses in this survey (the 30 responses in 'test' channel were removed).
There were 3236 individual responses in GitSurvey2008 (including 21 responses in 'test' channel).
There were 683 individual responses in GitSurvey2007.
There were around 117 responses in GitSurvey2006.
Table of contents:
Information about survey completion
Number of questions answered per responder
Answered | Resp.[n] | Resp.[%] |
---|---|---|
30 | 29 | 0.7% |
29 | 129 | 3.3% |
28 | 247 | 6.4% |
27 | 439 | 11.3% |
26 | 606 | 15.7% |
25 | 681 | 17.6% |
24 | 504 | 13.0% |
23 | 418 | 10.8% |
22 | 210 | 5.4% |
21 | 116 | 3.0% |
20 | 84 | 2.2% |
19 | 53 | 1.4% |
18 | 31 | 0.8% |
17 | 30 | 0.8% |
16 | 22 | 0.6% |
15 | 32 | 0.8% |
14 | 26 | 0.7% |
13 | 13 | 0.3% |
12 | 6 | 0.2% |
11 | 5 | 0.1% |
10 | 3 | 0.1% |
9 | 2 | 0.1% |
8 | 3 | 0.1% |
7 | 0 | 0.0% |
6 | 0 | 0.0% |
5 | 0 | 0.0% |
4 | 4 | 0.1% |
3 | 2 | 0.1% |
2 | 4 | 0.1% |
1 | 7 | 0.2% |
0 | 162 | 4.2% |
The table above shows histogram of the number of answered questions by responder from the 30 questions in the survey. Most people answered from 23 to 27 questions from 30. Average number of skipped (not answered) questions is 6.7 +/- 5.9.
Note that in one of questions, "22. Did you participate in previous Git User's Surveys?" lack of answer didn't necessarily mean that somebody skipped this question; lack of answer was there answer in itself. There are also optional (well, more optional) 3 free-form essay questions. That makes 26 questions to answer.
Most answered question was "07. I use Git for (check all that apply)" multiple-choice question.
Number of replies per question
The graph above shows histogram of number of replies per question. As you can see the least replied questions were:
- "12. What tool (or kind of tool) would you like to have Git support in?" (free-form essay question),
- "19. What features would you like implemented in Git? What features are you missing?" (also free-form essay),
- "22. Did you participate in previous Git User's Surveys?" (where skipping means simply not participating in previous surveys), and
- "30. What other comments or suggestions do you have that are not covered by the questions above?" (again free-form essay), and also
- "28. Which communication channel(s) do you use?" (multiple choice question, without 'other' answer)
Date of response
The graph above shows histogram of number of responders by date (in CET / GMT+1 / +0100 timezone).
There are a few spikes spikes on above Completion Rate Graph; from those the following four spikes are most visible:
- 15 Jul | 573 respondents / day
- 21 Jul | 622 respondents / day
- 27 Jul | 155 respondents / day
- 13 Aug | 103 respondents / day
(note that those results are slightly different from the ones presented in 'partial summary, part 1' thread mentioned above; this might be possibly the matter of different timezones used).
This survey was announced at the following blogs (note that dates below for blog posts are in local timezone of blog, whatever it is, while Survs.com dates are in survey admin timezone, which is GMT+01:00 / +0100):
Local Date | Date | URL |
---|---|---|
July 14th, 2009, 06:34 pm | 14 Jul | http://gitster.livejournal.com/36139.html |
July 15th, 2009 at 4:23 am | 15 Jul | http://blogs.gnome.org/newren/2009/07/15/git-users-survey-2009 |
July 15, 2009 - 12:47 pm | 15 Jul | http://gitlog.wordpress.com/2009/07/15/git-users-survey-2009 |
July 17, 2009 at 10:40 am | 17 Jul | http://blog.gitorious.org/2009/07/17/the-git-users-survey |
20 Jul 2009 | 20 Jul | http://github.com/blog/460-git-user-s-survey-2009 |
20 Aug 2009, 10:08 am | 20 Aug | http://www.ceondo.com/ecte/2009/08/git-survey-2009 (http://www.indefero.net/blog/) |
Sep 10, 2009 @ 10:11 AM | 10 Sep | http://blog.assembla.com/assemblablog/tabid/12618/bid/10431/Bloggers-compare-Git-notes.aspx |
"Git User's Survey 2009" was also announced on the following blogs (found via blogsearch):
Local Date | Date | URL |
---|---|---|
17th Jul 2009, 8:47 am | 17 Jul | http://marilyn.frields.org:8080/~paul/wordpress/?p=2632 |
2009-07-27 | 27 Jul | http://blog.hartwork.org/?p=451 |
4 Aug 2009, 10:13 | 04 Aug | http://virtualgenius.spaces.live.com/blog/cns!CC3C966FA733667C!811.entry |
2009/08/18 | 18 Aug | http://www.debian-news.net/2009/08/18/misc-developer-news-17/ |
Another quite important channel for finding about this survey was, according to question 19, microblogging platforms such as Twitter, Identi.ca, Plurk, etc.
Local Date | Date | URL |
---|---|---|
5:41 PM, Jul 15th 2009 | 15 Jul | http://twitter.com/jhelwig/statuses/2652743883 |
11:56 PM, Jul 19th 2009 | 19 Jul | http://twitter.com/kevmoo/status/2728027845 |
12:24 AM, Jul 21st 2009 | 21 Jul | http://twitter.com/github/status/2746745923 |
6:02 PM, Jul 21st 2009 | 21 Jul | http://twitter.com/howdous/status/2760055856 |
8:06 PM, Aug 23rd 2009 | 23 Aug | http://twitter.com/scyldinga/status/3495621307 |
24-Jul-09 00:27:46 UTC | 24 Jul | http://identi.ca/notice/6906889 |
24-Jul-09 10:47:50 UTC | 24 Jul | http://identi.ca/notice/6927573 |
03-Aug-09 05:36:49 UTC | 03 Aug | http://identi.ca/notice/7461438 |
As you can see the announcement on GitHub Blog (and via Twitter: http://twitter.com/github/status/2746745923) correlate with the second spike in responses on 27 July 2009, when we take difference in timezone into account.
It looks like the announcement on Hartwork Blog, part of Planet Gentoo, might be responsible for small spike in responses at 27 July. But it might have been cased by announcement arriving via other channels, see answers to question "29. How did you hear about this Git User's Survey?" below.
Survey statistics
Total respondents: | 3868 |
First response: | Jul 15, 2009 |
Last response: | Sep 16, 2009 |
Open during: | 72 days |
Average time: | 49 minutes |
At most often time between responses was below 1 second (the precision of Survs.com response timestamp), while maximum time between responses was slightly more than 12 hours (half a day).
There were 25 responses in the non-default "GitSurvey2009: no cookies, anonymous" channel that required no cookies, and was totally anonymous (no logging of IP address). This was at the cost of not being able to go back to one's responses to correct or complete it.
About you
01. What country do you live in?
(tabularized free-form single line)
This table is sorted alphabetically.
Country | Count | Perc. |
---|---|---|
America (possibly USA) | 4 | 0.1% |
Argentina | 21 | 0.6% |
Armenia | 1 | 0.0% |
Australia | 121 | 3.3% |
Austria | 49 | 1.3% |
Bangladesh | 1 | 0.0% |
Belarus | 3 | 0.1% |
Belgium | 39 | 1.1% |
Brazil | 58 | 1.6% |
Bulgaria | 6 | 0.2% |
Canada | 158 | 4.4% |
Chile | 8 | 0.2% |
China | 37 | 1.0% |
Colombia | 6 | 0.2% |
Costa Rica | 4 | 0.1% |
Croatia | 7 | 0.2% |
Cuba | 2 | 0.1% |
Czech Republic | 47 | 1.3% |
Denmark | 30 | 0.8% |
Egypt | 4 | 0.1% |
El Salvador | 1 | 0.0% |
Estonia | 9 | 0.2% |
Faroe Islands | 1 | 0.0% |
Finland | 52 | 1.4% |
France | 157 | 4.3% |
Germany | 400 | 11.0% |
Gibraltar | 1 | 0.0% |
Greece | 11 | 0.3% |
Hong Kong | 2 | 0.1% |
Hungary | 11 | 0.3% |
Iceland | 2 | 0.1% |
India | 51 | 1.4% |
Indonesia | 4 | 0.1% |
Iran | 2 | 0.1% |
Ireland | 18 | 0.5% |
Israel | 22 | 0.6% |
Italy | 65 | 1.8% |
Japan | 27 | 0.7% |
Kazakhstan | 1 | 0.0% |
Korea, Republic of | 4 | 0.1% |
Korea (which one?) | 1 | 0.0% |
Kyrgyzstan | 1 | 0.0% |
Latvia | 6 | 0.2% |
Lithuania | 10 | 0.3% |
Luxembourg | 2 | 0.1% |
Macedonia (former Yugoslav Republic) | 3 | 0.1% |
Malaysia | 7 | 0.2% |
Malta | 1 | 0.0% |
Mexico | 13 | 0.4% |
Moldova | 4 | 0.1% |
Nepal | 3 | 0.1% |
Netherlands | 76 | 2.1% |
New Zealand | 39 | 1.1% |
Nicaragua | 2 | 0.1% |
Norway | 63 | 1.7% |
Pakistan | 1 | 0.0% |
Panama | 1 | 0.0% |
Peru | 1 | 0.0% |
Philippines | 3 | 0.1% |
Poland | 68 | 1.9% |
Portugal | 11 | 0.3% |
Romania | 22 | 0.6% |
Russian Federation | 75 | 2.1% |
Serbia | 5 | 0.1% |
Singapore | 3 | 0.1% |
Slovakia | 4 | 0.1% |
Slovenia | 8 | 0.2% |
South Africa | 14 | 0.4% |
Spain | 59 | 1.6% |
Sri Lanka | 2 | 0.1% |
Sweden | 73 | 2.0% |
Switzerland | 56 | 1.5% |
Taiwan | 11 | 0.3% |
Thailand | 4 | 0.1% |
Trinidad and Tobago | 1 | 0.0% |
Tunisia | 1 | 0.0% |
Turkey | 12 | 0.3% |
Ukraine | 22 | 0.6% |
United Kingdom | 293 | 8.1% |
United States | 1189 | 32.7% |
Uruguay | 4 | 0.1% |
Vietnam | 3 | 0.1% |
Invalid answer | 7 | 0.2% |
Base | 3631 / 3868 |
As one can easily see, slightly less than third of Git users (32.7%) are in the USA (those who answered this survey, and this question). Next of countries is Germany with around 11.0% responses. Third is United Kingdom of Great Britain (including England, Scotland, Wales and Northern Ireland) with 8.1%.
The names of the countries were normalized using Locale::Country Perl module version 2.07 (with the fix that Serbia and Montenegro split into Republic of Serbia and Montenegro on 5 June 2006).
Top 12 Countries:
Country | Count | Perc. |
---|---|---|
United States | 1189 | 32.7% |
Germany | 400 | 11.0% |
United Kingdom | 293 | 8.1% |
Canada | 158 | 4.4% |
France | 157 | 4.3% |
Australia | 121 | 3.3% |
Netherlands | 76 | 2.1% |
Russian Federation | 75 | 2.1% |
Sweden | 73 | 2.0% |
Poland | 68 | 1.9% |
Italy | 65 | 1.8% |
Norway | 63 | 1.7% |
You can also take a look at Git Activity Map at Ohloh, where you can see on (large) Google Map locations of selected people who have Git in a stack, or locations of Git contributors (those with known location).
It is a bit pity that this survey did not include question "Does git.git repository include code produced by you?" (or equivalent), so we would be able to see where the developers are.
Continent | Count | Perc. |
---|---|---|
Africa | 19 | 0.5% |
Asia | 201 | 5.5% |
Europe | 1769 | 48.7% |
North America | 1371 | 37.8% |
South America | 98 | 2.7% |
Oceania | 161 | 4.4% |
Unknown | 12 | 0.3% |
In the table above "Oceania" includes (among others) Australia and New Zealand. As you can see most responders are from Europe (49%, slightly less than half), followed by North America (38% responders).
The conversion from country name to continent was done using Locale::Object::Country Perl module from CPAN, which in turn uses data from http://www.worldatlas.com/cntycont.htm
02. How old are you (in years)?
(tabularized free-form single line)
Years | Count | Perc. |
---|---|---|
< 18 | 59 | 1.6% |
18-21 | 339 | 9.4% |
22-25 | 862 | 23.8% |
26-30 | 1169 | 32.3% |
31-40 | 962 | 26.6% |
41-50 | 168 | 4.6% |
51-75 | 45 | 1.2% |
76+ | 6 | 0.2% |
Not a number | 5 | 0.1% |
Base | 3615 / 3868 |
Discounting joke responses (or errors in parsing), youngest user who answered this question is 12 years old, oldest is 90 (next to oldest is 68). That is quite a span.
Most Git users (around one third, 32.3%) fall in the 26-30 range. The age of 27 got most responses (in 2007 it was 25, as it was in 2008).
Getting started with Git
03. Have you found Git easy to learn?
(single choice)
Answer | Count | Perc. |
---|---|---|
Very easy | 155 | 4.3% |
Easy | 750 | 20.6% |
Reasonably easy | 1984 | 54.6% |
Hard | 675 | 18.6% |
Very hard | 71 | 2.0% |
Base | 3635 / 3868 |
Nice Gaussian curve. Most users find it reasonably easy to learn, slightly biased towards easy.
04. Have you found Git easy to use?
(single choice)
Answer | Count | Perc. |
---|---|---|
Very easy | 356 | 9.8% |
Easy | 1348 | 36.9% |
Reasonably easy | 1606 | 44.0% |
Hard | 301 | 8.2% |
Very hard | 40 | 1.1% |
Base | 3651 / 3868 |
Most users find it reasonably easy to easy to use Git.
When analyzing this data (and the data for the question before) you should take into account that somebody considering or finding Git too hard to learn wouldn't be probably Git user, and thus wouldn't fill this survey. So because it is *Git User's* Survey we should consider that results can be skewed towards lower value (easier).
What's interesting is comparing (percentage) results for questions 3. and 4.; how hard is git to learn versus how hard is to use. It seems like Git is reasonably easy to learn, and reasonably easy to easy to use. So it looks like Git just have somewhat steep learning curve, and the difficulty to learn pays in being more powerful to use.
05. Which Git version(s) are you using?
(multiple choice, with other)
Version | Count | Perc. |
---|---|---|
pre 1.3 | 9 | 0.2% |
1.3.x | 14 | 0.4% |
1.4.x | 46 | 1.3% |
1.5.x | 698 | 19.0% |
1.6.x | 3271 | 89.2% |
minor (maintenance) release 1.x.y.z | 978 | 26.7% |
'master' branch of official git repository | 220 | 6.0% |
'next' branch of official git repository | 43 | 1.2% |
other, please specify | 68 | 1.9% |
Base | 3666 / 3868 |
Description:
One can find git version by using "`git --version`" or "`git version`".
"Minor release" is additional specification, so if one for example use git version 1.6.3.3, one should check both "1.6.x" and "minor release".
Analysis:
As you can see from above results great majority (83%) run latest 1.6.x series of git (note: because it is multiple-choice question it means 'at least on one machine'). Only a few use 1.3.x or pre 1.3 versions somewhere.
Only a bit more than one fourth (26.7%) of responders use (somewhere) maintenance releases. That, or the question was,'t formulated clear enough.
06. Rate your own proficiency with Git:
(single choice)
Proficiency | Count | Perc. |
---|---|---|
1. novice | 156 | 4.2% |
2. casual, needs advice | 675 | 18.3% |
3. everyday use | 1418 | 38.5% |
4. can offer advice | 1204 | 32.7% |
5. know it very well | 228 | 6.2% |
Base | 3681 / 3868 |
Description:
One can think of it as 1-5 numerical grade of your proficiency in Git.
Analysis:
As you can see most responders know Git enough for everyday use, or
can even offer some Git advice. If we treat possible answers as a
proficiency grade, the average proficiency is around 3.2.
Either Git users don't stay novices long, or survey announcement(s) didn't reach novice users.
This data could be useful later to be able to check how it differs git usage for novices and for gurus (what commands they run, what features they use at different levels of proficiency).
How you use Git
07. I use Git for (check all that apply):
(multiple choice, with other)
Note that above choices are neither orthogonal nor exclusive. One might want to check multiple answers even for a single repository.
Answer | Count | Perc. |
---|---|---|
work projects | 2908 | 78.9% |
unpaid projects | 2887 | 78.4% |
proprietary projects | 1332 | 36.2% |
OSS development | 2422 | 65.7% |
private (unpublished) code | 2834 | 76.9% |
code (programming) | 3173 | 86.1% |
personal data | 1156 | 31.4% |
documents | 1145 | 31.1% |
static website | 1037 | 28.1% |
web app | 1527 | 41.4% |
sharing data or sync | 777 | 21.1% |
backup | 893 | 24.2% |
backend for wiki, blog, or other web app | 318 | 8.6% |
managing configuration files | 1202 | 32.6% |
frontend to other SCM (e.g. git-svn) | 1145 | 31.1% |
other (please specify) | 97 | 2.6% |
Base | 3684 / 3868 |
Description:
Note that above choices are neither orthogonal nor exclusive.
You might want to check multiple answers even for a single repository.
08. How do/did you obtain Git (install and/or upgrade)?
(multiple choice, with other)
Note that this question is multiple choices question because one can install Git in different ways on different machines or on different operating systems.
Answer | Count | Perc. |
---|---|---|
binary package | 2624 | 71.5% |
source package or script | 853 | 23.3% |
source tarball | 741 | 20.2% |
pull from (main) repository | 632 | 17.2% |
preinstalled / sysadmin job | 236 | 6.4% |
other - please specify | 134 | 3.7% |
Base | 3668 / 3868 |
Description:
Explanation: "binary package" covers pre-compiled binary (e.g.
from rpm or deb binary packages); "source package" covers things
like deb-src and SRPMS / *.src.rpm; "source script" is meant to
cover installation in source-based distributions, like 'emerge' in
Gentoo.
Automatic update (apt, yum, etc.) in most cases means binary package install; unless one uses source-based distribution like Gentoo, CRUX, or SourceMage, where automatic update means using source package (or source script).
The option named "preinstalled / sysadmin job" means that either you didn't need to install git because it was preinstalled (and you didn't upgrade); or that you have to ask system administrator to have git installed or upgraded.
Note that this question is multiple choices question because one can install Git in different ways on different machines or on different operating systems.
Analysis:
Most people (71.5%) use ready binary packages, which was kind of
expected; that is the easiest way.
09. On which operating system(s) do you use Git?
(multiple choice, with other)
Operating System | Count | Perc. |
---|---|---|
Linux | 3223 | 87.5% |
MacOS X (Darwin) | 1547 | 42.0% |
MS Windows/msysGit (MINGW) | 826 | 22.4% |
MS Windows/Cygwin | 367 | 10.0% |
FreeBSD, OpenBSD, NetBSD, etc. | 271 | 7.4% |
OpenSolaris | 120 | 3.3% |
other Unix | 77 | 2.1% |
MS Windows (any) | 1193 | 32.4% |
Other, please specify | 45 | 1.2% |
Base | 3682 / 3868 |
Description:
On Unices you can get the name of operating system by running
"`uname`".
Analysis:
Most common used operating system is Linux, next is MacOS X, and then
MS Windows (on MS Window dominates msysGit version). This is quite
understandable, as Git was created on Linux and for Linux, and it
works best there.
The "other" answer include Solaris, AIX, HP-UX (other Unix), GNU/Linux (Linux), Debian, NixOS (Linux distributions), none (?); iPod, OpenVMS, QNX, Hurd and "my toaster" (?). And some commentaries and clarifications.
10. What do you use to edit contents under version control with Git?
What kind of editor, IDE or RAD you use working with Git?
(multiple choice, with other)
Answer | Count | Perc. |
---|---|---|
simple text editor | 942 | 25.6% |
programmers editor | 3221 | 87.6% |
IDE or RAD | 1208 | 32.8% |
WYSIWYG tool | 205 | 5.6% |
other kind | 108 | 2.9% |
Base | 3678 / 3868 |
Description:
- "simple text editor" option includes editors such as pico, nano, joe, Notepad,
- "programmets editor" option includes editors such as Emacs/XEmacs, Vim, TextMate, SciTE (syntax highlighting, autoindentation, integration with other programmers tools, etc.)
- "IDE (Integrated Development Environment) and RAD (Rapid Application Development)" option includes tools such as Eclipse, NetBeans IDE, IntelliJ IDE, MS Visual Studio, KDevelop, Anjuta, Xcode, Code::Blocks but also tools such as Quanta+, BlueFish or Screem (for editing HTML, CSS, PHP etc.), and Kile or LEd for LaTeX.
- "WYSIWYG tools" option includes word processors such as MS Office or OpenOffice.org, but also tools such as Adobe Acrobat (for PDF) or GIMP (for images), or WYSIWYG DTP tools such as QuarkXPress, PageMaker or Scribus, or WYSIWYG HTML editors such as FrontPage, Dreamweaver or KompoZer.
Analysis:
Most popular kind of tool is programmer's editor with very strong 88%
lead. Next in turn are IDE or RAD with 33%, followed by simple text
editor, with 26%. The WYSIWYG tools are last, with very small 6% of
replies; also people who use WYSIWYG tools also use other kind of
tools to edit (presumably to edit commit message at least).
From browsing through some of "other tool" responses it seem like there should be included 'web interface' among possible tools (written as: wiki frontend, GitHub editor, <textarea>). Other responses include Xournal (note taking application for graphic tablet, using stylus), Tinderbox (also note taking application), Git GUI tool: GitX (?), custom git-aware CMS (probably also 'web interface'), scripts and oneliners, command line and 'On occasion, Unix text manipulation tools'. Also there is "audio editors" answer (which probably should fall under "WYSIWYG tool)...
Many answers in 'other tool' falls in one of ready categories; perhaps they are clarification of answer?
11. What Git interfaces, implementations, frontends and tools do you use?
(multiple choice, with other)
Answer | Count | Perc. |
---|---|---|
git (core) commandline | 3557 | 97.3% |
JGit (Java implementation) | 164 | 4.5% |
library / language binding | 134 | 3.7% |
Cogito (DEPRECATED) | 13 | 0.4% |
Easy Git | 28 | 0.8% |
Pyrite | 7 | 0.2% |
StGIT | 61 | 1.7% |
Guilt | 15 | 0.4% |
TopGit | 38 | 1.0% |
pg aka Patchy Git (DEPRECATED) | 2 | 0.1% |
gitk | 1673 | 45.8% |
git gui | 742 | 20.3% |
QGit | 231 | 6.3% |
GitView | 22 | 0.6% |
Giggle | 156 | 4.3% |
GitNub | 152 | 4.2% |
GitX | 685 | 18.7% |
git-cola | 58 | 1.6% |
tig | 209 | 5.7% |
TortoiseGit | 201 | 5.5% |
Git Extensions | 79 | 2.2% |
git-cheetah | 7 | 0.2% |
git-instaweb | 101 | 2.8% |
git-sh | 54 | 1.5% |
Gitosis (as admin) | 398 | 10.9% |
repo (to manage multiple repositories) | 65 | 1.8% |
editor/IDE VC integration | 417 | 11.4% |
filemanager / shell extension (any) | 98 | 2.7% |
graphical history viewer/browser (any) | 575 | 15.7% |
graphical commit tool (any) | 223 | 6.1% |
graphical diff tool | 594 | 16.3% |
graphical merge tool | 541 | 14.8% |
graphical blame or pickaxe tool | 84 | 2.3% |
my own scripts (for daily use) | 318 | 8.7% |
my own scripts (for special tasks) | 375 | 10.3% |
Other (please specify) | 284 | 7.8% |
Base | 3655 / 3868 |
Description:
Here "graphics diff tool" means tools such as Kompare, and graphical merge tool means tools such as Meld and !KDiff3. Those answers include graphical merge and diff tools used by programmers editors and IDEs.
"graphical history browser (any)" covers tools such as gitk, QGit, Giggle, tig etc., but also built-in git commands such as "`git log --graph`" and "`git show-branch`". If you use one of mentioned tools as history browser, mark both a tool and "graphical history browser (any)"; if you use some graphical history viewer not listed here, please both mark this answer and specify it in the "other tool" answer.
Similarly for other answers marked "(any)".
Analysis:
Currently the above table is only roughly divided into categories and subcategories.
12. What tool (or kind of tool) would you like to have Git support in?
For example IDE, RAD, editors, continuous integration, software hosting, bugtracker, merge tool...; this includes language bindings and Git (re)implementations
(free-form essay)
1308 / 3868 non-empty responses
13. Which git hosting site(s) do you use for your project(s)?
Please check only hosting sites where you publish/push to
(multiple choice, with other)
Hosting site | Count | Perc. |
---|---|---|
repo.or.cz | 236 | 6.9% |
GitHub | 2110 | 61.9% |
Gitorious | 345 | 10.1% |
Savannah | 46 | 1.4% |
SourceForge | 138 | 4.1% |
Assembla | 44 | 1.3% |
Unfuddle | 222 | 6.5% |
kernel.org | 58 | 1.7% |
freedesktop.org | 56 | 1.6% |
Alioth | 78 | 2.3% |
Fedora Hosted | 52 | 1.5% |
git hosting site for related projects | 102 | 3.0% |
generic site without git support | 127 | 3.7% |
self hosted | 1929 | 56.6% |
Other (please specify) | 187 | 5.5% |
Base | 3407 / 3868 |
Note that replies might be affected by the fact that announcement about this survey was shown at some git hosting sites, but not at other (additionally users of some git hosting sites may skip welcome page more often than for other hosting site; not all hosting sites have blog or a news / announcements section).
Note also that there probably are other git hosting sites that were not present in the ready list of answers, but are hiding in the "other (please specify)", like for example Codebase.
The leader here is (like in previous years) GitHub (62%); only self hosted has similar amount of replies (57%).
14. How do you fetch/get changes from upstream repositories?
(multiple choice, with other)
Answer | Count | Perc. |
---|---|---|
git protocol | 2818 | 78.5% |
ssh | 2562 | 71.4% |
http | 1164 | 32.4% |
rsync (DEPRECATED) | 19 | 0.5% |
filesystem | 868 | 24.2% |
via git-bundle | 66 | 1.8% |
foreign SCM (e.g. git-svn) | 799 | 22.3% |
Other, please specify | 48 | 1.3% |
Base | 3588 / 3868 |
Description:
This question asks about how do you get changes (updates) from
projects you follow into your local repository. It is not about how do
you get latest version of Git.
Fetching (or rather cloning) via bundle could mean that project publishes ready for download bundles to reduce traffic and load on server (HTTP download [of bundle] can be resumed, git-clone currently cannot; one can also distribute bundle using P2P).
15. How do you publish/propagate your changes?
(multiple choice, with other)
Answer | Count | Perc. |
---|---|---|
push | 3285 | 92.7% |
pull request (+ any form of announcement / notification) | 1003 | 28.3% |
format-patch + email | 789 | 22.3% |
format-patch + other (e.g. reviewboard, issue tracker or forum) | 342 | 9.7% |
git bundle | 78 | 2.2% |
git-svn (to Subversion repository) | 879 | 24.8% |
git-p4 (to Perforce repository) | 34 | 1.0% |
foreign SCM interface (other than mentioned above) | 71 | 2.0% |
other - please specify | 94 | 2.7% |
Base | 3543 / 3868 |
Description:
Publishing via bundle could mean sending bundle via email, or posting
it on review board (or forum).
16. How often do you use the following forms of git commands or extra git tools?
(matrix)
Answer | never | rarely | sometimes | often | Avg. / Count | |||||
---|---|---|---|---|---|---|---|---|---|---|
git add -i / -p | 1259 | 37.4% | 586 | 17.4% | 669 | 19.9% | 849 | 25.2% | 2.3 / 3363 | |
git add -u / -A | 1744 | 51.9% | 565 | 16.8% | 453 | 13.5% | 588 | 17.5% | 2.0 / 3350 | |
git am | 2128 | 63.3% | 522 | 15.5% | 402 | 12.0% | 273 | 8.1% | 1.6 / 3325 | |
git am -i | 2567 | 76.3% | 382 | 11.4% | 188 | 5.6% | 162 | 4.8% | 1.4 / 3299 | |
git apply | 1908 | 56.7% | 717 | 21.3% | 441 | 13.1% | 215 | 6.4% | 1.7 / 3281 | |
git apply --whitespace=fix | 2503 | 74.4% | 397 | 11.8% | 201 | 6.0% | 146 | 4.3% | 1.4 / 3247 | |
git archive | 2246 | 66.8% | 460 | 13.7% | 346 | 10.3% | 170 | 5.1% | 1.5 / 3222 | |
git bisect | 1704 | 50.7% | 763 | 22.7% | 541 | 16.1% | 191 | 5.7% | 1.8 / 3199 | |
git bisect run <cmd> | 2352 | 69.9% | 474 | 14.1% | 249 | 7.4% | 105 | 3.1% | 1.4 / 3180 | |
git annotate | 2174 | 64.6% | 509 | 15.1% | 318 | 9.5% | 155 | 4.6% | 1.5 / 3156 | |
git gui blame | 2477 | 73.7% | 340 | 10.1% | 220 | 6.5% | 99 | 2.9% | 1.3 / 3136 | |
git blame | 1473 | 43.8% | 724 | 21.5% | 682 | 20.3% | 240 | 7.1% | 1.9 / 3119 | |
git blame -L <start>,<end> etc. | 2539 | 75.5% | 342 | 10.2% | 139 | 4.1% | 83 | 2.5% | 1.3 / 3103 | |
git bundle | 2680 | 79.7% | 248 | 7.4% | 100 | 3.0% | 60 | 1.8% | 1.2 / 3088 | |
git cherry | 2302 | 68.5% | 417 | 12.4% | 251 | 7.5% | 107 | 3.2% | 1.4 / 3077 | |
git cherry-pick | 1455 | 43.3% | 604 | 18.0% | 649 | 19.3% | 364 | 10.8% | 2.0 / 3072 | |
git cherry-pick -n / --no-commit | 2182 | 64.9% | 476 | 14.2% | 258 | 7.7% | 150 | 4.5% | 1.5 / 3066 | |
git citool | 2601 | 77.3% | 186 | 5.5% | 111 | 3.3% | 159 | 4.7% | 1.3 / 3057 | |
git clean | 1483 | 44.1% | 602 | 17.9% | 417 | 12.4% | 547 | 16.3% | 2.0 / 3049 | |
git add + git commit | 278 | 8.3% | 183 | 5.4% | 393 | 11.7% | 2189 | 65.1% | 3.5 / 3043 | |
git commit -a | 431 | 12.8% | 363 | 10.8% | 535 | 15.9% | 1711 | 50.9% | 3.2 / 3040 | |
git commit <file>... | 999 | 29.7% | 468 | 13.9% | 529 | 15.7% | 1039 | 30.9% | 2.5 / 3035 | |
git commit -i <file>... | 1849 | 55.0% | 508 | 15.1% | 338 | 10.1% | 337 | 10.0% | 1.7 / 3032 | |
git commit --amend | 1294 | 38.5% | 470 | 14.0% | 620 | 18.4% | 646 | 19.2% | 2.2 / 3030 | |
git cvsexportcommit | 2851 | 84.8% | 103 | 3.1% | 40 | 1.2% | 35 | 1.0% | 1.1 / 3029 | |
git cvsserver | 2819 | 83.8% | 122 | 3.6% | 54 | 1.6% | 30 | 0.9% | 1.1 / 3025 | |
git daemon (pushing enabled) | 2522 | 75.0% | 300 | 8.9% | 112 | 3.3% | 89 | 2.6% | 1.3 / 3023 | |
git difftool | 2253 | 67.0% | 377 | 11.2% | 245 | 7.3% | 146 | 4.3% | 1.4 / 3021 | |
git ... --dirstat | 2348 | 69.8% | 339 | 10.1% | 199 | 5.9% | 134 | 4.0% | 1.4 / 3020 | |
git fetch [<options>] | 1156 | 34.4% | 656 | 19.5% | 604 | 18.0% | 602 | 17.9% | 2.2 / 3018 | |
git filter-branch | 2215 | 65.9% | 560 | 16.7% | 176 | 5.2% | 64 | 1.9% | 1.4 / 3015 | |
git format-patch | 1778 | 52.9% | 521 | 15.5% | 421 | 12.5% | 292 | 8.7% | 1.7 / 3012 | |
git grep | 1949 | 58.0% | 467 | 13.9% | 254 | 7.6% | 339 | 10.1% | 1.7 / 3009 | |
git imap-send | 2748 | 81.7% | 142 | 4.2% | 70 | 2.1% | 47 | 1.4% | 1.1 / 3007 | |
git instaweb | 2375 | 70.6% | 332 | 9.9% | 183 | 5.4% | 116 | 3.4% | 1.3 / 3006 | |
git log --grep/--author/... | 1408 | 41.9% | 619 | 18.4% | 569 | 16.9% | 407 | 12.1% | 2.0 / 3003 | |
git log -S<string> (pickaxe search) | 1987 | 59.1% | 515 | 15.3% | 326 | 9.7% | 172 | 5.1% | 1.6 / 3000 | |
git log --graph | 1692 | 50.3% | 662 | 19.7% | 361 | 10.7% | 278 | 8.3% | 1.7 / 2993 | |
git merge | 809 | 24.1% | 581 | 17.3% | 820 | 24.4% | 781 | 23.2% | 2.5 / 2991 | |
git merge with strategy | 2151 | 64.0% | 517 | 15.4% | 207 | 6.2% | 115 | 3.4% | 1.4 / 2990 | |
git merge --squash | 2008 | 59.7% | 490 | 14.6% | 278 | 8.3% | 208 | 6.2% | 1.6 / 2984 | |
git mergetool | 1839 | 54.7% | 400 | 11.9% | 304 | 9.0% | 431 | 12.8% | 1.8 / 2974 | |
git pull (no remote) | 732 | 21.8% | 510 | 15.2% | 575 | 17.1% | 1147 | 34.1% | 2.7 / 2964 | |
git pull --rebase [<options>] | 1251 | 37.2% | 603 | 17.9% | 504 | 15.0% | 580 | 17.2% | 2.1 / 2938 | |
git pull <remote> | 486 | 14.5% | 550 | 16.4% | 738 | 21.9% | 1090 | 32.4% | 2.8 / 2864 | |
git pull <URL> <ref> | 932 | 27.7% | 635 | 18.9% | 439 | 13.1% | 697 | 20.7% | 2.3 / 2703 | |
git push | 110 | 3.3% | 158 | 4.7% | 359 | 10.7% | 1563 | 46.5% | 3.5 / 2190 | |
Base | 3363 / 3868 |
Description:
This question (and its continuation below) is entirely optional.
17. How often do you use the following forms of git commands or extra git tools? (continued)
(matrix)
Answer | never | rarely | sometimes | often | Avg. / Count | |||||
---|---|---|---|---|---|---|---|---|---|---|
git relink | 2753 | 87.0% | 152 | 4.8% | 138 | 4.4% | 123 | 3.9% | 1.3 / 3166 | |
git rebase | 742 | 23.4% | 704 | 22.2% | 791 | 25.0% | 869 | 27.4% | 2.6 / 3106 | |
git rebase -i | 1331 | 42.0% | 453 | 14.3% | 552 | 17.4% | 717 | 22.6% | 2.2 / 3053 | |
git reflog or git log -g | 1992 | 62.9% | 486 | 15.4% | 383 | 12.1% | 148 | 4.7% | 1.6 / 3009 | |
git remote | 1027 | 32.4% | 617 | 19.5% | 885 | 28.0% | 443 | 14.0% | 2.3 / 2972 | |
git remote update | 1905 | 60.2% | 451 | 14.2% | 330 | 10.4% | 248 | 7.8% | 1.6 / 2934 | |
git request-pull | 2482 | 78.4% | 243 | 7.7% | 135 | 4.3% | 48 | 1.5% | 1.2 / 2908 | |
git revert | 972 | 30.7% | 975 | 30.8% | 773 | 24.4% | 178 | 5.6% | 2.1 / 2898 | |
git send-email | 2382 | 75.2% | 244 | 7.7% | 150 | 4.7% | 109 | 3.4% | 1.3 / 2885 | |
git show-branch | 2171 | 68.6% | 386 | 12.2% | 229 | 7.2% | 94 | 3.0% | 1.4 / 2880 | |
git shortlog | 1996 | 63.0% | 514 | 16.2% | 260 | 8.2% | 104 | 3.3% | 1.5 / 2874 | |
git shortlog -s | 2277 | 71.9% | 316 | 10.0% | 170 | 5.4% | 110 | 3.5% | 1.3 / 2873 | |
git stash | 865 | 27.3% | 430 | 13.6% | 788 | 24.9% | 789 | 24.9% | 2.5 / 2872 | |
git stash --keep-index | 2328 | 73.5% | 303 | 9.6% | 157 | 5.0% | 82 | 2.6% | 1.3 / 2870 | |
git submodule | 1941 | 61.3% | 467 | 14.8% | 289 | 9.1% | 172 | 5.4% | 1.5 / 2869 | |
git subtree | 2590 | 81.8% | 170 | 5.4% | 61 | 1.9% | 45 | 1.4% | 1.1 / 2866 | |
git svn | 1470 | 46.4% | 473 | 14.9% | 414 | 13.1% | 507 | 16.0% | 2.0 / 2864 | |
git whatchanged | 2261 | 71.4% | 338 | 10.7% | 161 | 5.1% | 98 | 3.1% | 1.3 / 2858 | |
git gui | 1822 | 57.5% | 408 | 12.9% | 256 | 8.1% | 335 | 10.6% | 1.7 / 2821 | |
gitk | 995 | 31.4% | 444 | 14.0% | 489 | 15.4% | 687 | 21.7% | 2.3 / 2615 | |
Base | 3166 / 3868 |
Description:
Explanation: "Rarely" means that you use mentioned form of command
either rarely, or you have used it only a few times.
Questions 16 and 17 (its continuation) are purely optional (as are the rest of questions in survey). If you don't feel like filling this questions, please skip them.
Note: git-subtree is managed out of tree, as a separate project (not in git.git repository, not even in contrib/ area). Originally git-subtree was submitted for inclusion, and later was considered for 'contrib/', but it was decided that it would be better if it mature out-of-tree, before resubmitting.
18. Which of the following features have you used?
(multiple choice, with other)
Feature | Count | Perc. |
---|---|---|
git bundle (off-line transport) | 255 | 8.4% |
eol conversion (crlf) | 474 | 15.6% |
gitattributes | 298 | 9.8% |
mergetool and/or difftool, or custom diff/merge driver | 1024 | 33.8% |
submodules (subprojects) | 1003 | 33.1% |
subtree merge (optionally git-subtree) | 152 | 5.0% |
separate worktree / core.worktree | 116 | 3.8% |
multiple worktrees (git-new-worktree) | 119 | 3.9% |
alternates mechanism (sharing object database) | 154 | 5.1% |
stash (optionally "git stash --keep-index") | 2141 | 70.7% |
shallow clone (e.g. "git clone --depth=<n>") | 370 | 12.2% |
detaching HEAD (e.g. "git checkout HEAD^0") | 696 | 23.0% |
interactive rebase (small scale history editing) | 1420 | 46.9% |
interactive commit / per-hunk comitting / partial commit | 1369 | 45.2% |
commit message templates | 178 | 5.9% |
git-filter-branch or equivalent (large history rewriting) | 442 | 14.6% |
bisect (optionally "git bisect run <script>") | 1159 | 38.3% |
committing with dirty tree (keeping some changes uncommitted) | 1658 | 54.7% |
non-default hooks (from contrib/hooks/ or other) | 520 | 17.2% |
shell completion of commands | 1756 | 58.0% |
git-aware shell prompt | 1154 | 38.1% |
git aliases, shell aliases for git, or own git scripts | 1386 | 45.7% |
Other, please specify | 23 | 0.8% |
Base | 3030 / 3868 |
19. What features would you like implemented in Git? What features are you missing?
(free-form essay)
1097 / 3868 non-empty responses
Description:
EXAMPLES: partial / subtree checkout, commit annotations aka git-notes, refs/replace/* mechanism, "smart" HTTP protocol (git via HTTP), resumable clone/fetch, lazy clone (on demand downloading of objects), wholesame directory rename detection, syntax highlighting and/or side-by-side diffs in gitweb, graphical merge tool integrated with git-gui, etc.
Analysis:
Below there is summary of around first 50% of responses (proposed features), divided into rough categories.
- performance
- better support for big files (large media)
- speed up "resolving deltas" step on large repositories
- better performance on very large (multiple gigabyte) repositories
- git-status faster on large binary files
- "shallow history" binaries (e.g. for large files) / "selective shallow history"
- unobtrusive incremental repacking (better algorithm)
- generic git improvements and new features
- support for tracking empty directories
- full ignoring of case, including .gitignore and git-status
- "partial submodules", mount part of repository in some other repo
- better shallow clones support
- better line ending handling
- filename encoding (in repository vs in filesystem)
- standarize on UTF-8 for filenames in core
- standarize on UTF-8 for commit messages, get encoding from locale
- better support for sharing objects
- union checkouts (some files from one branch, some from other) (?)
- git "overlays", i.e. mixing several git repos in one working directory, a bit like unionfs for git working area
- advisory locking / "this file is being edited"
- locking / git-lock
- optional/pluggable user and file edit tracking (advisiory locking?)
- wholesame directory rename detection / subtree rename detection
- tracking of multiple worktrees without symlinks
- warn when commit or merge leave file empty
- interactive prompts (for new users)
- rename tracking via annotations
- repo-specific (local) version number scheme, similar to Mercurial
- http://nubyonrails.com/articles/five-features-from-mercurial-that-would-make-git-suck-less
- obsoleting of branches (keep them, use only on demand)
- ACL
- grouping files in staging area, comitting by such group (splitting commit) to split changes in working area into two commits
- local tags
- comments on branches / descriptions of branches
- optional metadata storage (permissions, timestamps, EA, ownership)
- git sequencer merged
- safety
- save unstaged data somewhere for "git reset --hard" to be recoverable
- make "git stash apply" to not lose index by default
- track published revisions to warn against rewriting published history (warn before/when rewriting published history)
- teach reset/checkout to warn about rebase in progress (safety check to warn when/forbid comitting when inside rebase/am)
- easy way to tell which commits are in local repository only
- branch.<name>.rebase = true, but rebase only up until the last merge
- more safety, e.g. for 'git checkout *'
- robustness, fewer weird errors
- fix bug: files wrongly deleted when directory replaced by symlink
- generic command line improvemenents and new commands
- undo buffer for reverting a file (single-file stash?)
- svn/bzr/hg/darcs-like revert (revert-edits)
- better undo/abort/continue
- better oops/undo actions, easier undo features (commit, merge, etc.)
- 'git undo' (universal undo)
- git command history, with ability to undo commands (multi-level?) via "git undo"
- git merge --abort
- '-n' like option for each command, which describes what would happen
- preview to what git-revert would do
- better error messages
- improve error reporting and frontend usability
- localization of command-line messages
- units of all numbers in git commands output
- alternate, easier to use porcelain
- zsh command line completion for aliases
- more informative error messages, e.g. for "git push master origin" instead of "git push origin master" (newbie friendly)
- hooks / deep integration with ticketing system / issue tracker, like requiring ticket number in commit (?)
- more hooks
- clearer error messages (less references to git implementation details)
- a bit more coherence in terms of interface would be much appreciated
- better CRLF support, in particular files dirty due to CRLF mismatch
- git imap-retrieve <msg-id> | git am -3
- git-kill command (???)
- built-in tutorial mode
- aliases for pre-defined --pretty=, like --oneline
- environmental variable for templates location
- support multiple template directories in init command (?)
- git-subtree should be a part of git-core
- tool to manage git repositories (???: repo, gitosis, gitolite)
- git cp
- git-media http://gist.github.com/79247
- built-in Quilt-like patch management interface (like StGIT or Guilt)
- "git unstage" (built-in alias for "git reset HEAD")
- git stage / git unstage
- setting default options (parameters) in config / aliasing git commands
- improvements of transport (git clone, fetch and push)
- resumable clone/fetch (remote operations)
- resumable push
- lazy clone
- view log without cloning repo (to view changes in remotes)
- remote operations? git diff/log REMOTE:COMMITISH..REMOTE:COMMITISH
- fetching reflog from other repository (?)
- recursively clone submodules (option)
- git push --create
- easy way to clone single branch
- easy way to do shallow clone of a single branch
- pushing to shallow clones / better shallow clone support
- shallow cloning/fetch starting at COMMITISH rather than at DEPTH
- partial clone / clone a subdirectory
- git push --track / better support for centralized workflows
- push over ftp
- SASL authentication on pushes over git://
authentication and encryption for git protocol - ask for password only once (http(s), ssh, ...)
- add some curl options to the command line, so .netrc is not required
- better HTTP/(WebDAV) support with custom ACL
- mod_git for Apache
- push to non-bare with automatic checkout (sample hook?)
- built-in gitjour/bananajour
- git clone --peer (for multi-peer mothership/satelite setup)
- distributed distribution protocol, a la GitTorrent
- BitTorrent-like transfers (GitTorrent) for slow/long-term transport
- show network progress if verbose (curl has progres option)
- git-update-server-info should be somehow run automatically
- simple publishing on restricted servers (no git), e.g. push via ftp
- git sync <remote>
- the universal "git update"
- git pushall and pullall
- (optional) autostash/unstash around git-pull, when pulling into dirty tree
- interacting with remotes and remote-tracking branches
see also subsection above- remote branches listed with local branches ('git branch -v -v'?)
- easier way to see which branches are tracking which ones
- clearer/more intuitive way to clean out remote tracking branches that no longer exist on the remote
- clearer/more intuitive way to remove remote branches
- git remote prune --all
- better remote branch management (?)
- git_remote_branch ruby gem functionality
- synchronization of branches withour remote-tracking branches, like in hg
- a way to refer "last used" remote, or default to last used remote (?)
- view log without cloning repo (to view changes in remotes)
- replicated (transferable) per-branch meta-information
- a command which would show which branches are divergent so that they would create conflict during merge (and support in gitk/git-gui for this)
- improvements to diff
- "show all changes to function X"
- diff between two different working trees
- 'git diff -I' (similar to 'cvs diff -I'), i.e. "-I REGEXP:: Ignore changes that just insert or delete lines that match REGEXP."
- diffs with sub-line granularity
- diff by author (?)
- difftool with support for tools that can diff entire tree of files, instead of diff one file at a time (same with mergetool)
- improvements to merge
- A sensible way of delaying conflicts with non-text files e.g.keeping both files around and renaming them for later merging in OpenOffice etc.
- automatically run merge tool on merge conflict
- option/command to undo auto-merge to do merge manually
- better whitespace handling on merges / rebases
- http://thomas.apestaart.org/log/?p=898 (about git merge conflict)
- improvements to other git commands
- environmental variables in config, expanding ~ and ~user in paths
- git status --format=...
- git archive --format=tgz
- git merge --ff=only (--ff flavors) / git pull --ff=only
- mass update/rebase of a number of local branches (is it possible?)
- easier conflict resolution (how?)
- "longest common changed path" option for log formats
- 'git log --follow' to follow through evil merges with renames etc.
- git commit --amend HEAD~2
- "git commit <file>" for untracked file
- git commit --interactive <files>
- git checkout -i, git stash -i
- git log foo/bar.c:123-150, limiting results to changing given lines
- multiple indices/staging areas ("git add --to-index <index> <file>")
- 'git mergetool -t emerge' that works with emacsclient / gnuclient
- better intergation with KDiff3
- more grep-specific arguments in git-grep
- git merge --abort
- git cherry-pick <revision> -- <file>
- "git stash apply 1" or "git stash apply <label>", not stash@{1}
- rebase -i -p with commit reordering (e.g. via git-sequencer)
- head tips in log --graph
- 'split' instruction for interactive rebase
- template for cover letter / input cover letter for git-format-patch
- make git fetch && git merge be the same as git pull
- additional tools
- interactive blame tool (where did this line come from)
- graphical interactive rebasing
- visual map of reflog
- graphical tool for cherry-picking and squashing
- gitweb, web interfaces
- categories support in gitweb, with collapsible groups
- syntax highlighting in gitweb
- side-by-side diffs in gitweb
- color-words diff in gitweb
- graphical history view in gitweb
- gitweb should give more graphics and stats (timeline with commit count per branch, commit graphs,...)
- (easily) customizable diff formats in gitweb
- (easy) comparing arbitrary commits in gitweb
easy to use/find arbitrary diffs in gitweb - nicer URLs in gitweb (like in cgit)
- RDFa in gitweb
- commit annotations (committags) in gitweb (probably)
- admin features in gitweb
- more advanced search options in gitweb (i.e. expose options such as --since=, --util=)
- ajax/web 2.0 type web front end
- git-instaweb should be github-like
- submodules
- submodule interface improvements
- non-pegged submodules (use most recent HEAD/branch, not sha1) (?)
- better recursive submodule support
- support foreign SCM source as submodule
- read-only submodules
- "partial submodules", mount part of repository in some other repo
- submodules autoupdated on pull
- using tags/branches in git-submodule (?)
- recursively clone submodules (option)
- GUI for submodules (or support for submodules in git-gui)
- submodules and switching branches
- submodules with ability to set up alternates before submodule checkout
- support for submodules in git-archive
- an easy way to remove submodules from a project
- fix "git add path/" vs "git add path" gotcha with submodules
- forests (a la Mercurial) - perhaps similar to svn:externals or git-ext
- gitk and git-gui (GUI)
- better integration of git-gui and gitk
- revert chunks in git-gui
- GUI for submodules (or support for submodules in git-gui)
- GUI for rebase in git-gui
- GUI for creating repository in git-gui
- GUI tool to manage set of git repositories (config, access,...)
- merge gitk and git-gui
- support for ignoring files (adding to .gitignore) in git-gui
- graphical merge tool integrated with git-gui
- tips in gitk / git-gui ("Did you know...")
- "commands issued" (or "command equivalents") in git-gui / gitk
- gitk more like GitX graphs (complex graphs)
- make gitk and git-gui friendlier (?)
- gitk / git-gui supporting list of ref glob patterns
(DONE with --glob=<pattern> option to git-rev-list / git-log) - autorefresh of refs in gitk and git-gui
- revert (i.e. delete) single hunk in git-gui ("unstage these lines")
- syntax highlighting in git-gui
- font-smoothing in git-gui
- support for rebasing in git-gui
- support for undoing local modifications in files in git-gui
- running diff and merge tool from git-gui
- better git blame GUI tools
- support for shallow clones in GUI tools
- editing commits, etc. in GUI via git-replace/grafts
- visual map of reflog
- graphical interactive rebasing
- documentation
- git overview manpage, like perl5 and zsh
- documentation on commit message templates
- more examples in manpages
- example workflows in documentation
- document centralized (no maintainer) workflow
- better "getting started" documentation for newbies (git-intro)
- more topic "How do I ..." style docs
- remove references to since removed git-svnimport command
- git-ai: ai help with docs
- concise help output listing medium/advanced features
- better documentation (manpages) and error messages
- tutorial visualization tool (rebase vs merge, reset vs revert)
- interacting with other version control tools
- uniform interface to foreign SCMs repositories (bidirectional)
- support foreign SCM source as submodule
- git svn switch
- SVN metadata outside git commit (extra files, or notes)
- http://bugs.debian.org/git-svn
- git-bzr and git-hg
- git-svnserver and git-bzrserver
- conversion from bzr, perforce, etc.
- git-svn on subsection of history / subset of branches
- partial SVN branch checkouts (tracking only some of branches)
- git svn partial checkout
- lazy "git svn clone"
- proper support for svn:externals in git-svn
- git-svn support for svn:eol-style native
- better default hooks for git-svn, e.g. creating new branch in git would create a new branch in svn (partial svn branch integration)
- git-svn in C, not in Perl (depending on libsvn C API)
- more flexible git-svn wrt trunk/tags/branch names, or better examples
- better git-p4
- portability
- git-daemon support in msysGit
- git-daemon in msysgit
- easier msysGit upgrading (keep the same options as previous install)
- better MS Windows suport
- better encoding support on MS Windows
- graphical history browser for MS Windows
- better graphical tool for OSX, with integrated merge tool
- portable TortoiseGit / Git-Cheetah for USB (PortableApps)
- bindings
- libgit / LGPL libgit
- Git.pm better supported
- pull/merge support in EGit/JGit
- write plugins using scripting languages like Perl or Ruby (?)
- plugin architecture like bzr and hg has
- python bindings
- installation
- make uninstall
What you think of Git
20. Overall, how happy are you with Git?
(single choice)
Answer | Count | Perc. |
---|---|---|
unhappy | 35 | 1.0% |
not so happy | 157 | 4.4% |
happy | 842 | 23.5% |
very happy | 1841 | 51.3% |
completely ecstatic | 711 | 19.8% |
Base | 3586 / 3868 |
There were some complaints during planning stage of this year survey that the answers for this question are not symmetric; nevertheless it is set of answers that was used in previous survey(s), and it would help comparing data with previous surveys to keep the current form.
Most responders are "very happy" with Git, and this answer seems to be a center of responses. One should take into account that if one is unhappy with Git, it is less likely that one would continue using it (unless other circumstances would force using it, like the project one contributes to using Git as DVCS of choice), thus less likely to be Git user and to participate in this Git User's Survey. There can be bias because it is Git survey; it might be different if it was generic survey about (distributed) version control systems.
21. In your opinion, which areas in Git need improvement?
Please state your preference.
(matrix)
Answer | don't need | a little | some | much | Avg. / Count | |||||
---|---|---|---|---|---|---|---|---|---|---|
user-interface | 502 | 14.6% | 976 | 28.3% | 1179 | 34.2% | 791 | 22.9% | 2.7 / 3448 | |
documentation | 408 | 11.8% | 1034 | 30.0% | 1347 | 39.1% | 604 | 17.5% | 2.6 / 3393 | |
performance | 2348 | 68.1% | 737 | 21.4% | 209 | 6.1% | 56 | 1.6% | 1.4 / 3350 | |
more features | 1733 | 50.3% | 1105 | 32.0% | 407 | 11.8% | 69 | 2.0% | 1.6 / 3314 | |
tools (e.g. GUI) | 787 | 22.8% | 742 | 21.5% | 953 | 27.6% | 802 | 23.3% | 2.5 / 3284 | |
localization (translation) | 2326 | 67.5% | 427 | 12.4% | 241 | 7.0% | 98 | 2.8% | 1.4 / 3092 | |
Base | 3448 / 3868 |
Going by average rating (the number before slash '/' in the last column of the table above), it is documentation (2.60) and user-interface (2.59), and then tools (2.51) that needs improvements. Going by the percantages of respective responses, areas that needs improvement 'much' are tools (24%), UI (22%) and documentation (17%); the same set, different priority. Areas that needs 'some' improvement are documentation (40%), then UI (33%) and tools (30%). Areas that 'don't need' improvements are localization (translations) and performance, both with around 69%, then 'more features' with 51%.
The answer about translations might be not representative, because this survey is in English, and it was announced on English-language sites. So there might be some bias towards using English, and away from using localized version.
Changes in Git (since year ago, or since you started using it)
22. Did you participate in previous Git User's Surveys?
(multiple choice)
Survey | resp [%] | resp [n] | in year |
---|---|---|---|
in 2006 | 10.8% | 92 | 117 |
in 2007 | 30.8% | 263 | 683 |
in 2008 | 97.1% | 828 | 3236 |
Base | 853 / 3868 |
Note that opposed to other questions, for this one not answering the question is a legitimate answer, and not skipping it.
"In year" column refers to number of replies (number of responses) in the Git User's Survey for given year.
Percentages are relative to the number of people who answered this question, not to the number of people who answered (participated in) this survey.
Year | resp | resp | in year |
---|---|---|---|
/ 3519 | / in year | ||
in 2006 | 2.5% | 75.2% | 117 |
in 2007 | 7.1% | 36.8% | 683 |
in 2008 | 22.8% | 24.8% | 3236 |
Without further analysis (and the data that we don't have) we can only assume that 2006 survey (narrowly announced) was answered mainly by hard-core Git users and contributors, which follow Git announcements and participate in surveys. Therefore large number of people who participated in 2006 survey also participated in 2009 survey.
Note that 2008 (previous) and 2009 (this one) surveys were announced in slightly different ways: 2008 was announced on git mailing lists, 2009 was announced on blogs and hosting sites.
23. How do you compare the current version with the version from one year ago?
(single choice)
Answer | Count | Perc. |
---|---|---|
better | 1486 | 49.0% |
no changes | 244 | 8.0% |
worse | 11 | 0.4% |
cannot say | 1293 | 42.6% |
Base | 3034 / 3868 |
Description:
The version from approximately one year ago is 1.5.6 from 18-06-2008, the last version in 1.5.x series (except maintenance releases from 1.5.6.1 to 1.5.6.6). Major controversial change in 1.6.0 was installing most of the programs outside your $PATH.
Other changes include:
- stash never expires by default
- git-branch got -v, --contains and --merged options
- fast-export / fast-import learned to export and import marks file
- "git stash save" learned --keep-index option; "git stash" learned "branch" subcommand
- when you mistype a command name, git can suggest what you might meant to say
- git add -N / --intent-to-add
- built in synonym "git stage" for "git add", and --staged for --cached
- improvements to "git bisect skip" (can take range, more aggresive)
- "git diff" can use varying mnemonic prefixes, learned "textconv" filter
- "git log" learned --simplify-merges, --source, --simplify-by-decoration
- "git send-email" can automatically run "git format-patch"
- unconfigured git-push issue now a big warning (preparing for the future incompatibile change)
- you can use @{-1} to refer to the last branch you were on
- "git diff" learned --inter-hunk-context and can be told to run --patience diff
- git-difftool can run graphical diff tool
(see individual RelNotes for more details)
Analysis:
Most people (50%) think that Git improved since year ago; very few (10 in 2785) think it is worse... but almost as many 'cannot say' (42%) if it is better than year ago.
If we take 'cannot say' as indication that responder didn't use Git a year ago, and that is the reason they cannot do comparison, it seems that there are many new Git users participating in this survey.
Documentation. Getting help.
24. How useful have you found the following forms of Git documentation?
(matrix)
Answer | never used | not useful | somewhat | useful | Avg. / Count | |||||
---|---|---|---|---|---|---|---|---|---|---|
Git Wiki | 1242 | 35.9% | 150 | 4.3% | 1295 | 37.4% | 777 | 22.4% | 2.5 / 3464 | |
on-line help | 443 | 12.8% | 106 | 3.1% | 1398 | 40.4% | 1479 | 42.7% | 3.1 / 3426 | |
help distributed with git | 269 | 7.8% | 214 | 6.2% | 1211 | 35.0% | 1664 | 48.0% | 3.3 / 3358 | |
Base | 3464 / 3868 |
Description:
- Git Wiki was to be found at http://git.or.cz/gitwiki
- on-line help includes, among others, Git Homepage (http://git-scm.com) and "Git Community Book" (http://book.git-scm.com)
- help distributed with git include manpages, manual, tutorials, HOWTO, release notes, technical documentation, contrib/examples/
Analysis:
Least used form of documentation is Git Wiki (http://git.or.cz/gitwiki at the point of running this survey, http://git.wiki.kernel.org currently) with 36% responders never using it, but those that use it feel that it is "somewhat" useful to "useful".
Both help distributed with Git (manpages, Git User's Manual, HOWTOs, etc.) and on-line help (including but not limited to Git Community Book, and tutorials and guides on Git homepage) are almost the same useful, with help included in Git felt to be more useful than on-line help (49% vs 43% is "useful", 36% vs 40% only "somewhat" useful).
25. Have you tried to get help regarding Git from other people?
(single choice)
This question, and questions following it were meant to be about getting help from other people , rather than trying to find help by self. From the set of "other (please specify)" answers for "help channel", which include among others many instances of "Google search" or equivalent, it looks like it was not entirely clean.
Answer | Count | Perc. |
---|---|---|
Yes | 2261 | 64.7% |
No | 1236 | 35.3% |
Base | 3497 / 3868 |
As you can see 2/3 responders tried to get help regarding Git from other people.
26. If yes, did you get these problems resolved quickly and to your liking?
(single choice)
Answer | Count | Perc. |
---|---|---|
Yes | 1458 | 62.2% |
No | 133 | 5.7% |
Somewhat | 752 | 32.1% |
Base | 2343 / 3868 |
Consistency check: 2082 people answered that they tried to get help about Git from other people, but we have 2157 responses in this question...
It looks like we have good community surrounding Git, if 2/3 Git questions are resolved quickly and accurately, and only 6% couldn't get quick response and one to their liking.
27. What channel(s) did you use to request help?
(multiple choice, with other)
Channel | Count | Perc. |
---|---|---|
git mailing list (git@vger.kernel.org) | 284 | 12.2% |
"Git for Human Beings" Google Group | 55 | 2.4% |
IRC (#git) | 716 | 30.7% |
IRC (other git/SCM related, e.g. #github) | 227 | 9.7% |
request in blog post or on wiki[1] | 188 | 8.1% |
asking git guru/colleague | 1360 | 58.3% |
project mailing list, or IRC, or forum | 448 | 19.2% |
Twitter or other microblogging platform | 287 | 12.3% |
instant messaging (IM) like XMPP/Jabber | 442 | 18.9% |
StackOverflow[2] | 406 | 17.4% |
other (please specify) | 167 | 7.2% |
Base | 2333 / 3868 |
Notes:
- ↑ Here I mainly meant asking a question on one's blog, and waiting for response in blog comments, like e.g. http://jjnapiorkowski.vox.com/library/post/migrating-to-git-from-subversion.html , or asking on Git Wiki (as if it was help forum), or on Talk page of some other wiki (no example).
- ↑ StackOverflow is a community driven programming-related Q&A site http://stackoverflow.com/questions/tagged/git
Analysis:
Most used 'channel' is to simply ask somebody better versed in Git personally (58%), then is #git channel with usually fast real-time response (31%). Git mailing list has only 12% of replies, below (quite new) forums and project mailing lists (19% - wide category), instant messaging (19%), and quite new StackOverflow (17%), and very similar to microblogging platforms such as Twitter or Identi.ca (also 12%).
"Git for Human Beings" Google Group is rarely used, with only 2% of responses...
As for "other (please specify)" response:
- There are some responses ("Internet search", "Google", a book) that show that it was not entirely clear that the question was about asking _other people_ for help regarding Git, not searching for help oneself.
- Some responses (e.g. "colleagues") were variant of provided channel.
- Some responses were more detailed specification (description) of channel used; examples include "#dri-devel on freenode", "Rick (friend)", "IRC (channel of project using git)", "Rotating my chair and asking", etc.
- And there were channels that were not included in the list of provided answers (some because channel is rare, some because survey author didn't think of such channel):
- GitHub mailing list / GitHub Google Group
- asking a guy who gave a talk about git at a conference
- messages through GitHub
- private email
- direct email with tutorial author
- msysGit mailing list / msysGit Google Group
- Server Fault (but Stack Overflow is on list)
- Specialists at the work office
28. Which communication channel(s) do you use?
Do you read the mailing list, or watch IRC channel?
(multiple choice)
Channel | Count | Perc. |
---|---|---|
git@vger.kernel.org (main) | 390 | 41.6% |
Git for Human Beings (Google Group) | 74 | 7.9% |
msysGit | 98 | 10.4% |
#git IRC channel | 516 | 55.0% |
#github or #gitorious IRC channel | 195 | 20.8% |
#revctrl IRC channel | 4 | 0.4% |
Base | 938 / 3868 |
Note that percentage is relative to the (small) number of replies to this question, not relative to the number of all responders.
Among listed channels, most commonly used are #git IRC channel on FreeNode with 54%, and git mailing list (git@vger,kernel.org) with 42%. Third is #github and #gitorious IRC channels together, with 22% or replies to this question.
About this survey. Open forum.
29. How did you hear about this Git User's Survey?
(single choice, with other)
Answer | Count | Perc. |
---|---|---|
git mailing list | 270 | 7.7% |
git-related mailing list (e.g. msysGit) | 39 | 1.1% |
mailing list or forum of some project | 201 | 5.8% |
#git IRC channel topic | 63 | 1.8% |
announcement on IRC channel | 56 | 1.6% |
git homepage | 443 | 12.7% |
git wiki | 95 | 2.7% |
git hosting site | 502 | 14.4% |
software-related web site | 140 | 4.0% |
news or social news site (e.g. Digg, Reddit) | 95 | 2.7% |
blog (or blog planet) | 748 | 21.5% |
other kind of web site | 44 | 1.3% |
Twitter or other microblogging platform | 350 | 10.0% |
other - please specify | 438 | 12.6% |
Base | 3484 / 3868 |
30. What other comments or suggestions do you have that are not covered by the questions above?
(free-form essay)
555 / 3868 non-empty responses