From a5e8d632f443c6a882dcabc669236dc4798b1fd7 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Wed, 25 Mar 2009 17:25:06 -0700 Subject: Add the kernel tree's git revision to the hash To better support kernel developers who work out of a single source tree, this adds the git HEAD revision to our caching hash. --- util.cxx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'util.cxx') diff --git a/util.cxx b/util.cxx index 7d191cd2..68cc27f7 100644 --- a/util.cxx +++ b/util.cxx @@ -248,4 +248,31 @@ const string cmdstr_quoted(const string& cmd) return quoted_cmd; } + +string +git_revision(const string& path) +{ + string revision = "(not-a-git-repository)"; + string git_dir = path + "/.git/"; + + struct stat st; + if (stat(git_dir.c_str(), &st) == 0) + { + string command = "git --git-dir=\"" + git_dir + + "\" rev-parse HEAD 2>/dev/null"; + + char buf[50]; + FILE *fp = popen(command.c_str(), "r"); + if (fp != NULL) + { + char *bufp = fgets(buf, sizeof(buf), fp); + int rc = pclose(fp); + if (bufp != NULL && rc == 0) + revision = buf; + } + } + + return revision; +} + /* vim: set sw=2 ts=8 cino=>4,n-2,{2,^-2,t0,(0,u0,w1,M1 : */ -- cgit