aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Mingrone <jrm@FreeBSD.org>2025-09-22 18:18:20 +0000
committerJoseph Mingrone <jrm@FreeBSD.org>2025-10-02 16:47:26 +0000
commite57d72a7f35c3fc80dc9ac744056b2354b1be741 (patch)
tree63af38d0681eebef29164685cf764a9155a0b61e
parent54b24b9da8be70192b7baaeae8fc26fda6581222 (diff)
mfc-candidates: Improve branch detection and repository handling
- Use git to detect the latest stable branch rather than hardcoding it. - Handle the case where the script is run outside a src or ports repository. - Fix a pattern to match .git instead of *git. Reviewed by: andrew, releng (emaste) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D52681
-rwxr-xr-xtools/tools/git/mfc-candidates.lua15
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/tools/git/mfc-candidates.lua b/tools/tools/git/mfc-candidates.lua
index d2865a892971..a1420dc726da 100755
--- a/tools/tools/git/mfc-candidates.lua
+++ b/tools/tools/git/mfc-candidates.lua
@@ -129,16 +129,18 @@ local function main()
local author = os.getenv("USER") or ""
local dirspec = nil
- local url = exec_command("git remote get-url freebsd")
- local freebsd_repo = string.match(url, "[^/]+$")
- freebsd_repo = string.gsub(freebsd_repo, ".git$", "")
+ local url = exec_command("git remote get-url freebsd 2>/dev/null")
+ local freebsd_repo
+ if url and url ~= "" then
+ freebsd_repo = string.match(url, "[^/]+$")
+ freebsd_repo = string.gsub(freebsd_repo, "%.git$", "")
+ end
if freebsd_repo == "ports" or freebsd_repo == "freebsd-ports" then
local year = os.date("%Y")
local month = os.date("%m")
local qtr = math.ceil(month / 3)
to_branch = "freebsd/" .. year .. "Q" .. qtr
elseif freebsd_repo == "src" or freebsd_repo == "freebsd-src" then
- to_branch = "freebsd/stable/14"
-- If pwd is a stable or release branch tree, default to it.
local cur_branch = exec_command("git symbolic-ref --short HEAD")
if string.match(cur_branch, "^stable/") then
@@ -147,6 +149,11 @@ local function main()
to_branch = cur_branch
local major = string.match(cur_branch, "%d+")
from_branch = "freebsd/stable/" .. major
+ else
+ -- Use latest stable branch.
+ to_branch = exec_command("git for-each-ref --sort=-v:refname " ..
+ "--format='%(refname:lstrip=2)' " ..
+ "refs/remotes/freebsd/stable/* --count=1")
end
else
print("pwd is not under a ports or src repository.")