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 fork() & exec() syscalls. To address these issues, commands were ported from shell to C, thus making them a builtin. Various commands, such as add, blame, commit, etc. have been converted to C due to the aforementioned reasons.

There are 4 subcommands of git submodule due for conversion, namely: add, set-url, set-branch & 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.





  • Christian Couder
  • Kaartic Sivaraam