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

Re: Discuss GSoC: Implement consistency checks for refs

From
shejialuo <shejialuo@gmail.com>
Date
Mar 10, 2024, 10:01 UTC
Message-ID
<Ze2E_xgfwTUzsQ92@ArchLinux>

Thanks for you help. I'm sorry for the delay in resonding to your email due to my internship.

> I know this is splitting hairs, but git-fsck(1) doesn't give us the
> tools to avoid corruption. It only gives us the tools to detect it after
> the fact.
I DO misundestood the `git-fsck(1)`.

This time, I have read more source codes about `git-fsck` and refs internal. So I wanna discuss some implementation of the infrastructure this time.

I am inspired by `refs-internal.h`, this file declares `ref_storage_be`, and for every backend, it should implement the interfaces like `ref_store_init_fn`, `ref_init_db_fn` and etc. And in `refs.h`, it provides the interfaces to other modules.

Based above idea, I think we could just create files in `refs` directory and we could implement a file called `ref-check.h`, we design the interfaces for different backends.

After that, we could compose this structure into `ref_storage_be` and we could call these interfaces in `fsck.c`. If there are some different interfaces, we could downcast to a specified type to call the specified functions. (Actually, I have learned a lot how OOP is implemented in C).

> For what it's worth, not all of the checks need to be implemented as
> part of GSoC. At a minimum, it should result in the infra to allow for
> backend-specific checks and a couple of checks for at least one of the
> backends.

I think using the above idea, we could provide an infrastructure to allow more checks later.

Show 6 quoted lines
> You will certainly need to learn about ref internals a bit. There are
> some common rules and restrictions that are important in order to figure
> out what we want to check in the first place. Understanding the
> "reftable" format would be great, but you may also get away with only
> implementing generic or "files"-backend specific consistency checks.
> This depends on the scope you are aiming for.

I think I will at least implement the generic part and files-backend consistency check. I will then read some specs about the reftable and the source code of it. If there is sufficient time available, I think I could implement all of them. However, I am currently interning remotely, the response may slow.

Next: Kaartic Sivaraam
Message 1 of 2 in “Re: Discuss GSoC: Implement consistency checks for refs”
  1. shejialuoMar 10, 2024
  2. Kaartic SivaraamMar 14, 2024

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.