This document is driven from https://docs.sourcegraph.com/dev/local_development.
Gogs is developed in Go, please take A Tour of Go if you haven't done so!
Gogs is built and runs as a single binary and meant to be cross platform. Therefore, you should be able to develop Gogs in any major platforms you prefer.
Gogs has the following dependencies:
ENGINE=InnoDB
(v5.7 or higher)Install dependencies:
brew install go postgresql git go-bindata
brew services start postgresql
Update repositories:
sudo apt-get update
sudo apt install -y make git-all postgresql postgresql-contrib golang-go
go get -u github.com/kevinburke/go-bindata/...
Configure startup services:
sudo systemctl enable postgresql
psql
, the PostgreSQL command line client, is on your $PATH
.
Homebrew does not put it there by default. Homebrew gives you the command to run to insert psql
in your path in the "Caveats" section of brew info postgresql
. Alternatively, you can use the command below. It might need to be adjusted depending on your Homebrew prefix (/usr/local
below) and shell (bash below).hash psql || { echo 'export PATH="/usr/local/opt/postgresql/bin:$PATH"' >> ~/.bash_profile }
source ~/.bash_profile
You need a fresh Postgres database and a database user that has full ownership of that database.
Create a database for the current Unix user:
# For Linux users, first access the postgres user shell
sudo su - postgres
createdb
Create the Gogs user and password:
createuser --superuser gogs
psql -c "ALTER USER gogs WITH PASSWORD '<YOUR PASSWORD HERE>';"
createdb --owner=gogs --encoding=UTF8 --template=template0 gogs
Generally, you don't need a full clone, so set --depth
to 10
:
git clone --depth 10 https://github.com/gogs/gogs.git
Create a custom/conf/app.ini
file inside the repository and put the following configuration (everything under custom/
directory is used to override default files and is excluded by .gitignore
):
[database]
DB_TYPE = postgres
HOST = 127.0.0.1:5432
NAME = gogs
USER = gogs
PASSWD = <YOUR PASSWORD HERE>
SSL_MODE = disable
make web
Sometimes you will want to develop Gogs but it just so happens you will be on a plane or a train or perhaps a beach, and you will have no WiFi. And you may raise your fist toward heaven and say something like, "Why, we can put a man on the moon, so why can't we develop high-quality Git hosting without an Internet connection?" But lower your hand back to your keyboard and fret no further, for the year is 2020, and you can develop Gogs with no connectivity by setting the following configuration in your custom/conf/app.ini
:
[server]
OFFLINE_MODE = true