So, this turns out to be a lot easier than I originally thought it would be, and probably is no more difficult than svn was. This may not be the most efficient way of doing it, but it's fairly easy to understand, and it works for me.
Here are (perhaps too many) steps regarding how to do it. Start with a local macports repository cloned from the original. To do this, I created a macports-ports fork using the web gui, into my local git account. Then created a local repository on disk by cloning that into /opt/macports-ports. cd /opt sudo git clone https://github.com/YOURNAME/macports-ports.git That gives you the full history of macports-ports back in time. Then use port info PORT to find the path to your port, eg in this example case devel/libuv now examine the commit history of that path to see where you want to go back in time to: sudo git log -p pathto/port eg sudo git log -p devel/libuv you will see all the commits that touched this path. Keep scrolling until you find what you want, for example this commit looks like what I'm after here, which bumped the release to 1.9.1 -- so we'll go for that version: ------ commit 5f3cbc9c2d9c6c8cb84e708a4ae6057ccc244608 Author: Michael Dickens <michae...@macports.org> Date: Thu Sep 1 12:08:28 2016 +0000 libuv: + add me as comaintainer, but still openmaintainer; + move to using github portgroup; + bump release to 1.9.1; etc ------- Copy that commit hash. now quit git log, and then make a new branch with that commit as the marker in time, for example: sudo git checkout -b libuv-191 5f3cbc9c2d9c6c8cb84e708a4ae6057ccc244608 you will automatically be on the new branch now. Go to the folder you're interested in and take a look: cd ./devel/libuv cat Portfile ----- --- -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 # $Id$ PortSystem 1.0 PortGroup github 1.0 name libuv categories devel platforms darwin maintainers raimue michaelld openmaintainer license {MIT BSD} description Cross-platform asychronous I/O long_description \ libuv is a multi-platform support library with a focus on asynchronous I/O. # common directory for storing downloaded tarballs dist_subdir libuv if {${subport} eq ${name}} { github.setup libuv libuv 1.9.1 v etc ------- yep - that's it. if there were any files in the files directory, you'd have those at that point in time too. move out of the port directory, and copy those into a local repo (like this one /opt/peggedports that I use for this): cd .. sudo cp -R ./libuv /opt/peggedports/devel/libuv move back up to the top level cd .. switch to the master branch sudo git checkout master list your branches sudo git branch --list and delete the temporary back-in-time branch you no longer need, in this case sudo git branch -D libuv-191 and you're done. Hope this helps someone. Ken