Esteban, take the following steps: I will speak in a mercurial conversation, but all this can be done in git too.
- clone their project
- make your clone of your subrepo project in your project
It gives you the best of all worlds. You can edit the code in your project and their project, not paying attention to the fact that when you make changes to your code, go to your repo along with a pointer to a new set of changes in your clone of your project. Then, when you want to update your clone of your project, you can do it in place and just merge.
So this is pretty much what you said in "1", but there is no need to make a plug or host that repo publicly. Just edit your clone as a sub-report of your project and never click (which will not work, since you do not have write access to their repo).
Your version of the two main drawbacks is that as they change and improve their project, on which you depend, you will have a hard time pulling in their improvements and merging them with yours.
source share