aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorBwko <bouwko@gmail.com>2017-01-25 03:45:29 +0100
committerLunny Xiao <xiaolunwen@gmail.com>2017-01-25 10:45:29 +0800
commit75f0b0c51c1642551aebd83a1601187cfe89d172 (patch)
tree329e1dad8922c08f7f395a3e7609f705fe9fb2f2 /scripts
parent833f8b94c2cd88277eba32984594aad2b7b2b05d (diff)
downloadgitea-75f0b0c51c1642551aebd83a1601187cfe89d172.tar.gz
gitea-75f0b0c51c1642551aebd83a1601187cfe89d172.zip
Added gogs migration script (#532)
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/migrate/gogs_migrate.sh206
1 files changed, 206 insertions, 0 deletions
diff --git a/scripts/migrate/gogs_migrate.sh b/scripts/migrate/gogs_migrate.sh
new file mode 100755
index 0000000000..e9bb5aa02e
--- /dev/null
+++ b/scripts/migrate/gogs_migrate.sh
@@ -0,0 +1,206 @@
+#!/bin/bash
+
+gitea_version=1.0.1
+tested_gogs_version="0.9.114.1227"
+gogs_binary=gogs
+gitea_binary=gitea
+download_gitea=true
+gitea_path=
+
+function usage() {
+ echo "Optional parameters: [-b Gitea binary] [-i Gitea install dir] [-o gogs binary] [-h help]";
+ exit 1;
+}
+
+while getopts ":b::i:o:h:" opt; do
+ case $opt in
+ b)
+ gitea_binary=${OPTARG}
+ download_gitea=false
+ ;;
+ i)
+ gitea_path=${OPTARG}
+ ;;
+ o)
+ gogs_binary=${OPTARG}
+ ;;
+ h)
+ usage
+ ;;
+ \?)
+ echo -e "Invalid option: -$OPTARG"
+ exit 1
+ ;;
+ :)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+function exitOnError() {
+ if [ "$?" != "0" ]; then
+ echo -e $1
+ exit 1
+ fi
+}
+
+function checkBinary() {
+ if [ ! -f $1 ]; then
+ echo "Unable to find $1"
+ exit 1
+ fi
+}
+
+function continueYN(){
+ while true; do
+ echo -e "$1 Yes or No"
+ read yn
+ case $yn in
+ [Yy]* ) break;;
+ [Nn]* ) exit 1;;
+ * ) echo "Please answer yes or no.";;
+ esac
+ done
+}
+
+########## Binary checks
+if pidof "$gogs_binary" >/dev/null; then
+ echo "Please stop gogs before migrating to Gitea"
+ exit 1
+fi
+
+checkBinary "$gogs_binary"
+
+if [ ! -x "$gogs_binary" ]; then
+ echo "Please make sure that you are running this script as the gogs user"
+ exit 1
+fi
+
+########## Version check
+gogs_version=$(./$gogs_binary --version)
+original_IFS=$IFS
+IFS="." && current_version=(${gogs_version#"Gogs version "}) && minimal_version=($tested_gogs_version)
+IFS=$original_IFS
+
+count=0
+for i in "${current_version[@]}"
+do
+ if [ $i -gt ${minimal_version[$count]} ]; then
+ echo -e "!!!--WARNING--!!!\nYour $gogs_version is newer than the tested Gogs version $tested_gogs_version\nUse this script on your own risk\n!!!--WARNING--!!!"
+ break
+ fi
+ let count+=1
+done
+
+########## Disclaimer
+continueYN "This migration script creates a backup before it starts with the actual migration
+If something goes wrong you could always resotre this backup.
+The backups are stored into your gogs folder in gogs-dump-[timestamp].zip file
+
+Migrating from gogs to gitea, are you sure?"
+
+########## gogs dump
+echo "Creating a backup of gogs, this could take a while..."
+./"$gogs_binary" dump
+exitOnError "Failed to create a gogs dump"
+
+########## Create Gitea folder
+if [ -z "$gitea_path" ]; then
+ echo "Where do you want to install Gitea?"
+ read gitea_path
+fi
+
+if [ ! -d "$gitea_path" ]; then
+ mkdir -p "$gitea_path"
+ exitOnError
+fi
+
+if [ "$(ls -A $gitea_path)" ]; then
+ continueYN "!!!--WARNING--!!!\nDirectory $gitea_path is not empty, do you want to continue?"
+fi
+
+
+########## Download Gitea
+if [ $download_gitea == true ]; then
+
+ ########## Detect os
+ case "$OSTYPE" in
+ darwin*) platform="darwin-10.6";;
+ linux*) platform="linux" ;;
+ freebsd*) platform="bsd" ;;
+ netbsd*) platform="bsd" ;;
+ openbsd*) platform="bsd" ;;
+ *) echo "Unsupported os: $OSTYPE\n Please download/compile your own binary and run this script with the -b option" exit 1;;
+ esac
+
+ arch=""
+ bits=""
+ if [[ "$platform" == "linux" ]] || [[ "$platform" == "bsd" ]]; then
+ arch="$(uname -m | sed -e 's/arm\(.*\)/arm-\1/' -e s/aarch64.*/arm64/)"
+ fi
+
+ if [[ "$platform" == "bsd" ]] && [[ "$arch" != "arm"* ]]; then
+ echo "Currently Gitea only supports arm prebuilt binarys on bsd"
+ exit 1
+ fi
+
+ if [[ "$arch" != "arm"* ]] && [[ "$arch" != "mips"* ]]; then
+ arch=""
+ case "$(getconf LONG_BIT)" in
+ 64*) bits="amd64";;
+ 32*) bits="386" ;;
+ esac
+ fi
+
+ ########## Wget Gitea
+ echo "Downloading Gitea"
+ file="gitea-$gitea_version-$platform-$arch$bits"
+ url="https://dl.gitea.io/gitea/$gitea_version/$file"
+ wget "$url" -P "$gitea_path"
+ exitOnError "Failed to download $url"
+
+ wget "$url.sha256" -P "$gitea_path"
+ exitOnError "Failed to Gitea checksum $url.sha256"
+
+ echo "Comparing checksums"
+ gogs_dir=$(pwd)
+ cd "$gitea_path"
+
+ sha256sum -c "$file.sha256"
+ exitOnError "Downloaded Gitea checksums do not match"
+
+ rm "$file.sha256"
+ mv "$file" gitea
+ cd "$gogs_dir"
+
+else
+ checkBinary "$gitea_binary"
+ if [ "$gitea_binary" != "$gitea_path/gitea" ];then
+ cp "$gitea_binary" "$gitea_path/gitea"
+ fi
+fi
+
+########## Copy gogs data to Gitea folder
+echo "Copying gogs data to Gitea, this could take a while..."
+cp -R custom "$gitea_path"
+cp -R data "$gitea_path"
+#cp -R conf "$gitea_path"
+
+########## Moving & deleting old files
+#mv $gitea_path/conf $gitea_path/options
+cd "$gitea_path"
+mv "custom/conf/app.ini" "custom/conf/gogs_app.ini"
+url="https://raw.githubusercontent.com/go-gitea/gitea/v$gitea_version/conf/app.ini"
+wget "$url" -P "custom/conf/"
+exitOnError "Unable to download Gitea app.ini"
+rm -f conf/README.md
+
+echo -e "Migration is almost complete, you only need to merge custom/conf/gogs_app.ini into custom/conf/app.ini"
+continueYN "Do you want to start Gitea?"
+
+########## Starting Gitea
+echo "Starting Gitea"
+chmod +x gitea
+./gitea web
+exitOnError "Failed to start Gitea" \ No newline at end of file