Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
U
uvcdat-mirror
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
UV-CDAT
uvcdat-mirror
Merge requests
!7603
Merge colorpicker changes into release
Code
Review changes
Check out branch
Download
Patches
Plain diff
Closed
Merge colorpicker changes into release
master
into
release
Overview
0
Commits
289
Changes
1
Closed
Sankhesh Jhaveri
requested to merge
master
into
release
8 years ago
Overview
0
Commits
289
Changes
1
Expand
:MERGED:
0
0
Merge request reports
Viewing commit
bd749c47
Prev
Next
Show latest version
1 file
+
256
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
bd749c47
file needed
· bd749c47
Charles Doutriaux
authored
8 years ago
CMake/cdat_modules_extra/checkout_testdata.cmake
0 → 100644
+
256
−
0
Options
# Usage:
# cmake -DGIT_EXECUTABLE=[git executable]
# -DTESTDATA_URL=[uvcdat-testdata url]
# -DTESTDATA_DIR=[local testdata directory]
# -DSOURCE_DIR=[uvcdat source root]
# -P checkout_testdata.cmake
#
# This script creates and syncs a clone of the uvcdat-testdata directory.
#
# In detail:
#
# 1) Check if the TESTDATA_DIR exists.
# If not, clone the repo and exit.
# 2) Check if the TESTDATA_DIR is a git repo with TESTDATA_URL as its origin.
# If not, abort with a warning message.
# 3) Check if the TESTDATA_DIR repo is clean.
# If not, abort with an warning message.
# 4) Fetch the current git branch name for the SOURCE_DIR repo.
# If the current HEAD is not a named branch, use master.
# 5) Update the remote branches in the TESTDATA_DIR repo.
# 6) Check if the desired branch exists in TESTDATA_DIR's origin remote.
# 7) Check if the desired branch exists in TESTDATA_DIR as a local branch.
# 8) If the neither the local or remote branch exist, use master.
# 9) Check out the local <branch> in TESTDATA_DIR repo.
# 10) If the remote branch exists, or we are using master, run
# 'git pull origin <branch>:<branch>' to fetch/update the local branch from
# the remote.
#
# Any failures are handled via non-fatal warnings. This is to allow the project
# to build when access to the repo is not available.
# 1) Clone and exit if the target directory doesn't exist.
if
(
NOT EXISTS
"
${
TESTDATA_DIR
}
"
)
message
(
"Cloning
\"
${
TESTDATA_URL
}
\"
into
\"
${
TESTDATA_DIR
}
\"
..."
)
# Use depth=1 to avoid fetching the full history. Use "git pull --unshallow"
# to backfill the history if needed.
# --no-single-branch fetches the tip of all remote branches -- this is needed
# for auto-updating the testdata when the source branch changes.
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
clone --depth=1 --no-single-branch
"
${
TESTDATA_URL
}
"
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
string
(
STRIP
"
${
OUTPUT
}
"
OUTPUT
)
message
(
"
${
OUTPUT
}
"
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Could not clone test data repo! "
"Baseline images will not be available."
)
return
()
endif
()
endif
()
# bots merge master in and mess the following, always rechecking master
# bots check out the correct branches
# following keyword skips the branch checking
if
(
CDAT_CHECKOUT_BASELINE_MATCHING_BRANCH
)
message
(
"[INFO] Trying to find matching branch on baseline repo"
)
# 2) Is TESTDATA_DIR a clone of TESTDATA_URL?
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
config --get remote.origin.url
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Directory exists and is not a git repository. "
"Baseline images may be out of date."
)
return
()
endif
()
string
(
STRIP
"
${
OUTPUT
}
"
OUTPUT
)
if
(
NOT
"
${
TESTDATA_URL
}
"
STREQUAL
"
${
OUTPUT
}
"
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Directory is a git clone of
\"
${
OUTPUT
}
\"
, not
\"
${
TESTDATA_URL
}
\"
. "
"Baseline images may be out of date."
)
return
()
endif
()
# 3) Is the current testdata repo clean? Don't want to clobber any local mods.
# Update the index first:
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
update-index -q --refresh
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Error updating current index with 'git update-index -q --refresh':
\n
."
"
${
OUTPUT
}
\n
"
"Baseline images may be out of date."
)
return
()
endif
()
# Now check if the index is dirty:
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
diff-index --name-only HEAD
"--"
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Error checking current index with 'git diff-index --name-only HEAD --':
\n
."
"
${
OUTPUT
}
\n
"
"Baseline images may be out of date."
)
return
()
endif
()
string
(
STRIP
"
${
OUTPUT
}
"
OUTPUT
)
if
(
NOT
"
${
OUTPUT
}
"
STREQUAL
""
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Current checkout is not clean. The following files have modifications:
\n
"
"
${
OUTPUT
}
\n
"
"Baseline images may be out of date."
)
return
()
endif
()
# 4) Get the current branch name of the source repo.
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY
"
${
SOURCE_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Cannot determine current branch name of source directory. "
"Baseline images may be out of date."
)
return
()
endif
()
string
(
STRIP
"
${
OUTPUT
}
"
BRANCH
)
# If BRANCH is "HEAD", we're not on a named branch. Just use master in that
# case.
if
(
"
${
BRANCH
}
"
STREQUAL
"HEAD"
)
message
(
"The current source directory at '
${
SOURCE_DIR
}
' is not on a named "
"branch. Using the 'master' branch of the testdata repo."
)
set
(
BRANCH
"master"
)
endif
()
# 5) Update the remote branches available on the testdata repo.
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
fetch --depth=1
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Error updating remote branches with "
"'git fetch --depth=1':
\n
."
"
${
OUTPUT
}
\n
"
"Baseline images may be out of date."
)
return
()
endif
()
# 6) Check if the desired branch exists in TESTDATA_DIR's origin remote.
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
branch -a --list
"*
${
BRANCH
}
"
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Error obtaining full branch list:
\n
${
OUTPUT
}
"
"Baseline images may be out of date."
)
return
()
endif
()
message
(
"Testing if remote branch 'origin/
${
BRANCH
}
' exists..."
)
string
(
FIND
"
${
OUTPUT
}
"
" remotes/origin/
${
BRANCH
}
\n
"
POS
)
if
(
NOT POS EQUAL -1
)
message
(
"Remote branch exists."
)
set
(
REMOTE_EXISTS
"YES"
)
else
()
message
(
"Remote branch does not exist."
)
set
(
REMOTE_EXISTS
"NO"
)
endif
()
# 7) Check if the desired branch exists locally:
message
(
"Testing if local branch '
${
BRANCH
}
' exists..."
)
string
(
FIND
"
${
OUTPUT
}
"
"
${
BRANCH
}
\n
"
POS
)
# Leading space in regex intended
if
(
NOT POS EQUAL -1
)
message
(
"Local branch exists."
)
set
(
LOCAL_EXISTS
"YES"
)
else
()
message
(
"Local branch does not exist."
)
set
(
LOCAL_EXISTS
"NO"
)
endif
()
# 8) If the neither the local or remote branch exist, use master.
if
(
NOT REMOTE_EXISTS AND NOT LOCAL_EXISTS
)
set
(
BRANCH
"master"
)
set
(
REMOTE_EXISTS
"YES"
)
set
(
LOCAL_EXISTS
"YES"
)
endif
()
# 9) Check out the desired branch in TESTDATA_DIR repo.
message
(
"Checking out branch '
${
BRANCH
}
' in repo '
${
TESTDATA_DIR
}
'."
)
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
checkout
"
${
BRANCH
}
"
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Cannot update uvcdat-testdata checkout at
\"
${
TESTDATA_DIR
}
\"
. "
"Error executing 'git checkout
${
BRANCH
}
':
\n
."
"
${
OUTPUT
}
\n
"
"Baseline images may be out of date."
)
return
()
endif
()
# 10) If the remote branch exists, or we are using master, run
# 'git pull origin <branch>:<branch>' to fetch/update the local branch from
# the remote.
if
(
REMOTE_EXISTS
)
message
(
"Updating
\"
${
TESTDATA_DIR
}
:
${
BRANCH
}
\"
from "
"
\"
${
TESTDATA_URL
}
:
${
BRANCH
}
\"
..."
)
execute_process
(
COMMAND
"
${
GIT_EXECUTABLE
}
"
pull origin
"
${
BRANCH
}
:
${
BRANCH
}
"
WORKING_DIRECTORY
"
${
TESTDATA_DIR
}
"
RESULT_VARIABLE RESULT
ERROR_VARIABLE OUTPUT
OUTPUT_VARIABLE OUTPUT
)
string
(
STRIP
"
${
OUTPUT
}
"
OUTPUT
)
message
(
"
${
OUTPUT
}
"
)
if
(
NOT RESULT EQUAL 0
)
message
(
"Error updating testdata repo! "
"Baseline images may be out of date."
)
endif
()
endif
()
else
()
message
(
"[INFO] NOT trying to switch branch on baseline (only bots should turn this on)"
)
endif
()
Loading