diff --git a/core/engine.cpp b/core/engine.cpp index 5301c4e519f..42850325b4b 100644 --- a/core/engine.cpp +++ b/core/engine.cpp @@ -30,6 +30,7 @@ #include "engine.h" #include "version.h" +#include "version_hash.gen.h" void Engine::set_iterations_per_second(int p_ips) { @@ -87,6 +88,9 @@ Dictionary Engine::get_version_info() const { dict["revision"] = _MKSTR(VERSION_REVISION); dict["year"] = VERSION_YEAR; + String hash = String(VERSION_HASH); + dict["hash"] = hash.length() == 0 ? String("unknown") : hash; + String stringver = String(dict["major"]) + "." + String(dict["minor"]); if ((int)dict["patch"] != 0) stringver += "." + String(dict["patch"]); diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index a3d3d42110f..e3f22c833e9 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -49,6 +49,7 @@ #include "scene/gui/texture_rect.h" #include "scene/gui/tool_button.h" #include "version.h" +#include "version_hash.gen.h" class NewProjectDialog : public ConfirmationDialog { @@ -1244,7 +1245,10 @@ ProjectManager::ProjectManager() { top_hb->add_child(ccl); top_hb->add_spacer(); l = memnew(Label); - l->set_text("v" VERSION_MKSTRING); + String hash = String(VERSION_HASH); + if (hash.length() != 0) + hash = "." + hash.left(7); + l->set_text("v" VERSION_MKSTRING "" + hash); //l->add_font_override("font",get_font("bold","Fonts")); l->set_align(Label::ALIGN_CENTER); top_hb->add_child(l); diff --git a/methods.py b/methods.py index 4d3d5ae3432..abd87c07d74 100644 --- a/methods.py +++ b/methods.py @@ -1176,6 +1176,20 @@ def update_version(): f.write("#define VERSION_STATUS " + str(version.status) + "\n") import datetime f.write("#define VERSION_YEAR " + str(datetime.datetime.now().year) + "\n") + f.close() + + fhash = open("core/version_hash.gen.h", "wb") + githash = "" + if os.path.isfile(".git/HEAD"): + head = open(".git/HEAD", "rb").readline().strip() + if head.startswith("ref: "): + head = ".git/" + head[5:] + if os.path.isfile(head): + githash = open(head, "rb").readline().strip() + else: + githash = head + fhash.write("#define VERSION_HASH \"" + githash + "\"") + fhash.close() def parse_cg_file(fname, uniforms, sizes, conditionals):