Skip to content

Commit 9328b34

Browse files
Merge pull request #598 from TriBITSPub/597-config-git-version-info
Add git version info for parent commits (#597)
2 parents cc331f5 + 2f17d8e commit 9328b34

13 files changed

Lines changed: 366 additions & 51 deletions

test/core/ExamplesUnitTests/TribitsHelloWorld_Tests.cmake

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ set(TribitsHelloWorld_COMMON_CONFIG_ARGS
77
${SERIAL_PASSTHROUGH_CONFIGURE_ARGS}
88
)
99

10+
1011
tribits_add_advanced_test( TribitsHelloWorld
1112
OVERALL_WORKING_DIRECTORY TEST_NAME
1213
OVERALL_NUM_MPI_PROCS 1
@@ -36,6 +37,115 @@ tribits_add_advanced_test( TribitsHelloWorld
3637
)
3738

3839

40+
tribits_add_advanced_test( TribitsHelloWorld_config_git_version_single_repo_one_parent
41+
OVERALL_WORKING_DIRECTORY TEST_NAME
42+
OVERALL_NUM_MPI_PROCS 1
43+
XHOST Windows # We use the 'diff' command below :-(
44+
45+
TEST_0
46+
MESSAGE "Copy the project source so we can copy files into it."
47+
CMND ${CMAKE_COMMAND}
48+
ARGS -E copy_directory
49+
${${PROJECT_NAME}_TRIBITS_DIR}/examples/TribitsHelloWorld
50+
TribitsHelloWorld
51+
52+
TEST_1
53+
MESSAGE "Create a dummy .git directory so it will run git commands"
54+
CMND ${CMAKE_COMMAND} ARGS -E make_directory TribitsHelloWorld/.git
55+
56+
TEST_2
57+
CMND ${CMAKE_COMMAND} ARGS -E copy
58+
${CMAKE_CURRENT_SOURCE_DIR}/configure_git_mockprogram_files/mockprogram_inout.single_repo_one_parent_version.txt
59+
TribitsHelloWorld/.mockprogram_inout.txt
60+
61+
TEST_3
62+
WORKING_DIRECTORY BUILD
63+
CMND ${CMAKE_COMMAND}
64+
ARGS
65+
${TribitsHelloWorld_COMMON_CONFIG_ARGS}
66+
-DTribitsHelloWorld_TRIBITS_DIR=${${PROJECT_NAME}_TRIBITS_DIR}
67+
-DTribitsHelloWorld_ENABLE_TESTS=ON
68+
-DTribitsHelloWorld_GENERATE_REPO_VERSION_FILE=ON
69+
-DTribitsHelloWorld_TRACE_DEPENDENCY_HANDLING_ONLY=ON
70+
-DGIT_EXECUTABLE=${${PROJECT_NAME}_TRIBITS_DIR}/python_utils/mockprogram.py
71+
../TribitsHelloWorld
72+
PASS_REGULAR_EXPRESSION_ALL
73+
"a1234tgb .Thu Sep 21 19:19:18 2023 -0400. <someone@sandia.gov>"
74+
"This is the HEAD commit summary line"
75+
ALWAYS_FAIL_ON_NONZERO_RETURN
76+
77+
TEST_4
78+
CMND diff ARGS
79+
${CMAKE_CURRENT_SOURCE_DIR}/configure_git_mockprogram_files/TribitsHelloWorldRepoVersion.single_repo_one_parent_version.txt
80+
BUILD/TribitsHelloWorldRepoVersion.txt
81+
82+
)
83+
# NOTES:
84+
#
85+
# * The above directory structure is:
86+
#
87+
# TribitsHelloWorld_config_git_version_single_repo_one_parent/
88+
# TribitsHelloWorld/
89+
# .git/
90+
# .mockprogram_inout.txt
91+
# BUILD/
92+
#
93+
# * We don't use cmake -E compare_files because it does not print the diff,
94+
# just gives a non-zero error code.
95+
96+
97+
tribits_add_advanced_test( TribitsHelloWorld_config_git_version_single_repo_two_parents
98+
OVERALL_WORKING_DIRECTORY TEST_NAME
99+
OVERALL_NUM_MPI_PROCS 1
100+
XHOST Windows # We use the 'diff' command below :-(
101+
102+
TEST_0
103+
MESSAGE "Copy the project source so we can copy files into it."
104+
CMND ${CMAKE_COMMAND}
105+
ARGS -E copy_directory
106+
${${PROJECT_NAME}_TRIBITS_DIR}/examples/TribitsHelloWorld
107+
TribitsHelloWorld
108+
109+
TEST_1
110+
MESSAGE "Create a dummy .git directory so it will run git commands"
111+
CMND ${CMAKE_COMMAND} ARGS -E make_directory TribitsHelloWorld/.git
112+
113+
TEST_2
114+
CMND ${CMAKE_COMMAND} ARGS -E copy
115+
${CMAKE_CURRENT_SOURCE_DIR}/configure_git_mockprogram_files/mockprogram_inout.single_repo_two_parents_version.txt
116+
TribitsHelloWorld/.mockprogram_inout.txt
117+
118+
TEST_3
119+
WORKING_DIRECTORY BUILD
120+
CMND ${CMAKE_COMMAND}
121+
ARGS
122+
${TribitsHelloWorld_COMMON_CONFIG_ARGS}
123+
-DTribitsHelloWorld_TRIBITS_DIR=${${PROJECT_NAME}_TRIBITS_DIR}
124+
-DTribitsHelloWorld_ENABLE_TESTS=ON
125+
-DTribitsHelloWorld_GENERATE_REPO_VERSION_FILE=ON
126+
-DTribitsHelloWorld_TRACE_DEPENDENCY_HANDLING_ONLY=ON
127+
-DTribitsHelloWorld_SHOW_GIT_COMMIT_PARENTS=ON
128+
-DGIT_EXECUTABLE=${${PROJECT_NAME}_TRIBITS_DIR}/python_utils/mockprogram.py
129+
../TribitsHelloWorld
130+
PASS_REGULAR_EXPRESSION_ALL
131+
"a1234tgb .Thu Sep 21 19:19:18 2023 -0400. <someone@sandia.gov>"
132+
"This is the HEAD commit summary line"
133+
"Parent 1:"
134+
"b5678aop .Thu Sep 20 19:19:18 2023 -0400. <someone@sandia.gov>"
135+
"This is parent 1 commit summary line"
136+
"Parent 2:"
137+
"c9101hah .Thu Sep 19 19:19:18 2023 -0400. <someone@sandia.gov>"
138+
"This is parent 2 commit summary line"
139+
ALWAYS_FAIL_ON_NONZERO_RETURN
140+
141+
TEST_4
142+
CMND diff ARGS
143+
${CMAKE_CURRENT_SOURCE_DIR}/configure_git_mockprogram_files/TribitsHelloWorldRepoVersion.single_repo_two_parents_version.txt
144+
BUILD/TribitsHelloWorldRepoVersion.txt
145+
146+
)
147+
148+
39149
tribits_add_advanced_test( TribitsHelloWorld_EXE_DISABLE
40150
OVERALL_WORKING_DIRECTORY TEST_NAME
41151
OVERALL_NUM_MPI_PROCS 1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*** Base Git Repo: TribitsHelloWorld
2+
a1234tgb [Thu Sep 21 19:19:18 2023 -0400] <someone@sandia.gov>
3+
This is the HEAD commit summary line
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
*** Base Git Repo: TribitsHelloWorld
2+
a1234tgb [Thu Sep 21 19:19:18 2023 -0400] <someone@sandia.gov>
3+
This is the HEAD commit summary line
4+
*** Parent 1:
5+
b5678aop [Thu Sep 20 19:19:18 2023 -0400] <someone@sandia.gov>
6+
This is parent 1 commit summary line
7+
*** Parent 2:
8+
c9101hah [Thu Sep 19 19:19:18 2023 -0400] <someone@sandia.gov>
9+
This is parent 2 commit summary line
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%h [%ad] <%ae> HEAD
2+
MOCK_PROGRAM_RETURN: 0
3+
MOCK_PROGRAM_OUTPUT: a1234tgb [Thu Sep 21 19:19:18 2023 -0400] <someone@sandia.gov>
4+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%s HEAD
5+
MOCK_PROGRAM_RETURN: 0
6+
MOCK_PROGRAM_OUTPUT: This is the HEAD commit summary line
7+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%p HEAD
8+
MOCK_PROGRAM_RETURN: 0
9+
MOCK_PROGRAM_OUTPUT: b5678aop
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%h [%ad] <%ae> HEAD
2+
MOCK_PROGRAM_RETURN: 0
3+
MOCK_PROGRAM_OUTPUT: a1234tgb [Thu Sep 21 19:19:18 2023 -0400] <someone@sandia.gov>
4+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%s HEAD
5+
MOCK_PROGRAM_RETURN: 0
6+
MOCK_PROGRAM_OUTPUT: This is the HEAD commit summary line
7+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%p HEAD
8+
MOCK_PROGRAM_RETURN: 0
9+
MOCK_PROGRAM_OUTPUT: b5678aop c9101hah
10+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%h [%ad] <%ae> b5678aop
11+
MOCK_PROGRAM_RETURN: 0
12+
MOCK_PROGRAM_OUTPUT: b5678aop [Thu Sep 20 19:19:18 2023 -0400] <someone@sandia.gov>
13+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%s b5678aop
14+
MOCK_PROGRAM_RETURN: 0
15+
MOCK_PROGRAM_OUTPUT: This is parent 1 commit summary line
16+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%h [%ad] <%ae> c9101hah
17+
MOCK_PROGRAM_RETURN: 0
18+
MOCK_PROGRAM_OUTPUT: c9101hah [Thu Sep 19 19:19:18 2023 -0400] <someone@sandia.gov>
19+
MOCK_PROGRAM_INPUT: log -1 --pretty=format:%s c9101hah
20+
MOCK_PROGRAM_RETURN: 0
21+
MOCK_PROGRAM_OUTPUT: This is parent 2 commit summary line

test/ctest_driver/TribitsExampleMetaProject/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ tribits_add_advanced_test( CTestDriver_TribitsExMetaProj_clone_default_branch_re
124124
${COMMON_ENV_ARGS}
125125
TribitsExMetaProj_ENABLE_SECONDARY_TESTED_CODE=TRUE
126126
CTEST_BUILD_NAME=CTestDriver_TribitsExMetaProj_clone_default_branch_remote
127+
TribitsExMetaProj_EXTRA_CONFIGURE_OPTIONS=-DTribitsExMetaProj_SHOW_GIT_COMMIT_PARENTS=ON
127128
CTEST_SITE=CustomSite
128129
${CTEST_S_SCRIPT_ARGS}
129130
PASS_REGULAR_EXPRESSION_ALL
@@ -262,7 +263,7 @@ tribits_add_advanced_test( CTestDriver_TribitsExMetaProj_clone_default_branch_re
262263
TEST_8
263264
MESSAGE "Make sure that the file TribitsExMetaProjRepoVersion.txt is correct"
264265
CMND diff ARGS
265-
"${CMAKE_CURRENT_LIST_DIR}/data/TribitsExMetaProjRepoVersion.for-testing.txt"
266+
"${CMAKE_CURRENT_LIST_DIR}/data/TribitsExMetaProjRepoVersion.for-testing.with-parents.txt"
266267
BUILD/TribitsExMetaProjRepoVersion.txt
267268
ALWAYS_FAIL_ON_NONZERO_RETURN
268269

@@ -320,7 +321,7 @@ tribits_add_advanced_test( CTestDriver_TribitsExMetaProj_clone_default_branch_re
320321
TEST_12
321322
MESSAGE "Make sure that the file TribitsExMetaProjRepoVersion.txt is correct"
322323
CMND diff ARGS
323-
"${CMAKE_CURRENT_LIST_DIR}/data/TribitsExMetaProjRepoVersion.for-testing.txt"
324+
"${CMAKE_CURRENT_LIST_DIR}/data/TribitsExMetaProjRepoVersion.for-testing.with-parents.txt"
324325
BUILD/TribitsExMetaProjRepoVersion.txt
325326
ALWAYS_FAIL_ON_NONZERO_RETURN
326327

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
*** Base Git Repo: TribitsExMetaProj
2+
863461e [Tue Sep 14 15:05:31 2021 -0600] <rabartl@sandia.gov>
3+
Merge branch 'tribits-github-snapshot' (TriBITSPub/TriBITS#299)
4+
*** Parent 1:
5+
e12aad9 [Fri Dec 11 16:17:18 2020 -0700] <rabartl@sandia.gov>
6+
Merge branch 'tribits-github-snapshot' (TriBITSPub/TriBITS#309)
7+
*** Parent 2:
8+
ed38a1f [Tue Sep 14 15:04:06 2021 -0600] <rabartl@sandia.gov>
9+
Automatic snapshot commit from TribitsExampleMetaProject at d1e4913
10+
*** Git Repo: TribitsExampleProject
11+
94c2b12 [Tue Sep 14 15:18:55 2021 -0600] <rabartl@sandia.gov>
12+
Merge branch 'tribits-github-snapshot' (TriBITSPub/TriBITS#299)
13+
*** Parent 1:
14+
59c7057 [Fri Dec 11 16:23:46 2020 -0700] <rabartl@sandia.gov>
15+
Merge branch 'tribits-github-snapshot'
16+
*** Parent 2:
17+
da4197f [Tue Sep 14 15:11:39 2021 -0600] <rabartl@sandia.gov>
18+
Automatic snapshot commit from TribitsExampleProject at d95ddbd
19+
*** Git Repo: TribitsExampleProjectAddons
20+
d846ae1 [Tue Sep 14 15:23:39 2021 -0600] <rabartl@sandia.gov>
21+
Merge branch 'tribits-github-snapshot' (TriBITSPub/TriBITS#299)
22+
*** Parent 1:
23+
226a17e [Tue Feb 19 06:33:23 2019 -0700] <rabartl@sandia.gov>
24+
Update README file (tribitspub/tribits#278)
25+
*** Parent 2:
26+
08f06bb [Tue Sep 14 15:20:24 2021 -0600] <rabartl@sandia.gov>
27+
Automatic snapshot commit from TribitsExampleProjectAddons at abb6694

tribits/core/package_arch/TribitsGlobalMacros.cmake

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939

4040
# Standard TriBITS system includes
4141

42+
include("${CMAKE_CURRENT_LIST_DIR}/../utils/TribitsGitRepoVersionInfo.cmake")
43+
4244
include("${CMAKE_CURRENT_LIST_DIR}/../common/TribitsConstants.cmake")
4345

4446
include("${CMAKE_CURRENT_LIST_DIR}/../test_support/TribitsTestCategories.cmake")
@@ -53,7 +55,6 @@ include(TribitsGetVersionDate)
5355
include(TribitsReportInvalidTribitsUsage)
5456
include(TribitsReadAllProjectDepsFilesCreateDepsGraph)
5557
include(TribitsAdjustPackageEnables)
56-
include(TribitsGitRepoVersionInfo)
5758
include(TribitsSetUpEnabledOnlyDependencies)
5859
include(TribitsConfigureTiming)
5960

@@ -685,6 +686,9 @@ macro(tribits_define_global_options_and_define_extra_repos)
685686
CACHE BOOL
686687
"Generate the ${PROJECT_NAME}RepoVersion.txt file.")
687688

689+
tribits_advanced_set_cache_var_and_default(${PROJECT_NAME}_SHOW_GIT_COMMIT_PARENTS
690+
BOOL OFF "Show parents' commit info in the repo version output.")
691+
688692
if ("${${PROJECT_NAME}_GENERATE_VERSION_DATE_FILES_DEFAULT}" STREQUAL "")
689693
set(${PROJECT_NAME}_GENERATE_VERSION_DATE_FILES_DEFAULT OFF)
690694
endif()
@@ -1207,48 +1211,41 @@ endmacro()
12071211

12081212
# Get the versions of all the git repos
12091213
#
1210-
function(tribits_generate_repo_version_file_string PROJECT_REPO_VERSION_FILE_STRING_OUT)
1214+
function(tribits_generate_repo_version_file_string projectRepoVersionFileStrOut)
12111215

1212-
set(REPO_VERSION_FILE_STR "")
1216+
set(projectRepoVersionFileStr "")
12131217

12141218
tribits_generate_single_repo_version_string(
1215-
${CMAKE_CURRENT_SOURCE_DIR}
1216-
SINGLE_REPO_VERSION)
1217-
string(APPEND REPO_VERSION_FILE_STR
1219+
${CMAKE_CURRENT_SOURCE_DIR} singleRepoVersionStr
1220+
INCLUDE_COMMIT_PARENTS ${${PROJECT_NAME}_SHOW_GIT_COMMIT_PARENTS})
1221+
string(APPEND projectRepoVersionFileStr
12181222
"*** Base Git Repo: ${PROJECT_NAME}\n"
1219-
"${SINGLE_REPO_VERSION}\n" )
1223+
"${singleRepoVersionStr}\n" )
12201224

1221-
set(EXTRAREPO_IDX 0)
1222-
foreach(EXTRA_REPO ${${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES})
1223-
1224-
#print_var(EXTRA_REPO)
1225-
#print_var(EXTRAREPO_IDX)
1226-
#print_var(${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES_DIRS)
1225+
set(extraRepoIdx 0)
1226+
foreach(extraRepo ${${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES})
12271227

12281228
if (${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES_DIRS)
12291229
# Read from an extra repo file with potentially different dir.
1230-
list(GET ${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES_DIRS ${EXTRAREPO_IDX}
1231-
EXTRAREPO_DIR )
1230+
list(GET ${PROJECT_NAME}_ALL_EXTRA_REPOSITORIES_DIRS ${extraRepoIdx}
1231+
extraRepoDir )
12321232
else()
12331233
# Not read from extra repo file so dir is same as name
1234-
set(EXTRAREPO_DIR ${EXTRA_REPO})
1234+
set(extraRepoDir ${extraRepo})
12351235
endif()
1236-
#print_var(EXTRAREPO_DIR)
12371236

12381237
tribits_generate_single_repo_version_string(
1239-
"${CMAKE_CURRENT_SOURCE_DIR}/${EXTRAREPO_DIR}"
1240-
SINGLE_REPO_VERSION)
1241-
string(APPEND REPO_VERSION_FILE_STR
1242-
"*** Git Repo: ${EXTRAREPO_DIR}\n"
1243-
"${SINGLE_REPO_VERSION}\n" )
1244-
1245-
#print_var(REPO_VERSION_FILE_STR)
1238+
"${CMAKE_CURRENT_SOURCE_DIR}/${extraRepoDir}" singleRepoVersionStr
1239+
INCLUDE_COMMIT_PARENTS ${${PROJECT_NAME}_SHOW_GIT_COMMIT_PARENTS})
1240+
string(APPEND projectRepoVersionFileStr
1241+
"*** Git Repo: ${extraRepoDir}\n"
1242+
"${singleRepoVersionStr}\n" )
12461243

1247-
math(EXPR EXTRAREPO_IDX "${EXTRAREPO_IDX}+1")
1244+
math(EXPR extraRepoIdx "${extraRepoIdx}+1")
12481245

12491246
endforeach()
12501247

1251-
set(${PROJECT_REPO_VERSION_FILE_STRING_OUT} ${REPO_VERSION_FILE_STR} PARENT_SCOPE)
1248+
set(${projectRepoVersionFileStrOut} ${projectRepoVersionFileStr} PARENT_SCOPE)
12521249

12531250
endfunction()
12541251

@@ -1260,17 +1257,17 @@ endfunction()
12601257
#
12611258
function(tribits_generate_repo_version_output_and_file)
12621259
# Get the repos versions
1263-
tribits_generate_repo_version_file_string(PROJECT_REPO_VERSION_FILE_STRING)
1260+
tribits_generate_repo_version_file_string(projectRepoVersionFileStr)
12641261
# Print the versions
12651262
message("\n${PROJECT_NAME} repos versions:\n"
12661263
"--------------------------------------------------------------------------------\n"
1267-
"${PROJECT_REPO_VERSION_FILE_STRING}"
1264+
"${projectRepoVersionFileStr}"
12681265
" --------------------------------------------------------------------------------\n"
12691266
)
12701267
#) Write out the version file
12711268
file(WRITE
12721269
"${CMAKE_CURRENT_BINARY_DIR}/${${PROJECT_NAME}_REPO_VERSION_FILE_NAME}"
1273-
"${PROJECT_REPO_VERSION_FILE_STRING}")
1270+
"${projectRepoVersionFileStr}")
12741271
endfunction()
12751272

12761273

0 commit comments

Comments
 (0)