Page History
- 2011-Jan-19 21:19 willb
 - 2011-Jan-18 16:51 willb
 - 2011-Jan-18 16:45 willb
 
Executive summary
The public git repositories served up on gitweb are maintained by a simple script, called git-mirror.rb.  This script pulls all heads matching certain patterns from the internal repository.  By default, branches fitting the following criteria will be mirrored:
- the master branch (
master), - standard nightly build tags, of the form 
YYYY-M[M]-D[D][_X*], - branches whose names end with 
-publicbranch, - nightly build tags that end with 
-publicbranchand a build date, - release tags, and
 - explicitly whitelisted branches (currently 
V7_5-dcloud-branchandV7_1-procd_osg-branch) 
Frequently-asked questions
How often does this thing run? The old shell-script version ran once every twenty minutes as a cron job. The new Ruby version pulls all matching branches, sleeps for thirty seconds, and then runs itself again; it uses cron essentially as a watchdog. (That is, at most one mirror job targeting a given destination repository will run at a time.)
When should I expect to see my changes to mirrored branch =foo= in the public repository?  A pull shouldn't take more than five minutes, so the worst-case scenario for the new mirror script is probably under ten minutes.  (The real worst-case scenario involves waiting for the cron job to restart git-mirror.rb, but your average wait time in that case should still be under fifteen minutes.)
How can I tell if my (sensitive) branch will be mirrored to the public repository?  You can run git-mirror.rb yourself on your personal repo with the --dry-run option, and it will show you the list of branches and tags it would have pushed, given the default options.
How can I tell if my (non-sensitive) branch will be mirrored to the public repository? Push it to the main internal repo and wait for at most fifteen minutes.
How can I recognize an additional set of branch or tag names to be mirrored to the public repository?  The first question to ask yourself is "do I really need to do this?"  Unless you're dealing with something inflexible that expects a certain kind of branch or tag name, it's better to use a name that already fits one of the existing patterns.  However, it's easy to make the script recognize additional patterns:  simply specify the additional pattern as a command-line argument to git-mirror.rb in the crontab entry:  use -p REGEX to specify that head names matching REGEX should be pushed or -w NAME to add NAME to the name whitelist.
What else can I do with this script?  Glad you asked!  Run git-mirror.rb --help for more details.
