blob: 2ee652d7137152a9ce42cdb3d3d1fc5d384b8693 [file] [log] [blame]
pulser73f43592013-09-13 00:09:35 +02001#!/bin/sh
2# Copyright OmniROM Project
3# Licensed under GPLv3
4
5# Configuration
6CONFIG_ROOT=~/gitolite-admin/
7CONFIG_FILE=$CONFIG_ROOT/conf/gitolite.conf
8ANDROID_ROOT=~/android
9PREFIX=android_
10BRANCH=android-4.3
11SOURCE=android-4.3_r2.2
12MANIFEST=android/default.xml
13XDA_REMOTE=ssh://git@localhost # NO TRAILING SLASH
14GERRIT_REMOTE=ssh://build1.dev.xda-developers.com:29418
15REMOTE_MANIFEST=private
16
17# Script
18if [ $# -lt 1 ]; then
19 echo Usage: ./clone.sh path
20 echo Example: ./clone.sh frameworks/base
21 exit 1
22fi
23
24REPO_NAME=$PREFIX$(echo ${1%/} | sed -e "s/\//_/g")
25
26# Check that folder is a git repo
27pushd $1
28if [ ! -d .git ]; then
29 echo "$1 doesn't appear to be a git repository"
30 popd
31 exit 1
32fi
33popd
34
35CURRENT_DIR=$(pwd)
36cd $CONFIG_ROOT
37git pull
38cd $CURRENT_DIR
39
40# Create the repo inside gitolite
41echo "Creating $REPO_NAME..."
42
43echo "" >> $CONFIG_FILE
44echo "repo $REPO_NAME" >> $CONFIG_FILE
45echo " RW+ = pulser" >> $CONFIG_FILE
46echo " RW+ = xplodwild" >> $CONFIG_FILE
47echo " R = @all" >> $CONFIG_FILE
48echo "" >> $CONFIG_FILE
49
50echo "Comitting and pushing..."
51CURRENT_DIR=$(pwd)
52cd $CONFIG_ROOT
53git commit conf/gitolite.conf -m "Add $REPO_NAME"
54git push
55
56# Only works if you are a gerrit admin, will create the named project before pushing (gerrit then replicates to git)
57
58ssh -p 29418 gerrit.omnirom.org gerrit create-project --name $REPO_NAME
59
60echo "Creating branch $BRANCH..."
61cd $CURRENT_DIR/$1
62git remote add gerrit $GERRIT_REMOTE/$REPO_NAME
63git checkout $SOURCE
64git branch $BRANCH
65git push gerrit $BRANCH
66
67echo "Updating manifest..."
68cd $ANDROID_ROOT
69SRC_LINE=$(cat $MANIFEST | grep ${1%/} | head -n1)
70if [[ "$SRC_LINE" == *group="pdk"* ]]; then
71 NEW_LINE=" <project path=\"${1%/}\" name=\"$REPO_NAME\" remote=\"$REMOTE_MANIFEST\" revision=\"$BRANCH\" group=\"pdk\" />"
72else
73 NEW_LINE=" <project path=\"${1%/}\" name=\"$REPO_NAME\" remote=\"$REMOTE_MANIFEST\" revision=\"$BRANCH\" />"
74fi
75
76# Update the repo in manifest listing
77
78sed -i "s%$SRC_LINE%$NEW_LINE%g" $MANIFEST
79
80echo "Pushing manifest"
81cd $ANDROID_ROOT/android
82git checkout $BRANCH
83git commit -a -m "Replace $1 path to new repository $REPO_NAME"
84git push $GERRIT_REMOTE/android HEAD:refs/for/$BRANCH
85
86echo "Now remember to approve the change on gerrit before going further!"
87read -p "Press [Enter] key once you've approved the change on gerrit"
88
89echo "Remember to repo sync before use!"