summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Fanninger2015-06-08 20:01:07 +0200
committerThomas Fanninger2015-06-08 20:01:07 +0200
commit6a81e0df0343274fb44fef028c3469a94a5a37a3 (patch)
tree89c8eabfa16bf3c29f2ad0c5a01c822030c867b7
downloadaur-6a81e0df0343274fb44fef028c3469a94a5a37a3.tar.gz
Migration
-rw-r--r--.SRCINFO42
-rw-r--r--PKGBUILD106
-rw-r--r--README.md35
-rw-r--r--app.ini.patch32
-rw-r--r--app_new.ini273
-rw-r--r--app_old.ini273
-rw-r--r--gogs.install42
-rw-r--r--gogs.service14
-rw-r--r--helper.sh76
-rw-r--r--start.sh4
10 files changed, 897 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..7cc8fddf491a
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,42 @@
+pkgbase = gogs-git-dev
+ pkgdesc = Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language. This is the current git version from branch dev.
+ pkgver = 20150116
+ pkgrel = 1
+ epoch = 1
+ url = http://gogs.io/
+ install = gogs.install
+ arch = i686
+ arch = x86_64
+ arch = armv6h
+ arch = armv7h
+ license = MIT
+ makedepends = go>=1.2
+ makedepends = git
+ makedepends = mercurial
+ makedepends = patch
+ depends = git>=1.7.1
+ optdepends = sqlite: SQLite support
+ optdepends = mariadb: MariaDB support
+ optdepends = postgresql: PostgreSQL support
+ optdepends = redis: Redis support
+ optdepends = memcached: MemCached support
+ optdepends = openssh: GIT over SSH support
+ conflicts = gogs-bin
+ conflicts = gogs
+ conflicts = gogs-git
+ options = !strip
+ options = !emptydirs
+ backup = srv/gogs/conf/app.ini
+ source = gogs.service
+ source = app.ini.patch
+ source = start.sh
+ source = helper.sh
+ source = gogs::git+https://github.com/gogits/gogs.git#branch=dev
+ sha512sums = 65bd06d530809917134b4fa2668136ada3e0cdc5a9c684ac422a973ad1c40c341d62cebf2ef14ee6275a134979d67cb314ec801a5a35ff1fb4e823aab671a151
+ sha512sums = a09134a50b7369715f65553003db954ca3193ee2556fc3d8aa98c717aa2f2b275d691f1c7c62464ec8f32e800d8ddf814c75546317ab623d2bd9331c5702380d
+ sha512sums = d759778b73d78fb705dad7b3cb486a2e366fdf3222bd170823579407a9aba9d281423b1026a22d142fc9abf620a40a14880254105129071956870e3048dd8bc3
+ sha512sums = 1e83441ebb24efe00e80f35eea6ed6d64a48194df3a3c90b02cd52a65099e8dfe046e0f914ac3dac7e4a30c854d967e2d5c928ee801f44053208dde2728fa17f
+ sha512sums = SKIP
+
+pkgname = gogs-git-dev
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..77ab98a60c9b
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,106 @@
+# Contributor: Thomas Laroche <tho.laroche@gmail.com>
+# Maintainer: Thomas Fanninger <thomas@fanninger.at>
+
+pkgname=gogs-git-dev
+_pkgname=gogs
+_branch=dev
+pkgver=20150116
+pkgrel=1
+epoch=1
+pkgdesc="Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language. This is the current git version from branch ${_branch}."
+arch=('i686' 'x86_64' 'armv6h' 'armv7h')
+url="http://gogs.io/"
+license=('MIT')
+depends=('git>=1.7.1')
+optdepends=('sqlite: SQLite support'
+ 'mariadb: MariaDB support'
+ 'postgresql: PostgreSQL support'
+ 'redis: Redis support'
+ 'memcached: MemCached support'
+ 'openssh: GIT over SSH support')
+makedepends=('go>=1.2' 'git' 'mercurial' 'patch')
+conflicts=('gogs-bin' 'gogs' 'gogs-git')
+options=('!strip' '!emptydirs')
+backup=('srv/gogs/conf/app.ini')
+
+install=gogs.install
+
+_gourl=github.com/gogits/$_pkgname
+source=('gogs.service'
+ 'app.ini.patch'
+ 'start.sh'
+ 'helper.sh'
+ "$_pkgname::git+https://${_gourl}.git#branch=${_branch}")
+
+sha512sums=('65bd06d530809917134b4fa2668136ada3e0cdc5a9c684ac422a973ad1c40c341d62cebf2ef14ee6275a134979d67cb314ec801a5a35ff1fb4e823aab671a151'
+ 'a09134a50b7369715f65553003db954ca3193ee2556fc3d8aa98c717aa2f2b275d691f1c7c62464ec8f32e800d8ddf814c75546317ab623d2bd9331c5702380d'
+ 'd759778b73d78fb705dad7b3cb486a2e366fdf3222bd170823579407a9aba9d281423b1026a22d142fc9abf620a40a14880254105129071956870e3048dd8bc3'
+ '1e83441ebb24efe00e80f35eea6ed6d64a48194df3a3c90b02cd52a65099e8dfe046e0f914ac3dac7e4a30c854d967e2d5c928ee801f44053208dde2728fa17f'
+ 'SKIP')
+
+_goroot="/usr/lib/go"
+
+pkgver(){
+ cd "$srcdir/$_pkgname"
+ echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD)
+}
+
+prepare() {
+ source $srcdir/helper.sh
+
+ export GOROOT=/usr/lib/go
+
+ msg2 "Prepare GO build enviroment"
+ rm -rf build
+ mkdir -p build/go
+ cd build/go
+
+ for f in "$GOROOT/"*; do
+ ln -s "$f"
+ done
+
+ rm pkg
+ mkdir pkg
+ cd pkg
+
+ for f in "$GOROOT/pkg/"*; do
+ ln -s "$f"
+ done
+
+ export GOROOT="$srcdir/build/go"
+ export GOPATH="$srcdir/build"
+
+ mkdir -p "$GOPATH/src/github.com/gogits"
+ mv "$srcdir/$_pkgname" $GOPATH/src/${_gourl}
+
+ msg2 "Check and download dependencies from .gopmfile"
+ get_gopm "$GOPATH/src/${_gourl}/.gopmfile" "$GOPATH/src"
+
+# go_get code.google.com/p/go.crypto "$GOPATH/src/go.crypto"
+
+ # Execute patch
+ msg2 "Execute patches"
+ patch -Np1 -i "$srcdir/app.ini.patch" "$GOPATH/src/${_gourl}/conf/app.ini"
+}
+
+build() {
+ cd $GOPATH/src/${_gourl}
+
+ msg2 "Build program"
+ go fix
+ go build -x -tags='sqlite redis memcache'
+}
+
+package() {
+ install -Dm0755 "$srcdir/start.sh" "$pkgdir/usr/share/$_pkgname/start.sh"
+ install -Dm0755 "$srcdir/build/src/${_gourl}/$_pkgname" "$pkgdir/usr/share/$_pkgname/$_pkgname"
+
+ cp -r "$srcdir/build/src/${_gourl}/conf" "$pkgdir/usr/share/$_pkgname"
+ mkdir -p "$pkgdir/usr/share/themes/gogs/default/"
+ cp -r "$srcdir/build/src/${_gourl}/public" "$pkgdir/usr/share/themes/gogs/default"
+ cp -r "$srcdir/build/src/${_gourl}/templates" "$pkgdir/usr/share/themes/gogs/default"
+
+ install -Dm0644 "$pkgdir/usr/share/$_pkgname/conf/app.ini" "$pkgdir/srv/$_pkgname/conf/app.ini"
+ install -Dm0644 "$srcdir/gogs.service" "$pkgdir/usr/lib/systemd/system/gogs.service"
+ install -Dm0644 "$srcdir/build/src/${_gourl}/LICENSE" "$pkgdir/usr/share/licenses/$_pkgname"
+}
diff --git a/README.md b/README.md
new file mode 100644
index 000000000000..ce120fcbb284
--- /dev/null
+++ b/README.md
@@ -0,0 +1,35 @@
+# Gogs
+PKGBUILD files for different versions of Gogs (Go Git Service).
+
+## Open points
+* ~~Systemd service support~~
+* ~~better file structure~~
+* ~~Publishing on https://aur.archlinux.org~~
+* Test
+ * MariaDB support
+ * PostgreSQL support
+* ~~Test on armv6h (Raspberry Pi), armv7h (Cubieboard 2) and on x86_64~~
+* Documentation for usage and configuration - Started with Archlinux Wiki page https://wiki.archlinux.org/index.php/Gogs
+* ~~Read dependencies out of ".gopmfile"~~
+
+## Install
+```
+$ wget https://aur.archlinux.org/packages/go/gogs-*/gogs-*.tar.gz
+$ tar -xvzf /<path to Tarball>/gogs-*.tar.gz
+$ cd <package-name>
+$ makepkg
+$ pacman -U gogs-*.tgz
+```
+
+## Configuration
+Enable and start systemd servicd
+```
+$ systemctl enable gogs.service
+$ systemctl start gogs.service
+```
+
+## Logging
+After start of the service every log entry is over journalctl displayable.
+```
+$ journalctl -f -u gogs.service
+```
diff --git a/app.ini.patch b/app.ini.patch
new file mode 100644
index 000000000000..7799f60f97a4
--- /dev/null
+++ b/app.ini.patch
@@ -0,0 +1,32 @@
+4c4
+< RUN_USER = git
+---
+> RUN_USER = gogs
+9c9
+< ROOT =
+---
+> ROOT = /srv/gogs/repo
+34c34
+< STATIC_ROOT_PATH =
+---
+> STATIC_ROOT_PATH = /usr/share/themes/gogs/default
+50c50
+< PATH = data/gogs.db
+---
+> PATH = /srv/gogs/sqlite/gogs.db
+163c163
+< PROVIDER_CONFIG = data/sessions
+---
+> PROVIDER_CONFIG = /srv/gogs/sessions
+178c178
+< AVATAR_UPLOAD_PATH = data/avatars
+---
+> AVATAR_UPLOAD_PATH = /srv/gogs/data/avatars
+187c187
+< PATH = data/attachments
+---
+> PATH = /srv/gogs/data/attachments
+202c202
+< ROOT_PATH =
+---
+> ROOT_PATH = /var/log/gogs
diff --git a/app_new.ini b/app_new.ini
new file mode 100644
index 000000000000..81bea278d008
--- /dev/null
+++ b/app_new.ini
@@ -0,0 +1,273 @@
+; App name that shows on every page title
+APP_NAME = Gogs: Go Git Service
+; Change it if you run locally
+RUN_USER = gogs
+; Either "dev", "prod" or "test", default is "dev"
+RUN_MODE = dev
+
+[repository]
+ROOT = /srv/gogs/repo
+SCRIPT_TYPE = bash
+
+[server]
+PROTOCOL = http
+DOMAIN = localhost
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+HTTP_ADDR =
+HTTP_PORT = 3000
+SSH_PORT = 22
+; Disable CDN even in "prod" mode
+OFFLINE_MODE = false
+DISABLE_ROUTER_LOG = false
+; Generate steps:
+; $ cd path/to/gogs/custom/https
+; $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com
+;
+; Or from a .pfx file exported from the Windows certificate store (do
+; not forget to export the private key):
+; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys
+; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
+CERT_FILE = custom/https/cert.pem
+KEY_FILE = custom/https/key.pem
+; Upper level of template and static file path
+; default is the path where Gogs is executed
+STATIC_ROOT_PATH = /usr/share/themes/gogs/default
+; Application level GZIP support
+ENABLE_GZIP = false
+; Landing page for non-logged users, can be "home" or "explore"
+LANDING_PAGE = home
+
+[database]
+; Either "mysql", "postgres" or "sqlite3", it's your choice
+DB_TYPE = mysql
+HOST = 127.0.0.1:3306
+NAME = gogs
+USER = root
+PASSWD =
+; For "postgres" only, either "disable", "require" or "verify-full"
+SSL_MODE = disable
+; For "sqlite3" only
+PATH = /srv/gogs/sqlite/gogs.db
+
+[admin]
+
+[security]
+INSTALL_LOCK = false
+; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
+SECRET_KEY = !#@FDEWREWR&*(
+; Auto-login remember days
+LOGIN_REMEMBER_DAYS = 7
+COOKIE_USERNAME = gogs_awesome
+COOKIE_REMEMBER_NAME = gogs_incredible
+; Reverse proxy authentication header name of user name
+REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
+
+[service]
+ACTIVE_CODE_LIVE_MINUTES = 180
+RESET_PASSWD_CODE_LIVE_MINUTES = 180
+; User need to confirm e-mail for registration
+REGISTER_EMAIL_CONFIRM = false
+; Does not allow register and admin create account only
+DISABLE_REGISTRATION = false
+; User must sign in to view anything.
+REQUIRE_SIGNIN_VIEW = false
+; Cache avatar as picture
+ENABLE_CACHE_AVATAR = false
+; Mail notification
+ENABLE_NOTIFY_MAIL = false
+; More detail: https://github.com/gogits/gogs/issues/165
+ENABLE_REVERSE_PROXY_AUTHENTICATION = false
+ENABLE_REVERSE_PROXY_AUTO_REGISTERATION = false
+
+[webhook]
+; Cron task interval in minutes
+TASK_INTERVAL = 1
+; Deliver timeout in seconds
+DELIVER_TIMEOUT = 5
+
+[mailer]
+ENABLED = false
+; Buffer length of channel, keep it as it is if you don't know what it is.
+SEND_BUFFER_LEN = 10
+; Name displayed in mail title
+SUBJECT = %(APP_NAME)s
+; Mail server
+; Gmail: smtp.gmail.com:587
+; QQ: smtp.qq.com:25
+; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
+HOST =
+; Do not verify the certificate of the server. Only use this for self-signed certificates
+SKIP_VERIFY =
+; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
+FROM =
+; Mailer user name and password
+USER =
+PASSWD =
+
+[oauth]
+ENABLED = false
+
+[oauth.github]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://api.github.com/user
+AUTH_URL = https://github.com/login/oauth/authorize
+TOKEN_URL = https://github.com/login/oauth/access_token
+
+; Get client id and secret from
+; https://console.developers.google.com/project
+[oauth.google]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
+AUTH_URL = https://accounts.google.com/o/oauth2/auth
+TOKEN_URL = https://accounts.google.com/o/oauth2/token
+
+[oauth.qq]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = get_user_info
+; QQ 互联
+AUTH_URL = https://graph.qq.com/oauth2.0/authorize
+TOKEN_URL = https://graph.qq.com/oauth2.0/token
+
+[oauth.weibo]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = all
+AUTH_URL = https://api.weibo.com/oauth2/authorize
+TOKEN_URL = https://api.weibo.com/oauth2/access_token
+
+[cache]
+; Either "memory", "redis", or "memcache", default is "memory"
+ADAPTER = memory
+; For "memory" only, GC interval in seconds, default is 60
+INTERVAL = 60
+; For "redis" and "memcache", connection host address
+; redis: `:6039`
+; memcache: `127.0.0.1:11211`
+HOST =
+
+[session]
+; Either "memory", "file", "redis" or "mysql", default is "memory"
+PROVIDER = memory
+; Provider config options
+; memory: not have any config yet
+; file: session file path, e.g. `data/sessions`
+; redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,gogs`
+; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
+PROVIDER_CONFIG = /srv/gogs/sessions
+; Session cookie name
+COOKIE_NAME = i_like_gogits
+; If you use session in https only, default is false
+COOKIE_SECURE = false
+; Enable set cookie, default is true
+ENABLE_SET_COOKIE = true
+; Session GC time interval, default is 86400
+GC_INTERVAL_TIME = 86400
+; Session life time, default is 86400
+SESSION_LIFE_TIME = 86400
+
+[picture]
+; The place to picture data, either "server" or "qiniu", default is "server"
+SERVICE = server
+AVATAR_UPLOAD_PATH = /srv/gogs/data/avatars
+; Chinese users can choose "duoshuo"
+GRAVATAR_SOURCE = gravatar
+DISABLE_GRAVATAR = false
+
+[attachment]
+; Whether attachments are enabled. Defaults to `true`
+ENABLE = true
+; Path for attachments. Defaults to `data/attachments`
+PATH = /srv/gogs/data/attachments
+; One or more allowed types, e.g. image/jpeg|image/png
+ALLOWED_TYPES = image/jpeg|image/png
+; Max size of each file. Defaults to 32MB
+MAX_SIZE = 32
+; Max number of files per upload. Defaults to 10
+MAX_FILES = 10
+
+[time]
+; Specifies the format for fully outputed dates. Defaults to RFC1123
+; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
+; For more information about the format see http://golang.org/pkg/time/#pkg-constants
+FORMAT =
+
+[log]
+ROOT_PATH = /var/log/gogs
+; Either "console", "file", "conn", "smtp" or "database", default is "console"
+; Use comma to separate multiple modes, e.g. "console, file"
+MODE = console
+; Buffer length of channel, keep it as it is if you don't know what it is.
+BUFFER_LEN = 10000
+; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
+LEVEL = Trace
+
+; For "console" mode only
+[log.console]
+LEVEL =
+
+; For "file" mode only
+[log.file]
+LEVEL =
+; This enables automated log rotate(switch of following options), default is true
+LOG_ROTATE = true
+; Max line number of single file, default is 1000000
+MAX_LINES = 1000000
+; Max size shift of single file, default is 28 means 1 << 28, 256MB
+MAX_SIZE_SHIFT = 28
+; Segment log daily, default is true
+DAILY_ROTATE = true
+; Expired days of log file(delete after max days), default is 7
+MAX_DAYS = 7
+
+; For "conn" mode only
+[log.conn]
+LEVEL =
+; Reconnect host for every single message, default is false
+RECONNECT_ON_MSG = false
+; Try to reconnect when connection is lost, default is false
+RECONNECT = false
+; Either "tcp", "unix" or "udp", default is "tcp"
+PROTOCOL = tcp
+; Host address
+ADDR =
+
+; For "smtp" mode only
+[log.smtp]
+LEVEL =
+; Name displayed in mail title, default is "Diagnostic message from serve"
+SUBJECT = Diagnostic message from serve
+; Mail server
+HOST =
+; Mailer user name and password
+USER =
+PASSWD =
+; Receivers, can be one or more, e.g. ["1@example.com","2@example.com"]
+RECEIVERS =
+
+; For "database" mode only
+[log.database]
+LEVEL =
+; Either "mysql" or "postgres"
+DRIVER =
+; Based on xorm, e.g.: root:root@localhost/gogs?charset=utf8
+CONN =
+
+[git]
+MAX_GITDIFF_LINES = 10000
+; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
+; see more on http://git-scm.com/docs/git-fsck/1.7.5
+FSCK_ARGS =
+; Arguments for command 'git gc', e.g.: "--aggressive --auto"
+; see more on http://git-scm.com/docs/git-gc/1.7.5
+GC_ARGS =
+
+[i18n]
+LANGS = en-US,zh-CN,zh-HK,de-DE,fr-CA,nl-NL,lv-LV
+NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu \ No newline at end of file
diff --git a/app_old.ini b/app_old.ini
new file mode 100644
index 000000000000..5a74ea2dc857
--- /dev/null
+++ b/app_old.ini
@@ -0,0 +1,273 @@
+; App name that shows on every page title
+APP_NAME = Gogs: Go Git Service
+; Change it if you run locally
+RUN_USER = git
+; Either "dev", "prod" or "test", default is "dev"
+RUN_MODE = dev
+
+[repository]
+ROOT =
+SCRIPT_TYPE = bash
+
+[server]
+PROTOCOL = http
+DOMAIN = localhost
+ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
+HTTP_ADDR =
+HTTP_PORT = 3000
+SSH_PORT = 22
+; Disable CDN even in "prod" mode
+OFFLINE_MODE = false
+DISABLE_ROUTER_LOG = false
+; Generate steps:
+; $ cd path/to/gogs/custom/https
+; $ ./gogs cert -ca=true -duration=8760h0m0s -host=myhost.example.com
+;
+; Or from a .pfx file exported from the Windows certificate store (do
+; not forget to export the private key):
+; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys
+; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes
+CERT_FILE = custom/https/cert.pem
+KEY_FILE = custom/https/key.pem
+; Upper level of template and static file path
+; default is the path where Gogs is executed
+STATIC_ROOT_PATH =
+; Application level GZIP support
+ENABLE_GZIP = false
+; Landing page for non-logged users, can be "home" or "explore"
+LANDING_PAGE = home
+
+[database]
+; Either "mysql", "postgres" or "sqlite3", it's your choice
+DB_TYPE = mysql
+HOST = 127.0.0.1:3306
+NAME = gogs
+USER = root
+PASSWD =
+; For "postgres" only, either "disable", "require" or "verify-full"
+SSL_MODE = disable
+; For "sqlite3" only
+PATH = data/gogs.db
+
+[admin]
+
+[security]
+INSTALL_LOCK = false
+; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!!
+SECRET_KEY = !#@FDEWREWR&*(
+; Auto-login remember days
+LOGIN_REMEMBER_DAYS = 7
+COOKIE_USERNAME = gogs_awesome
+COOKIE_REMEMBER_NAME = gogs_incredible
+; Reverse proxy authentication header name of user name
+REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
+
+[service]
+ACTIVE_CODE_LIVE_MINUTES = 180
+RESET_PASSWD_CODE_LIVE_MINUTES = 180
+; User need to confirm e-mail for registration
+REGISTER_EMAIL_CONFIRM = false
+; Does not allow register and admin create account only
+DISABLE_REGISTRATION = false
+; User must sign in to view anything.
+REQUIRE_SIGNIN_VIEW = false
+; Cache avatar as picture
+ENABLE_CACHE_AVATAR = false
+; Mail notification
+ENABLE_NOTIFY_MAIL = false
+; More detail: https://github.com/gogits/gogs/issues/165
+ENABLE_REVERSE_PROXY_AUTHENTICATION = false
+ENABLE_REVERSE_PROXY_AUTO_REGISTERATION = false
+
+[webhook]
+; Cron task interval in minutes
+TASK_INTERVAL = 1
+; Deliver timeout in seconds
+DELIVER_TIMEOUT = 5
+
+[mailer]
+ENABLED = false
+; Buffer length of channel, keep it as it is if you don't know what it is.
+SEND_BUFFER_LEN = 10
+; Name displayed in mail title
+SUBJECT = %(APP_NAME)s
+; Mail server
+; Gmail: smtp.gmail.com:587
+; QQ: smtp.qq.com:25
+; Note, if the port ends with "465", SMTPS will be used. Using STARTTLS on port 587 is recommended per RFC 6409. If the server supports STARTTLS it will always be used.
+HOST =
+; Do not verify the certificate of the server. Only use this for self-signed certificates
+SKIP_VERIFY =
+; Mail from address, RFC 5322. This can be just an email address, or the "Name" <email@example.com> format
+FROM =
+; Mailer user name and password
+USER =
+PASSWD =
+
+[oauth]
+ENABLED = false
+
+[oauth.github]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://api.github.com/user
+AUTH_URL = https://github.com/login/oauth/authorize
+TOKEN_URL = https://github.com/login/oauth/access_token
+
+; Get client id and secret from
+; https://console.developers.google.com/project
+[oauth.google]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
+AUTH_URL = https://accounts.google.com/o/oauth2/auth
+TOKEN_URL = https://accounts.google.com/o/oauth2/token
+
+[oauth.qq]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = get_user_info
+; QQ 互联
+AUTH_URL = https://graph.qq.com/oauth2.0/authorize
+TOKEN_URL = https://graph.qq.com/oauth2.0/token
+
+[oauth.weibo]
+ENABLED = false
+CLIENT_ID =
+CLIENT_SECRET =
+SCOPES = all
+AUTH_URL = https://api.weibo.com/oauth2/authorize
+TOKEN_URL = https://api.weibo.com/oauth2/access_token
+
+[cache]
+; Either "memory", "redis", or "memcache", default is "memory"
+ADAPTER = memory
+; For "memory" only, GC interval in seconds, default is 60
+INTERVAL = 60
+; For "redis" and "memcache", connection host address
+; redis: `:6039`
+; memcache: `127.0.0.1:11211`
+HOST =
+
+[session]
+; Either "memory", "file", "redis" or "mysql", default is "memory"
+PROVIDER = memory
+; Provider config options
+; memory: not have any config yet
+; file: session file path, e.g. `data/sessions`
+; redis: config like redis server addr, poolSize, password, e.g. `127.0.0.1:6379,100,gogs`
+; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table`
+PROVIDER_CONFIG = data/sessions
+; Session cookie name
+COOKIE_NAME = i_like_gogits
+; If you use session in https only, default is false
+COOKIE_SECURE = false
+; Enable set cookie, default is true
+ENABLE_SET_COOKIE = true
+; Session GC time interval, default is 86400
+GC_INTERVAL_TIME = 86400
+; Session life time, default is 86400
+SESSION_LIFE_TIME = 86400
+
+[picture]
+; The place to picture data, either "server" or "qiniu", default is "server"
+SERVICE = server
+AVATAR_UPLOAD_PATH = data/avatars
+; Chinese users can choose "duoshuo"
+GRAVATAR_SOURCE = gravatar
+DISABLE_GRAVATAR = false
+
+[attachment]
+; Whether attachments are enabled. Defaults to `true`
+ENABLE = true
+; Path for attachments. Defaults to `data/attachments`
+PATH = data/attachments
+; One or more allowed types, e.g. image/jpeg|image/png
+ALLOWED_TYPES = image/jpeg|image/png
+; Max size of each file. Defaults to 32MB
+MAX_SIZE = 32
+; Max number of files per upload. Defaults to 10
+MAX_FILES = 10
+
+[time]
+; Specifies the format for fully outputed dates. Defaults to RFC1123
+; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano
+; For more information about the format see http://golang.org/pkg/time/#pkg-constants
+FORMAT =
+
+[log]
+ROOT_PATH =
+; Either "console", "file", "conn", "smtp" or "database", default is "console"
+; Use comma to separate multiple modes, e.g. "console, file"
+MODE = console
+; Buffer length of channel, keep it as it is if you don't know what it is.
+BUFFER_LEN = 10000
+; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace"
+LEVEL = Trace
+
+; For "console" mode only
+[log.console]
+LEVEL =
+
+; For "file" mode only
+[log.file]
+LEVEL =
+; This enables automated log rotate(switch of following options), default is true
+LOG_ROTATE = true
+; Max line number of single file, default is 1000000
+MAX_LINES = 1000000
+; Max size shift of single file, default is 28 means 1 << 28, 256MB
+MAX_SIZE_SHIFT = 28
+; Segment log daily, default is true
+DAILY_ROTATE = true
+; Expired days of log file(delete after max days), default is 7
+MAX_DAYS = 7
+
+; For "conn" mode only
+[log.conn]
+LEVEL =
+; Reconnect host for every single message, default is false
+RECONNECT_ON_MSG = false
+; Try to reconnect when connection is lost, default is false
+RECONNECT = false
+; Either "tcp", "unix" or "udp", default is "tcp"
+PROTOCOL = tcp
+; Host address
+ADDR =
+
+; For "smtp" mode only
+[log.smtp]
+LEVEL =
+; Name displayed in mail title, default is "Diagnostic message from serve"
+SUBJECT = Diagnostic message from serve
+; Mail server
+HOST =
+; Mailer user name and password
+USER =
+PASSWD =
+; Receivers, can be one or more, e.g. ["1@example.com","2@example.com"]
+RECEIVERS =
+
+; For "database" mode only
+[log.database]
+LEVEL =
+; Either "mysql" or "postgres"
+DRIVER =
+; Based on xorm, e.g.: root:root@localhost/gogs?charset=utf8
+CONN =
+
+[git]
+MAX_GITDIFF_LINES = 10000
+; Arguments for command 'git fsck', e.g.: "--unreachable --tags"
+; see more on http://git-scm.com/docs/git-fsck/1.7.5
+FSCK_ARGS =
+; Arguments for command 'git gc', e.g.: "--aggressive --auto"
+; see more on http://git-scm.com/docs/git-gc/1.7.5
+GC_ARGS =
+
+[i18n]
+LANGS = en-US,zh-CN,zh-HK,de-DE,fr-CA,nl-NL,lv-LV
+NAMES = English,简体中文,繁體中文,Deutsch,Français,Nederlands,Latviešu \ No newline at end of file
diff --git a/gogs.install b/gogs.install
new file mode 100644
index 000000000000..0402a43106df
--- /dev/null
+++ b/gogs.install
@@ -0,0 +1,42 @@
+pre_install() {
+ if ! getent group gogs >/dev/null; then
+ groupadd --system gogs
+ fi
+ if ! getent passwd gogs >/dev/null; then
+ useradd -m --system -c 'gogs daemon users' -g gogs -s /bin/false gogs
+ fi
+ chsh gogs -s /usr/bin/bash
+}
+
+post_install(){
+ mkdir -p /var/log/gogs
+ chown -R gogs:gogs /var/log/gogs
+ chown -R gogs:gogs /srv/gogs
+
+ systemctl daemon-reload
+}
+
+pre_upgrade(){
+ systemctl stop gogs.service
+
+ pre_install $1
+}
+
+post_upgrade() {
+ post_install $1
+ systemctl start gogs.service
+}
+
+pre_remove() {
+ systemctl stop gogs.service
+ systemctl disable gogs.service
+}
+
+post_remove() {
+ if getent passwd gogs >/dev/null; then
+ userdel -r gogs
+ fi
+ if getent group gogs >/dev/null; then
+ groupdel gogs
+ fi
+}
diff --git a/gogs.service b/gogs.service
new file mode 100644
index 000000000000..2b4aaec4b17c
--- /dev/null
+++ b/gogs.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Gogs (Go Git Service) server
+After=syslog.target
+After=network.target
+
+[Service]
+Type=simple
+User=gogs
+Group=gogs
+ExecStart=/usr/share/gogs/start.sh
+WorkingDirectory=/usr/share/gogs/
+
+[Install]
+WantedBy=multi-user.target
diff --git a/helper.sh b/helper.sh
new file mode 100644
index 000000000000..330e225f0b4a
--- /dev/null
+++ b/helper.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+# $1 = package name
+# $2 = target directory path
+# $3 = branch/commit/revision string, if empty then maste ist used
+function go_get {
+ if [[ $1 == github.com* ]]
+ then
+ get_git $1 $2 $3
+ elif [[ $1 == code.google.com* ]]
+ then
+ get_hg $1 $2 $3
+ else
+ go get $1
+ fi
+}
+
+# $1 = git package
+# $2 = target directory path
+# $3 = branch/commit/revision string, if empty then maste ist used
+function get_git {
+ git clone https://$1 $2
+ if [[ $3 != "master" ]] && [[ ${3:0} == commit* ]]
+ then
+ cd $2
+ git checkout ${3:7}
+ elif [[ $3 != "master" ]] && [[ ${3:0} == tag* ]]
+ then
+ cd $2
+ git checkout tags/${3:4}
+ else
+ cd $2
+ git checkout ${3:7}
+ fi
+}
+
+# $1 = mercury package name
+# $2 = target directory path
+# $3 = branch/commit/revision string, if empty then maste ist used
+function get_hg {
+ if [[ $3 == "master" ]] || [[ $3 == "" ]]
+ then
+ hg clone https://$1 $2
+ else
+ hg clone https://$1 -r $3 $2
+ fi
+}
+
+# Read the .gopmfile file and clone the branch/commits of the depends
+# $1 = .gopmfile file path
+# $2 = target directory path
+function get_gopm {
+ local startStr=""
+ local revStr=""
+
+ while read line
+ do
+ if [[ $startStr == 'X' ]] && [[ $line == '' ]]
+ then
+ break
+ elif [[ $startStr == 'X' ]]
+ then
+ IFS="=" read -a array <<< "$line"
+ if [[ ${array[1]} != "" ]]
+ then
+ local revStr=${array[1]//\`}
+ go_get ${array[0]} "$2/${array[0]}" $revStr
+ else
+ go_get ${array[0]} "$2/${array[0]}" master
+ fi
+ elif [[ $line == '[deps]' ]]
+ then
+ local startStr="X"
+ fi
+ done <$1
+} \ No newline at end of file
diff --git a/start.sh b/start.sh
new file mode 100644
index 000000000000..7688f3d0b983
--- /dev/null
+++ b/start.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+export GOGS_CUSTOM="/srv/gogs"
+/usr/share/gogs/gogs web \ No newline at end of file