Hg migration champion team
We are testing with the help of champion team on the following testing configurations.
Charter of the team
Be the first ones who will get in touch with the Mercurial repositories on hg.netbeans.org and help the migration team in making sure that the repositories are ready for the switch and that the processes work as expected (access to the repositories, repository contents, building the product from the main repository, and other). Become their team's experts in Mercurial versioning system, helping their teams go smoothly through the transition from cvs.netbeans.org to hg.netbeans.org.
First tasks for the team (preparation)
Tasks in this first list are planned for the time before Jan/04/2008.
(0) check if your team has a P1 issue assigned about too long file paths and fix immediately - see the list of issues linked from the umbrella #122540.
(1) get familiar with Mercurial - read through the documentation linked from the section Starting with Hg and read most of the online book linked from there.
(2) create a local clone of the current main trunk snapshot:
hg clone http://hg.netbeans.org/main nb_all
Note 1: the repositories on hg.netbeans.org consist of a snapshot of the main trunk of cvs.netbeans.org at some point in time; the migration team will be replacing the contents of the Hg repositories several times before the final switch happens; the champions team will be notified about such change via mail.
Note 2: The Mercurial repositories now include a limited form of history imported from CVS. (And even a bit from StarTeam, for NetBeans old-timers!) History (prior to the last trunk revision) is only available for text files which existed in the trunk as of the import date (no deleted or renamed files); only trunk revisions are imported (no CVS branches). You can see some recent changesets by typing e.g.
hg log -l20
Remember that if you generate a patch from an imported changeset, it might be missing information about file deletions, renames, and/or changes to binary files, so if these things are important be sure to cross-check against the CVS repository. But the imported history should suffice for everyday browsing, e.g. using hg annotate.
Note 3: feel free to clone also the contrib repository and have a look at the projects there. This repository should be buildable if it is placed as a subdirectory named contrib of the main repository, so:
hg clone http://hg.netbeans.org/main nb_all cd nb_all hg clone http://hg.netbeans.org/main/contrib ant -f nbbuild/build.xml init all-contrib/core.registry
(3) have a look at the structure of the repository and give any feedback you might have to nb-hg-champions list
(4) perform a local build, should be successful
cd nbbuild ant
Note: you have to use JDK 5 to build. See the section "Do not use JDK 6 to build!" in the current instructions for WorkingWithNetBeansSources, and check also the instructions under "Machine config" on that page.)
(5) play with the Mercurial plugin in NetBeans IDE (either 6.0 or latest trunk build) and write any feedback on missing functionality or encountered problems in HgMigrationPluginEvaluation; the feedback will be discussed with the Mercurial plugin team for possible improvements in 6.1. Note that there have been several critical bug fixes in the trunk versions of this module, so the 6.0 version may not work well at all. Also note that bugfixes in this module are not routinely pushed to AU by incrementing module specification version, so if you want to be sure you are using the most recent version, you need to either build from source; or uninstall and reinstall fresh from dev AU.
Subsequent tasks for the team (wider testing)
We are testing on the following configurations.
Testing scenarios for the "Wider Testing" week of Jan/07-11/2008.
(Scenario 1) non-conflicting changes in my area
- creating a local change
- committing it to my local clone
- pushing to the central repository
- watching the continuous build for changes to appear
(Scenario 2) changes on a separate development in a different clone
- creating a second local clone
- doing separate development there
- committing several changesets
- pushing them all back to the first clone
- pushing all changes to the central repository at once
(Scenario 3) collaboration on conflicting changes
- creating conflicting changes in different clones of the main repository
- pushing one change to the central repository
- trying to push the other conflicting change to the central repository
- resolving the conflict locally by merging
- pushing the merged change to the central repository
(Scenario 4) breaking and fixing a build
- breaking build by committing a change to the central repository
- waiting for a broken continuous build from hudson (http://konik-z2.czech.sun.com:8080/hudson/job/NB-CB) and its notification mail
- fixing the build immediately
- waiting for a successful build and its notification email
(Scenario 5) adding a new binary file - automatic upload to the storage of binaries
- see HgExternalBinaries for explanation of the mechanism
(Scenario 6) working with a release "branch" (special repository on the server)
- cloning the release repo without doing a full network clone,
starting with a local clone of the main repo:
hg clone -r release61_base -U main release61 # edit release61/.hg/hgrc to specify remote release61 repo as default hg -R release61 pull -u
- transplanting a patch from main to release61:
cd release61 hg transplant -s ../main 12345 hg push
(Scenario 7) using local incoming and outgoing trees
- as described in the Mercurial FAQ
(Scenario 8) working with the golden repository
- can be cloned, or you can simply pull from it whenever you like:
echo '[Paths]' >> .hg/hgrc echo 'golden = http://hg.netbeans.org/main-golden/' >> .hg/hgrc hg pull -u golden