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

[GSoC] Git Blog 1

From
ZheNing Hu <adlternative@gmail.com>
Date
May 23, 2021, 10:53 UTC
Message-ID
<CAOLTT8Tu1Xvc6sJ79n6f9B6TiuKp3akTQcQcuzEe7sG-kVOXAA@mail.gmail.com>

My first week blog finished: The web version is here: https://adlternative.github.io/GSOC-Git-Blog-1/

-----
## Week1: Git Adventure Begin

Use Git to submit Git patches to the Git community. Does it sound magical? I fell very lucky to be selected by the Git community this year and start my Git Adventure in GSoC.

I am no stranger to Git usage, and before the start of GSoC, I have learned some Git source code content, but I only saw the tip of the iceberg of Git source code, there are still many things that I need to explore.

### What happened this week
- In [[GSoC] Hello
Git](https://lore.kernel.org/git/CAOLTT8SHE-ok3D+oLNSWFi7KPU==VQnTMDmC4YxUyNBJKmBD8A@mail.gmail.com/),
Christian and JiangXin interacted with me.
- I checked Olga's patch at Christian's prompt and learned a way
to make `cat-file --batch` use `ref-filter` logic: Use `format_ref_array_item()`
in `batch_object_write()`, this is indeed a good entry point. But
before implementing this function, we must make `ref-filter`
support the function of printing the original data of the object
(as `cat-file --batch` does). I decided to reuse the atom
`%(content:raw)` in ref-filter to implement this function.

### The difficulties I met In [[PATCH] [GSOC] ref-filter: add contents:raw atom](https://lore.kernel.org/git/pull.958.git.1621500593126.gitgitgadget@gmail.com/), I submitted a patch, which support atom `%(content:raw)` for `ref-filter`.

Unfortunately, this patch has a big problem: I ignored the breakage on the test. This led me to discover a bigger problem:

If our references points to a blob or a tree, and these objects may be binary files, this means that we cannot use functions related to `strcmp()`,`strlen()` or `strbuf_addstr()`. The possible '\0' will cause the output to be truncated. We have to think of a way to make `ref-filter` can accept the output of these binary content.

So I searched for all the codes in `ref-filter.c` that buffer might be truncated by '\0' and use the appropriate method to replace them.

Just like replacing `strcmp()` with `memcmp()`, We can use `strbuf_add()` instead of `strbuf_addstr()`, At the same time I also wrote the equivalent `*._quote_buf_with_size()` to replace `*._quote_buf()`.

I just submit it to the mailing list right now: [[GSOC][RFC] ref-filter: add contents:raw atom] (https://lore.kernel.org/git/pull.959.git.1621763612.gitgitgadget@gmail.com/)

I don’t know if this is the right approach at the moment, let us slowly wait for the suggestions of mentors and reviewers... ;-)

Thanks! -- ZheNing Hu

Next: Christian Couder
Message 1 of 3 in “[GSoC] Git Blog 1”
  1. ZheNing HuMay 23, 2021
  2. Christian CouderMay 24, 2021
  3. ZheNing HuMay 26, 2021

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.