Skip to content

Commit

Permalink
Wrap lobjs so they can be deduped w/ other IPFS objects, fixes #12
Browse files Browse the repository at this point in the history
  • Loading branch information
sameer committed Jan 7, 2019
1 parent 61547fd commit 8b94056
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 5 deletions.
53 changes: 48 additions & 5 deletions cmd/git-remote-ipld/ipld.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ import (
"io/ioutil"
"path"
"strings"
"sync"

core "github.com/ipfs-shipyard/git-remote-ipld/core"
cid "gx/ipfs/QmR8BauakNcBa3RbE4nbQu76PDiJgoQgz8AJdhJuiU4TAw/go-cid"
ipfs "gx/ipfs/QmabBPe1QjKzxHkvoxZmQJYVGE1FUJXE99pyVnkVemf41z/go-ipfs-api"

"gx/ipfs/QmR8BauakNcBa3RbE4nbQu76PDiJgoQgz8AJdhJuiU4TAw/go-cid"
core "github.com/ipfs-shipyard/git-remote-ipld/core"

"gx/ipfs/QmfRYHUcz9QtXq1KK9dQFqprHcpqCVDjswgZDpbHdTzUUW/go-git.v4/plumbing"
)

Expand Down Expand Up @@ -242,16 +244,57 @@ func (h *IpnsHandler) Push(remote *core.Remote, local string, remoteRef string)
func (h *IpnsHandler) bigNodePatcher(tracker *core.Tracker) func(cid.Cid, []byte) error {
return func(hash cid.Cid, data []byte) error {
if len(data) > (1 << 21) {
c, err := h.api.Add(bytes.NewReader(data))
endOfHeader := -1
for i := 0; i < len(data); i++ {
if data[i] == 0 {
endOfHeader = i + 1
break
}
}

var objectHash string
var err error
if endOfHeader > 0 {
panic("whee")
wg := sync.WaitGroup{}
wg.Add(2)

var headerHash string
var headerHashErr error
go func() {
headerHash, headerHashErr = h.api.Add(bytes.NewReader(data[0:endOfHeader]))
wg.Done()
}()

var dataHash string
var dataHashErr error
go func() {
dataHash, dataHashErr = h.api.Add(bytes.NewReader(data[endOfHeader:]))
wg.Done()
}()

wg.Wait()
if headerHashErr != nil {
return headerHashErr
}
if dataHashErr != nil {
return dataHashErr
}

objectHash, err = h.api.PatchLink(headerHash, "0", dataHash, false)
} else {
objectHash, err = h.api.Add(bytes.NewReader(data))
}

if err != nil {
return err
}

if err := tracker.Set(LOBJ_TRACKER_PRIFIX+"/"+hash.String(), []byte(c)); err != nil {
if err := tracker.Set(LOBJ_TRACKER_PRIFIX+"/"+hash.String(), []byte(objectHash)); err != nil {
return err
}

h.currentHash, err = h.api.PatchLink(h.currentHash, "objects/"+hash.String(), c, true)
h.currentHash, err = h.api.PatchLink(h.currentHash, "objects/"+hash.String(), objectHash, true)
if err != nil {
return err
}
Expand Down
Binary file modified mock/git/index
Binary file not shown.
1 change: 1 addition & 0 deletions mock/git/logs/HEAD
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 31f087b9bf39d5bcbba5d4e80b2b4ff19a71dc0
d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 Dirk McCormick <dirkmdev@gmail.com> 1517945747 -0500 checkout: moving from master to italian
d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 78a77abd233c24d8e6a0d0d040c79ae569fc7a19 Dirk McCormick <dirkmdev@gmail.com> 1517945768 -0500 commit: English -> Italian
78a77abd233c24d8e6a0d0d040c79ae569fc7a19 d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 Dirk McCormick <dirkmdev@gmail.com> 1517945774 -0500 checkout: moving from italian to master
d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 8f329544bb70a739a8a65eda1c0aa949a971dede Sameer Puri <sameer@users.noreply.github.com> 1546885786 -0600 commit: Add lobj file
2 changes: 2 additions & 0 deletions mock/git/logs/refs/heads/lobj
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
0000000000000000000000000000000000000000 d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 Sameer Puri <sameer@users.noreply.github.com> 1546885771 -0600 branch: Created from HEAD
d5b0d08c180fd7a9bf4f684a37e60ceeb4d25ec8 8f329544bb70a739a8a65eda1c0aa949a971dede Sameer Puri <sameer@users.noreply.github.com> 1546885786 -0600 commit: Add lobj file
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions mock/git/refs/heads/lobj
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
8f329544bb70a739a8a65eda1c0aa949a971dede

0 comments on commit 8b94056

Please sign in to comment.