diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm
index 6c4c56f34dc..ef51776ec84 100644
--- a/code/controllers/subsystems/ticker.dm
+++ b/code/controllers/subsystems/ticker.dm
@@ -421,7 +421,7 @@ SUBSYSTEM_DEF(ticker)
to_world(SPAN_VOTE(SPAN_BOLD("Tip of the round:") + " [html_encode(message)]"))
/datum/controller/subsystem/ticker/proc/print_testmerges()
- var/data = GLOB.revdata.GetTestMergeInfo()
+ var/data = GLOB.revdata.testmerge_overview()
if (data)
to_world(data)
diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm
index 419ebae180c..93bc0d39443 100644
--- a/code/datums/helper_datums/getrev.dm
+++ b/code/datums/helper_datums/getrev.dm
@@ -1,85 +1,130 @@
-GLOBAL_DATUM_INIT(revdata, /datum/getrev, new)
+GLOBAL_DATUM_INIT(revdata, /datum/getrev, new())
+
+/hook/startup/proc/initialize_test_merges()
+ if (!GLOB.revdata)
+ LOG_DEBUG("GETREV: No rev found.")
+ return TRUE
+
+ GLOB.revdata.testmerge_initialize()
+
+ return TRUE
/datum/getrev
- var/commit
+ var/branch
+ var/revision
var/date
- var/originmastercommit
- var/list/testmerge = list()
+ var/showinfo
+ var/list/datum/tgs_revision_information/test_merge/test_merges
+ var/greeting_info
/datum/getrev/New()
- commit = rustg_git_revparse("HEAD")
- if (commit)
- date = rustg_git_commit_date(commit)
- originmastercommit = rustg_git_revparse("origin/master")
+ var/list/head_branch = file2list(".git/HEAD", "\n")
+ if(head_branch.len)
+ branch = copytext(head_branch[1], 17)
-/datum/getrev/proc/load_tgs_info()
- testmerge = world.TgsTestMerges()
- var/datum/tgs_revision_information/revinfo = world.TgsRevision()
- if (revinfo)
- commit = revinfo.commit
- date = revinfo.timestamp || rustg_git_commit_date(commit)
- originmastercommit = revinfo.origin_commit
+ var/list/head_log = file2list(".git/logs/HEAD", "\n")
+ for(var/line=head_log.len, line>=1, line--)
+ if(head_log[line])
+ var/list/last_entry = text2list(head_log[line], " ")
+ if(last_entry.len < 2) continue
+ revision = last_entry[2]
+ // Get date/time
+ if(last_entry.len >= 5)
+ var/unix_time = text2num(last_entry[5])
+ if(unix_time)
+ date = unix2date(unix_time)
+ break
- // Goes to DD log and config_error.txt
- log_world(get_log_message())
-
-/datum/getrev/proc/get_log_message()
- var/list/msg = list()
- msg += "Server Revision Information: [date]"
- if (originmastercommit)
- msg += " (origin/master: [originmastercommit])"
-
- for(var/line in testmerge)
- var/datum/tgs_revision_information/test_merge/tm = line
- msg += "Test merge active of PR #[tm.number] commit [tm.head_commit]"
-
- if (commit && commit != originmastercommit)
- msg += "HEAD: [commit]"
- else if (!originmastercommit)
- msg += "No commit information available."
-
- return msg.Join("\n")
-
-/datum/getrev/proc/GetTestMergeInfo(header = TRUE)
- if (!length(testmerge))
- return ""
- . = header ? "The following PRs are currently test-merged on the server:
" : ""
- for (var/line in testmerge)
- var/datum/tgs_revision_information/test_merge/tm = line
- var/cm = tm.head_commit
- var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11))
- . += "#[tm.number][details]
"
+ world.log << "Running revision:"
+ world.log << branch
+ world.log << date
+ world.log << revision
/client/verb/showrevinfo()
set category = "OOC"
set name = "Show Server Revision"
set desc = "Check the current server code revision"
- var/list/msg = list()
- // BYOND info
- msg += "BYOND Version: [world.byond_version].[world.byond_build]"
- if(DM_VERSION != world.byond_version || DM_BUILD != world.byond_build)
- msg += "Compiled with BYOND Version: [DM_VERSION].[DM_BUILD]"
-
- // Rev info
- var/datum/getrev/revdata = GLOB.revdata
- msg += "
Server Revision Info:"
- msg += "Server revision compiled on: [revdata.date]"
- var/pc = revdata.originmastercommit
- if(pc)
- msg += "Master commit: [pc]"
- if(length(revdata.testmerge))
- msg += revdata.GetTestMergeInfo()
- if(revdata.commit && revdata.commit != revdata.originmastercommit)
- msg += "Local commit: [revdata.commit]"
- else if(!pc)
- msg += SPAN_ALERT("No commit information available!")
- if(world.TgsAvailable())
- var/datum/tgs_version/version = world.TgsVersion()
- msg += "TGS version: [version.raw_parameter]"
- var/datum/tgs_version/api_version = world.TgsApiVersion()
- msg += "DMAPI version: [api_version.raw_parameter]"
+ if(GLOB.revdata.revision)
+ to_chat(src, "Server revision: [GLOB.revdata.branch] - [GLOB.revdata.date]")
+ if(GLOB.config.githuburl)
+ to_chat(src, "[GLOB.revdata.revision]")
+ else
+ to_chat(src, GLOB.revdata.revision)
else
- msg += SPAN_ALERT("TGS API not available!")
+ to_chat(src, "Revision unknown")
- to_chat(src, SPAN_INFO(msg.Join("
")))
+ to_chat(src, "Current Map: [SSatlas.current_map.full_name]")
+
+/datum/getrev/proc/testmerge_overview()
+ if (!test_merges.len)
+ return
+
+ var/list/out = list("
There are currently [test_merges.len] PRs being tested live.
", + {"PR #[tm.number]: \"[html_encode(tm.title)]\""
+ . += "
\tAuthor: [html_encode(tm.author)]"
+
+ if (GLOB.config.githuburl)
+ . += "
\t\[Details...\]"
+
+ . += "
| Author: | [html_encode(tm.author)] |
|---|---|
| Link to GitHub | |
| Description: | [html_encode(tm.body)] |
| Comment: | [html_encode(tm.comment)] |