Boost logo

Boost :

Subject: Re: [boost] [git] Near future.. How do we deal with git-native libraries?
From: Cox, Michael (mhcox_at_[hidden])
Date: 2013-12-03 06:05:00


On Tue, Dec 3, 2013 at 1:58 AM, Daniel James <daniel_at_[hidden]> wrote:

> On 2 December 2013 19:47, Rene Rivera <grafikrobot_at_[hidden]> wrote:
> > On Mon, Dec 2, 2013 at 2:44 AM, Daniel James <daniel_at_[hidden]>
> wrote:
> >
> >> This has been discussed in the past. The existing repo will need to
> >> remain as the super module refers to the hash values of its commits.
> >> The suggested fix was to combine the two repos, since a git repo can
> >> contain two separate trees. The old branches will need to be kept
> >> alive by tagging them.
> >>
> >> I'd rather have kept the two separate by using a different name for
> >> the converted repo (e.g. svn-predef), but no one agreed with me.
> >>
> >
> > Since it seems that we need to BoostOrg repo.. My preference would be to
> > slam the BoostOrg one with my canonical repo and only keep the BoostOrg
> > repo around. Since the canonical one has more, and more accurate, history
> > than the BoostOrg one. But I don't know what the ramifications of such a
> > move are.
>
> Sorry, I don't understand what you mean. Although what I wrote above
> wasn't particularly comprehensible either. What I was trying to get at
> is something like the following which stores both histories in a
> single repo, but keeps them separate and makes yours the main
> branches. Afterwards the super-repo will need to be updated
> accordingly. Maybe someone has a better idea?
>
> # Create clone containing both repos:
> git clone git_at_[hidden]:boostorg/predef.git
> cd predef
> git remote add grafik git_at_[hidden]:grafikrobot/boost-predef.git
>

I'm assuming you're the lead (only?) developer for this library. As the
library maintainer you would integrate changes from other contributors into
your repo under github.com/grafikrobot (or if you work on other open source
projects, you may want to create an organization under your account, e.g.
grafikrobot-boost to do all your boost work. See Creating a new
organization account<https://help.github.com/articles/creating-a-new-organization-account--2>.
 I'm going to assume you've created a grafikrobot-boost organization under
your user account. If not, then do this under grafikrobot.

So under grafikrobot-boost, fork the github.com/boostorg/predef repository:

   - Go to http://github.com/boostorg/predef and click on the fork button
   in the upper right of the window.
   - In the pop-up window select grafikrobot-boost to create the fork.
   - Now your new forked repo is linked to the official boostorg/predef
   repo as a fork and you can submit pull requests to boostorg/predef. The
   Boost release manager will than pull in your changes from the develop
   branch of grafikrobot-boost/predef.

Follow the above steps for the github.com/boostorg/boost respository.

Now that you have your new predef and boost repo under grafik-boost,
execute the following commands on your PC:

git clone --recursive -o upstream -b develop
https://github.com/boostorg/boost

git remote add -b grafikrobot/develop origin git_at_[hidden]:
grafikrobot-boost/boost

git fetch origin "+refs/heads/*:refs/heads/grafik/*"

git fetch upstream "+refs/heads/*:refs/heads/*"

cd libs/predef

git remote add -b grafikrobot/develop origin git_at_[hidden]:
grafikrobot-boost/predef

git fetch origin "+refs/heads/*:refs/heads/grafik/*"

git fetch upstream "+refs/heads/*:refs/heads/*"

You now have the boost and predef repos connected to the official repos
under github.com/boostorg using the upstream remote and connected to your
public repos under github.com/grafikrobot-boost using the origin remote.
 The local branch develop has the latest changes from boostorg. The local
branch grafik/develop is equivalent to the develop from boostorg. Now we
add a remote to retrieve the changes you want to add to the grafik/develop
branch from grafikrobot/boost-predef into temp/develop:

git remote add -b temp/develop temp git_at_[hidden]:grafikrobot/boost-predef

git fetch temp "+refs/heads/*:refs/heads/temp/*"

You now have a temp/develop branch that contains your new changes. Now
merge the changes in temp/develop into grafik/develop and push to your
public repo:

git checkout grafik/develop
git merge temp/develop
git commit -a
git push origin grafik/develop

Now you have to add and commit a submodule ref in the super-repository
boost:

cd ../..
git add .

git commit -m"Update submodule ref to point to latest commits in predef."

git push origin grafik/develop

Now that you have all the changes in grafikrobot-boost, go to
github.com/boostorg/predef and github.com/boostorg/boost and submit pull
requests from the branches grafik/develop in the boost and predef
repositories under github.com/grafikrobot-boost.

You can now delete the temp remote and temp/* local branches from the
repositories on your PC. Also, you can delete the
github.com/grafikrobot/boost-predef repository (
github.com/grafik-boost/predef is your new public repository). You can pull
from the upstream remote any changes in the boost repo by other developers.
Since all contributions to predef should flow through you, you probably
won't need to pull updates from the upstream remote pointing to
github.com/grafikrobot-boost/predef repository.

Michael


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk