From: Daniel Cheng Date: Mon, 09 Mar 2009 11:35:38 GMT Subject: Re: [freenet-dev] [PoC PATCH JGIT 0/2] Proof of concept code for Git Freenet transport Message-ID: In-Reply-To: <1541866875@web.de> On Mon, Mar 9, 2009 at 6:46 PM, wrote: >> -----Ursprüngliche Nachricht----- >> Von: "Daniel Cheng (aka SDiZ)" >> Gesendet: 09.03.09 04:36:25 >> An:  git@vger.kernel.org >> Betreff: [freenet-dev] [PoC PATCH JGIT 0/2] Proof of concept code for Git Freenet transport > >> Hi JGit / Freenet community, >> >> Here is some proof-of-concept code for Git-over-Freenet. >> I am sending this to see the feedback from communities. >> >> The code need some more cleanups, so it it is not ready for apply (yet). >> >> This is a real-life example >> >> Push: >>    $ git remote add fcp fcp://SSK@[my public key]^[my private key]/test.git >>    $ ./jgit push fcp refs/remotes/origin/stable:refs/heads/master >> >>  /ALTERNATIVLY/ >> >>    Insert a bare repository under USK@<.....>/test.git/-1/ >> >> Pull: >>  $ ./jgit clone fcp://SSK@[my public key]^[my private key]/test.git > > a pull from fproxy should be possible. so the average user can grab and build sources with an unpatched/regular git version > $ git clone http://127.0.0.1:8888/key/app.git  //grab & build a app > $ git clone http://127.0.0.1:8888/key/jFreeGit.git  //ha, bootstrap! grab & build the modified git for creating repos in freenet > >> >> >> To workaround the metadata update problem, this client translate the >> path seperator to "-", that means: > > you need to mangele path names properly, it may fail on names with '-' inside. It doesn't matter -- we don't have to convert it back. >> On push: >>    objects/aa/bbbbbbbb   --> USK@..../test.git-objects-aa-bbbbbbb/-1/ >>    refs/heads/xxx        --> USK@..../test.git-objects-ref-heads-xxx/-1/ >> > why not 'USK@..../test.git/1/objects/aa/bbbbbbb' ? In freenet, all files under USK@..../test.git/1/* are packed in a zip file and must be updated at once. If we do this, we have to upload all pack files again on every push -- this is very bad. see http://wiki.github.com/j16sdiz/egit-freenet for more detail reply. >> On pull: >>    To support uploading from jSite, >>     when we load the info/refs we first check USK@..../test.git-info-refs/-1/ >>     if it is unavailiable, we would use USK@..../test.git/-1/info/refs >> >>    The "traditional" type (USK@..../test.git/-1/objects) repository is >>    always added as an alternative objects database. No other info/alternatives >>    are supported >> >> FIXME: >>  - How to store the private key of repository? > hg have a per repository config. was quite easy here ;) > >>    Currently, we use URI of form fcp://SSK@^/some-id >>    This is quite ugly. Could we use a per remote Config ? How can I get remote >>    name from transport? >> >>  - Make pushing async, could we? > inserting to an USK should be blocking until the toplevel chunk is in. this is a helpful tactic to hold the edition chain clean.