Hi Achim,

Achim Gratz <strom...@nexgo.de> writes:

> Fair enough: a three-branch model with a release branch at the side of
> bugfixing and bleeding edge.

This is directly inspired from this: 
http://nvie.com/posts/a-successful-git-branching-model/

with some simplifications.

>> No.  All hotfix branches should merge into master regularily.  When
>> hotfix contains enough fixes for a bugfix release, then we merge it to
>> maint, and process with release.
>
> This is what I think is confusing: the bugfix branch (be it maint or any
> other) should always have the same _unless_ you want to track release
> specific bugfixes (which I don't think you do, but you tell me).  

I mostly want to track wrt-last-Emacs-merge specific bugs. 
I used the naming convention hotfix-* as suggested above because
I like the idea of deleting such a branch once we don't need it 
anymore (i.e. once a release has been done.)  Since hotfix-* role
is to contain fixes for severe bugs against the last production
version, their lifespan is not much (expect now, while we are 
testing this workflow, and while the forthcoming Emacs release
puts some heat on getting as much bugfixes committed to the
next 7.8.07 Org version.)

If we keep a persistent maint branch, I guess we will tend to
put all bugfixes there -- which I don't want.  But which could
make sense if those bugfixes are regularily merged back to Emacs
trunk.

>> My main goal is this: have a branch with one commit = one release.
>
> Why not name it release then and keep maint for fixes?  You could even
> install that release branch retro-actively if you want.  BTW, this also
> means you need to prepare the release on the hotfix branch, no
> fier-upper on the release allowed at all (since you would need to merge
> that back).

Indeed.  As for the names, I don't care, I just don't want to change
things that are just conventions.

> But as I said before, clone the repo, branch off the 7.7 release or so
> and re-trace the following releases via cherry-pick according to that
> new development model.  You will quickly learn if what you have to do
> feels right and if you commit to that model you will have practised the
> moves a few times already.

Good idea.  I will try.

> Another thing that I'd recommend is to not work on the public repo _at
> all_ and specifically never push to it, especially not automatically.
> The public repo should be "bare" (without a work tree) and any work on
> the server should use a clone of that repo, just like anyone else.  

Mhh.. something I don't get here: why should we not work on the public
repo?  This is the repo many people are cloning.

> If
> you prepare the releases on a fresh clone apart from the development
> clone, you have a stable base to work from and can nuke with no
> consequences if something goes wrong.  

(We prepare major releases on the development branch, minor ones on the
hotfix-* branch.)

> Git was designed to make merges
> easier, but they are hard and I still botch about every tenth that I try
> unless they are really trivial.  Once the release repo is finished, have
> it reviewed and then pull from it on the public repo.  The reason is
> that it is easy to push from the wrong branch onto the wrong target, but
> you really have to try to do that when pulling.  You can be more liberal
> with the normal development and bugfixing work on the development repo,
> but it would still be a good idea to have commits reviewed and signed
> off by another person before they are pulled into public.

Okay, I now understand the problem of pushing from the wrong repo ;)
Well, this is a trade-off.  If developers are willing to follow these
rules, okay.  But I don't feel like imposing them to everyone --
especially because paying a little more attention might be enough to
avoid the mess I did.

Again, thanks for sharing this.  

Let's continue with the model I suggest and see what is better and 
what should be fixed.

-- 
 Bastien

Reply via email to