Nathan Crookston wrote:
Klaim - Joël Lamotte wrote:
You should fork
A. the super repository. boostorg/boost, which will give you a way to modify which submodules are used; B. the specific library Fork them either on github or in a place available to your team, as long as they can access it it's fine.
Then locally: 1. clone your boost super fork; 2. in this clone, change the address of the submodule you want to use your own library fork with;
Just to clarify this step, since the other urls in the .gitmodules file are relative, you'll need to make them absolute and point them to the boostorg ones (unless you want to fork *all* the boostorg repos).
3. this is a change, commit it, then push it up to your fork; 4. now your boost super repo fork is pointing to your sub library fork as a submodule, instead of the official repository of this library; 5. this one I'm not sure is necessary: now pull from your fork and make sure your local version is using the right submodule address (to your library fork); 6. each time you want to upgrade any of these forks, you'll need to pull from the original repositories and then merge with your changes; 7. if the forks are on github, indeed you can easily submit pull requests but still continue with your version if it's not accepted yet or ever;
With that, I think it should work, though I'll also be unable to test for a couple days.
Okay, I actually just tried this and it worked just fine. My steps were: 1. Fork boostorg/boost 2. Clone *just* boostorg/boost, not all the sub-projects (as this will fail): - `git clone git@github.com:boostorg/boost.git modular-boost` 2.5 (Optional) Create a branch (I called mine 'updated') 3. Edit .gitmodules and change all the relative URLs to absolute, SSH or HTTPS (whichever kind you or your company firewall likes). - I ran `:%s/\.\./https:\/\/github.com\/boostorg\/utility.git/g` in vim to use https. 3. Fork the particular repos you want to apply patches to: - For this example, I forked 'range'. 4. Edit the 'range' url line in boost/.gitmodules to point to your fork: - I changed the https://github.com/boostorg/range.git to git@github.com:ncrookston/range.git. 5. Commit your gitmodules change, push it to your fork: - `git commit -a -m "create local boostorg"; git push origin updated` 6. Now get all the submodules: - `git submodule update --init`. You should see it fetch most libraries from boostorg, but those you've edited will be registered with the URL you gave in step 4. If you need to make a fresh clone it's straightforward: If you created a new branch: - `git clone -b updated --recursive git@github.com:ncrookston/boost.git modular_boost` If you did not: - `git clone --recursive git@github.com:ncrookston/boost.git modular_boost` HTH, Nate