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