summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Hay <steve.m.hay@googlemail.com>2012-09-13 23:09:19 +0100
committerSteve Hay <steve.m.hay@googlemail.com>2012-09-13 23:09:19 +0100
commit3afc3118d840d5ec214f77890ef7e95cdce73636 (patch)
treee6e82711bb9ad4ab0c954d6d8a09de7f2a5151f8
parent99cd8e461ab8bc340aed8e4c109bb32457f85bd0 (diff)
downloadperl-3afc3118d840d5ec214f77890ef7e95cdce73636.tar.gz
Document how to create and use smoke-me branches
The instructions are based on the following helpful email from Tony Cook: http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2012-09/msg00747.html after I tested them myself in course of commit 8700fd3876.
-rw-r--r--pod/perlgit.pod70
-rw-r--r--t/porting/known_pod_issues.dat4
2 files changed, 72 insertions, 2 deletions
diff --git a/pod/perlgit.pod b/pod/perlgit.pod
index 6046d46351..9b5fe3f716 100644
--- a/pod/perlgit.pod
+++ b/pod/perlgit.pod
@@ -826,6 +826,76 @@ And then push back to the repository:
% git push
+=head2 Using a smoke-me branch to test changes
+
+Sometimes a change affects code paths which you cannot test on the OSes
+which are directly available to you and it would be wise to have users
+on other OSes test the change before you commit it to blead.
+
+Fortunately, there is a way to get your change smoke-tested on various
+OSes: push it to a "smoke-me" branch and wait for certain automated
+smoke-testers to report the results from their OSes.
+
+The procedure for doing this is roughly as follows (using the example of
+of tonyc's smoke-me branch called win32stat):
+
+First, make a local branch and switch to it:
+
+ % git checkout -b win32stat
+
+Make some changes, build perl and test your changes, then commit them to
+your local branch. Then push your local branch to a remote smoke-me
+branch:
+
+ % git push origin win32stat:smoke-me/tonyc/win32stat
+
+Now you can switch back to blead locally:
+
+ % git checkout blead
+
+and continue working on other things while you wait a day or two,
+keeping an eye on the results reported for your smoke-me branch at
+L<http://perl.develop-help.com/?b=smoke-me/tonyc/win32state>.
+
+If all is well then update your blead branch:
+
+ % git pull
+
+then checkout your smoke-me branch once more and rebase it on blead:
+
+ % git rebase blead win32stat
+
+Now switch back to blead and merge your smoke-me branch into it:
+
+ % git checkout blead
+ % git merge win32stat
+
+As described earlier, if there are many changes on your smoke-me branch
+then you should prepare a merge commit in which to give an overview of
+those changes by using the following command instead of the last
+command above:
+
+ % git merge win32stat --no-ff --no-commit
+
+You should now build perl and test your (merged) changes one last time
+(ideally run the whole test suite, but failing that at least run the
+F<t/porting/*.t> tests) before pushing your changes as usual:
+
+ % git push origin blead
+
+Finally, you should then delete the remote smoke-me branch:
+
+ % git push origin :smoke-me/tonyc/win32stat
+
+(which is likely to produce a warning like this, which can be ignored:
+
+ remote: fatal: ambiguous argument 'refs/heads/smoke-me/tonyc/win32stat': unknown revision or path not in the working tree.
+ remote: Use '--' to separate paths from revisions
+
+) and then delete your local branch:
+
+ % git branch -d win32stat
+
=head2 A note on camel and dromedary
The committers have SSH access to the two servers that serve
diff --git a/t/porting/known_pod_issues.dat b/t/porting/known_pod_issues.dat
index ba4ccf6c8a..b6073c3f97 100644
--- a/t/porting/known_pod_issues.dat
+++ b/t/porting/known_pod_issues.dat
@@ -1,4 +1,4 @@
-# This file is the data file for t/porting/podcheck.t.
+# This file is the data file for porting/podcheck.t.
# There are three types of lines.
# Comment lines are white-space only or begin with a '#', like this one. Any
# changes you make to the comment lines will be lost when the file is
@@ -230,7 +230,7 @@ pod/perldtrace.pod Verbatim line length including indents exceeds 79 by 26
pod/perlebcdic.pod Verbatim line length including indents exceeds 79 by 13
pod/perlembed.pod Verbatim line length including indents exceeds 79 by 27
pod/perlfunc.pod There is more than one target 1
-pod/perlgit.pod Verbatim line length including indents exceeds 79 by 11
+pod/perlgit.pod Verbatim line length including indents exceeds 79 by 12
pod/perlgpl.pod Verbatim line length including indents exceeds 79 by 50
pod/perlguts.pod ? Should you be using F<...> or maybe L<...> instead of 2
pod/perlguts.pod ? Should you be using L<...> instead of 1