Fake Git submodules : Better git inside of git
I have used git submodules and they are more trouble and pain than they are worth.
I find this approach to be nicer and an easier way to handle a git repo inside a git repo.
$ cd my-mainproject
$ git clone <subproject-url> my-subproject
$ git add my-subproject/
The important piece is the / on the end of the git add. It will prevent the main project from trying to add the subproject as a git submodule. When you cd into my-subproject, you will now be in that repo and can commit and pull . The main project sees and can commit the changes as though it were any other code. Other collaborators on the project will not have any reference to your git subproject. It is just for you.
This is great for creating drupal new drupal modules as you develop a site, then releasing the module later.
I am not sure how it stacks up against subtree operations.