FreshPorts has a CVS history that dates back to mid 2000 (and that’s just what I could find with a quick search). It started on a MySQL, which isn’t really up to the job. It quickly moved to PostgreSQL, the finest database server out there, and it just happens to be Open Source. Somewhere along the way, I’m not sure exactly where/when, I branched the repo and created FreshPorts2. I suspect branch catered for the migration to a superior database. Regardless, we’ve been on branch for a very long time.

On Sunday morning, I awoke bright and early (I was bright, outside it was still dark) and started the merge process. This process was simplified because I was not retaining the code on HEAD. In effect, I was moving code, not merging. Anything on HEAD would be replaced, not merged.

The whole process took about an hour.

The FreshPorts BETA website is now running off HEAD. I’ll do it that way for a while, then implement it in production. Getting back to HEAD will allow more convential development. For example, I can create a new feature on a branch, and then merge back to HEAD for production. Or I can create a branch, run that in production, and continue development on HEAD. Any bug fixes can go into the branch, and merged into HEAD as I go.

When I was upgrading BETA after the merge to HEAD, I found a python problem I didn’t know I had. In development, I had upgraded Python to 2.5, whereas production was Python 2.4. Attempts to start the LISTENing daemon, it failed:

ImportError: No module named psycopg

How odd. pkg_info shows it is installed: py24-psycopg-1.1.21

The solution: reinstall:

portupgrade -f py-psycopg

All fixed. Thanks to Habbie in #python for this help.

That problem was totally unrelated to the merge tasks. It was related to upgrading Python without upgrading the other Python packages.