From: Thomas Rast <trast@student.ethz.ch>
To: <git@vger.kernel.org>
Cc: "Jeff King" <peff@peff.net>, "Shawn Pearce" <spearce@spearce.org>,
"Jakub Narebski" <jnareb@gmail.com>,
"Christian Couder" <christian.couder@gmail.com>,
"Pat Thoyts" <patthoyts@users.sourceforge.net>,
"Paul Mackerras" <paulus@samba.org>,
"Carlos Martín Nieto" <cmn@elego.de>,
"Thomas Gummerer" <t.gummerer@gmail.com>,
"David Michael Barr" <davidbarr@google.com>,
"Ramkumar Ramachandra" <artagnon@gmail.com>,
"Jens Lehmann" <Jens.Lehmann@web.de>,
"Nguyen Thai Ngoc Duy" <pclouds@gmail.com>
Subject: Re: Google Summer of Code 2013 (GSoC13)
Date: Mon, 18 Feb 2013 18:46:05 +0100 [thread overview]
Message-ID: <87k3q5zfaa.fsf@pctrast.inf.ethz.ch> (raw)
In-Reply-To: <87ehgd1qq2.fsf@pctrast.inf.ethz.ch> (Thomas Rast's message of "Mon, 18 Feb 2013 18:23:01 +0100")
Thomas Rast <trast@inf.ethz.ch> writes:
> * We should prepare an "ideas page"[...]
> https://github.com/trast/git/wiki/SoC-2013-Ideas
>From where I'm currently sitting, I won't have the time to mentor this
year. So my two earlier proposals are essentially up for grabs:
1. Improving parallelism in various commands
-----------------------------------------
Git is mostly written single-threaded, with a few commands having
bolted-on extensions to support parallel operation (notably git-grep,
git-pack-objects and the core.preloadIndex feature).
We have recently looked into some of these areas and made a few
optimizations, but a big roadblock is that pack access is entirely
single-threaded. The project would consist of the following steps:
* In preparation (the half-step): identify commands that could
benefit from parallelism. `git grep --cached` and `git grep
COMMIT` come to mind, but most likely also `git diff` and `git log
-p`. You can probably find more.
* Rework the pack access mechanisms to allow the maximum possible
parallel access.
* Rework the commands found in the first step to use parallel pack
access if possible. Along the way, document the improvements with
performance tests.
The actual programming must be done in C using pthreads for obvious
reasons. At the very least you should not be scared of low-level
programming. Prior experience and access to one or more multi-core
computers is a plus.
This one is probably still a contender. However, it might be worth
first looking into whether using libgit2 for pack reading would be
easier and faster, since it is written to be reentrant from the ground
up.
2. Improving the `git add -p` interface
------------------------------------
The interface behind `git {add|commit|stash|reset} {-p|-i}` is shared
and called `git-add--interactive.perl`. This project would mostly
focus on the `--patch` side, as that seems to be much more widely
used; however, improvements to `--interactive` would probably also be
welcome.
The `--patch` interface suffers from some design flaws caused largely
by how the script grew:
* Application is not atomic: hitting Ctrl-C midway through patching
may still touch files.
* The terminal/line-based interface becomes a problem if diff hunks
are too long to fit in your terminal.
* Cannot go back and forth between files.
* Cannot reverse the direction of the patch.
* Cannot look at the diff in word-diff mode (and apply it normally).
Due to the current design it is also pretty hard to add these features
without adding to the mess. Thus the project consists of:
* Come up with more ideas for features/improvements and discuss them
with users.
* Cleanly redesigning the main interface loop to allow for the above
features.
* Implement the new features.
As the existing code is written in Perl, that is what you will use for
this project.
This has already featured twice, and resulted in proposals that were
insufficiently advanced and too little work for a GSoC. If nobody feels
like extending it to a bigger project, I'll just scrap it.
--
Thomas Rast
trast@{inf,student}.ethz.ch
next prev parent reply other threads:[~2013-02-18 17:46 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-18 17:23 Google Summer of Code 2013 (GSoC13) Thomas Rast
2013-02-18 17:42 ` Jeff King
2013-02-18 18:44 ` Ramkumar Ramachandra
2013-02-18 18:58 ` Jeff King
2013-02-18 19:45 ` Ramkumar Ramachandra
2013-02-18 19:57 ` Jonathan Nieder
2013-02-18 20:03 ` Thomas Rast
2013-02-19 7:51 ` Ramkumar Ramachandra
2013-02-18 21:13 ` Jeff King
2013-02-19 9:00 ` Ramkumar Ramachandra
2013-02-18 19:45 ` Thomas Rast
2013-02-18 20:01 ` Jens Lehmann
2013-02-18 22:32 ` Junio C Hamano
2013-02-19 7:08 ` Ramkumar Ramachandra
2013-02-19 7:25 ` Jonathan Nieder
2013-02-19 8:12 ` Ramkumar Ramachandra
2013-02-19 8:41 ` Thomas Rast
2013-02-19 16:29 ` Junio C Hamano
2013-02-19 16:39 ` Thomas Rast
2013-02-19 7:31 ` Junio C Hamano
2013-02-19 8:22 ` Ramkumar Ramachandra
2013-02-19 16:32 ` Junio C Hamano
2013-02-18 19:34 ` Jonathan Nieder
2013-02-18 20:02 ` Jens Lehmann
2013-02-20 6:17 ` Christian Couder
2013-02-18 20:44 ` Ramkumar Ramachandra
2013-02-18 21:07 ` Jeff King
2013-02-18 22:37 ` Junio C Hamano
2013-02-18 21:11 ` Potential GSoC13 projects (Re: Google Summer of Code 2013 (GSoC13)) Jonathan Nieder
2013-02-19 1:23 ` Duy Nguyen
2013-02-18 20:55 ` Google Summer of Code 2013 (GSoC13) Jeff King
2013-02-18 23:03 ` Jonathan Nieder
2013-02-20 6:50 ` Shawn Pearce
2013-02-20 12:07 ` Christian Couder
2013-02-20 12:26 ` Matthieu Moy
2013-02-21 15:41 ` Thomas Rast
2013-02-20 19:48 ` Michael Schubert
2013-02-21 14:29 ` Carlos Martín Nieto
2013-02-25 9:12 ` Florian Achleitner
2013-02-25 17:44 ` Junio C Hamano
2013-02-18 17:46 ` Thomas Rast [this message]
2013-02-18 18:02 ` Ronan Keryell
2013-02-18 19:48 ` Thomas Rast
2013-02-18 18:13 ` Ramkumar Ramachandra
2013-02-18 19:53 ` Thomas Rast
2013-02-19 1:17 ` Duy Nguyen
2013-02-26 4:59 ` Jaseem Abid
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k3q5zfaa.fsf@pctrast.inf.ethz.ch \
--to=trast@student.ethz.ch \
--cc=Jens.Lehmann@web.de \
--cc=artagnon@gmail.com \
--cc=christian.couder@gmail.com \
--cc=cmn@elego.de \
--cc=davidbarr@google.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=patthoyts@users.sourceforge.net \
--cc=paulus@samba.org \
--cc=pclouds@gmail.com \
--cc=peff@peff.net \
--cc=spearce@spearce.org \
--cc=t.gummerer@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).