git peer-to-peer project: info needed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi folks,

[please could you kindly cc on responses because i am subscribed with
"no mail" set]

i need some guidance on what i should be doing, to add peer-to-peer
networking to "git fetch".  i can take care of the peer-to-peer
networking side: the bit i'm unsure about is what sequence of events
are required to happen.  i'm presently looking at the use of
walker_fetch in builtin-http-fetch.c which gives me some idea.
however as i aim to implement this first in python not c, i need to be
using git via command-line only.

perhaps... does anyone know of an implementation of "git fetch" in
say... shell-script (or perhaps in python) or just absolutely any
language _other_ than c?

i believe... i believe i may need the git rev-list and git
pack-objects commands, would that be right?  rev-list gives the list
of commit revisions; pack-objects, if i can merely transfer the .pack
file and .index file over the peer-to-peer network, the job's half
done, am i right?

(the only missing step is to have a way to find the list of objects at
the remote end - i know how to do that)

following that, i can do "git unpack-objects" on the .pack file(s)

and... i've just done a test on that (manually, by running
git-pack-objects --thin --all --stdout and then git-unpack-objects)
... um.... :)  i'm missing the "tag updating", aren't i?  the objects
are now in the .git repo but they're "hanging about", as can be seen
with git fsck:

$  git fsck
dangling commit af87b49b9fbcae28ae19b86ca04af5bd4a9f6778

so... my next step iis... ermm... update the head ref?  err? :)  i see
that gitpython is simply writing [the above ref] into
.git/ref/heads/master or whereever is specified (must begin with refs)
which is kinda cheating but perfectly reasonable... err.. but wait...
i'm into what "git-pull.sh" is doing at this point, aren't i?

soo... i kinda don't have to worry about that bit, am i right?  as
long as i get to complete the "git-unpack-objects" stage, the rest can
be handled by git-pull.sh, am i right?

much obliged some answers so that i can get this done, as free
software, and provide people with a peer-to-peer distributed version
of git.

l.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]