git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[GSoC][RFC][PROPOSAL v1] Unify ref-filter formats with other --pretty formats

From
Hariom verma <hariom18599@gmail.com>
Date
Feb 26, 2020, 00:03 UTC
Message-ID
<CA+CkUQ9Pnta8Ut9ZaeKLSPn_EyQwh=Wgm1eiSWirghgtcWZqoA@mail.gmail.com>

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@gmail.com/ [2]:https://public-inbox.org/git/ae749310f067c43429741987cd9f47c1ae4ceb3f.1582484231.git.gitgitgadget@gmail.com/ [3]:https://public-inbox.org/git/8718facbc951614f19407afa6ca8d6110507483d.1582484231.git.gitgitgadget@gmail.com/ [4]:https://public-inbox.org/git/177deddcf83c2550c0db536a7a6942ba69a92fa5.1574600963.git.gitgitgadget@gmail.com/ [5]:https://public-inbox.org/git/838478a185322572ed4747eb484b678a8e2d7ac6.1571334411.git.gitgitgadget@gmail.com/ [6]:https://public-inbox.org/git/20190331184930.GV32487@hank.intra.tgummerer.com/ [7]:https://www.hacksoc.in [8]:https://kwoc.kossiitkgp.org

Next: Christian Couder
Message 1 of 2 in “[GSoC][RFC][PROPOSAL v1] Unify ref-filter formats with other --pretty formats”
  1. Hariom vermaFeb 26, 2020
  2. Christian CouderMar 4, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.