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

Reply via email to