Extracting Branch and Revision from Git.
authorAlina <agrigora@cern.ch>
Thu, 5 Dec 2013 09:07:51 +0000 (10:07 +0100)
committerAlina <agrigora@cern.ch>
Thu, 5 Dec 2013 09:14:01 +0000 (10:14 +0100)
 - ALIROOT_SVN_BRANCH -> ALIROOT_BRANCH
 - ALIROOT_SVN_REVISION -> ALIROOT_REVISION !Attention! In Git revision is a string
 - adding CMake git module -> with 1.9 it will be distributed with the oficial version

Adding .gitignore file to ignore the installation directories.

21 files changed:
.gitignore [new file with mode: 0644]
ALIROOT/aliroot.cxx
CMakeLists.txt
GRP/MakeCosmicTriggersEntry.C
GRP/UpdateCDBIdealGeom.C
GRP/UpdateCDBVertexDiamond.C
HLT/global/AliHLTGlobalPreprocessor.cxx
MUON/UpdateCDBCTPConfig.C
STEER/ARVersion.h.in
STEER/CDB/AliDCSGenDB.cxx
STEER/STEER/AliReconstruction.cxx
TPC/Base/AliTPCPreprocessor.cxx
cmake/ARVersion.h.tmp
cmake/GetGitRevisionDescription.cmake [new file with mode: 0644]
cmake/GetGitRevisionDescription.cmake.in [new file with mode: 0644]
macros/DiffGeomBeforeTagging.C
macros/MakeAlignmentObjs.C
macros/MakeAllDETsFullMisAlignment.C
macros/MakeAllDETsResMisAlignment.C
macros/MakeAllDETsZeroMisAlignment.C
test/continuous-build.cmake

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..011221d
--- /dev/null
@@ -0,0 +1,5 @@
+/bin
+/lib
+/include
+/tmp
+
index 5ec45de..4576603 100644 (file)
@@ -81,7 +81,7 @@ int main(int argc, char **argv)
     
     if (argument=="--version")
     {      
-      cout << "aliroot " << ALIROOT_SVN_REVISION << " " << ALIROOT_SVN_BRANCH << endl;
+      cout << "aliroot " << ALIROOT_REVISION << " " << ALIROOT_BRANCH << endl;
       return 0;
     }    
   }
index c3e3ef4..45182fc 100644 (file)
@@ -175,47 +175,29 @@ set(LIBS ${ROOTCLIBS} ${ROOTPLIBS} ${SYSLIBS})
 
 # Configure ARVerion.h
 # ------------------------------
-if(Subversion_FOUND)
-  if(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
-  Subversion_WC_INFO(${PROJECT_SOURCE_DIR} PROJECT)
-  set(ALIROOT_SVN_REVISION ${PROJECT_WC_REVISION})
-  set(ALIROOT_SVN_BRANCH ${PROJECT_WC_URL})
-  string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${ALIROOT_SVN_BRANCH})
-
-  elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git/ )
-    if(EXISTS ${PROJECT_SOURCE_DIR}/.git/svn/refs )
-    execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git svn info OUTPUT_VARIABLE OUTPUTVAR)
-    string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
-    foreach(f ${OUTPUTVAR})
-      if(${f} MATCHES URL)
-       string(REGEX MATCH "[^/]+$" ALIROOT_SVN_BRANCH ${f})
-      elseif(${f} MATCHES Revision)
-       string(REGEX MATCH "[^: ]+$" ALIROOT_SVN_REVISION ${f})
-      endif(${f} MATCHES URL)   
-    endforeach()
-    else()
-      execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND git log -1 OUTPUT_VARIABLE OUTPUTVAR)
-      string(REPLACE "\n" ";" OUTPUTVAR ${OUTPUTVAR})
-      foreach(f ${OUTPUTVAR})
-        if(${f} MATCHES "^[ ]*git-svn-id:")
-          string(REGEX REPLACE "^.*/(.*)[@].*$" "\\1" ALIROOT_SVN_BRANCH "${f}" )
-          string(REGEX REPLACE "^.*/.*[@](.*) .*$" "\\1" ALIROOT_SVN_REVISION "${f}" )
-        endif(${f} MATCHES "^[ ]*git-svn-id:")
-      endforeach()
-      if(${ALIROOT_SVN_BRANCH}x STREQUAL "x")
-        set(ALIROOT_SVN_BRANCH "git clone")
-        set(ALIROOT_SVN_REVISION "-1")
-      endif(${ALIROOT_SVN_BRANCH}x STREQUAL "x")
-    endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/svn/refs )
-  endif(EXISTS ${PROJECT_SOURCE_DIR}/.svn/ )
-
-  message(STATUS "Aliroot Revision - ${ALIROOT_SVN_REVISION} Branch - ${ALIROOT_SVN_BRANCH}")
-  if(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
-    file(REMOVE ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
-  endif(EXISTS ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h)
-  configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
-endif(Subversion_FOUND)
-string (REPLACE "-" "." ALIROOT_SVN_BRANCH_SPEC "${ALIROOT_SVN_BRANCH}")
+#If the sources were taken from Git
+if(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
+ include(GetGitRevisionDescription)
+ find_package(Git)
+ if(GIT_FOUND)
+  get_git_head_revision(GIT_REFSPEC GIT_SHA1)
+  message(STATUS "Aliroot Revision - ${GIT_SHA1} Branch - ${GIT_REFSPEC}")
+
+  STRING(REGEX REPLACE "^(.+/)(.+/)(.*)$" "\\3" SHORT_BRANCH "${GIT_REFSPEC}" )
+
+  set(ALIROOT_REVISION ${GIT_SHA1})
+  set(ALIROOT_BRANCH ${SHORT_BRANCH})
+
+ else()
+  message("Git not installed. I can't tell you which revision you are using!")
+  endif(GIT_FOUND)
+else()
+ message("AliRoot sources not downloaded from a Version Control System. I can't tell which revision you are using!")
+endif(EXISTS ${PROJECT_SOURCE_DIR}/.git/)
+
+configure_file(${PROJECT_SOURCE_DIR}/cmake/ARVersion.h.tmp ${CMAKE_INCLUDE_EXPORT_DIRECTORY}/ARVersion.h @ONLY)
+
+string (REPLACE "-" "." ALIROOT_BRANCH_SPEC "${ALIROOT_BRANCH}")
 
 #--------------------------------------------------------------------------------#
 # Build Modules                                                                  #
@@ -396,8 +378,8 @@ COMMAND @echo '\# make alimdc-rpm' >> ${ALIMDCSPECFILE}
 COMMAND @echo "" >> ${ALIMDCSPECFILE}
 COMMAND @echo "Summary: AliMDC static libraries" >> ${ALIMDCSPECFILE}
 COMMAND @echo "Name: alimdc" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Version:  ${ALIROOT_SVN_BRANCH_SPEC}" >> ${ALIMDCSPECFILE}
-COMMAND @echo "Release: ${ALIROOT_SVN_REVISION}" >> ${ALIMDCSPECFILE}
+COMMAND @echo "Version:  ${ALIROOT_BRANCH_SPEC}" >> ${ALIMDCSPECFILE}
+COMMAND @echo "Release: ${ALIROOT_REVISION}" >> ${ALIMDCSPECFILE}
 COMMAND @echo '\# Copyright: CERN Alice Off-line' >> ${ALIMDCSPECFILE}
 COMMAND @echo "License: CERN Alice Off-line" >> ${ALIMDCSPECFILE}
 COMMAND @echo "Vendor: ALICE Core Off-line Group" >> ${ALIMDCSPECFILE}
index 1e83b66..3917ae1 100644 (file)
@@ -69,8 +69,8 @@ Bool_t MakeCosmicTriggersEntry(const char *fileName, const char* cdbUri)
   md->SetComment("List of the defined cosmic triggers. It is used in order to steer the reconstruction, namely in the selection of the proper event specie. It is maintained and updated by the trigger coordinator.");
   // Get root and AliRoot versions and set them in the metadata
   const char* rootv = gROOT->GetVersion();
-  TString av(ALIROOT_SVN_BRANCH);
-  Int_t revnum = ALIROOT_SVN_REVISION;
+  TString av(ALIROOT_BRANCH);
+  TString revnum(ALIROOT_REVISION);
   av+=" - revision: ";
   av+=revnum;
   md->SetAliRootVersion(av.Data());
index 1c38cbb..2a22b2d 100644 (file)
@@ -37,13 +37,13 @@ void UpdateCDBIdealGeom(const char* cdbUri, const char* cfgFile){
 
        // Get root and AliRoot versions
        const char* rootv = gROOT->GetVersion();
-       TString av(ALIROOT_SVN_BRANCH);
-       Int_t revnum = ALIROOT_SVN_REVISION;
+       TString av(ALIROOT_BRANCH);
+       TString revnum(ALIROOT_REVISION);
 
-       Printf("root version: %s.  AliRoot %s, revision number %d",rootv,av.Data(),revnum);
+       Printf("root version: %s.  AliRoot %s, revision number %s",rootv,av.Data(),revnum);
 
        md->SetAliRootVersion(av.Data());
-       md->SetComment(Form("Geometry produced with root version %s and AliRoot %s, revision number %d",rootv,av.Data(),revnum));
+       md->SetComment(Form("Geometry produced with root version %s and AliRoot %s, revision number %s",rootv,av.Data(),revnum));
        md->AddDateToComment();
 
        //gSystem->Exec("if [ -e geometry.root ]; then \necho deleting existing geometry.root \nrm -rf geometry.root \nfi");
index 8d2559e..c34acd0 100644 (file)
@@ -40,17 +40,17 @@ void UpdateCDBVertexDiamond(const char* objName, Double_t xmed, Double_t ymed, D
 
   // Get root and AliRoot versions
   const char* rootv = gROOT->GetVersion();
-  TString av(ALIROOT_SVN_BRANCH);
-  Int_t revnum = ALIROOT_SVN_REVISION;
+  TString av(ALIROOT_BRANCH);
+  TString revnum(ALIROOT_REVISION);
 
   metadata->SetResponsible("prino@to.infn.it");
   metadata->SetComment("Default mean vertex position");
   metadata->SetAliRootVersion(av.Data());
-  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %d",rootv,av.Data(),revnum));
+  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %s",rootv,av.Data(),revnum));
   
 
   Printf(Form("Storing in CDB the default mean vertex produced with root version %s and"
-                         "AliRoot version %s, revision number %d", rootv, av.Data(), revnum));
+                         "AliRoot version %s, revision number %s", rootv, av.Data(), revnum));
 
   Double_t sigma[3],position[3];
   position[0]=xmed;
@@ -82,17 +82,17 @@ void UpdateCDBVertexDiamondOld(Double_t xmed = 0., Double_t ymed = 0., Double_t
 
   // Get root and AliRoot versions
   const char* rootv = gROOT->GetVersion();
-  TString av(ALIROOT_SVN_BRANCH);
-  Int_t revnum = ALIROOT_SVN_REVISION;
+  TString av(ALIROOT_BRANCH);
+  TString revnum(ALIROOT_REVISION);
 
   metadata->SetResponsible("prino@to.infn.it");
   metadata->SetComment("Default mean vertex position");
   metadata->SetAliRootVersion(av.Data());
-  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %d",rootv,av.Data(),revnum));
+  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %s",rootv,av.Data(),revnum));
   
 
   Printf(Form("Storing in CDB the default mean vertex produced with root version %s and"
-                         "AliRoot version %s, revision number %d", rootv, av.Data(), revnum));
+                         "AliRoot version %s, revision number %s", rootv, av.Data(), revnum));
 
   Double_t resolx=5./10000.; // this is error on the weighted mean (5 micron) 
   Double_t resoly=5./10000.; // this is error on the weighted mean (5 micron)
index 6081d6d..4d00a7f 100644 (file)
@@ -166,7 +166,7 @@ Int_t AliHLTGlobalPreprocessor::ProcessStreamerInfo() {
                        metaData->SetBeamPeriod(0);
                        metaData->SetResponsible("ALICE HLT alice-hlt-core@cern.ch");
                        metaData->SetComment("Streamer info for HLTOUT payload");
-                       //metaData->SetAliRootVersion(ALIROOT_SVN_BRANCH);
+                       //metaData->SetAliRootVersion(ALIROOT_BRANCH);
                } else {
                        return -ENOMEM;
                }
index 91b3522..a6030f9 100644 (file)
@@ -116,13 +116,13 @@ void UpdateCDBCTPConfig(Bool_t check = false) {
 
   // ROOT and AliRoot versions
   const char* rootv = gROOT->GetVersion();
-  TString av(ALIROOT_SVN_BRANCH);
-  Int_t revnum = ALIROOT_SVN_REVISION;
+  TString av(ALIROOT_BRANCH);
+  TString revnum(ALIROOT_REVISION);
 
-  Printf("root version: %s.  AliRoot %s, revision number %d",rootv,av.Data(),revnum);
+  Printf("root version: %s.  AliRoot %s, revision number %s",rootv,av.Data(),revnum);
 
   md->SetAliRootVersion(av.Data());
-  md->SetComment(Form("Default CTP configuration for MUON mode produced with root version %s and AliRoot version %s revision %d ",rootv,av.Data(),revnum));
+  md->SetComment(Form("Default CTP configuration for MUON mode produced with root version %s and AliRoot version %s revision %s ",rootv,av.Data(),revnum));
 
   AliCDBStorage* storage = cdb->GetStorage("local://$ALICE_ROOT/OCDB");
   storage->Put(trconfig,id,md);
index 4d628fa..266ee38 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef ALIROOT_ARVersion
 #define ALIROOT_ARVersion
-#define ALIROOT_SVN_REVISION @ALIROOT_SVN_REVISION@
-#define ALIROOT_SVN_BRANCH "@ALIROOT_SVN_BRANCH@"
+#define ALIROOT_REVISION @ALIROOT_REVISION@
+#define ALIROOT_BRANCH "@ALIROOT_BRANCH@"
 #define ALIROOT_VERSION @ALIROOT_VERSION@
 #endif
index 7f9219b..3b2f572 100644 (file)
@@ -171,7 +171,7 @@ AliCDBMetaData* AliDCSGenDB::CreateMetaObject(const char* objectClassName)
   md1->SetObjectClassName(objectClassName);
   md1->SetResponsible("Haavard Helstrup");
   md1->SetBeamPeriod(kBeamPeriod);
-  md1->SetAliRootVersion(ALIROOT_SVN_BRANCH);
+  md1->SetAliRootVersion(ALIROOT_BRANCH);
 
   return md1;
 }
index 2e4bfe1..cf83ee8 100644 (file)
@@ -2503,9 +2503,9 @@ void AliReconstruction::SlaveTerminate()
 
    // Add the AliRoot version that created this file
    TString sVersion("aliroot ");
-   sVersion += ALIROOT_SVN_BRANCH;
+   sVersion += ALIROOT_BRANCH;
    sVersion += ":";
-   sVersion += ALIROOT_SVN_REVISION;
+   sVersion += ALIROOT_REVISION;
    sVersion += "; root ";
 #ifdef ROOT_SVN_BRANCH
    sVersion += ROOT_SVN_BRANCH;
index 501ed83..9e87390 100644 (file)
@@ -481,7 +481,7 @@ UInt_t AliTPCPreprocessor::Process(TMap* dcsAliasMap)
   AliCDBMetaData metaData;
   metaData.SetBeamPeriod(0);
   metaData.SetResponsible("Haavard Helstrup");
-  metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+  metaData.SetAliRootVersion(ALIROOT_BRANCH);
   metaData.SetComment("Preprocessor AliTPC status.");
   Bool_t storeOK = Store("Calib", "PreprocStatus", resultArray, &metaData, 0,  kFALSE);
   if (!storeOK) Log ("Unable to store preprocessor status entry");
@@ -521,7 +521,7 @@ UInt_t AliTPCPreprocessor::MapTemperature(TMap* dcsAliasMap)
         AliCDBMetaData metaData;
        metaData.SetBeamPeriod(0);
        metaData.SetResponsible("Haavard Helstrup");
-       metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+       metaData.SetAliRootVersion(ALIROOT_BRANCH);
        metaData.SetComment("Preprocessor AliTPC data base entries.");
 
        Bool_t storeOK = Store("Calib", "Temperature", fTemp, &metaData, 0, kFALSE);
@@ -599,7 +599,7 @@ UInt_t AliTPCPreprocessor::MapHighVoltage(TMap* dcsAliasMap)
         AliCDBMetaData metaData;
        metaData.SetBeamPeriod(0);
        metaData.SetResponsible("Haavard Helstrup");
-       metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+       metaData.SetAliRootVersion(ALIROOT_BRANCH);
        metaData.SetComment("Preprocessor AliTPC data base entries.");
 
        Bool_t storeOK = Store("Calib", "HighVoltage", fHighVoltage, &metaData, 0, kFALSE);
@@ -635,7 +635,7 @@ UInt_t AliTPCPreprocessor::MapGoofie(TMap* dcsAliasMap)
         AliCDBMetaData metaData;
        metaData.SetBeamPeriod(0);
        metaData.SetResponsible("Haavard Helstrup");
-        metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+        metaData.SetAliRootVersion(ALIROOT_BRANCH);
        metaData.SetComment("Preprocessor AliTPC data base entries.");
 
        Bool_t storeOK = Store("Calib", "Goofie", fGoofie, &metaData, 0, kFALSE);
@@ -806,7 +806,7 @@ UInt_t AliTPCPreprocessor::ExtractPedestals(Int_t sourceFXS)
      AliCDBMetaData metaData;
      metaData.SetBeamPeriod(0);
      metaData.SetResponsible("Haavard Helstrup");
-     metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+     metaData.SetAliRootVersion(ALIROOT_BRANCH);
      metaData.SetComment("Preprocessor AliTPC data base entries."); 
  
      Bool_t storeOK = Store("Calib", "Pedestals", calPadPed, &metaData, 0, kTRUE);
@@ -989,7 +989,7 @@ if (pulserObjectsOCDB) {
      AliCDBMetaData metaData;
      metaData.SetBeamPeriod(0);
      metaData.SetResponsible("Haavard Helstrup");
-     metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+     metaData.SetAliRootVersion(ALIROOT_BRANCH);
      metaData.SetComment("Preprocessor AliTPC data base entries.");
 
      Bool_t storeOK = Store("Calib", "Pulser", pulserObjects, &metaData, 0, kTRUE);
@@ -1055,7 +1055,7 @@ UInt_t AliTPCPreprocessor::ExtractRaw(Int_t sourceFXS)
      AliCDBMetaData metaData;
      metaData.SetBeamPeriod(0);
      metaData.SetResponsible("Haavard Helstrup");
-     metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+     metaData.SetAliRootVersion(ALIROOT_BRANCH);
      metaData.SetComment("Preprocessor AliTPC data base entries.");
 
      Bool_t storeOK = Store("Calib", "Raw", rawArray, &metaData, 0, kTRUE);
@@ -1248,7 +1248,7 @@ UInt_t AliTPCPreprocessor::ExtractCE(Int_t sourceFXS)
     AliCDBMetaData metaData;
     metaData.SetBeamPeriod(0);
     metaData.SetResponsible("Haavard Helstrup");
-    metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+    metaData.SetAliRootVersion(ALIROOT_BRANCH);
     metaData.SetComment("Preprocessor AliTPC data base entries.");
     
     if ( result == 0 ) {
@@ -1305,7 +1305,7 @@ UInt_t AliTPCPreprocessor::ExtractQA(Int_t sourceFXS)
            AliCDBMetaData metaData;
            metaData.SetBeamPeriod(0);
            metaData.SetResponsible("Haavard Helstrup");
-          metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+          metaData.SetAliRootVersion(ALIROOT_BRANCH);
            metaData.SetComment("Preprocessor AliTPC data base entries.");
 
            Bool_t storeOK = Store("Calib", "QA", calQA, &metaData, 0, kFALSE);
@@ -1598,7 +1598,7 @@ UInt_t AliTPCPreprocessor::ExtractAltro(Int_t sourceFXS, TMap* dcsMap)
      AliCDBMetaData metaData;
      metaData.SetBeamPeriod(0);
      metaData.SetResponsible("Haavard Helstrup");
-     metaData.SetAliRootVersion(ALIROOT_SVN_BRANCH);
+     metaData.SetAliRootVersion(ALIROOT_BRANCH);
      metaData.SetComment("Preprocessor AliTPC data base entries.");
 
      Bool_t storeOK = Store("Calib", "AltroConfig", altroObjects, &metaData, 0, kFALSE);
index cdb1826..a2f2609 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef ALIROOT_ARVersion
 #define ALIROOT_ARVersion
-#define ALIROOT_SVN_REVISION @ALIROOT_SVN_REVISION@
-#define ALIROOT_SVN_BRANCH "@ALIROOT_SVN_BRANCH@"
+#define ALIROOT_REVISION "@ALIROOT_REVISION@"
+#define ALIROOT_BRANCH "@ALIROOT_BRANCH@"
 #endif
diff --git a/cmake/GetGitRevisionDescription.cmake b/cmake/GetGitRevisionDescription.cmake
new file mode 100644 (file)
index 0000000..bcd1d72
--- /dev/null
@@ -0,0 +1,130 @@
+# - Returns a version string from Git
+#
+# These functions force a re-configure on each git commit so that you can
+# trust the values of the variables in your build system.
+#
+#  get_git_head_revision(<refspecvar> <hashvar> [<additional arguments to git describe> ...])
+#
+# Returns the refspec and sha hash of the current head revision
+#
+#  git_describe(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe on the source tree, and adjusting
+# the output so that it tests false if an error occurs.
+#
+#  git_get_exact_tag(<var> [<additional arguments to git describe> ...])
+#
+# Returns the results of git describe --exact-match on the source tree,
+# and adjusting the output so that it tests false if there was no exact
+# matching tag.
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+if(__get_git_revision_description)
+       return()
+endif()
+set(__get_git_revision_description YES)
+
+# We must run the following at "include" time, not at function call time,
+# to find the path to this module rather than the path to a calling list file
+get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
+
+function(get_git_head_revision _refspecvar _hashvar)
+       set(GIT_PARENT_DIR "${CMAKE_CURRENT_LIST_DIR}")
+       set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+       while(NOT EXISTS "${GIT_DIR}")  # .git dir not found, search parent directories
+               set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
+               get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH)
+               if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT)
+                       # We have reached the root directory, we are not in git
+                       set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+                       set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE)
+                       return()
+               endif()
+               set(GIT_DIR "${GIT_PARENT_DIR}/.git")
+       endwhile()
+       # check if this is a submodule
+       if(NOT IS_DIRECTORY ${GIT_DIR})
+               file(READ ${GIT_DIR} submodule)
+               string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
+               get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
+               get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
+       endif()
+       set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
+       if(NOT EXISTS "${GIT_DATA}")
+               file(MAKE_DIRECTORY "${GIT_DATA}")
+       endif()
+
+       if(NOT EXISTS "${GIT_DIR}/HEAD")
+               return()
+       endif()
+       set(HEAD_FILE "${GIT_DATA}/HEAD")
+       configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY)
+
+       configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in"
+               "${GIT_DATA}/grabRef.cmake"
+               @ONLY)
+       include("${GIT_DATA}/grabRef.cmake")
+
+       set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE)
+       set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
+endfunction()
+
+function(git_describe _var)
+       if(NOT GIT_FOUND)
+               find_package(Git QUIET)
+       endif()
+       get_git_head_revision(refspec hash)
+       if(NOT GIT_FOUND)
+               set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+               return()
+       endif()
+       if(NOT hash)
+               set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE)
+               return()
+       endif()
+
+       # TODO sanitize
+       #if((${ARGN}" MATCHES "&&") OR
+       #       (ARGN MATCHES "||") OR
+       #       (ARGN MATCHES "\\;"))
+       #       message("Please report the following error to the project!")
+       #       message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}")
+       #endif()
+
+       #message(STATUS "Arguments to execute_process: ${ARGN}")
+
+       execute_process(COMMAND
+               "${GIT_EXECUTABLE}"
+               describe
+               ${hash}
+               ${ARGN}
+               WORKING_DIRECTORY
+               "${CMAKE_SOURCE_DIR}"
+               RESULT_VARIABLE
+               res
+               OUTPUT_VARIABLE
+               out
+               ERROR_QUIET
+               OUTPUT_STRIP_TRAILING_WHITESPACE)
+       if(NOT res EQUAL 0)
+               set(out "${out}-${res}-NOTFOUND")
+       endif()
+
+       set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
+function(git_get_exact_tag _var)
+       git_describe(out --exact-match ${ARGN})
+       set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
diff --git a/cmake/GetGitRevisionDescription.cmake.in b/cmake/GetGitRevisionDescription.cmake.in
new file mode 100644 (file)
index 0000000..888ce13
--- /dev/null
@@ -0,0 +1,38 @@
+# 
+# Internal file for GetGitRevisionDescription.cmake
+#
+# Requires CMake 2.6 or newer (uses the 'function' command)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+set(HEAD_HASH)
+
+file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024)
+
+string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS)
+if(HEAD_CONTENTS MATCHES "ref")
+       # named branch
+       string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
+       if(EXISTS "@GIT_DIR@/${HEAD_REF}")
+               configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+       elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
+               configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
+               set(HEAD_HASH "${HEAD_REF}")
+       endif()
+else()
+       # detached HEAD
+       configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY)
+endif()
+
+if(NOT HEAD_HASH)
+       file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024)
+       string(STRIP "${HEAD_HASH}" HEAD_HASH)
+endif()
index 29f3e84..06c890e 100644 (file)
@@ -77,9 +77,9 @@ Bool_t DiffGeomBeforeTagging(const char* recipient, const char* cdbUri="local://
 
                // Get root and AliRoot versions
                const char* rootv = gROOT->GetVersion();
-               TString av(ALIROOT_SVN_BRANCH);
-               Int_t revnum = ALIROOT_SVN_REVISION;
-               Printf("root version: %s.  AliRoot %s, revision number %d",rootv,av.Data(),revnum);
+               TString av(ALIROOT_BRANCH);
+               TString revnum(ALIROOT_REVISION);
+               Printf("root version: %s.  AliRoot %s, revision number %s",rootv,av.Data(),revnum);
 
                // create and send mail
                TString subject(Form("AliRoot revision %d is about to be tagged and the geometry changed!",revnum));
index dae68ee..a7a7f8d 100644 (file)
@@ -149,7 +149,7 @@ void MakeAlignmentObjs(const char* detList="ALL", const char* ocdbOrDir = "local
                        strId+="/Align/Data";
                        AliCDBId id(strId.Data(),0,AliCDBRunRange::Infinity());
                        AliCDBMetaData *md = misAligner->GetCDBMetaData();
-                       md->SetAliRootVersion(ALIROOT_SVN_BRANCH);
+                       md->SetAliRootVersion(ALIROOT_BRANCH);
                        md->AddDateToComment();
                        storage->Put(objsArray, id, md);
                }else{
index b4e4df9..16e4182 100644 (file)
@@ -17,7 +17,7 @@ void MakeAllDETsFullMisAlignment(Char_t* CDBstorage = "local://$HOME/FullMisAlig
   }else{  
     gSystem->Setenv("TOCDB","kTRUE");
     gSystem->Setenv("STORAGE",strStorage.Data());
-    gSystem->Setenv("ARVERSION",ALIROOT_SVN_BRANCH);
+    gSystem->Setenv("ARVERSION",ALIROOT_BRANCH);
   }
   if(partialGeom){
     gSystem->Setenv("REALSETUP","kTRUE");
index 381fa2a..5ed2f3a 100644 (file)
@@ -17,7 +17,7 @@ void MakeAllDETsResMisAlignment(Char_t* CDBstorage = "local://$HOME/ResidualMisA
   }else{  
     gSystem->Setenv("TOCDB","kTRUE");
     gSystem->Setenv("STORAGE",strStorage.Data());
-    gSystem->Setenv("ARVERSION",ALIROOT_SVN_BRANCH);
+    gSystem->Setenv("ARVERSION",ALIROOT_BRANCH);
   }
   if(partialGeom){
     gSystem->Setenv("REALSETUP","kTRUE");
index a515f5a..27342c6 100644 (file)
@@ -14,7 +14,7 @@ void MakeAllDETsZeroMisAlignment(Char_t* CDBstorage = "local://$HOME/ZeroMisAlig
   }else{  
     gSystem->Setenv("TOCDB","kTRUE");
     gSystem->Setenv("STORAGE",strStorage.Data());
-    gSystem->Setenv("ARVERSION",ALIROOT_SVN_BRANCH);
+    gSystem->Setenv("ARVERSION",ALIROOT_BRANCH);
   }
   if(partialGeom){
     gSystem->Setenv("REALSETUP","kTRUE");
index 5e3cb40..4344fc5 100644 (file)
@@ -62,9 +62,9 @@ set(CLEARCYCLE 5)
 set(TESTCYCLE 2)
 #Get Revision
 execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out )
-string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out})
-set(OLDREV ${ALIROOT_SVN_REVISION})       
-set(NEWREV ${ALIROOT_SVN_REVISION})       
+string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_REVISION ${_svn_out})
+set(OLDREV ${ALIROOT_REVISION})       
+set(NEWREV ${ALIROOT_REVISION})       
 message("Starting build of revision ${OLDREV}")
 #Setup Directories
 set(CTEST_BINARY_DIRECTORY  "${ALICE_INSTALL}")
@@ -90,8 +90,8 @@ while (${CTEST_ELAPSED_TIME} LESS 36000)
     message("Current revision : ${OLDREV}")
     ctest_update(BUILD "${CTEST_SOURCE_DIRECTORY}")
     execute_process(COMMAND svn info ${ALICE_ROOT} OUTPUT_VARIABLE _svn_out)
-    string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_SVN_REVISION ${_svn_out})
-    set(NEWREV ${ALIROOT_SVN_REVISION})             
+    string(REGEX REPLACE "^.*Revision: ([^\n]*).*$" "\\1" ALIROOT_REVISION ${_svn_out})
+    set(NEWREV ${ALIROOT_REVISION})             
     message("New revision : ${NEWREV}")
     if(${OLDREV} EQUAL ${NEWREV})
       message("Source not updated, no need to build source")