Some Git commands were initially implemented directly in shell script with some instances of Perl as well. As times progressed, various platforms to run Git emerged & projects became large, enter, problems in production level code. These problems included difficulties in porting code across platforms especially in non-POSIX compliant systems as well as a large overhead involved in calling shell scripts due to multiple
exec() syscalls. To address these issues, commands were ported from shell to C, thus making them a builtin. Various commands, such as
commit, etc. have been converted to C due to the aforementioned reasons.
There are 4 subcommands of
git submodule due for conversion, namely:
summary. My project intends to convert these subcommands into C, thus making
git submodule a 'builtin'. This would increase the efficiency of the command by a great margin as well as address the aforementioned problems in the shell versions of the command.