{"thread":{"id":"42125","subject":"GSoC Project Selected | Incremental Rewrite of git bisect","startedAt":"2016-04-23T20:10:27Z","lastAt":"2016-07-12T22:59:26Z","messageCount":18,"participants":["Pranit Bauva","Johannes Schindelin","Matthieu Moy","Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"284231","messageId":"CAFZEwPMr=imv==kvVULy4PDYKW-0RRQ5a+X8DFqNFhNjCSyWKA@mail.gmail.com","threadId":"42125","inReplyTo":null,"subject":"GSoC Project Selected | Incremental Rewrite of git bisect","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-04-23T20:10:27Z","receivedAt":"2016-04-23T20:10:27Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"Hey everyone,\n\nI am Pranit Bauva studying Mining Engineering at Indian Institute of\nTechnology, Kharagpur. I have applied for Google Summer of Code 2016\nunder Git organization and my project[1], \"Incremental Rewrite of git\nbisect has been selected under the guidance of mentors namely\nChristian Couder and Lars Schneider.\n\nOverview of the project:\n\nGit bisect is a frequently used command which helps the developers in\nfinding the commit which introduced the regression. Some part of it is\nwritten in shell script. I intend to convert it to portable C code\nthus making them builtins. This will increase Git’s portability.\n\n\nA word of thanks:\n\nFirstly I would really like to thank everyone who was involved in\nplanning GSoC for Git especially my mentors. Also thanking Eric\nSunshine, SZEDER and Junio for patiently reviewing my micro-project\nand helping me through that. It was a really great experience. I had\npreviously no clue about git bisect and have never used it mainly\nbecause I was never involved with maintaining big projects. Posting my\nidea to the mailing list (which initially contained a lot of mistakes)\nwas extremely helpful. Thanks to Christian Couder, Matthieu Moy,\nJohannes Schindelin and Stefan Beller for providing useful comments.\nExperimenting by converting one function really helped me a lot to\nwrite the proposal. Thanks Roberto for making submitgit.\n\nThe subtle hints dropped were the most helpful. Thanks for explaining\nthose when I could not pick up those hints in the first time.\n\nStatus of Micro-project:\nI had finalized v14[1] but recently Junio pointed out that the series\nrequires ordering and restructuring so I will finish with that. I have\nmy end semester exams going on so I will try to squeeze out some time\nin between and try to work on the patches.\n\nStatus of the function conversion:\nI had attempted to port a function 'check_term_format' from shell to\nC. The last version was v3[2]. In the newer version (there only exist\na local copy as I have neither sent it in the mailing list nor I have\npushed it on github) as one test is not exiting properly. The code\nwritten with confusing error handling and return statements which were\nmainly there to help me understand \"What's happening and where is it\nhappening?\" As requested by Christian, I will still push these changes\nto my github fork[3]. Also the function I have written does not use\nthe API of git as at that time I wasn't quite familiar with it. I am\nstill not completely familiar with it but I guess that will take some\ntime.\n\nStatus of learning about git plumbing commands:\nI have learned about:\n - git-check-ref-format\n - git-rev-list\n - git-rev-parse\n\nThe one's left are:\n - git-symbolic-refs\n - git-show-branch\n - git-update-ref\n - git-for-each-ref\n\nStatus of Week 1 of my proposal:\nIn my 1st week I was going to set up kcov to test the coverage of\nshell scripts as gcov does not cover them. kcov is a lot trickier than\ngcov which I hadn't realized it before. I tried to use it in a simple\nway but it just wasn't possible for me. So I dug further and found a\npatch[5] submitted by Dmitry Vyukov. The linux kernel recently started\nusing kcov for their coverage and to also find bugs by using some\nfuzzy logic. Setting this up is well not a piece of cake at least for\nme. I tried reading his patch and wasn't quite able to digest it in\nthe first read but then I didn't look into that further. I would\nreally like if someone could look this up and recommend whether I\nshould try and implement this or not in the first week. If let's say I\ntry to implement it, then I probably think it is more than a week's\njob. I recollect Matthieu saying that Paul Tan had used this before.\nCould you please explain how he achieved this?\n\nWhen will I officially start working?\nMy end semester exams end on 29th April, 2016 and I will reach my home\non 1st May, 2016. I will officially start working from 2nd May, 2016\nand will complete reading up on plumbing commands and other API parts\nwhich seems a bit ambitious as for now.\n\nOther remarks:\n - I can now finally use git-send-email when I reach home.\n - I will regularly (weekly) keep posting my progress on my blog[6]\nwhich will be revived  as it has been a bit stale for some time now. I\nwill also send the text-only version to the mailing list as requested\nby Christian.\n - The more I dived in, the more it started to realize that my time\nline needs some restructuring which I guess can be determined by the\nabove paragraphs.\n - I will also work out on a time line and post it on my blog[6] and\nsend it to mentors.\n\n[1]: https://docs.google.com/document/d/1stnDPA5Hs3u0a8sqoWZicTFpCz1wHP9bkifcKY13Ocw/edit?usp=sharing\n\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/291311\n\n[3]: http://thread.gmane.org/gmane.comp.version-control.git/289599\n\n[4]: https://github.com/pranitbauva1997/git\n\n[5]: http://thread.gmane.org/gmane.linux.kernel/2126762\n\n[6]: http://bauva.in\n"},{"id":"284238","messageId":"alpine.DEB.2.20.1604240851290.2896@virtualbox","threadId":"42125","inReplyTo":"CAFZEwPMr=imv==kvVULy4PDYKW-0RRQ5a+X8DFqNFhNjCSyWKA@mail.gmail.com","subject":"Re: GSoC Project Selected | Incremental Rewrite of git bisect","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2016-04-24T06:52:50Z","receivedAt":"2016-04-24T06:52:50Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Pranit,\n\nOn Sun, 24 Apr 2016, Pranit Bauva wrote:\n\n> I am Pranit Bauva studying Mining Engineering at Indian Institute of\n> Technology, Kharagpur. I have applied for Google Summer of Code 2016\n> under Git organization and my project[1], \"Incremental Rewrite of git\n> bisect has been selected under the guidance of mentors namely Christian\n> Couder and Lars Schneider.\n\nAwesome, congratulations!\n\nLooking forward to seeing your project progress, and to you feeling at\nhome here in the Git developer community.\n\nCiao,\nJohannes\n"},{"id":"284409","messageId":"vpqvb35sqge.fsf@anie.imag.fr","threadId":"42125","inReplyTo":"CAFZEwPMr=imv==kvVULy4PDYKW-0RRQ5a+X8DFqNFhNjCSyWKA@mail.gmail.com","subject":"Re: GSoC Project Selected | Incremental Rewrite of git bisect","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2016-04-25T14:39:13Z","receivedAt":"2016-04-25T14:39:13Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Pranit Bauva <pranit.bauva@gmail.com> writes:\n\n>  - The more I dived in, the more it started to realize that my time\n> line needs some restructuring which I guess can be determined by the\n> above paragraphs.\n\nDo not worry too much about the timeline. The timeline you attached to\nyour project is not a plan to follow, but just a proof that you\nunderstood the amount of work to be done and that you have an idea on\nhow to accomplish it.\n\nI wouldn't be the first one to write \"value [...] Responding to change\nover following a plan\" ;-).\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"285887","messageId":"1462706822-5189-1-git-send-email-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"CAFZEwPMr=imv==kvVULy4PDYKW-0RRQ5a+X8DFqNFhNjCSyWKA@mail.gmail.com","subject":"[GSOC update] Week 1","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-08T11:27:02Z","receivedAt":"2016-05-08T11:27:02Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"My public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\nThe things I was able to do:\n\n * Finish off with my micro project[2] about adding a config variable for\n   git-commit. There is still a little discussion going on about whether\n   verbose should be retired and instead \"commit.showDiff\" should be used.\n   Junio also made a little change to squash it with my patch to make the\n   patch look more clearer to digest. Its difficult that this will be included\n   in the release of 2.8.3\n\n * I converted the function check_term_format()[3] from shell to C as a\n   subcommand. Faced some difficulty but was greatly helped by Christian\n   Couder.\n\n * I converted the function bisect_log()[4] in a branch from the previous\n   check-term-format branch as a subcommand. I was waiting for the first patch\n   to get queued on maintainer's git.git repo so as to rebase it there and\n   then send the patch.\n\n * I converted the function write_terms()[5] in a branch from the previous\n   bisect-log branch as a subcommand and I removed check-term-format subcommand.\n   I was waiting for the bisect-log patch to get queued on maintainer's git.git\n   repo so as to rebase it there and send send the patch\n\n * I am currently introducing subcommands and calling them from git-bisect.sh .\n   Eric Sunshine had proposed another top bottom approach wherein I first\n   implement a skeleton and redirect it to git-bisect.sh so that the test\n   suite is still passing. This method was used by Paul Tan in his last year\n   GSoC project. Commit ids for reference, e1ea69fa4e and 73c2779f4 .\n\n * I ignored it and sent another revision of the series to which Junio wasn't\n   quite enthusiastic over my reasoning for using subcommand approach. So\n   I wrote an email[6] explaining how using subcommand way is beneficial to\n   me, reviewers/testers, and my mentors.\n\n * I am currently waiting for that discussion to come to a conclusion. Till\n   then I have paused on a bit.\n\n * I am now reading on the API part and planning how will I go about with the\n   future functions. The functions I have converted till now were quite simple\n   ones and the main difficulty lies ahead!\n\n * Anywhich ways I think this week was quite productive and if I follow this\n   speed then the project is in a good shape to be completed well in time.\n\n * On a lighter note: I will be on a short vacation from 16th May to 19th May.\n   So I will be unavailable till that time.\n\n[1]: https://github.com/pranitbauva1997/git\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/293635\n[3]: https://github.com/pranitbauva1997/git/pull/1\n[4]: https://github.com/pranitbauva1997/git/pull/2\n[5]: https://github.com/pranitbauva1997/git/pull/3\n[6]: http://article.gmane.org/gmane.comp.version-control.git/293909\n"},{"id":"286594","messageId":"1463334359-14033-1-git-send-email-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"1462706822-5189-1-git-send-email-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 2","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-15T17:45:59Z","receivedAt":"2016-05-15T17:45:59Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy micro project on adding config variable to git-commit for verbose options\nis going to be merged with the master branch soon and will be available for\ngit 2.8.3 . I also rewrote a few shell functions in C.\n\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * I have sent the patches[2] for check_term_format() and write_terms() so\n   as to demonstrate how I am going to use the subcommand approach wherein\n   I will first convert a method and then call it by using a subcommand.\n   Then when another method is converted the previous method will be removed\n   from the subcommand and will instead be called from the new method. Junio\n   has collected this patch and queued it on a branch gitster/pb/bisect and\n   is available for testing on the pu branch. I am encouraging people to\n   test it and provide useful comments.\n\n * I have also converted bisect_log() and bisect_voc() whose patches[3] are\n   sent to the list. Junio is yet to pick these up.\n\n * I have converted the function bisect_clean_state() but its in a very\n   rudimentary form. Well I generally do like this. I first have a *just*\n   working model of a function and then I polish it by introducing the git's\n   API and write error handling code and resolve the style issues. Though it\n   is available on github[4]. The current version plainly removes the refs\n   using the git's API. I am quite aware that refs shouldn't be handled in this way\n   (this fact is constantly reminded in the docs). I am reading up on the\n   available methods for refs manipulation.\n\n * I have also sent an independent patch[5] to explicitly test whether\n   bisection state is properly cleaned up.\n\n * Also studied the functioning (upto an extent) of git-for-each-ref and\n   git-udpate ref as it is required during the conversion of\n   bisect_clean_state().\n\n * The main part (I think) was that I read about the method's which handled the\n   refs. It was an interesting read though I did not read upon the actual\n   implementations of those, I mainly covered \"What does the method do?\" and\n   \"How to use the method in my code?\". git-grep is my best friend for this.\n\n * I am still quite amazed by the amount of attention refs receive. Christian\n   explained a bit though I still don't get the feel why they are *sooo*\n   important. I was recently reading the Git Rev News and also seeing the\n   patches by Michael Haggerty and David Turner and I was quite amazed on\n   the amount of attention refs get.\n\n * I also noticed a minor thing with bisect cleanups[6]. After the bisection\n   state is cleaned up the folder \"refs/bisect/\" is not removed. I pointed\n   this out but Christian thought it is okay the way it is.\n\n * When I was converting the function write_terms() Christian advised to use\n   `|| exit` when calling it with a subcommand using `git bisect--helper\n    --write-terms $TERM_BAD bad` but it got the test no. 43 and 44 failing in\n    t6030. On a little bit investigation by Christian, these tests seem to\n    fail when there is a bare repo. He asked me to investigate it further.\n    I have currently not found enough time. Will do it in the coming week.\n\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish bisect_clean_state() conversion. I will first put it up on github\n   to receive comments from my mentors and then post it to the mailing list.\n\n * Convert the function bisect_head(). I plan to convert this function and add\n   it as a subcommand to test the implementation but I will only send the\n   function without the subcommand to the mailing list because its a too small\n   function. Though the subcommand version will be put up on github for\n   everyone to verify whether it is passing the test suite like I have done it\n   for bisect_voc().\n\n * Convert the function bisect_write(). I plan to convert this function and\n   add it as a subcommand.\n\n * Investigate why test no. 43 and 44 are failing in t6030 with `|| exit` in\n   --write-terms.\n\n\n================================ NOTIFICATION ==============================\n\nI will be taking a short vacation from 16th May, 2016 to 19th May, 2016 so\nI wouldn't be available via email and also will not be able to work. I intend\nto make up for the lost time by working on weekends.\n\n[1]: https://github.com/pranitbauva1997/git\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/294388\n[3]: http://thread.gmane.org/gmane.comp.version-control.git/294571\n[4]: https://github.com/pranitbauva1997/git/pull/6\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/294520\n[6]: https://github.com/pranitbauva1997/git/pull/8\n\nPS: Thanks to Andrew Ardill <andrew.ardill@gmail.com> on providing his comments\nof how to improve the format of this update email. I have tried to make it\nas exhaustive as possible.\n\nRegards,\nPranit Bauva\n"},{"id":"286595","messageId":"vpqr3d32obm.fsf@anie.imag.fr","threadId":"42125","inReplyTo":"1463334359-14033-1-git-send-email-pranit.bauva@gmail.com","subject":"Re: [GSOC Update] Week 2","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@grenoble-inp.fr","sentAt":"2016-05-15T18:01:01Z","receivedAt":"2016-05-15T18:01:01Z","isPatch":false,"sender":{"key":"matthieu.moy@grenoble-inp.fr","avatar":"https://gravatar.com/avatar/72c8a2705971a25dfaff23cece15130d405685845d911aedd5667ace277f3fc5?d=mp&s=160"},"body":"Pranit Bauva <pranit.bauva@gmail.com> writes:\n\n> ================================= SUMMARY ==================================\n> My micro project on adding config variable to git-commit for verbose options\n> is going to be merged with the master branch soon and will be available for\n> git 2.8.3 .\n\nNit: being merged to master doesn't mean you'll be in the next minor\nrelease, but in the next _major_ one. 2.8.3 will only contain bugfixes\ncompared to 2.8.2.\n\n-- \nMatthieu Moy\nhttp://www-verimag.imag.fr/~moy/\n"},{"id":"286600","messageId":"xmqqoa875e7m.fsf@gitster.mtv.corp.google.com","threadId":"42125","inReplyTo":"1463334359-14033-1-git-send-email-pranit.bauva@gmail.com","subject":"Re: [GSOC Update] Week 2","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-05-15T19:11:09Z","receivedAt":"2016-05-15T19:11:09Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Pranit Bauva <pranit.bauva@gmail.com> writes:\n\n>    is available for testing on the pu branch. I am encouraging people to\n>    test it and provide useful comments.\n\nDo not encourage people to \"TEST\".  In general, do not put too much\nweight on testing.  The result would only measure a small portion of\nwhat you wrote in the code, i.e. what you covered with the addition\nto the test suite, plus whatever tests we already had.\n\nInstead, ask people to review.  A new code passing the testsuite is\na minimum requirement, and that is far from sufficient.\n\n>  * I have also converted bisect_log() and bisect_voc() whose patches[3] are\n>    sent to the list. Junio is yet to pick these up.\n\nAgain, my picking them up is not a success criteria (and certainly\nbeing on 'pu' does not count for anything--it is nothing more than\n\"Junio saw them on the list and bookmarked the messages\".\n\nYou should worry more about people not commenting nor reviewing them\nthan me picking them up (which would typically come later).\n\n>  * The main part (I think) was that I read about the method's which handled the\n>    refs. It was an interesting read though I did not read upon the actual\n>    implementations of those, I mainly covered \"What does the method do?\" and\n>    \"How to use the method in my code?\". git-grep is my best friend for this.\n\nYup.\n\nYou would not be calling for-each-ref from a C rewrite of\nbisect-clean-state.  Instead you would likely be calling\nfor_each_ref_in() to iterate over the existing refs/bisect/* refs,\nrecording their refname and objectname from the callback to\nsomething like string_list, and then after for_each_ref_in()\nfinishes, iterate over the resulting string_list and running\ndelete_ref() on them.\n\nAnd reading the implementation of for-each-ref and update-ref is a\ngood way to find the need to use these API calls and how they are\nused.  API docs are your second step.\n\nOverall, good progress for an early week.\n\nThanks.\n"},{"id":"286601","messageId":"xmqqk2iv5dwt.fsf@gitster.mtv.corp.google.com","threadId":"42125","inReplyTo":"vpqr3d32obm.fsf@anie.imag.fr","subject":"Re: [GSOC Update] Week 2","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-05-15T19:17:38Z","receivedAt":"2016-05-15T19:17:38Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes:\n\n> Pranit Bauva <pranit.bauva@gmail.com> writes:\n>\n>> ================================= SUMMARY ==================================\n>> My micro project on adding config variable to git-commit for verbose options\n>> is going to be merged with the master branch soon and will be available for\n>> git 2.8.3 .\n>\n> Nit: being merged to master doesn't mean you'll be in the next minor\n> release, but in the next _major_ one. 2.8.3 will only contain bugfixes\n> compared to 2.8.2.\n\nCorrect.\n\nRecent \"What's cooking\" lists the topic as \"Will merge to 'master'\"\nbut this does not promise in which timeframe it will be merged to\n'master', so it may not even be in 2.9.0 at all.\n\nGenerally, what is in 'next' is marked as \"Will merge to 'master'\"\nby default, until a reason not to do so is found, at which time the\nmark is changed to \"Will hold\", etc., so saying \"master branch soon\"\nupon seeing \"Will merge to 'master'\" is a bit of overstatement.\n\nIn fact, \"git log maint..pb/commit-verbse-config\" shows that this\nnew feature is not ineligible for the maintenance track.  It will\nnever be in 2.8.3 or any 2.8.x series.\n"},{"id":"286602","messageId":"CAFZEwPNMuL8hYgUNNWWU7EDmDDWF5HX7QLtTTjvvePjboEqASQ@mail.gmail.com","threadId":"42125","inReplyTo":"xmqqoa875e7m.fsf@gitster.mtv.corp.google.com","subject":"Re: [GSOC Update] Week 2","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-15T19:30:32Z","receivedAt":"2016-05-15T19:30:32Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"Hey Junio,\n\nOn Mon, May 16, 2016 at 12:41 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Pranit Bauva <pranit.bauva@gmail.com> writes:\n>\n>>    is available for testing on the pu branch. I am encouraging people to\n>>    test it and provide useful comments.\n>\n> Do not encourage people to \"TEST\".  In general, do not put too much\n> weight on testing.  The result would only measure a small portion of\n> what you wrote in the code, i.e. what you covered with the addition\n> to the test suite, plus whatever tests we already had.\n>\n> Instead, ask people to review.  A new code passing the testsuite is\n> a minimum requirement, and that is far from sufficient.\n\nOkay. Will keep this in mind.\n\n>>  * I have also converted bisect_log() and bisect_voc() whose patches[3] are\n>>    sent to the list. Junio is yet to pick these up.\n>\n> Again, my picking them up is not a success criteria (and certainly\n> being on 'pu' does not count for anything--it is nothing more than\n> \"Junio saw them on the list and bookmarked the messages\".\n>\n> You should worry more about people not commenting nor reviewing them\n> than me picking them up (which would typically come later).\n\nSure.\n\n>>  * The main part (I think) was that I read about the method's which handled the\n>>    refs. It was an interesting read though I did not read upon the actual\n>>    implementations of those, I mainly covered \"What does the method do?\" and\n>>    \"How to use the method in my code?\". git-grep is my best friend for this.\n>\n> Yup.\n>\n> You would not be calling for-each-ref from a C rewrite of\n> bisect-clean-state.  Instead you would likely be calling\n> for_each_ref_in() to iterate over the existing refs/bisect/* refs,\n> recording their refname and objectname from the callback to\n> something like string_list, and then after for_each_ref_in()\n> finishes, iterate over the resulting string_list and running\n> delete_ref() on them.\n\nActually I was seeing how for-each-ref called filter_ref() and\nplanning to use that. But for_each_ref_in() seems much better. Thanks.\nI had planned on using delete_ref().\n\n> And reading the implementation of for-each-ref and update-ref is a\n> good way to find the need to use these API calls and how they are\n> used.  API docs are your second step.\n\nThanks. I have read the man pages as well as some parts of the\nimplementation (not the core details). API docs contain little\ninformation about ref handling though. I can try trying writing some\ndocumentation after GSoC project once I am comfortable with ref\nhandling.\n\n> Overall, good progress for an early week.\n\nThanks!\n\nRegards,\nPranit Bauva\n\n> Thanks.\n"},{"id":"287211","messageId":"1463947103-28464-1-git-send-email-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"1463334359-14033-1-git-send-email-pranit.bauva@gmail.com","subject":"[GSoC Update] Week 3","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-22T19:58:23Z","receivedAt":"2016-05-22T19:58:23Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"============================ INTRODUCTION ==============================\nThe purpose of this project is to convert the git-bisect utility which\npartly exists in the form of shell scripts to C code so as to make it more\nportable. I plan to do this by converting each function to C and then\ncalling it from git-bisect.sh so as to use the existing test suite to test\nthe function which is converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n============================== UPDATES =================================\nThings which were done in this week:\n\n * My patches for write_terms()[1] and bisect_log()/voc()[2] have collected\n   some reviews from Eric Sunshine and Johannes Schindelin.\n\n * As advised in the reviews I have mainly read about git_path() and other\n   related functions from cache.h\n\n * Also read up on the refs stuff like for_each_ref_in() which Junio\n   mentioned in the previous update email.\n\n * I have made 2 commits[3] which I am keeping on hold for now as they are\n   followup for a commit made by Jeff King which I came across while\n   reading about git_path() and related stuff.\n\n * I have kind of finished writing bisect_clean_state() function. But I\n   am still working on that as I suspect there might be something missing.\n\n============================ NEXT STEPS ================================\nSince I wasn't able to cover up many things this week (which I had\ninitially planned), those things have now been carried forward along with\na few other stuff. I plan to work more this week and the coming few ones\nto make up for the lost time.\n\nThings which would be done in the coming week:\n\n * Finish off (finally) bisect_clean_state() conversion.\n\n * Convert the function bisect_head(). I plan to convert this function and\n   add it as a subcommand to test the implementation but I will only send\n   the function without the subcommand to the mailing list because its a\n   too small function. Though the subcommand version will be put up on\n   github for everyone to verify whether it is passing the test suite like\n   I have done it for bisect_voc().\n\n * Convert the function bisect_write(). I plan to convert this function\n   and add it as a subcommand.\n\n * Investigate why test no. 43 and 44 are failing in t6030 with `|| exit`\n   in --write-terms.\n\n[1]: http://thread.gmane.org/gmane.comp.version-control.git/294388\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/294571\n"},{"id":"287774","messageId":"20160530053758.28134-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"1463947103-28464-1-git-send-email-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 2","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-30T05:37:58Z","receivedAt":"2016-05-30T05:37:58Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * bisect_clean_state() function is having a segmentation fault which is yet\n   not fixed by me. I will try this for one more day and then send it to the\n   list for RFC.\n\n * I also converted is_expected_rev() and check_expected_revs() which also has\n   segmentation fault.\n\n * I also converted bisect_head() function. I changed the semantics a little\n   bit. Previously the shell function used to echo the string, now it returns\n   the value to the caller.\n\n * I investigated why test no. 43 and 44 are failing with t6030 with `|| exit`\n   in the previous version of the patch but it didn't in the newer one. This\n   is because the location of .git was hardcoded and thus it created problems\n   with bare repositories.\n\n * I also sent a cleanup patch for using the marco GIT_PATH_FUNC to create a\n   function instead of using git_path() because of the benefits described\n   in the commit message of that change.\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish bisect_clean_state() conversion.\n\n * Finish is_expected_rev() and check_expected_revs() conversion.\n\n * Convert the function bisect_write(). I plan to convert this function and\n   add it as a subcommand.\n\n * Convert bisect_reset() and add it as a subcommand.\n\n * Convert get_terms() and add the variables TERM_GOOD and TERM_BAD in a struct\n   in the global state.\n\n\nRegards,\nPranit Bauva\n"},{"id":"287775","messageId":"CAFZEwPM_dKQMXb9UEwSENODOp0bvZCm+h9fpDCdtQbu3nmntOw@mail.gmail.com","threadId":"42125","inReplyTo":"20160530053758.28134-1-pranit.bauva@gmail.com","subject":"Re: [GSOC Update] Week 2","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-05-30T05:45:40Z","receivedAt":"2016-05-30T05:45:40Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"On Mon, May 30, 2016 at 11:07 AM, Pranit Bauva <pranit.bauva@gmail.com> wrote:\n> ================================= SUMMARY ==================================\n> My public git.git is available here[1]. I regularly keep pushing my work so\n> anyone interested can track me there. Feel free to participate in the\n> discussions going on PRs with my mentors. Your comments are valuable.\n>\n>\n> =============================== INTRODUCTION  ==============================\n> The purpose of this project is to convert the git-bisect utility which partly\n> exists in the form of shell scripts to C code so as to make it more portable.\n> I plan to do this by converting each function to C and then calling it from\n> git-bisect.sh so as to use the existing test suite to test the function which\n> is converted.\n>\n> Mentors:\n> Christian Couder <chriscool@tuxfamily.org>\n> Lars Schneider <larsxschneider@gmail.com>\n\nIts Week 4. Sorry.\n\nRegards,\nPranit Bauva\n"},{"id":"288405","messageId":"20160606065301.5228-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160530053758.28134-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 5","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-06-06T06:53:01Z","receivedAt":"2016-06-06T06:53:01Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * bisect_clean_state() function is converted and I have fixed the\n   segmentation fault. I am now polishing the patch with the help of my\n   mentors and will soon send it to the mailing list. The seg fault occurred\n   because I was deleting the refs in the for_each_ref_in() iteration. On\n   sending the RFC[2], Michael Haggerty pointed out the fact that deleting refs\n   causes some malfunction with the ref cache and thus triggering the seg\n   fault.\n\n * I also converted bisect_write() function and currently I am polishing it\n   with the help of my mentors and will send it to the mailing list. You can\n   find the whole branch here[3].\n\n * As a preparatory patch for bisect_write() I also introduced a function\n   file_size() which will get the file size without actually opening the\n   file.\n\n * I also converted is_expected_rev() and check_expected_revs() and also fixed\n   the segmentation fault. I am now polishing the patch with the help of my\n   mentors and will soon send it to the mailing list. You can find the branch\n   here[4].\n\n * My v2[5] on a cleanup patch to use the function macro GIT_PATH_FUNC is\n   yet to receive comments.\n\n * I have also converted bisect_head()[6] but that would be sent to the mailing\n   list along with bisect_state().\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Convert the function bisect_write(). I plan to convert this function and\n   add it as a subcommand.\n\n * Convert get_terms() and add the variables TERM_GOOD and TERM_BAD in a struct\n   in the global state.\n\n * Convert bisect_voc()\n\n * Convert bisect_next_check()\n\n[1]: https://github.com/pranitbauva1997/git\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/295917\n[3]: https://github.com/pranitbauva1997/git/pull/13\n[4]: https://github.com/pranitbauva1997/git/pull/10\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/295524\n[6]: https://github.com/pranitbauva1997/git/pull/11\n\n\nRegards,\nPranit Bauva\n"},{"id":"289084","messageId":"20160613080656.5013-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160606065301.5228-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 6","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-06-13T08:06:56Z","receivedAt":"2016-06-16T02:19:53Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * bisect_clean_state() function is converted and sent out to the mailing\n   list which received some useful comments from Eric Sunshine and the\n   updated version can be found on bisect-reset branch[3].\n\n * I also converted bisect_reset() function and also introduced a file_size()\n   method which received some useful comments from Eric Sunshine and Torsten\n   Bogershausen. You can find the whole branch here[3].\n\n * I have also converted bisect_write() and will send it to the mailing list\n   soon. The branch can be found here[4].\n\n * I also converted is_expected_rev() and check_expected_revs(). I sent\n   it to the mailing list which collected some useful reviews from Eric\n   Sunshine. I have updated according to the reviews. I need to confirm it\n   once before I send it out on the mailing list. You can find the branch\n   here[3].\n\n * My v2[5] on a cleanup patch to use the function macro GIT_PATH_FUNC is\n   yet queued on the pu branch.\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * check_and_set_terms(): This function uses the two global variables in the\n   script namely TERM_GOOD TERM_BAD. I have decided to pass then as arguments.\n\n * get_terms(): This will also introduce a struct to store global variables\n   namely TERM_GOOD and TERM_BAD.\n\n * bisect_terms().\n\n * bisect_next_check().\n\n[1]: https://github.com/pranitbauva1997/git\n[3]: https://github.com/pranitbauva1997/git/pull/13\n[4]: https://github.com/pranitbauva1997/git/pull/14\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/295524\n\n\nRegards,\nPranit Bauva\n"},{"id":"289659","messageId":"20160620073755.2934-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160613080656.5013-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 7","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-06-20T07:37:55Z","receivedAt":"2016-06-20T07:39:19Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * I have converted check_and_set_terms() and have also sent an RFC[2] to the\n   mailing list for discussion which hasn't yet collected any comments. It is\n   kind of important to discuss this as it uses a way to set the global\n   variables in the script by writing it to a file and then reading it.\n\n * I have also converted bisect_next_check() but this has a bug which will\n   soon be fixed. This is available here[3].\n\n * I have converted get_terms().\n\n * I am on my way to convert bisect_terms() which should probably finish by\n   tomorrow.\n\n * I also send out a patch[4] which describes the return value of\n   strbuf_read_file() and is queued on the pu branch.\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish off bisect_terms().\n\n * bisect_run().\n\n * bisect_replay().\n\n * I have my mid term evaluations this week. Hope I clear it successfully.\n\n[1]: https://github.com/pranitbauva1997/git\n[2]: http://thread.gmane.org/gmane.comp.version-control.git/297520\n[3]: https://github.com/pranitbauva1997/git/pull/17\n[4]: http://thread.gmane.org/gmane.comp.version-control.git/297266\n\nRegards,\nPranit Bauva\n"},{"id":"290224","messageId":"20160627071901.4294-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160620073755.2934-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 8","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-06-27T07:19:01Z","receivedAt":"2016-06-27T07:20:22Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * I have converted check_and_set_terms(), bisect_next_check() and\n   bisect_terms() and have also sent an RFC[7] to the\n   mailing list for discussion which hasn't yet collected any comments. It is\n   kind of important to discuss this as it uses a way to set the global\n   variables in the script by writing it to a file and then reading it.\n\n * I have almost converted bisect_replay() and would be sending it out soon.\n\n * I have also sent a v3[6] of bisect-write[3] branch which contains\n   bisect_clean_state(), bisect_reset(), bisect_write() functions.\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish off bisect_replay().\n\n * Start with the elephant function bisect_start().\n\n======================= My Patches (GSoC project only) ======================\n\n * check_term_format patch[5]. This is in pu branch and Junio requires more\n   reviewers to support it so that it can be merged into next.\n\n * bisect_write patch[6]. This is the v3 in the series.\n\n * bisect_terms patch[7]. This is an RFC and open for discussions.\n\n[1]: https://github.com/pranitbauva1997/git\n[3]: https://github.com/pranitbauva1997/git/pull/17\n[4]: http://thread.gmane.org/gmane.comp.version-control.git/297266\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/295518\n[6]: http://thread.gmane.org/gmane.comp.version-control.git/298263\n[7]: http://thread.gmane.org/gmane.comp.version-control.git/298279\n\nRegards,\nPranit Bauva\n"},{"id":"290779","messageId":"20160703202704.9193-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160627071901.4294-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 9","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-07-03T20:27:04Z","receivedAt":"2016-07-03T20:28:31Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * I have converted check_and_set_terms(), bisect_next_check() and\n   bisect_terms() and have also sent an RFC[7] to the\n   mailing list for discussion which hasn't yet collected any comments from\n   the list. My mentors have given their reviews on github and I will soon\n   send the final patch series this week.\n\n * I have partly converted bisect_start() and a few ending parts are left.\n\n * I have stalled bisect_replay() for now as before I thought I would partly\n   convert it and then call bisect_start() from it but then I realized its\n   not worth the effort. So I will continue work on this after I finish\n   bisect_start().\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish off bisect_start().\n\n * Finsh off bisect_start().\n\n * Finish off bisect_autostart() (small one, wouldn't take much time but it\n   depends on bisect_start()).\n\n * Start with bisect_next().\n\nThis has been a slow week as I was meeting a few friends before their college\nbegan and I plan to cover more in the upcoming week as even my semester is\ngoing to start soon and I wouldn't prefer carrying over the work to my\ncollege.\n\nMy next semester starts on 18th July.\n\n======================= My Patches (GSoC project only) ======================\n\n * check_term_format patch[5]. This is in pu branch. The topic is pb/bisect.\n\n * bisect_write patch[6]. This is the v3 in the series. This has some minor\n   nits as provided by Lars and I will send out a re-roll soon. This is also\n   in the pu branch and is applied on top of pb/bisect.\n\n * bisect_terms patch[7]. This is an RFC and open for discussions. It would\n   be very helpful if you can review it over github[8] as my mentors have also\n   provided some comments.\n\n[1]: https://github.com/pranitbauva1997/git\n[3]: https://github.com/pranitbauva1997/git/pull/17\n[4]: http://thread.gmane.org/gmane.comp.version-control.git/297266\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/295518\n[6]: http://thread.gmane.org/gmane.comp.version-control.git/298263\n[7]: http://thread.gmane.org/gmane.comp.version-control.git/298279\n[8]: \n\nRegards,\nPranit Bauva\n"},{"id":"291324","messageId":"20160712225210.28803-1-pranit.bauva@gmail.com","threadId":"42125","inReplyTo":"20160703202704.9193-1-pranit.bauva@gmail.com","subject":"[GSOC Update] Week 10","fromName":"Pranit Bauva","fromEmail":"pranit.bauva@gmail.com","sentAt":"2016-07-12T22:52:10Z","receivedAt":"2016-07-12T22:59:26Z","isPatch":false,"sender":{"key":"pranit.bauva@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2959938?v=4"},"body":"================================= SUMMARY ==================================\nMy public git.git is available here[1]. I regularly keep pushing my work so\nanyone interested can track me there. Feel free to participate in the\ndiscussions going on PRs with my mentors. Your comments are valuable.\n\n\n=============================== INTRODUCTION  ==============================\nThe purpose of this project is to convert the git-bisect utility which partly\nexists in the form of shell scripts to C code so as to make it more portable.\nI plan to do this by converting each function to C and then calling it from\ngit-bisect.sh so as to use the existing test suite to test the function which\nis converted.\n\nMentors:\nChristian Couder <chriscool@tuxfamily.org>\nLars Schneider <larsxschneider@gmail.com>\n\n\n================================== Updates =================================\nThings which were done in this week:\n\n * I have converted check_and_set_terms(), bisect_next_check() and\n   bisect_terms() and have also sent an RFC[7] to the\n   mailing list for discussion which hasn't yet collected any comments from\n   the list. Some discussion is happening on github and I will send out the\n   patched when the dust settles.\n\n * I have converted bisect_start() but there is a bug which I am still working\n   on.\n\n================================= NEXT STEPS ================================\nThings which would be done in the coming week:\n\n * Finish off bisect_start().\n\n * bisect_next() has become a top priority because it would then help\n   converting bisect_auto_next() and then it can be called by other important\n   functions like bisect_start().\n\n * Following that I will convert bisect_auto_start()\n\n * Then bisect_replay().\n\n======================= My Patches (GSoC project only) ======================\n\n * check_term_format patch[5]. This is in pu branch. The topic is pb/bisect.\n\n * bisect_write patch[6]. This is the v3 in the series. This has some minor\n   nits as provided by Lars and I will send out a re-roll soon. This is also\n   in the pu branch and is applied on top of pb/bisect.\n\n * bisect_terms patch[7]. This is an RFC and open for discussions. It would\n   be very helpful if you can review it over github[8] as my mentors have also\n   provided some comments.\n\n============================= Notification ==================================\nI will be travelling to my university campus from 14th July to 15th July so\nI won't be available. I will resume my work after that.\n\n[1]: https://github.com/pranitbauva1997/git\n[3]: https://github.com/pranitbauva1997/git/pull/17\n[4]: http://thread.gmane.org/gmane.comp.version-control.git/297266\n[5]: http://thread.gmane.org/gmane.comp.version-control.git/295518\n[6]: http://thread.gmane.org/gmane.comp.version-control.git/298263\n[7]: http://thread.gmane.org/gmane.comp.version-control.git/298279\n[8]: https://github.com/pranitbauva1997/git/pull/16\n\nRegards,\nPranit Bauva\n"}]}