Maintaining local ports

What's the current preferred method for this? I'm in an environment where various ports trees (quarterly and current) are periodically updated (via svn, via poudriere).

It's been a long time since I attempted this and I think enough things have changed in the ports system that most of what I remember is no longer useful.

Some basic goals:

- Be able to arbitrarily update the ports tree without clobbering any local port(s).
- Be able to arbitrarily update the local port(s) without clobbering the "actual" ports

For local ports, I'm only really looking at modifying some existing ports, so that means that I'm not diverging too far, just altering the Makefile, the files directory and checksums.

Anyone currently doing something like this?
Anyone currently doing something like this?
I've started doing this a month ago using the Git mirror of the ports tree at to add support for OpenBSD's sndio to various ports ( This involves adding a new SNDIO option to the ports (3-5 additional lines per Makefile) and a bunch of extra patches.

My changes live in their own branch and I can easily pull in new changes from the ports tree. So far Git was always able to automatically merge everything and I haven't gotten any conflicts.
I use svn(1) to update the ports tree.
I use rsync(1) to overlay my local ports into the ports tree, just prior to compilation.
This allows me to update the ports over svn only OR make changes to my local ports, or both of course.
Crude but simple.