From: "Carlos Martín Nieto" <carlos@cmartin.tk>
To: libgit2@librelist.org, git@vger.kernel.org
Subject: [GSoC 11] libgit2: midterm report
Date: Tue, 19 Jul 2011 02:07:03 +0200 [thread overview]
Message-ID: <1311034023.4147.949.camel@centaur.lab.cmartin.tk> (raw)
[-- Attachment #1: Type: text/plain, Size: 2894 bytes --]
Hello everyone,
As it's the GSoC midterm and I'm taking a rest from coding (my exams are
in the next few days) I'm taking this opportunity to write up a more
detailed report on what has been happening on the libgit2 network front.
All the code is available from my 'fork' on github.
The more useful working code has been merged into mainline, and you can
get a list of references on the remote. If you want to filter which
references you want to see, you can do that as well (with some manual
work). I had hoped that fetching and/or pack indexing would be working
by now, but sadly the university got in the way. At any rate, here's a
list of what's working/implemented:
_Refspec_
I believe all the important stuff has been implemented. You can get one
from a remote and you can see if a string matches what it describes. You
can also transform a string/path from the source to the destination
form (this probably has a different name in git.git). The transformation
code assumes that a '*' in the destination implies that there is a '*'
at the end of the source name as well. This might need to be 'hardened'.
_Remotes_
You can parse its information from the configuration file (the push and
fetch refspecs will be parsed as well) and an appropriate transport (see
below) will be chosen based on the URL prefix. Right now there is a
static list, but plug-ins could be supported without much effort if
somebody can come up with an use-case. It is through these transports
that everything is done through the network (or simulating the network,
as in the local filesystem "network" transport).
_Transports_
This is where most of the work actually happens. Each transport
registers its callbacks in a structure and does its work transparently.
The data structures are still in flux, as I haven't yet found the best
way to avoid duplicating the information in several places, and the
want/have/need code is really still in it infancy. The idea is that the
object list you get when you connect can be used to mark which commits
you want to receive or send. Right now only the local filesystem and
git/tcp are implemented; and the only working operation is
'git-ls-remote'.
_Sliding memory maps, packfile reading and the indexer_
Or whatever you want to call them; I believe it's mmfile in git. This
code and the packfile reading code live in the "pack ODB backend" so I'm
making it somewhat more generic so I can use it without an ODB backend.
Once that code is decoupled (which is a good change on its own), writing
and indexer shouldn't be too hard.
-----
So this is where I am now. I'm a bit behind according to the original
schedule but still on track to finish on time. It's been interesting and
fun, sometimes a bit frustrating. Thanks to all the people who have
helped me thus far.
Cheers,
cmn
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
reply other threads:[~2011-07-19 0:07 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=1311034023.4147.949.camel@centaur.lab.cmartin.tk \
--to=carlos@cmartin.tk \
--cc=git@vger.kernel.org \
--cc=libgit2@librelist.org \
/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).