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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux