Since porcelain commands are built with the plumbing commands, I am interested to know how the add and commit are built.
For instance, the add command certainly use the hash-object command but I think it uses other commands as well (maybe the update-index). Can someone point me to a resource that explains this in details ?
Since porcelain commands are built with the plumbing commands ...
Unfortunately, this premise isn't quite true (j6t noted this as well). I would argue that it should be true, but for various reasons, it isn't. In particular git log does things for which no plumbing command is available, and git status does as well, but git status itself can become a plumbing command via the --porcelain flag.
For instance, the add command certainly use the hash-object command but I think it uses other commands as well (maybe the update-index). Can someone point me to a resource that explains this in details ?
You're correct that a typical git add uses the internal equivalent of git hash-object -w followed by git update-index. However, git add has, for instance, the -p or --patch mode, which is currently a Perl script, and is in the process of being rewritten as C code.
Can someone point me to a resource that explains this in details ?
The only guaranteed-to-be-accurate place to find this information is in the Git source itself. Fortunately that's freely available: just clone the Git repository for Git. Note that the answer to any detailed question is likely to depend on the specific Git version.
[from a comment: are] there conferences, papers etc. that talk about the evolution of Git historically?
There appears to have been a fairly large conference in March 2020. I'm sure there have been other papers earlier but I have no references.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With