Reputation: 11863
I have a local repository, let's call it ONE. ONE is the actual program. It's an android program, in case it matters for some reason.
I have a remote repository, let's call it EXT. EXT is somewhat a library, used by ONE.
ONE has a complex directory structure, mandated by android. The main sources are in src/bla/bla/ONE
. Since ONE uses EXT, to do it I had to create another directory next to that one, that is src/bla/bla/EXT
.
I think would like to keep them separated in two repositories, but I need for them to actually be in this same directory structure to compile ONE.
At the moment I just created a symlink to do it, but I wonder if there is a better way of doing that, that uses some hg feature.
Upvotes: 1
Views: 238
Reputation: 17769
I'm no expert on this, but I don't think sub-repositories work in this case.
You have 2 projects with the same deeply nested directory structure:
Project "ONE":
ONE
/src
/bla
/bla
/ONE
Project "EXT"
EXT
/src
/bla
/bla
/EXT
When you compile these projects you want the following structure:
Compile Project
/src
/bla
/bla
/ONE
/EXT
Or something similar - essentially both source trees combined under a single "src".
Since you can't checkout part of a repository, wherever you create a sub-repository you'll get the full "EXT" directory. So, if you make a subrepo next to "ONE" you'll end up with:
Combined Project
/src
/bla
/bla
/ONE
/src
/bla
/bla
/EXT
What you are after is a "Partial Clone", which doesn't exist yet.
https://www.mercurial-scm.org/wiki/PartialClone
I think OS links are the way to go.
Hope this helps.
Upvotes: 1
Reputation: 11547
Use hg subrepos. For example:
$ git init ONE-proj
$ cd ONE-proj
$ mkdir -p src/bla/bla/ONE
$ ... # commit your initial project files for ONE
$ echo src/bla/bla/EXT = /path/to/hg/repository/EXT > .hgsub
$ hg add .hgsub
$ hg clone /path/to/hg/repository/EXT src/bla/bla/EXT
$ hg commit
Upvotes: 0
Reputation: 13972
Subrepositories are great for this. Take a look at this related SO question: (how do I add a subrepo to an existing repo in mercurial.
Upvotes: 4