91 lines
2.3 KiB
Bash
Executable File
91 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This requires gitinspector to be installed
|
|
# it can be gotten from:
|
|
#
|
|
# - https://pypi.org/project/gitinspector/0.3.2
|
|
# - https://github.com/ejwa/gitinspector
|
|
|
|
# Check out a new copy of a repository and set it up to be a useful
|
|
# local copy.
|
|
function clone_new {
|
|
typeset repo="$1"
|
|
typeset url="$2"
|
|
echo
|
|
echo "Cloning $repo"
|
|
git clone $url $repo
|
|
return 0
|
|
}
|
|
|
|
# Determine the current branch of a local repository.
|
|
function current_branch {
|
|
(cd $1 && git rev-parse --abbrev-ref HEAD)
|
|
}
|
|
|
|
# Update an existing copy of a repository, including all remotes and
|
|
# pulling into the local master branch if we're on that branch
|
|
# already.
|
|
function update_existing {
|
|
typeset repo="$1"
|
|
echo
|
|
echo "Updating $repo"
|
|
(cd $repo && git remote update)
|
|
RC=$?
|
|
if [ $RC -ne 0 ]
|
|
then
|
|
return $RC
|
|
fi
|
|
# Only run git pull for repos where I'm not working in a branch.
|
|
typeset b=$(current_branch $repo)
|
|
if [ $b == "master" ]
|
|
then
|
|
if (cd $repo && git diff --exit-code >/dev/null)
|
|
then
|
|
(cd $repo && git pull)
|
|
else
|
|
echo "Skipping pull for master branch with local changes"
|
|
(cd $repo && git status)
|
|
fi
|
|
else
|
|
echo "Skipping pull for branch $b"
|
|
branched="$branched $repo"
|
|
fi
|
|
}
|
|
|
|
# Process a single repository found in gerrit, determining whether it
|
|
# exists locally already or not.
|
|
function get_one_repo {
|
|
typeset repo="$1"
|
|
typeset url="$2"
|
|
typeset pardir=$(dirname $repo)
|
|
if [ ! -z "$pardir" ]
|
|
then
|
|
mkdir -p $pardir
|
|
fi
|
|
if [ ! -d $repo ] ; then
|
|
clone_new $repo $url
|
|
else
|
|
update_existing $repo
|
|
fi
|
|
RC=$?
|
|
return $RC
|
|
}
|
|
|
|
current_dir=`pwd`
|
|
base="git://git.openstack.org"
|
|
projects=$(ssh review.openstack.org -p 29418 gerrit ls-projects | grep -v 'attic' | grep "oslo")
|
|
projects="$projects openstack/taskflow openstack/tooz openstack/cliff openstack/debtcollector"
|
|
projects="$projects openstack/futurist openstack/stevedore openstack-dev/cookiecutter"
|
|
projects="$projects openstack/automaton"
|
|
|
|
for repo in $projects; do
|
|
get_one_repo "$repo" "$base/$repo"
|
|
RC=$?
|
|
if [ $RC -ne 0 ] ; then
|
|
echo "Unable to obtain $repo"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
python new_core_analyzer.py $projects > "${current_dir}/oslo_reports.txt"
|