Skip to content

Investigating if a Git submodule can be added by hand

Notifications You must be signed in to change notification settings

TomasHubelbauer/git-submodule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Git Submodule

Is it possible to add a submodule to a Git repository by hand? That is, just by editing files in a text editor, not touching the Git CLI at all?

I don't think so:

When a submodule is added, Git creates .submodules file and for a submodule named git-submodule, it will contain something like this:

[submodule "git-submodule"]
	path = git-submodule
	url = https://github.com/TomasHubelbauer/git-submodule

The same is added to .git/config after the existing content of that file.

A directory for the submodule named after the submodule is created in .git/modules. This folder is nearly identical to the the .git directory of the actual submodule repository, but it doesn't contain the actual objects (instead the submodule data is checked out to its directory and its metadata are here).

This means that theoretically, you might be able to add a submodule by hand without using git submodule add, but you would have to recreate all these config files.

But one can still imagine cloning the submodule repository to a separate directory and copying its .git over to this one. That might work.

However, adding a submodule also changes the index, .git/index, so you would have to manually update this hash as well, and at this point, you're reimplementing Git, but manually.

As a result, I don't believe it is anywhere near practical to add a Git submodule by hand.

About

Investigating if a Git submodule can be added by hand

Topics

Resources

Stars

Watchers

Forks