"Fossies" - the Fresh Open Source Software Archive

Member "gogs-0.12.3/docs/dev/local_development.md" (7 Oct 2020, 5343 Bytes) of package /linux/misc/gogs-0.12.3.tar.gz:

As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format). Alternatively you can here view or download the uninterpreted source code file. A member file download can also be achieved by clicking within a package contents listing on the according byte size field.

Getting started with developing Gogs

This document is driven from https://docs.sourcegraph.com/dev/local_development.

Gogs is written 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.

Step 1: Install dependencies

Gogs has the following dependencies:


  1. Install Homebrew.

  2. Install dependencies:

    brew install go postgresql git go-bindata npm
    npm install -g less
    npm install -g less-plugin-clean-css
  3. Configure PostgreSQL to start automatically:

    brew services start postgresql
  4. Ensure 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


  1. Add package repositories:

    curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
  2. Update repositories:

    sudo apt-get update
  3. Install dependencies:

    sudo apt install -y make git-all postgresql postgresql-contrib golang-go nodejs
    npm install -g less
    # Watch out, it is not github.com/go-bindata/go-bindata!
    go get -u github.com/kevinburke/go-bindata/...
  4. Configure startup services:

    sudo systemctl enable postgresql

Step 2: Initialize your database

You need a fresh Postgres database and a database user that has full ownership of that database.

  1. Create a database for the current Unix user:

    # For Linux users, first access the postgres user shell
    sudo su - postgres
  2. Create the Gogs user and password:

    createuser --superuser gogs
  3. Create the Gogs database

    createdb --owner=gogs --encoding=UTF8 --template=template0 gogs

Step 3: Get the code

Generally, you don't need a full clone, so set --depth to 10:

git clone --depth 10 https://github.com/gogs/gogs.git

NOTE The repository has Go Modules enabled, please clone to somewhere outside of your $GOPATH.

Step 4: Configure database settings

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):

DB_TYPE = postgres
NAME = gogs
USER = gogs
SSL_MODE = disable

Step 5: Start the server

make web

You would have to re-run this command after changing Go files, or any file under conf/, template/ and public/ directories.

Other nice things

Load HTML templates and static files from disk

When you are actively working on HTML templates and static files during development, you may want to enable the following configuration to avoid recompiling and restarting Gogs every time you make a change to files under template/ and public/ directories:


Offline development

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: