{"push_id":689098028,"size":19,"distinct_size":19,"ref":"refs/heads/pin","head":"2a453f27a17ee8771ecc91e673d40b74672113fc","before":"397fbcf0c8c8c72ac75d34b84d9e57c1642aeda6","commits":[{"sha":"c71a6c9fbeda98e6e866fbe622d6bb704afa045f","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Guard against callers causing refcount underflow\n\nThis used to lead to large refcount numbers, causing Flush to create a\nlot of IPFS objects, and merkledag to consume tens of gigabytes of\nRAM.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/c71a6c9fbeda98e6e866fbe622d6bb704afa045f"},{"sha":"64d01affe8fa620735a9c189907e9ea8dc09b61e","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"sharness: Use sed in a cross-platform safe way\n\nOS X sed is documented as \"-i SUFFIX\", GNU sed as \"-iSUFFIX\". The one\nconsistent case seems to be \"-iSUFFIX\", where suffix cannot empty (or\nOS X will parse the next argument as the suffix).\n\nThis used to leave around files named `refsout=` on Linux, and was\njust confusing.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/64d01affe8fa620735a9c189907e9ea8dc09b61e"},{"sha":"7b71cfca164d179cb59466a117b03041fec1d56b","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"sharness: `fusermount -u` is the documented way to unmount FUSE on Linux","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/7b71cfca164d179cb59466a117b03041fec1d56b"},{"sha":"42c0f60119c318360d2edc8a3709aee338487d28","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: unexport NewIndirectPin, it's not useful and not used elsewhere","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/42c0f60119c318360d2edc8a3709aee338487d28"},{"sha":"9f5da92cf9c208bc10f49ddcff330817e4fb49c4","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Remove code shadowing pins as datastore keys\n\nThese secondary copies were never actually queried, and didn't contain\nthe indirect refcounts so they couldn't become the authoritative\nsource anyway as is. New goal is to move pinning into IPFS objects.\n\nA migration will be needed to remove the old data from the datastore.\nThis can happen at any time after this commit.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/9f5da92cf9c208bc10f49ddcff330817e4fb49c4"},{"sha":"deceff0ce2a94af6e588ea5c9eea5936b4c2d2bf","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"blocks/set: Remove now-unused NewDBWrapperSet","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/deceff0ce2a94af6e588ea5c9eea5936b4c2d2bf"},{"sha":"0a3399e3a3b999d1759225669d1ff43cc4e2a031","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"Simplify Pinner interface by folding ManualPinner into Pinner\n\nPinner had method GetManual that returned a ManualPinner, so every\nPinner had to implement ManualPinner anyway.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/0a3399e3a3b999d1759225669d1ff43cc4e2a031"},{"sha":"2b75affd75e14f2704f1ee564ef537e84143ce70","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Remove dead code","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/2b75affd75e14f2704f1ee564ef537e84143ce70"},{"sha":"892352c9b5ff89590efc9674c8ffa637def46f74","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Remove double bookkeeping of refcount keys","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/892352c9b5ff89590efc9674c8ffa637def46f74"},{"sha":"70edb24c078a108ca205c3269aad997995254b7b","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"Use uint64 for indirect pin refcounts\n\nPlatform-dependent behavior is not nice, and negative refcounts are\nnot very useful.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/70edb24c078a108ca205c3269aad997995254b7b"},{"sha":"ae89354c8394c990d8bffb4e85f3ee47c13f0dc6","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"Typo","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/ae89354c8394c990d8bffb4e85f3ee47c13f0dc6"},{"sha":"08ab857669e0ad84fb52363eaa4b28c2fe76a742","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"sharness: Don't assume we know all things that can create garbage","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/08ab857669e0ad84fb52363eaa4b28c2fe76a742"},{"sha":"9bb1b55afb33a6a1eeda24a1bbc0b65b04de14cd","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"sharness: Don't assume we know all things that can create garbage","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/9bb1b55afb33a6a1eeda24a1bbc0b65b04de14cd"},{"sha":"578b15ddb26eea89658919404489359840952dbc","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Rewrite to store pins in IPFS objects\n\nWARNING: No migration performed! That needs to come in a separate\ncommit, perhaps amended into this one.\n\nThis is the minimal rewrite, only changing the storage from\nJSON(+extra keys) in Datastore to IPFS objects. All of the pinning\nstate is still loaded in memory, and written from scratch on Flush. To\ndo more would require API changes, e.g. adding error returns.\n\nSet/Multiset is not cleanly separated into a library, yet, as it's API\nis expected to change radically.","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/578b15ddb26eea89658919404489359840952dbc"},{"sha":"8ab2b7931ca96bfbe3ddb711c0ccf667d26e1040","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Future-proof against refcount marshaled size changes","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/8ab2b7931ca96bfbe3ddb711c0ccf667d26e1040"},{"sha":"47473d6cb3e3a56ef247b4d691e2d7b00215822e","author":{"email":"3e51041acc6532636d1f83f7ac2f8d6dab10a8ab@gmail.com","name":"Jeromy"},"message":"bump fsrepo version to 3","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/47473d6cb3e3a56ef247b4d691e2d7b00215822e"},{"sha":"9b85b9c0515e26b27df307eebd68967d7678908a","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"pin: Do not accidentally delete indirect pins on Flush","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/9b85b9c0515e26b27df307eebd68967d7678908a"},{"sha":"070f1289b592f5596e21a5405a83a164a1dd1d60","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"dagmodifier: Don't lose pin if old and new key happen to be equal","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/070f1289b592f5596e21a5405a83a164a1dd1d60"},{"sha":"2a453f27a17ee8771ecc91e673d40b74672113fc","author":{"email":"ff0dc9ba250002871f7aabbaf6729ea66fc93fea@eagain.net","name":"Tommi Virtanen"},"message":"dagmodifier test: Add TODO note about how bad luck can cause test failure","distinct":true,"url":"https://api.github.com/repos/ipfs/go-ipfs/commits/2a453f27a17ee8771ecc91e673d40b74672113fc"}]}