[[PageOutline]] = Updating Bugzilla = This page describes a process to update the Bugzilla instance running on [http://bugs.webkit.org/ bugs.webkit.org]. == Setup == * Check out Bugzilla sources from CVS (for reference). {{{ cvs -d ":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot" co -d bugzilla.cvs mozilla/webtools/bugzilla }}} * Import original Bugzilla sources from CVS into a local git repository (may take a couple of hours). {{{ rm -f ~/.cvsps/\:pserver\:anonymous@cvs-mirror.mozilla.org\:#cvsroot#mozilla#webtools#bugzilla mkdir bugzilla.git git cvsimport -d ":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot" -C bugzilla.git -k mozilla/webtools/bugzilla }}} * Import BugsSite from the WebKit repository into a local git repository. {{{ mkdir bugssite.git cd bugssite.git git svn init -T trunk/BugsSite http://svn.webkit.org/repository/webkit git svn fetch }}} * Create a local git repository to do the merge. {{{ mkdir update.git cd update.git git init git remote add -f origin-bugssite ../bugssite.git git remote add -f origin-bugzilla ../bugzilla.git }}} * Create a .git/info/grafts file to provide artificial merge points between the two remote repositories. NOTE: Your commit hashes may be different for tagged Bugzilla versions since git-cvsimport is not an exact science. {{{ # BugsSite 3.2.3 merge has parents of & CVS tag BUGZILLA-3_2_3 4b974c2db64b5e85e72498b0c43100e2ea380a48 213407d24e23561c65916e86ae186f154b086dde # BugsSite 3.0.3 merge has parents of & CVS tag BUGZILLA-3_0_3 355650f88422025d80d5b5ca7f908d653936556e bd31477381aa6204bd5e8ed5997354ccf12b6794 # BugsSite r30048 has parents of CVS tag BUGZILLA-2_20_1 92fb2f653ac5b1b4dc9e0ec6d4a3806fe7ea1e2a ba0b747bbab5807857e66e7ff8583d27f1625fa1 }}} * Create a local git branch to track the BugsSite master branch. {{{ git branch --track master remotes/origin-bugssite/master }}} == Update == * Update CVS directory (if needed). {{{ cd bugzilla.cvs cvs -q update -d -P -A }}} * Update Git mirror of BugsSite in svn. {{{ cd bugssite.git git svn rebase }}} * Update Git mirror of Bugzilla in CVS. (Removing the cvsps cache file forces git-cvsimport to regenerate it each time.) {{{ rm -f ~/.cvsps/\:pserver\:anonymous@cvs-mirror.mozilla.org\:#cvsroot#mozilla#webtools#bugzilla git cvsimport -d ":pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot" -C bugzilla.git -k mozilla/webtools/bugzilla }}} * Update the merge repository. {{{ cd update.git git fetch origin-bugssite git fetch origin-bugzilla git checkout master git pull }}} == Merge == * Create a patch of changes to custom template files. These custom template files will need to be updated and the patch merged after the Bugzilla merge. {{{ for F in `find template/en/custom -type f | grep -v review.html.tmpl | grep -v reviewform.html.tmpl`; do git diff HEAD:`echo $F | sed -e 's#/custom/#/default/#'` HEAD:$F; done > template-changes.diff }}} * Merge the new Bugzilla. {{{ git merge --squash --no-commit BUGZILLA-3_4_1 }}} * Clean up any conflicts when the merge is done. * Copy the updated default template files over the custom template files, then reapply the patch. {{{ # TBD }}} * Test the merged Bugzilla locally. {{{ ./checksetup.pl # TBD }}} * Schedule downtime for the update. * Do the update.