Hi all, I've spared some time to work on the Hg migration. Below you will find: 1. the current Hg repo with short instructions how to test it 2. a status report and what needs to be done 3. a detailed report of how I got here 4. suggested next steps 5. further readings / references
All of the instruction below are for K/Ubuntu and for the command line. 1. CURRENT HG REPO to use/test it you will need to install Mercurial. Run the command `sudo apt-get install mercurial` you want to edit your ~/.hgrc file to enable some useful extensions. Run the command `pico ~/.hgrc`, add the following lines and save: [extensions] convert = hgext.hgk = download (48MB): http://photopla.net/hugin/hugin.hg.bz2 it will uncompress to about 119MB with the command `tar xvjf hugin.hg.bz2` Initially the folder contains only an invisible folder - the repository's full history. To check out the latest version (equivalent to SVN trunk at revision 5149), change into the folder and issue the command `hg co -c` If you want to check out a specific revision, the command is `hg co -c -r <REV>` where <REV> identifies the changeset and is substituted by either the revision number or, preferably, the SHA1 ID (a 12 digits string representing an hexadecimal number) identifying the changeset. Note that the revision number is sequential but it is (a) completely unrelated to the SVN revision number and (b) can change between different Hg repositories, hence it is better to use the SHA1 ID as a reference, e.g. `hg co -c -r 421ac6996432` will bring you back to Hugin 0.7.0 rc6 (which IIRC was the final 0.7.0). `hg help` is your friend. `hg log` will list you the logged changes. To know more about this command, type `hg help log`. `hg tags` lists the tags and `hg branches` lists the branches that are available in the repository. With the command `hg view` you can graphically display the whole tree. 2. STATUS REPORT The current repo is a fairly complete history of Hugin, plus branches that have not been moved to the obsolete branches folder yet. The branches give you the opportunities to try how branches behave in hg. The intention, for the actual migration, is to migrate only trunk. The heavy movies and PDF files have been filtered out (details below). Keyword replacement has not been implemented yet. The cmake build system has not been touched yet and is likely not to work exactly as intended (versioning!) 3. HOW TO REPRODUCE You will need subversion and mercurial. Run the command `sudo apt-get install subversion mercurial` You will need the following two files: * http://photopla.net/hugin/hugin_contrib.txt (maps SVN to Hg contributors) * http://photopla.net/hugin/hugin_filemap.txt (maps path to exclude/ include, particularly the movies and PDFs) Mirror locally the Hugin subversion repository with the following commands: svnadmin create hugin-mirror cd hugin-mirror echo '#!/bin/sh' > hooks/pre-revprop-change echo 'exit 0' >> hooks/pre-revprop-change chmod +x hooks/pre-revprop-change export FROMREPO=https://hugin.svn.sourceforge.net/svnroot/hugin/hugin/ export TOREPO=file://`pwd` svnsync init ${TOREPO} ${FROMREPO} svnsync --non-interactive sync ${TOREPO} If the sync is aborted, you will need to reset the lock state and restart: svn propdelete svn:sync-lock --revprop -r 0 ${TOREPO} svnsync --non-interactive sync ${TOREPO} Now that you have a local mirror, there are multiple ways to convert the SVN repository to Hg. The one that worked best so far for me is the following command: hg convert \ --branchsort \ --config convert.svn.branches=hugin/branches \ --config convert.svn.tags=hugin/tags \ --config convert.svn.trunk=hugin/trunk \ --authors hugin_contrib.txt \ --filemap hugin_filemap.txt \ --rev 5149 \ hugin-mirror it will create a folder hugin-mirror-hg, which is equivalent to the download at part 1 of this mail. 4. SUGGESTED NEXT STEPS the most important next step is to get versioning in cmake working. currently cmake appends the svn revision number to the manually set version number. ideally we'd need to substitute the SHA1 ID for the *parent* changeset. then we'd need some reports that this hg repo works, i.e. that *you* can use it, extract and build the tip out of it, make and commit changes, clone it, have local branches of your own, switch between them. some further clean ups are nice to have but optional, such as tagging newer hugin versions. since the current release cycle works separately from trunk, it has not been converted, nor have been the different release branches/tags. if the developers are comfortable with the Hg repo (I suspect we'll need at least another iteration), we can freeze SVN to read-only access and upload the Hg repo to SourceForge and make it the official Hugin repo. Then developers will start pushing changes to that repo. There is a time squeeze (GSoC coding is due to start soon and we'd like students to work with Hg) and my spare time is close to zero for the next three weeks, so either somebody can step in (I've documented everything in this mail and I am willing to help / answer questions / advance the issue in the little time I have), or we work with a less than optimal repo and clean it up as we go. 5. FURTHER READINGS / REFERENCES Versioning: http://mercurial.selenic.com/wiki/VersioningWithMake Keyword Substitution: http://mercurial.selenic.com/wiki/KeywordExtension Why not Keyword Substitution: http://mercurial.selenic.com/wiki/KeywordPlan have a good week Yuv -- You received this message because you are subscribed to the Google Groups "hugin and other free panoramic software" group. A list of frequently asked questions is available at: http://wiki.panotools.org/Hugin_FAQ To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/hugin-ptx
