This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rearrange the RMG steps relating to the release branch and tag
authorSteve Hay <steve.m.hay@googlemail.com>
Fri, 16 Aug 2013 21:27:32 +0000 (22:27 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Fri, 16 Aug 2013 22:32:37 +0000 (23:32 +0100)
The main steps in this regard in the current RMG are:

1. Commit the work as it's done to the local release branch
2. Push those commits to the remote release branch (creating it in the
   process)
3. Create a tag identifying the last commit in the release branch
4. Publish that release tag to the public repository
5. Merge the [local] release branch commits into the local blead branch
6. Push those merged commits to the remote blead branch

A recently added query in the RMG asked why it was necessary to push the
work so far (step (2) above), given that we're working on a release branch.

In an email discussion with RJBS we reached the conclusion that it is
indeed unnecessary: the merge in step (5) operates purely on the local
release branch, so there is no need to push anything first.

The release tag still needs to be pushed (step (4)), though, because in a
default Git configuration "git push" only pushes commits, not tags as well.
However, if we omit step (2) then it makes more sense to delay step (4)
until after steps (5) and (6) otherwise we are publishing a tag identifying
a commit that hasn't been pushed anywhere public yet.

The above sequence of steps has therefore been changed to:

1. Commit the work as it's done to the local release branch
2. Create a tag identifying the last commit in the local release branch
3. Merge the local release branch commits into the local blead branch
4. Push those merged commits to the remote blead branch
5. Publish the tag (which identifies the last of those pushed commits)
   to the public repository

For the same reasons, the "git push origin ...." when disarming
patchlevel.h in non-BLEAD-POINT releases has been removed since we're still
on the release branch at this point in the process.

Also, since we now never push anything to a remote release branch, there is
no longer any need to delete it. Only the local release branch needs
deleting.

Finally, the last "git commit" instruction in the RMG (regarding copying
perldelta.pod to blead for MAINT and BLEAD-FINAL releases) was lacking a
"git push origin ....": we're no longer on the release branch by this stage
of the process.

Porting/release_managers_guide.pod

index a66c5c3..43c88a0 100644 (file)
@@ -841,19 +841,9 @@ and C<< deadbeef >> commit of that tag.
 
 Then delete the temporary installation.
 
+=head3 create the release tag
 
-=head3 push the work so far
-
-XXX why do we need to do this if we're working on a release branch
-anyway?
-
-Push all your recent commits:
-
-    $ git push origin release-5.xx.yy
-
-=head3 tag the release
-
-Tag the release (e.g.):
+Create the tag identifying this release (e.g.):
 
     $ git tag v5.11.0 -m "First release of the v5.11 series!"
 
@@ -1068,14 +1058,6 @@ confirming that your uploads have been received.  IMPORTANT -- you will
 probably get an email that indexing has failed, due to module permissions.
 This is considered normal.
 
-
-=head3 publish tag
-
-Now that you've shipped the new perl release to PAUSE, it's
-time to publish the tag you created earlier to the public git repo (e.g.):
-
-    $ git push origin tag v5.11.0
-
 =for checklist skip BLEAD-POINT
 
 =head3 disarm patchlevel.h
@@ -1092,9 +1074,6 @@ Disarm the F<patchlevel.h> change; for example,
 Be sure to commit your change:
 
     $ git commit -m 'disarm RCnnn bump' patchlevel.h
-    $ git push origin ....
-
-
 
 =head3 announce to p5p
 
@@ -1106,16 +1085,22 @@ Send a carbon copy to C<noc@metacpan.org>
 
 =head3 merge release branch back to blead
 
-If you made a release branch for this release, merge it back into master now,
-and delete it.
+Merge the (local) release branch back into master now, and delete it.
 
   git checkout blead
   git pull
   git merge release-5.xx.yy
   git push
-  git push origin :release-5.xx.yy
   git branch -d release-5.xx.yy
 
+=head3 publish the release tag
+
+Now that you've shipped the new perl release to PAUSE and pushed your changes
+to the Perl master repository, it's time to publish the tag you created
+earlier too (e.g.):
+
+    $ git push origin tag v5.11.0
+
 =head3 update epigraphs.pod
 
 Add your quote to F<Porting/epigraphs.pod> and commit it.
@@ -1295,10 +1280,10 @@ Then rebuild various files:
 
     $ perl Porting/pod_rules.pl
 
-Finally, commit:
+Finally, commit and push:
 
     $ git commit -a -m 'add perlXXXdelta'
-
+    $ git push origin ....
 
 =head3 copy perlhist.pod entries to blead