When the time comes, and the FreeBSD project is using git, there will be work to be done on FreshPorts. If the commit emails are similar to those under cvs and svn, it should be straight forward to parse the email and convert it to XML.
Once the data is in XML, the commit can be loaded into FreshPorts. The commit is the basis for most other data.
I am not sure of the work process after that. I think it will be as simple as:
- git pull
- git checkout HASH
where HASH is the hash value associated with the commit in question. I’m assuming the commit hash will be in the commit email.
Processing commits in order
One longstanding FreshPorts issue (which I notice is not recorded): If commits are processed out of order, things can go wrong.
FreshPorts depends upon the email arriving in order in which the commits occurred. There is no guarantee of this. FreshPorts processes the emails in the order they arrive. It achieves this by putting each email into a queue and processing the queue in order.
This is the ideal workflow:
- FreshPorts gets a notice: Hey, there’s been a commit
- FreshPorts looks to see how many new commits there and processes each one in order
Step 1 can be as easy as querying the repo manually every minute, or a hook on the repo which taps FreshPorts.
Step 2 Might be challenging, but I am not sure. I don’t know how to say: list me all commits after X. I don’t know how to detect missed commits.
List git commits
Here is a partial list of git commits:
[dan@dev-nginx01:~/www] $ git log commit 6e21a5fd3a7eeea3ada9896b1b5657a6ba121fd8 (HEAD -> master, origin/master, origin/HEAD) Author: Dan Langille <dan@langille.org> Date: Fri Aug 23 15:24:51 2019 +0000 Simplify the deleted ports section of "This port is required by" Remove the <dl><dd><dt> stuff and keep it straight forward. Move the "Collapse this list" into the final <li> of the list. commit 11950339914066ea9298db4fbccc421a1d414108 Author: Dan Langille <dan@langille.org> Date: Fri Aug 23 15:12:29 2019 +0000 Fix display of long lists Fixes #126 While here, fix the #hidden part of the "Expand this list (N items / X hidden)" message. commit <strong>5f0c06c21cb8be3136d7562e12033d39d963d8b3</strong> Author: Dan Langille <dan@langille.org> Date: Fri Aug 23 12:59:35 2019 +0000 Improve links to validation URLS * move to https * show source on HTML link * add referer to CSS link commit 20c2f1d6619e968db56f42b6632d4ddf6a8d00bb (tag: 1.35) Author: Dan Langille <dan@langille.org> Date: Tue Aug 20 16:19:47 2019 +0000 Under 'This port is required by:' format deleted ports better Fixes #125 commit cc188d6ecde7a19c7317ca5477495e1618d70fe9 Author: Dan Langille <dan@langille.org> Date: Fri Aug 16 19:04:09 2019 +0000 Add more constants: * FRESHPORTS_LOG_CACHE_ACTIVITY - log all caching activity * PKG_MESSAGE_UCL - process pkg-message as UCL content commit 309b10946785ce4254e71b9ebbf116c98095fa53 (tag: 1.34.2) Author: Dan Langille <dan@langille.org> Date: Fri Aug 16 18:32:59 2019 +0000 Comment out some debug stuff. Remove fseek, not required. ... ...
The issue: If the last commit processed by FreshPorts is 5f0c06c21cb8be3136d7562e12033d39d963d8b3, how can I get of list of all commit since then?
Google tells me:
[dan@dev-nginx01:~/www] $ git log <strong>5f0c06c21cb8be3136d7562e12033d39d963d8b3</strong>.. commit 6e21a5fd3a7eeea3ada9896b1b5657a6ba121fd8 (HEAD -> master, origin/master, origin/HEAD) Author: Dan Langille <dan@langille.org> Date: Fri Aug 23 15:24:51 2019 +0000 Simplify the deleted ports section of "This port is required by" Remove the <dl><dd><dt> stuff and keep it straight forward. Move the "Collapse this list" into the final <li> of the list. commit 11950339914066ea9298db4fbccc421a1d414108 Author: Dan Langille <dan@langille.org> Date: Fri Aug 23 15:12:29 2019 +0000 Fix display of long lists Fixes #126 While here, fix the #hidden part of the "Expand this list (N items / X hidden)" message. [dan@dev-nginx01:~/www] $
Work is required
Regardless of when git arrives, there will be work to be done. How much work, I don’t know yet.