android-scripts/gerrit-push

55 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
find_topdir()
{
while [ ! -d ".repo" ]; do
cd ".."
if [ $PWD = "/" ]; then
echo "Cannot find topdir"
exit 1
fi
done
pwd
}
SCHEME="ssh"
GIT="git"
if [ "$1" = "-t" ]; then
GIT="echo git"
shift
fi
if [ "$1" = "-h" ]; then
SCHEME="https"
fi
topdir=$(find_topdir)
len=$(( ${#topdir} + 1 ))
prj_path=${PWD:$len}
prj_entry=$(repo manifest | grep "project .*path=\"$prj_path\"")
if [ -z "$prj_entry" ]; then
echo "Cannot find project entry for $prj_path"
exit 1
fi
def_entry=$(repo manifest | grep "default ")
def_remote_name=$(echo $def_entry | egrep -o "remote=([^ ]*)" | cut -d'"' -f2)
def_remote_entry=$(repo manifest | grep "remote .*name=\"$def_remote_name\"")
prj_name=$(echo $prj_entry | egrep -o "name=([^ ]*)" | cut -d'"' -f2)
prj_remote_name=$(echo $prj_entry | egrep -o "remote=([^ ]*)" | cut -d'"' -f2)
prj_revision=$(echo $prj_entry | egrep -o "revision=([^ ]*)" | cut -d'"' -f2)
if [ -z "$prj_revision" ]; then
prj_revision=$(echo $def_entry | egrep -o "revision=([^ ]*)" | cut -d'"' -f2)
fi
prj_revision="${prj_revision##refs/heads/}"
if [ -n "$prj_remote_name" ]; then
remote_entry=$(repo manifest | grep "remote .*name=\"$prj_remote_name\"")
else
remote_entry=$(repo manifest | grep "remote .*name=\"$def_remote_name\"")
fi
remote_review=$(echo $remote_entry | egrep -o "review=([^ ]*)" | cut -d'"' -f2)
$GIT push "$SCHEME://$remote_review:29418/$prj_name" "HEAD:refs/for/$prj_revision"