Boost logo

Boost :

Subject: Re: [boost] A proposal for superproject structure and testing
From: Alexander Lamaison (awl03_at_[hidden])
Date: 2013-12-09 12:17:20

Andrey Semashev <andrey.semashev_at_[hidden]> writes:

> On Monday 09 December 2013 06:57:13 Steven Watanabe wrote:
>> On 12/09/2013 06:47 AM, Andrey Semashev wrote:
>> > On Monday 09 December 2013 16:32:18 Peter Dimov wrote:
>> >> Andrey Semashev wrote:
>> >> We're using different meanings of "fix" here. Imagine that the submodule
>> >> has the following sequence of commits:
>> >>
>> >> - bug fix
>> >> - new feature
>> >> - bug fix
>> >> - more of new feature
>> >> - bug fix
>> >>
>> >> and the new feature turns out to block the Boost release. Fixing the
>> >> problem, in your sense, means fixing the new feature so that it becomes
>> >> Boost-release-worthy. This should indeed be done in develop. Fixing the
>> >> problem, in my sense, means doing
>> >>
>> >> - revert "more of new feature"
>> >> - revert "new feature"
>> >>
>> >> on a branch.
>> >>
>> >> <snip>
>> >
>> > You can "revert" the feature by just changing the reference to the commit
>> > in the superproject release branch to an earlier commit, before the
>> > feature was added to the library master.
>> No you can't. Look at Peter's example again.
>> Doing this would also revert the other bug fixes.
> Maybe the submodule should be forked then. The superproject would then
> reference the master branch of the fork with the necessary modifications. At
> least, this would make sure that the superproject release will stay valid as
> long as the fork is present. With the branch approach, the branch can be
> deleted, and if I'm not mistaken, the release tag would then reference a non-
> existent commit of the branch.

Do you mean that a superproject commit {foo} tagged "mytag" would reference
a non-existent submodule commit {bar} because {bar} had been on branch
"mybranch" when commit {foo} was made and branch "mybranch" has since
been deleted?

Because, if so, that's not possible with git. Branches are just
nicknames for particular commits. They can come and go pretty much as
they please without disrupting other things. Submodules reference a
_commit_ and the commits remain in the repository regardless of what
happens to the branches.

Or put another way, branches are there for the humans. When talking to
itself (like referencing a submodule) git only cares about commits.


Swish - Easy SFTP for Windows Explorer (

Boost list run by bdawes at, gregod at, cpdaniel at, john at