Boost logo

Boost :

Subject: Re: [boost] Git: maintaining super-project
From: Bjørn Roald (bjorn_at_[hidden])
Date: 2013-12-04 03:53:35


On 12/04/2013 08:39 AM, Vladimir Prus wrote:
> On 04.12.2013 11:27, Cox, Michael wrote:
>> On Tue, Dec 3, 2013 at 11:35 PM, Vladimir Prus <ghost_at_[hidden]> wrote:
>>
>>> On 04.12.2013 10:28, Vladimir Prus wrote:
>>>
>>> As far as I understand, you don't have to create pull requests for
>>>>> master and develop branches. The actual revision is pulled from
>>>>> submodules automatically as you check out the monolithic boost (the
>>>>> boostorg superproject). The pull requests might be needed during the
>>>>> release cycle, if you want specific last minute changes pulled by the
>>>>> release managers so that they get into release.
>>>>>
>>>>
>>>> Well, the superproject has references to specific revisions of each
>>>> component. Or am I mistaken
>>>> on this part?
>>>>
>>>
>>> Looks like I'm not. I did this:
>>>
>>> ghost_at_solid:~/Sources/boost-modular$ git checkout master
>>> M libs/program_options
>>> Switched to branch 'master'
>>> ghost_at_solid:~/Sources/boost-modular$ git submodule update
>>> --init
>>> Submodule path 'libs/program_options': checked out '
>>> fb4f36f3eecbef1e3b4ace5b263e01d56e42d5c7'
>>>
>>> This revision being checked out is what the current superproject repo
>>> specifies, which is 2 commits
>>> behind master of boostorg/program_options library.
>>>
>>> So, yes, without pull request, or manual updates, or some scripting,
>>> checking out the superproject
>>> will not get either 'master' or 'develop' state of all libraries.
>>
>> The following should get you what your asking for, if I understand you
>> correctly:
>>
>> git clone --recursive -b develop https://github.com/boostorg/boost
>
> Let's assume that I've already did this, and others checked in more
> changes,
> in which case...
>
>> git submodule foreach git checkout develop
>
> ... this command won't be sufficient, as you'd something like:
>
> git submodule foreach git fetch
>
> ?

I am probably confused as what you are trying to do, but I would simply do.

git checkout master
git submodule update
... everything is master (svn branches/release)

git checkout develop
git submodule update
... everything is develop (svn trunk)

if your working trees or index is not clean, git may be cautious about
letting you do this to save you from loosing data.

--
Bjørn

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