
Recently the migrate_from_tempest.sh script was updated to switch from grabbing a list of all the sha1s for that file and dumping that into the commit message to a much cleaner list of Change-Ids for the most recent commits that touched a file. There was one little oversight that slipped through that change where we were still referring to sha1s at the bottom of the commit msg. This commit fixes that message to now say Change-Ids. Change-Id: Idd4c7bf469a44ff1758bb2c7d8c61459fc133a2b
106 lines
3.5 KiB
Bash
Executable File
106 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Use this script to move over a set of files from tempest master into
|
|
# tempest-lib with the commit history for the files in the commit message.
|
|
# This should only be done for files that haven't been migrated over already.
|
|
# To use:
|
|
# 1. Create a new branch in the tempest-lib repo so not to destroy your current
|
|
# working branch
|
|
# 2. Run the script from the repo dir and specify the file paths relative to
|
|
# the root tempest dir(only code and unit tests):
|
|
#
|
|
# tools/migrate_from_tempest.sh tempest/file.py tempest/sub_dir
|
|
|
|
|
|
function usage {
|
|
echo "Usage: $0 [OPTION] file1 file2"
|
|
echo "Migrate files from tempest"
|
|
echo ""
|
|
echo "-o, --output_dir Specify a directory relative to the repo root to move the migrated files into."
|
|
echo "-u, --tempest_git_url Specify the repo to clone tempest from for the migration."
|
|
}
|
|
|
|
set -e
|
|
|
|
output_dir=""
|
|
service_client=0
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-h|--help) usage; exit;;
|
|
-o|--output_dir) output_dir="$2"; shift;;
|
|
-u|--tempest_git_url) tempest_git_url="$2"; shift;;
|
|
-s|--service_client) service_client=1;;
|
|
*) files="$files $1";;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
TEMPEST_GIT_URL=${tempest_git_url:-git://git.openstack.org/openstack/tempest}
|
|
|
|
tmpdir=$(mktemp -d -t tempest-migrate.XXXX)
|
|
tempest_lib_dir=$(dirname "$0")
|
|
|
|
function count_commits {
|
|
echo
|
|
echo "Have $(git log --oneline | wc -l) commits"
|
|
}
|
|
|
|
# Clone tempest and cd into it
|
|
git clone $TEMPEST_GIT_URL $tmpdir
|
|
cd $tmpdir
|
|
|
|
for file in $files; do
|
|
# Get the latest change-id for each file
|
|
change_id=`git log -n1 --grep "Change-Id: " -- $file | grep "Change-Id: " | awk '{print $2}'`
|
|
CHANGE_LIST=`echo -e "$CHANGE_LIST\n * $file: $change_id"`
|
|
done
|
|
|
|
# Move files and commit
|
|
cd -
|
|
file_list=''
|
|
for file in $files; do
|
|
filename=`basename $file`
|
|
dirname=`dirname $file`
|
|
if [ -n "$output_dir" ]; then
|
|
dirname="$output_dir"
|
|
else
|
|
dirname=`echo $dirname | sed s@tempest\/@tempest_lib/\@`
|
|
if [ $service_client -eq 1 ]; then
|
|
# Remove /json path because tempest-lib supports JSON only without XML
|
|
dirname=`echo $dirname | sed s@\/json@@`
|
|
fi
|
|
fi
|
|
dest_file="$dirname/$filename"
|
|
cp -r "$tmpdir/$file" "$dest_file"
|
|
|
|
if [ $service_client -eq 1 ]; then
|
|
# service_client module is not necessary in tempest-lib because rest_client can be used instead
|
|
sed -i s/"from tempest.common import service_client"/"from tempest_lib.common import rest_client"/ $dest_file
|
|
sed -i s/"service_client.ServiceClient"/"rest_client.RestClient"/ $dest_file
|
|
sed -i s/"service_client.ResponseBody"/"rest_client.ResponseBody"/ $dest_file
|
|
sed -i s/"from tempest\."/"from tempest_lib\."/ $dest_file
|
|
|
|
# Replace mocked path in unit tests
|
|
sed -i s/"tempest.common.rest_client"/"tempest_lib.common.rest_client"/ $dest_file
|
|
|
|
# Remove ".json" from import line
|
|
sed -i -e "s/^\(from tempest_lib\.services\..*\)\.json\(.*\)/\1\2/" $dest_file
|
|
fi
|
|
|
|
git add "$dest_file"
|
|
if [[ -z "$file_list" ]]; then
|
|
file_list="$filename"
|
|
else
|
|
file_list="$file_list, $filename"
|
|
fi
|
|
done
|
|
# Cleanup temporary tempest repo
|
|
rm -rf $tmpdir
|
|
|
|
# Generate a migration commit
|
|
commit_message="Migrated $file_list from tempest"
|
|
pre_list=$"This migrates the above files from tempest. This includes tempest commits:"
|
|
post_list=$"to see the commit history for these files refer to the above Change-Ids in the tempest repository"
|
|
git commit -m "$commit_message" -m "$pre_list" -m "$CHANGE_LIST" -m "$post_list"
|