git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ramkumar Ramachandra <artagnon@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Cc: "Jonathan Nieder" <jrnieder@gmail.com>,
	"David Michael Barr" <david.barr@cordelta.com>,
	"Daniel Shahaf" <d.s@daniel.shahaf.name>,
	"Stefan Sperling" <stsp@elego.de>,
	"Bert Huijben" <rhuijben@collab.net>,
	"Sverre Rabbelier" <srabbelier@gmail.com>,
	"Will Palmer" <wmpalmer@gmail.com>,
	"Philip Martin" <philip.martin@wandisco.com>,
	"Jonas Gehring" <jonas.gehring@boolsoft.org>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [GSoC update] git-remote-svn: The final one
Date: Tue, 17 Aug 2010 20:12:18 +0530	[thread overview]
Message-ID: <20100817144215.GC24886@kytes> (raw)

Hi,

The GSoC is over. Not that it changes anything; I'm still
here. Anyway, here's a report; this isn't a movie, so don't skip the
credits at the end of the email!

Admittedly, I couldn't deliver everything I'd promised in the
beginning, mainly because I misjudged the size/ difficulty of the
project. While I thought I'd spend most of my time in Git-land
converting and mapping histories, I ended up spending a huge amount of
time with Subversion writing svnrdump. The upside is that we now have
an excellent dumpfile importer/ exporter merged into the Subversion
trunk, while the downside is that we don't have a fully functional
remote helper for Subversion yet. In all, git-remote-svn involved
(involves) the following things:

1. Getting the revision history out of Subversion in a sane format
   (dumpfile v3). This turned out to be MUCH harder than expected;
   fortunately, svnrdump does this better than anything else.
2. Converting the revision history from dumpfile v3 format into a git
   fast-import stream. svn-dump-fast-export does this better than
   anything else. In fact, we've even come up with a proof that
   nothing can even theoretically do better. Unfortunately, it only
   does dumpfile v2 so far, and I still haven't managed to extend it
   to do dumpfile v3.
3. Getting revision history into Subversion. The load functionality in
   svnrdump that I wrote after the mid-term does a good job of this. I
   don't know of any tool that even does something similar.
4. Converting the revision history from a fast-export stream to
   dumpfile v3. I've just started thinking about this, and haven't
   started work on it- it's quite a non-trivial challenge.
5. Stitching everything together with a remote helper
   application. This is much easier than I thought- I wrote a remote
   helper in one afternoon [1], but didn't get it merged because it's
   missing the supporting infrastructure.
6. A branch/tag mapper. I dropped this due to lack of time. It's last
   priority even now, and I'll work on it only when the rest of the
   infrastructure is in place.

I had certain objectives that I'd personally set out to meet in the
beginning of the GSoC. Here they are in brief, and my personal
evaluation of each one. Do feel free to criticize the approach I've
followed and the trade-offs that I've chosen to make.

1. Integration. I was determined to get *everything* merged. I think
   I've been largely successful on this front.
2. Code quality. In terms of bug-fixing and polish, I'm happy with the
   current state of the code, thanks to the sheer number of code
   reviews.
3. Community interaction. I was determined to post atleast once a week
   to the list, keep everyone in the loop, and remain active all the
   time. I think I've done justice to this.
4. Off-topic work. This may sound weird; In addition to my GSoC work, I
   was determined to do some other off-topic work as well to get the
   hang of contributing and participating in wider
   discussions. Although I couldn't pay full attention to this due to
   my heavy workload, I did manage to get some minor OT patches in.
5. Completion. I'm lagging heavily on this front.

On a final note, thanks to everyone for helping! Off the top of my
head, the following people have been especially awesome (in no
particular order). I'm sorry if I've forgotten to include someone (!)

1. Jonathan Nieder - for his painfully detailed reviews, constant
   cleanups and re-rolls.
2. David Barr - for authoring svn-dump-fast-export, without which a
   lot of what we've achieved wouldn't have been possible.
3. Daniel Shahaf - for his endless support while I was writing
   svnrdump. I couldn't have finished it without him.
4. Stefan Sperling - for his detailed review of especially of the
   first iteration of svnrdump, which got things moving in the first
   place.
5. Bert Huijben - for his innumerable contributions and killer
   bugfixes!
6. Sverre Rabbelier - for being an awesome mentor, and being
   supportive throughout.
7. Will Palmer - for writing command-line parsing UI and a test script
   for svnrdump.
8. Sam Vilain - for his writeup on the challenges of mapping in
   Subversion. I realized the challenges involved, and decided not to
   pursue this in the SoC term.
9. Philip Martin - for authoring svnmucc, which served as the
   inspiration for the load functionality in svnrdump.
10. Jonas Gehrig - for authoring rsvndump, which served as the
    inspiration for the dump functionality in svnrdump.
11. Ævar Arnfjörð Bjarmason - for getting me access to a powerful
    server to run lots of validation tests; I ended up fixing many
    bugs that I wouldn't have otherwise been able to do.

Thanks for reading.

[1] http://thread.gmane.org/gmane.comp.version-control.git/147715

-- Ram

             reply	other threads:[~2010-08-17 14:44 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-17 14:42 Ramkumar Ramachandra [this message]
2010-08-17 15:48 ` [GSoC update] git-remote-svn: The final one Stephen Bash
2010-08-17 15:59   ` Ramkumar Ramachandra
2010-08-17 16:10     ` Erik Faye-Lund
2010-08-17 16:20       ` Sverre Rabbelier
2010-08-17 17:18         ` Ramkumar Ramachandra
2010-08-17 16:22       ` Ramkumar Ramachandra
2010-08-17 16:20     ` Stephen Bash
2010-08-17 16:41       ` Ramkumar Ramachandra

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=20100817144215.GC24886@kytes \
    --to=artagnon@gmail.com \
    --cc=avarab@gmail.com \
    --cc=d.s@daniel.shahaf.name \
    --cc=david.barr@cordelta.com \
    --cc=git@vger.kernel.org \
    --cc=jonas.gehring@boolsoft.org \
    --cc=jrnieder@gmail.com \
    --cc=philip.martin@wandisco.com \
    --cc=rhuijben@collab.net \
    --cc=srabbelier@gmail.com \
    --cc=stsp@elego.de \
    --cc=wmpalmer@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).