{"thread":{"id":"53086","subject":"[GSoC][RFC][PROPOSAL v1] Improvements to git log","startedAt":"2020-03-24T20:19:14Z","lastAt":"2020-03-24T20:19:14Z","messageCount":1,"participants":["Parth Gala"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"393891","messageId":"049680a7-6042-9e23-34b1-3ace1f6778b6@gmail.com","threadId":"53086","inReplyTo":null,"subject":"[GSoC][RFC][PROPOSAL v1] Improvements to git log","fromName":"Parth Gala","fromEmail":"parthpgala@gmail.com","sentAt":"2020-03-24T20:19:04Z","receivedAt":"2020-03-24T20:19:14Z","isPatch":false,"sender":{"key":"parthpgala@gmail.com","avatar":null},"body":"Hello everyone,\n\nThanks for taking the time out to read my GSoC proposal.\nI would love to receive feedback on this. One question I have is that\nhow should I contact my mentor(Christian Coulder) in the period from\nApril 4 - April 26 stated below, which will be akin to the community\nbonding period for me, ie do the conversations take place on the mailing\nlist or personal emails or any other medium during this particular period ?\n\nGoogle docs : \nhttps://docs.google.com/document/d/1H06V1sjE2i74NtXihiDNnApvx0iMemU2RotHt0SeDCI/edit?usp=sharing \n\n-------------x--------------x----------------x--------------x---------------x---------- \n\nImprovements to git log\n\n\n\n## Contact Information\n\nName            :    Parth Gala\nMajor           :    Electronics and Communications Engineering\nEmail           : parthpgala@gmail.com\nMobile          :    ---\nGithub          :    ParthGala2k\nLinkedin        :    Parth Gala\nIRC             :    parth56\nTimezone        :    IST (UTC +0530)\n\n\n\n## Background\n\nHello, my name is Parth Gala, I am a sophomore majoring in Electronics\nand Communications Engineering at Dwarkadas J. Sanghvi College of\nEngineering.I have been programming for a few years now and have been\ninquisitive to learn more about new things in the field of Computer\nScience. I am proficient in C/C++, Java and Shell script and try to run\nredundant tasks using scripts.\n\n\n\n## Work Environment\n\nI use Vim as my primary code editor and GDB as the debugger. I have been\nusing Linux(Ubuntu 18.04) as my primary operating system for two years\nand was introduced to the world of open source about a year ago when I\nstarted to learn Git and Github and have gained sufficient familiarity\nwith each of them.\n\n\n\n## Motivation\n\nI have been active in the git community since January this year. I was\ninspired to contribute open source since it is a great way to get\nstarted with making enterprise level software which is well documented\nand tested. Google Summer of Code is the best way to get kick started in\nthat direction, and given I use git on a regular basis and would\ncontinue doing so, it would be a great experience contributing to it as\nwell.\n\n\n## Previous Contributions\n\nContributing to git helped me realize how high quality software is \ndeveloped\nby first considering the design, adding unit tests and more importantly, \nabout\nusing git itself better to maintain a neat commit history and tracking \nnewer\nchanges.\n\n\n* Contributions to git\n\n\nGitGitGadget https://github.com/gitgitgadget/git/pull/545\nMailing list \nhttps://lore.kernel.org/git/pull.545.git.1581535151.gitgitgadget@gmail.com/\nStatus          Yet to be merged\n\nGitGitGadget https://github.com/gitgitgadget/git/pull/582\nStatus          Being reviewed by Johannes Schindelin before submitting \nto mailing list\n\n\n\n## Project\n\n* Abstract\n\n’git log’ is a frequently used command that displays commit history of\nthe branch in various formats in order to make it easier to analyze the\nchanges made to code over a course of time and using various flags that\nhelp you filter out only the commits that you need.\n\nI plan to add a new pretty format called 'concise' which would show the\ndecorations(if any) on one line and the oneline commit message on the other\nline. This would overcome the first problem stated below.\n\nAnother addition is the --log-day option which groups the commits by order\nof their dates and displays a line on top of each commit specifying their\ndate only if it changes from the previous date displayed. This would be\nuseful if one wants to only check what changes took place on a certain day\nand make it catchy to the eye to see which day a particular change was \nmade.\n\n\n## Current Shortcomings\n\nAlthough there are various options in git log, still a few are missing that\nmany users would like for example “git log --oneline” shows the decorations\nright after the commit hash but before the commit message causing the\nalignment of messages to be disturbed. This can be overcome by setting a\ncustom format string to print the decorations after the message. Having the\ndecorations at the end has its own disadvantages, say, you only need to\ncheck the status of a branch rather than its contents, then you would \nprefer\nto have the decorations right next to the shortened commit hash.\n\nAnother desirable feature to have is a date line like ‘==YYYY-MM-DD==’ \nin the log\noutput right over the commits wherever a date changes.\n\n\n\n## Goals\n\n1. Create a --pretty=concise format to deal with the first issue.\n2. Create a --log-day option to show date.\n\n\n## Timeline Tentative\n\n# April 4 - April 26\n\nDiscuss the compatibility of --log-day option with all other log options\nand finalize its design so as to be easily extended or modified for\nsimilar future enhancements such as --log-month or --log-day[range],\n--log-day[onward] options and whether the option asks for author date\nor the commiter date upon Junio's advice and do the same for\n--pretty=concise.\n\nAlso discussion of the stitching of these two\noptions(output for when both are used together) shall be done in order\nto decide how the design should be done. At the same time go through as\nmuch of the relevant code in detail as possible for the said\nenhancements.\n\nI will be mostly unoccupied during this period and hope to\ncomplete largely all the ‘community bonding period’ work with my\npotential mentor Christian Coulder during this period itself.\n\n\n## Community Bonding Period : April 26 - May 16\n\nI will be having some submissions during the first few days of this\nperiod followed by my end semester exams which will start May 4 and end\nMay 16. Since there are generous holidays between each paper, I intend\nto keep a check on my GSoC project and be in touch with Christian during\nthis period for around 2 hours a day to depending on what needs to be\ndiscussed or finalized before the project starts.\n\nI also hope to finetune the project workflow and make timeline changes\nif necessary during this period.\n\n\n## Phase 1 : May 18 - June 13\n\n1. Complete the --pretty=concise format option.\n2. Add tests and documentation for the same.\n\n\n## Phase 2 : June 14 - July 28\n\n1. Work on the --log-time option.\n2. Add tests and documentation for the same.\n\n\n## Phase 3 : July 29 - August 10\n\n1. Stitch both commands for being used together.\n2. Update tests for both the previous phases.\n\n\n## Final Phase : August 10 - August 17\n\n1. Polish the patches to apply final touch-ups(if any)\n2. Update documentation.\n\nIf there is any extra time left, I would like to discuss the viability and\nuse of --log-month option with the community and add it to the entire \npackage\nif many users on the mailing list would find that option useful to their\nworkflow.\n\nI plan to communicate with my mentors in the form of PRs against my own\nfork of the project and also intend to keep the community updated with my\nprogress in the form of weekly reports on the mailing list and inform \neveryone\ninvolved in case of any changes to the timeline.\n\n\n## Availability\n\nI will be done with my mid-sems by April 4 following which I will be\nlargely unoccupied for 3 weeks until April 26 in which period I plan to\ncomplete my obligations for the community bonding period.\n\nMy end sems will start May 4 upto May 16, so I will be relatively busy\nfor a week before it, but due to generous holidays between I will be able\nto work upto 2 hours on my GSoC Project.\n\nMy vacations will start May 17 upto the second week of July, so during this\nperiod I will be easily able to devote 45-50 hours a week. Even after my\ncollege resumes, I will be able to contribute around 40 hours a week to the\nproject. Apart from this I have no other commitments or plans for the \nsummers\nbarring the odd weekend trek\n\n\n\n## Post GSoC\n\nI would love to learn from such a rich community of developers who have\nbuilt a tool that a majority of the software world uses on a daily\nbasis. Needless to say that only the lure of the new features would also\nbe enough to bring me back to the community again and again but I will\nstill contribute to the community in code and discussions post GSoC, and\nif possible be a co-mentor someday ?\n\n\n\n## Final Remarks\n\nI am a quick learner with a knack of not giving up on problems. I can\nhave a go at it all day long and learn everything necessary to git(get)\nthe job done. Selected or not I will continue to hustle and contribute\nto git and other open source projects that interest me and improve\nmyself and the planet little by little everyday. After all that’s what\nopen source is all about !\n\n\n\n----------x-------------x------------x------------x-------------x--------------x------------- \n\n\n\n\n"}]}