On 06/23/2011 06:02 PM, Brad King wrote:
> On 06/23/2011 10:36 AM, Michael Wild wrote:
>> On 06/23/2011 04:11 PM, Brad King wrote:
>>> We manually select topics from 'next' and merge them to 'master'.
>>> Only topics in master will be released.
>>
>> So, how does that work? Do you look for the merges in 'next' that you
>> like, and then re-merge them to 'master' directly from the topic-branch?
> 
> Yes.  The complete workflow is described generically here:
> 
>   http://public.kitware.com/Wiki/Git/Workflow/Topic
> 
> We use a "topic stage" repository to keep explicit topic branch heads
> that are not in all integration branches:
> 
>   http://public.kitware.com/Wiki/Git/Workflow/Stage
> 
> CMake's topic stage is published here:
> 
>   http://cmake.org/stage/cmake.git
> 
> The set of branches changes regularly as topics are added or finished.
> 
>> Something like this?
>>
>> -- A ------------------------ I -- master
>>     \   \   \                /
>>      \   \   C --- D ------ G -- topic2
>>       \   \                  \
>>        \   B -- D -- topic1   \
>>         \        \             \
>>          \------- F ------------H -- next
> 
> Yes, exactly.
> 
>> i.e. everything starts at A, 'master' and 'next' being identical. Then,
>> someone creates 'topic1' and merges it into 'next' (commit F).
>> Meanwhile, another topic, 'topic2' is created, and also merged into
>> 'next' (commit H). Now, 'topic1' just isn't ready, but 'topic2' is, so
>> it gets merged into 'master' (commmit I). Is this correct?
> 
> Yes.  It gets a little more complicated when there are conflicts:
> 
>   http://public.kitware.com/Wiki/Git/Workflow/Topic/Conflicts
> 
>> Is 'next' kind of your "throw-away" integration branch?
> 
> Yes.  No topics are allowed to see any of the merges into next.  There
> is even a check on the server that disallows topics (or master) to see
> the beginning of next.
> 
>> Do you rebase it regularly onto master?
> 
> So far we haven't rewritten it but the workflow allows that because
> nothing should be based on it.  Currently we have to avoid rewriting
> the branch because some dashboard clients may do just "git pull" to
> update.  Recent CTest versions do a fetch & reset so that they can
> handle upstream rewrites.
> 
> I designed all of the above after reading about Git's own workflow:
> 
>   
> http://git.kernel.org/?p=git/git.git;a=blob;f=Documentation/howto/maintain-git.txt;hb=v1.7.5
> 
> Our "topic stage" takes the place of the maintainer's private repository.
> I designed it to help distribute some of the maintainer's workload among
> developers (and they don't even have to know; it's just part of their
> workflow).
> 
> -Brad

Thanks for the thorough explanation. I have to say, it is very well
thought-through, I'll try to enforce something similar for my projects.
gitworkflows(7) always seemed a bit unwieldy to me, but then it is also
geared towards much larger projects with many more contributors...

Michael
_______________________________________________
cmake-developers mailing list
cmake-developers@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to