Thread (11 messages) flat view 11 messages, 3 authors, 2021-12-29

Re: Git internal command line parser

From: Philip Oakley <hidden>
Date: 2021-12-27 16:43:13

Hi João  & Lemuria,

On 25/12/2021 02:55, João Victor Bonfim wrote:
quoted
If you are on Windows, it gets even more interesting because all the
individual sub-commands are just hard links back to the single git.exe
that then links to those sub-command's code.
That seems undesirable...
I know operating otherwise would be even more complicated and might create undue complexity or diminish performance, but I guess that, if it works, don't mess with it.
The original question didn't say which OS was in use, and had hints that
roughly matched a common Windows user misunderstanding about how the Git
executables coped with the change of OS [1].

My description was a hint, rather than a detailed exposition about what
was happening there. As you note, performance is important.
quoted
And I likely will consider this "front-end to many separate
executable apps" approach for my future large projects.

Lemuria, please consider those points as, sometimes, what is great at performance might not help with scalability and other matters, therefore, as the designer/engineer of a software system, a choice must be made and an evaluation of the properties of each possibility is a necessity.

Do with that what you will.
quoted
I'm also a beginner to C, not quite an expert at it.
Practice programming a lot and never forget two things: [1] you are working with a man made machine, therefore its limitations and capabilities are by design, so you must consider them every step of the way when developing (like how computers send information, how computers process informations, how machine behaviour can be altered, abused or exploited through alteration of the environment or mechanism and through the use of sleight of hand). [2] Your code always has real life consequences and it is your moral responsibility to consider them and make sure that prejudice isn't codified into them.

Those are my two tid bits about being a responsible and effective programmer.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

Em sexta-feira, 24 de dezembro de 2021 às 15:36, Philip Oakley [off-list ref] escreveu:
quoted
On 24/12/2021 18:30, Lemuria wrote:
quoted
On 25/12/2021 2:13 am, Philip Oakley wrote:
quoted
On 24/12/2021 14:38, Lemuria wrote:
quoted
#=< TLDR: Where's the code for git's internal command line parser?
quoted
===#
I'm interested in the internals of git, more specifically it's command

line parser.
One place to start is https://github.com/git/git/blob/master/git.c
Wait, is all of Git just one big executable or are there many

executables and `git` is just the front-end for accessing the

separate git executables, such as say, the one for processing

commits?
Yes, `git` is a front end.

If you are on Windows, it gets even more interesting because all the

individual sub-commands are just hard links back to the single git.exe

that then links to those sub-command's code.
This (over simplified) explanation relates to the differences between
the OS approaches to the performance issues when creating new processes
and the like on Windows. Each OS has strengths and weaknesses.
quoted
quoted
quoted
quoted
Does Git use a library like getopt for it's command line handling, or

does it use a custom parser?

If possible, I would appreciate being redirected to the source code

files that handle this.

Sincerely,

Lemuria
Philip
[1]
https://github.com/git-for-windows/build-extra/blob/main/ReleaseNotes.md?plain=1#L25
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help