Here is the initial version of my proposal. I would really love to have comments on it. Also, how should I manage the project timeline? Project title says some past GSoC and Outreachy Interns had worked on this. I would also like to be redirected there. So I can learn from there work as well. Thanks, Hariom ===================================== View on Docs: https://docs.google.com/document/d/15GPvle6S0iNg430aJx-gMrXvsgnzTlFNFhyP-K6Zmtw/edit?usp=sharing ====================================== **Unify ref-filter formats with other --pretty formats** Name : Hariom Verma Major : Computer Science and Engineering Mobile no. : <<mob_no>> Email : <<email>> Time Zone : IST (UTC +05:30) ## About me I am a Computer Science undergraduate at Shri G S Institute of Technology & Science, Indore, India. I am passionate about software freedom and open source communities. I've been writing in C, C++, Python & Dart for almost 3 years, and contributed to some projects which can be seen on Github. I’m contributing to Git since Oct 2019 and would love to be a member of such a versatile community. ### Contact: IRC: harry-hov (on #git-devel@freenode) GitHub: harry-hov Linkedin: https://www.linkedin.com/in/harry-hov/ ## Me & Git My contributions have helped me understand the review and patch submission process in a batter way. Also, I now feel a bit more comfortable with Git’s codebase. Commit Status ------------------- receive.denyCurrentBranch: respect all worktrees[1] Status: next t5509: use a bare repository for test push target[2] Status: next get_main_worktree(): allow it to be called in the Git directory[3] Status: next git-compat-util.h: drop the `PRIuMAX` and other fallback definitions[4] Status: Merged to master builtin/blame.c: constants into bit shift format[5] Status: Merged to Master ## Proposed Project ### Abstract Git has an old problem of duplicated implementations of some logic. For example, Git had at least 4 different implementations to format command output for different commands. The foremost aim of this project is to simplify codebase by getting rid of duplication of a similar logic and, as a result, simplify adding new functionality. The current task is to reuse ref-filter formatting logic in pretty to minimize code duplication and to have one unified interface to extract all needed data from the object and to print it properly. ### Plan As Thomas Gummerer suggested[6] I’ll start by first looking at what actually needed to be replaced (for example by studying the PRETTY FORMATS section in 'man git-log', what which verbs you can use in the ref-filter ('man git-for-each-ref') to achieve the same thing. Then I’ll research how one format is implemented in 'pretty.c', and see how a similar thing using the ref-filter is implemented in 'ref-filter.c'. e.g. the "%(objectname:short) %(contents:subject)" (this is missing coloring, but just to get you the idea) is similar to '--pretty=oneline'. Now one can try to find how 'oneline' is implemented in 'pretty.c', and could translate that to use the 'ref-filter' API. ### Potential Problem The biggest challenge is to maintain backward compatibility while using reuse ref-filter formatting logic in pretty. One can't just delete some commands, rewrite them and change their interface. Also, bugs could get introduced. ## Availability My exams will end on 30 April. I might travel home after that. So, I can start actively writing code for this project after 3 May. My college resumes on 15 July. I can easily devote 45-50 hours a week until my college reopens and 35-40 hours per week after that. I'm also free on the weekends and I intend to complete most of the work before my college reopens. Other than this project, I have no commitments for this summer. I will also periodically post my status through blogs. ## Post GSoC As I said, I would love to be a member of Git’s community. So, I intend to keep contributing even after the GSoC period ends. ## Experience with Open Souce (Optional) -> Organized many Git workshops for newcomers with HackSocIndore[7]. HackSocIndore is a group of developers that organizes Hackathons, Workshops & Technical Events. I’m the core team member at HackSoc. -> Mentor, Kharagpur Winter of Code (KWoC)[8] Kharagpur Winter of Code is a 5-week long online program for students who are new to Open Source Development. [1]:https://public-inbox.org/git/d21a590d6c23f231c54b731b737c363b83660f79.1582484231.git.gitgitgadget@xxxxxxxxx/ [2]:https://public-inbox.org/git/ae749310f067c43429741987cd9f47c1ae4ceb3f.1582484231.git.gitgitgadget@xxxxxxxxx/ [3]:https://public-inbox.org/git/8718facbc951614f19407afa6ca8d6110507483d.1582484231.git.gitgitgadget@xxxxxxxxx/ [4]:https://public-inbox.org/git/177deddcf83c2550c0db536a7a6942ba69a92fa5.1574600963.git.gitgitgadget@xxxxxxxxx/ [5]:https://public-inbox.org/git/838478a185322572ed4747eb484b678a8e2d7ac6.1571334411.git.gitgitgadget@xxxxxxxxx/ [6]:https://public-inbox.org/git/20190331184930.GV32487@xxxxxxxxxxxxxxxxxxxxxxxx/ [7]:https://www.hacksoc.in [8]:https://kwoc.kossiitkgp.org