{"thread":{"id":"36135","subject":"GSoC proposal: port pack bitmap support to libgit2.","startedAt":"2014-03-12T08:19:23Z","lastAt":"2014-03-20T13:38:28Z","messageCount":4,"participants":["Yuxuan Shui","Jeff King"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"236564","messageId":"CAGqt0zz1W1k92B+XRWEmMEv1=iyej+zi9QUCp2EhA=g+VnCt0g@mail.gmail.com","threadId":"36135","inReplyTo":null,"subject":"GSoC proposal: port pack bitmap support to libgit2.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-12T08:19:23Z","receivedAt":"2014-03-12T08:19:23Z","isPatch":false,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"Hi,\n\nI'm Yuxuan Shui, a undergraduate student from China. I'm applying for\nGSoC 2014, and here is my proposal:\n\nI found this idea on the ideas page, and did some research about it.\nThe pack bitmap patchset add a new .bitmap file for every pack file\nwhich contains the reachability information of selected commits. This\ninformation is used to speed up git fetching and cloning, and produce\na very convincing results.\n\nThe goal of my project is to port the pack bitmap implementation in\ncore git to libgit2, so users of libgit2 could benefit from this\noptimization as well.\n\nPlease let me know if my proposal makes sense, thanks.\n\nP.S. I've submitted by microproject patch[1], but haven't received any\nresponse yet.\n\n[1]: http://thread.gmane.org/gmane.comp.version-control.git/243854\n\n-- \nRegards\nYuxuan Shui\n"},{"id":"236674","messageId":"CAGqt0zy=av=V--REMz2Q1VRZW9mU5Ng=NN=TAAZiUbzskUZbgQ@mail.gmail.com","threadId":"36135","inReplyTo":"CAGqt0zz1W1k92B+XRWEmMEv1=iyej+zi9QUCp2EhA=g+VnCt0g@mail.gmail.com","subject":"Re: GSoC proposal: port pack bitmap support to libgit2.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-13T17:20:58Z","receivedAt":"2014-03-13T17:20:58Z","isPatch":false,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"Hi,\n\nOn Wed, Mar 12, 2014 at 4:19 PM, Yuxuan Shui <yshuiv7@gmail.com> wrote:\n> Hi,\n>\n> I'm Yuxuan Shui, a undergraduate student from China. I'm applying for\n> GSoC 2014, and here is my proposal:\n>\n> I found this idea on the ideas page, and did some research about it.\n> The pack bitmap patchset add a new .bitmap file for every pack file\n> which contains the reachability information of selected commits. This\n> information is used to speed up git fetching and cloning, and produce\n> a very convincing results.\n>\n> The goal of my project is to port the pack bitmap implementation in\n> core git to libgit2, so users of libgit2 could benefit from this\n> optimization as well.\n>\n> Please let me know if my proposal makes sense, thanks.\n>\n> P.S. I've submitted by microproject patch[1], but haven't received any\n> response yet.\n>\n> [1]: http://thread.gmane.org/gmane.comp.version-control.git/243854\n>\n> --\n> Regards\n> Yuxuan Shui\n\nCould anyone please review my proposal a little bit? Is this project\nhelpful and worth doing? Did I get anything wrong in my proposal?\n\nThanks.\n\n-- \n\nRegards\nYuxuan Shui\n"},{"id":"236712","messageId":"20140314043404.GD31906@sigill.intra.peff.net","threadId":"36135","inReplyTo":"CAGqt0zz1W1k92B+XRWEmMEv1=iyej+zi9QUCp2EhA=g+VnCt0g@mail.gmail.com","subject":"Re: GSoC proposal: port pack bitmap support to libgit2.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2014-03-14T04:34:04Z","receivedAt":"2014-03-14T04:34:04Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Mar 12, 2014 at 04:19:23PM +0800, Yuxuan Shui wrote:\n\n> I'm Yuxuan Shui, a undergraduate student from China. I'm applying for\n> GSoC 2014, and here is my proposal:\n> \n> I found this idea on the ideas page, and did some research about it.\n> The pack bitmap patchset add a new .bitmap file for every pack file\n> which contains the reachability information of selected commits. This\n> information is used to speed up git fetching and cloning, and produce\n> a very convincing results.\n> \n> The goal of my project is to port the pack bitmap implementation in\n> core git to libgit2, so users of libgit2 could benefit from this\n> optimization as well.\n> \n> Please let me know if my proposal makes sense, thanks.\n\nYou'd want to flesh it out a bit more to show how you're thinking about\ntackling the problem:\n\n  - What are the areas of libgit2 that you will need to touch? Be\n    specific. What's the current state of the packing code? What\n    files and functions will you need to touch?\n\n  - What are the challenges you expect to encounter in porting the code?\n\n  - Can you give a detailed schedule of the summer's work? What will you\n    work on in each week? What milestones do you expect to hit, and\n    when?\n\n-Peff\n"},{"id":"237173","messageId":"CAGqt0zwp2a6wrzLY0KOmH1zd0Bj5wmwvyBjy0j1JDjm3X4cSQg@mail.gmail.com","threadId":"36135","inReplyTo":"20140314043404.GD31906@sigill.intra.peff.net","subject":"Re: GSoC proposal: port pack bitmap support to libgit2.","fromName":"Yuxuan Shui","fromEmail":"yshuiv7@gmail.com","sentAt":"2014-03-20T13:38:28Z","receivedAt":"2014-03-20T13:38:28Z","isPatch":false,"sender":{"key":"yshuiv7@gmail.com","avatar":"https://avatars.githubusercontent.com/u/366851?v=4"},"body":"Hi,\n\nSorry for this late reply, I was busy for past few days.\n\nOn Fri, Mar 14, 2014 at 12:34 PM, Jeff King <peff@peff.net> wrote:\n> On Wed, Mar 12, 2014 at 04:19:23PM +0800, Yuxuan Shui wrote:\n>\n>> I'm Yuxuan Shui, a undergraduate student from China. I'm applying for\n>> GSoC 2014, and here is my proposal:\n>>\n>> I found this idea on the ideas page, and did some research about it.\n>> The pack bitmap patchset add a new .bitmap file for every pack file\n>> which contains the reachability information of selected commits. This\n>> information is used to speed up git fetching and cloning, and produce\n>> a very convincing results.\n>>\n>> The goal of my project is to port the pack bitmap implementation in\n>> core git to libgit2, so users of libgit2 could benefit from this\n>> optimization as well.\n>>\n>> Please let me know if my proposal makes sense, thanks.\n>\n> You'd want to flesh it out a bit more to show how you're thinking about\n> tackling the problem:\n>\n>   - What are the areas of libgit2 that you will need to touch? Be\n>     specific. What's the current state of the packing code? What\n>     files and functions will you need to touch?\n\nFirstly I will need to implement bitmap creation in libgit2's\ngit_packbuilder_* functions (probably also git_odb_write_pack), so\nlibgit2 could support bitmap creation. Then I will need to change\ngit_revwalk_* functions to make them use bitmap. Since the operations\nthat can benefit from bitmap is, if my understanding is correct, all\nusing the git_revwalk_* functions, having bitmap support in revwalk\nfunctions should be enough.\n\nFiles I need to touch probably are: revwalk.c pack-objects.c\nIf I need to change the API of packbuilder or revwalk functions I will\nhave to change the callers as well: push.c fetch.c and\ntransport/smart_protocol.c\n\nI haven't read all the code to put together a list of functions I need\nto change, but I think the list will be long.\n\n>\n>   - What are the challenges you expect to encounter in porting the code?\n\nThe architecture differences between git and libgit2 will probably be\na challenge.\n\n>\n>   - Can you give a detailed schedule of the summer's work? What will you\n>     work on in each week? What milestones do you expect to hit, and\n>     when?\n\nI don't really have a plan, but I'll try to provide a rough schedule.\n\nI'll read the code and try to understand the code, to the point where\nI can start to add new code. This will probably take a week. For next\nthree or four weeks I should be implementing bitmap creation in\npackbuilder. Then for the rest of time I will be optimizing revwalk\nusing bitmap.\n\n>\n> -Peff\n\n--\n\nRegards\nYuxuan Shui\n"}]}