On Wed, Mar 11, 2009 at 7:33 AM, Matthew Toseland <toad at amphibian.dyndns.org> wrote: > On Monday 09 March 2009 03:36:03 Daniel Cheng (aka SDiZ) wrote: >> 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 >> >> >> To workaround the metadata update problem, this client translate the >> path seperator to "-", that means: >> >> On push: >> ? ?objects/aa/bbbbbbbb ? --> USK at ..../test.git-objects-aa-bbbbbbb/-1/ >> ? ?refs/heads/xxx ? ? ? ?--> USK at ..../test.git-objects-ref-heads-xxx/-1/ >> >> On pull: >> ? ?To support uploading from jSite, >> ? ? when we load the info/refs we first check > USK at ..../test.git-info-refs/-1/ >> ? ? if it is unavailiable, we would use USK at ..../test.git/-1/info/refs >> >> ? ?The "traditional" type (USK at ..../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? >> ? ?Currently, we use URI of form fcp://SSK@<public key>^<private > key>/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? > > Very nice. To be clear, the "alternative object repository" is what you get > when you insert the whole thing with jSite? Which it is recommended you do > occasionally for longevity?
"alternative object repository" is a git term (and most git user never use, or even heard about it) Basically, if it can't find an object in USK at ..../xx.git-objects-packs-pack-xxxx.pack/1/ , it will try USK at ..../xx.git/1/objects/xx/xxxxxx and then USK at ..../xx.git/1/objects/packs/pack-xxxx.pack/ . I think we should use this only _only_ when we are initializing a large repository, or try to recover from file fall out from the network. .
