Add Node.js build dep, remove built js/css files (#9114)
- Added Node.js as build dependency and removes build files from git. - Added version checks for both Go and Node.js. - Overhauled the js/css make target to only run when needed. - Merged the `generate` make target into `build` as per suggestion. Fixes: https://github.com/go-gitea/gitea/issues/6782 Fixes: https://github.com/go-gitea/gitea/issues/9216
This commit is contained in:
parent
e80fe201c0
commit
d9c67a8c90
13 changed files with 93 additions and 1428 deletions
|
@ -56,11 +56,10 @@ steps:
|
||||||
|
|
||||||
- name: pre-build
|
- name: pre-build
|
||||||
pull: always
|
pull: always
|
||||||
image: webhippie/nodejs:latest
|
image: node:10 # this step is kept at the lowest version of node that we support
|
||||||
commands:
|
commands:
|
||||||
- make css
|
- make css
|
||||||
- make js
|
- make js
|
||||||
- bash -c '[ -z "$(git status --porcelain public/js public/css)" ] || (echo "Generated js/css files do not match" && git status --porcelain public/js public/css && exit 1)'
|
|
||||||
|
|
||||||
- name: build-without-gcc
|
- name: build-without-gcc
|
||||||
pull: always
|
pull: always
|
||||||
|
@ -69,6 +68,7 @@ steps:
|
||||||
GO111MODULE: on
|
GO111MODULE: on
|
||||||
GOPROXY: off
|
GOPROXY: off
|
||||||
commands:
|
commands:
|
||||||
|
- curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
|
||||||
- go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag
|
- go build -mod=vendor -o gitea_no_gcc # test if build succeeds without the sqlite tag
|
||||||
|
|
||||||
- name: build-linux-386
|
- name: build-linux-386
|
||||||
|
@ -80,12 +80,14 @@ steps:
|
||||||
GOOS: linux
|
GOOS: linux
|
||||||
GOARCH: 386
|
GOARCH: 386
|
||||||
commands:
|
commands:
|
||||||
|
- curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
|
||||||
- go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit
|
- go build -mod=vendor -o gitea_linux_386 # test if compatible with 32 bit
|
||||||
|
|
||||||
- name: build
|
- name: build
|
||||||
pull: always
|
pull: always
|
||||||
image: golang:1.13
|
image: golang:1.13
|
||||||
commands:
|
commands:
|
||||||
|
- curl -sL https://deb.nodesource.com/setup_12.x | bash - && apt -y install nodejs
|
||||||
- make clean
|
- make clean
|
||||||
- make generate
|
- make generate
|
||||||
- make golangci-lint
|
- make golangci-lint
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -69,6 +69,8 @@ coverage.all
|
||||||
/modules/indexer/issues/indexers
|
/modules/indexer/issues/indexers
|
||||||
routers/repo/authorized_keys
|
routers/repo/authorized_keys
|
||||||
/yarn.lock
|
/yarn.lock
|
||||||
|
/public/js
|
||||||
|
/public/css
|
||||||
|
|
||||||
# Snapcraft
|
# Snapcraft
|
||||||
snap/.snapcraft/
|
snap/.snapcraft/
|
||||||
|
|
|
@ -11,7 +11,7 @@ ARG TAGS="sqlite sqlite_unlock_notify"
|
||||||
ENV TAGS "bindata $TAGS"
|
ENV TAGS "bindata $TAGS"
|
||||||
|
|
||||||
#Build deps
|
#Build deps
|
||||||
RUN apk --no-cache add build-base git
|
RUN apk --no-cache add build-base git nodejs npm
|
||||||
|
|
||||||
#Setup repo
|
#Setup repo
|
||||||
COPY . ${GOPATH}/src/code.gitea.io/gitea
|
COPY . ${GOPATH}/src/code.gitea.io/gitea
|
||||||
|
|
93
Makefile
93
Makefile
|
@ -18,7 +18,6 @@ else
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
BINDATA := modules/{options,public,templates}/bindata.go
|
|
||||||
GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go")
|
GOFILES := $(shell find . -name "*.go" -type f ! -path "./vendor/*" ! -path "*/bindata.go")
|
||||||
GOFMT ?= gofmt -s
|
GOFMT ?= gofmt -s
|
||||||
|
|
||||||
|
@ -42,7 +41,17 @@ endif
|
||||||
LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
|
LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
|
||||||
|
|
||||||
PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations/migration-test,$(filter-out code.gitea.io/gitea/integrations,$(shell GO111MODULE=on $(GO) list -mod=vendor ./... | grep -v /vendor/)))
|
PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations/migration-test,$(filter-out code.gitea.io/gitea/integrations,$(shell GO111MODULE=on $(GO) list -mod=vendor ./... | grep -v /vendor/)))
|
||||||
SOURCES ?= $(shell find . -name "*.go" -type f)
|
|
||||||
|
GO_SOURCES ?= $(shell find . -name "*.go" -type f)
|
||||||
|
JS_SOURCES ?= $(shell find web_src/js web_src/css -type f)
|
||||||
|
CSS_SOURCES ?= $(shell find web_src/less -type f)
|
||||||
|
|
||||||
|
JS_DEST := public/js/index.js
|
||||||
|
CSS_DEST := public/css/index.css
|
||||||
|
BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go
|
||||||
|
|
||||||
|
JS_DEST_DIR := public/js
|
||||||
|
CSS_DEST_DIR := public/css
|
||||||
|
|
||||||
TAGS ?=
|
TAGS ?=
|
||||||
|
|
||||||
|
@ -80,10 +89,31 @@ all: build
|
||||||
|
|
||||||
include docker/Makefile
|
include docker/Makefile
|
||||||
|
|
||||||
|
.PHONY: go-check
|
||||||
|
go-check:
|
||||||
|
$(eval GO_VERSION := $(shell printf "%03d%03d%03d" $(shell go version | grep -Eo '[0-9]+\.?[0-9]+?\.?[0-9]?\s' | tr '.' ' ');))
|
||||||
|
@if [ "$(GO_VERSION)" -lt "001011000" ]; then \
|
||||||
|
echo "Gitea requires Go 1.11.0 or greater to build. You can get it at https://golang.org/dl/"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: node-check
|
||||||
|
node-check:
|
||||||
|
$(eval NODE_VERSION := $(shell printf "%03d%03d%03d" $(shell node -v | grep -Eo '[0-9]+\.?[0-9]+?\.?[0-9]?' | tr '.' ' ');))
|
||||||
|
$(eval NPM_MISSING := $(shell hash npm > /dev/null 2>&1 || echo 1))
|
||||||
|
@if [ "$(NODE_VERSION)" -lt "010000000" -o "$(NPM_MISSING)" = "1" ]; then \
|
||||||
|
echo "Gitea requires Node.js 10.0.0 or greater and npm to build. You can get it at https://nodejs.org/en/download/"; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
.PHONY: clean-all
|
||||||
|
clean-all: clean
|
||||||
|
rm -rf $(JS_DEST_DIR) $(CSS_DEST_DIR)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(GO) clean -i ./...
|
$(GO) clean -i ./...
|
||||||
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA) \
|
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA_DEST) \
|
||||||
integrations*.test \
|
integrations*.test \
|
||||||
integrations/gitea-integration-pgsql/ integrations/gitea-integration-mysql/ integrations/gitea-integration-mysql8/ integrations/gitea-integration-sqlite/ \
|
integrations/gitea-integration-pgsql/ integrations/gitea-integration-mysql/ integrations/gitea-integration-mysql8/ integrations/gitea-integration-sqlite/ \
|
||||||
integrations/gitea-integration-mssql/ integrations/indexers-mysql/ integrations/indexers-mysql8/ integrations/indexers-pgsql integrations/indexers-sqlite \
|
integrations/gitea-integration-mssql/ integrations/indexers-mysql/ integrations/indexers-mysql8/ integrations/indexers-pgsql integrations/indexers-sqlite \
|
||||||
|
@ -309,42 +339,42 @@ bench-pgsql: integrations.pgsql.test generate-ini-pgsql
|
||||||
integration-test-coverage: integrations.cover.test generate-ini-mysql
|
integration-test-coverage: integrations.cover.test generate-ini-mysql
|
||||||
GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
|
GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
|
||||||
|
|
||||||
integrations.mysql.test: $(SOURCES)
|
integrations.mysql.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql.test
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql.test
|
||||||
|
|
||||||
integrations.mysql8.test: $(SOURCES)
|
integrations.mysql8.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql8.test
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql8.test
|
||||||
|
|
||||||
integrations.pgsql.test: $(SOURCES)
|
integrations.pgsql.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.pgsql.test
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.pgsql.test
|
||||||
|
|
||||||
integrations.mssql.test: $(SOURCES)
|
integrations.mssql.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mssql.test
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mssql.test
|
||||||
|
|
||||||
integrations.sqlite.test: $(SOURCES)
|
integrations.sqlite.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
|
||||||
|
|
||||||
integrations.cover.test: $(SOURCES)
|
integrations.cover.test: $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -coverpkg $(shell echo $(PACKAGES) | tr ' ' ',') -o integrations.cover.test
|
GO111MODULE=on $(GO) test -mod=vendor -c code.gitea.io/gitea/integrations -coverpkg $(shell echo $(PACKAGES) | tr ' ' ',') -o integrations.cover.test
|
||||||
|
|
||||||
.PHONY: migrations.mysql.test
|
.PHONY: migrations.mysql.test
|
||||||
migrations.mysql.test: $(SOURCES)
|
migrations.mysql.test: $(GO_SOURCES)
|
||||||
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql.test
|
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql.test
|
||||||
|
|
||||||
.PHONY: migrations.mysql8.test
|
.PHONY: migrations.mysql8.test
|
||||||
migrations.mysql8.test: $(SOURCES)
|
migrations.mysql8.test: $(GO_SOURCES)
|
||||||
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql8.test
|
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql8.test
|
||||||
|
|
||||||
.PHONY: migrations.pgsql.test
|
.PHONY: migrations.pgsql.test
|
||||||
migrations.pgsql.test: $(SOURCES)
|
migrations.pgsql.test: $(GO_SOURCES)
|
||||||
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.pgsql.test
|
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.pgsql.test
|
||||||
|
|
||||||
.PHONY: migrations.mssql.test
|
.PHONY: migrations.mssql.test
|
||||||
migrations.mssql.test: $(SOURCES)
|
migrations.mssql.test: $(GO_SOURCES)
|
||||||
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mssql.test
|
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.mssql.test
|
||||||
|
|
||||||
.PHONY: migrations.sqlite.test
|
.PHONY: migrations.sqlite.test
|
||||||
migrations.sqlite.test: $(SOURCES)
|
migrations.sqlite.test: $(GO_SOURCES)
|
||||||
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
|
$(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
|
||||||
|
|
||||||
.PHONY: check
|
.PHONY: check
|
||||||
|
@ -354,10 +384,16 @@ check: test
|
||||||
install: $(wildcard *.go)
|
install: $(wildcard *.go)
|
||||||
$(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
|
$(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
|
||||||
|
|
||||||
.PHONY: build
|
.PHONY: go
|
||||||
build: $(EXECUTABLE)
|
go: go-check $(EXECUTABLE)
|
||||||
|
|
||||||
$(EXECUTABLE): $(SOURCES)
|
.PHONY: go-all
|
||||||
|
go-all: go-check generate go
|
||||||
|
|
||||||
|
.PHONY: build
|
||||||
|
build: js css go-all
|
||||||
|
|
||||||
|
$(EXECUTABLE): $(GO_SOURCES)
|
||||||
GO111MODULE=on $(GO) build -mod=vendor $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
|
GO111MODULE=on $(GO) build -mod=vendor $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
|
@ -412,33 +448,26 @@ release-compress:
|
||||||
fi
|
fi
|
||||||
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
|
cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
|
||||||
|
|
||||||
npm-check:
|
node_modules: package-lock.json
|
||||||
@hash npm > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
||||||
echo "Please install Node.js 8.x or greater with npm"; \
|
|
||||||
exit 1; \
|
|
||||||
fi;
|
|
||||||
@hash npx > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
|
||||||
echo "Please install Node.js 8.x or greater with npm"; \
|
|
||||||
exit 1; \
|
|
||||||
fi;
|
|
||||||
|
|
||||||
.PHONY: npm
|
|
||||||
npm: npm-check
|
|
||||||
npm install --no-save
|
npm install --no-save
|
||||||
|
|
||||||
.PHONY: npm-update
|
.PHONY: npm-update
|
||||||
npm-update: npm-check
|
npm-update: node-check node_modules
|
||||||
npx updates -cu
|
npx updates -cu
|
||||||
rm -rf node_modules package-lock.json
|
rm -rf node_modules package-lock.json
|
||||||
npm install --package-lock
|
npm install --package-lock
|
||||||
|
|
||||||
.PHONY: js
|
.PHONY: js
|
||||||
js: npm
|
js: node-check $(JS_DEST)
|
||||||
|
|
||||||
|
$(JS_DEST): node_modules $(JS_SOURCES)
|
||||||
npx eslint web_src/js webpack.config.js
|
npx eslint web_src/js webpack.config.js
|
||||||
npx webpack
|
npx webpack
|
||||||
|
|
||||||
.PHONY: css
|
.PHONY: css
|
||||||
css: npm
|
css: node-check $(CSS_DEST)
|
||||||
|
|
||||||
|
$(CSS_DEST): node_modules $(CSS_SOURCES)
|
||||||
npx stylelint web_src/less
|
npx stylelint web_src/less
|
||||||
npx lessc --clean-css="--s0 -b" web_src/less/index.less public/css/index.css
|
npx lessc --clean-css="--s0 -b" web_src/less/index.less public/css/index.css
|
||||||
$(foreach file, $(filter-out web_src/less/themes/_base.less, $(wildcard web_src/less/themes/*)),npx lessc --clean-css="--s0 -b" web_src/less/themes/$(notdir $(file)) > public/css/theme-$(notdir $(call strip-suffix,$(file))).css;)
|
$(foreach file, $(filter-out web_src/less/themes/_base.less, $(wildcard web_src/less/themes/*)),npx lessc --clean-css="--s0 -b" web_src/less/themes/$(notdir $(file)) > public/css/theme-$(notdir $(call strip-suffix,$(file))).css;)
|
||||||
|
|
|
@ -23,6 +23,10 @@ environment variable and to add the go bin directory or directories
|
||||||
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
|
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
|
||||||
[GOPATH](https://github.com/golang/go/wiki/GOPATH).
|
[GOPATH](https://github.com/golang/go/wiki/GOPATH).
|
||||||
|
|
||||||
|
Next, [install Node.js with npm](https://nodejs.org/en/download/) which is
|
||||||
|
required to build the JavaScript and CSS files. The minimum supported Node.js
|
||||||
|
version is 10 and the latest LTS version is recommended.
|
||||||
|
|
||||||
You will also need make.
|
You will also need make.
|
||||||
<a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a>
|
<a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a>
|
||||||
|
|
||||||
|
@ -98,7 +102,7 @@ from source</a>.
|
||||||
The simplest recommended way to build from source is:
|
The simplest recommended way to build from source is:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
TAGS="bindata sqlite sqlite_unlock_notify" make generate build
|
TAGS="bindata sqlite sqlite_unlock_notify" make build
|
||||||
```
|
```
|
||||||
|
|
||||||
However, there are a number of additional make tasks you should be aware of.
|
However, there are a number of additional make tasks you should be aware of.
|
||||||
|
@ -136,19 +140,17 @@ You should run revive, vet and spell-check on the code with:
|
||||||
make revive vet misspell-check
|
make revive vet misspell-check
|
||||||
```
|
```
|
||||||
|
|
||||||
### Updating CSS
|
### Working on CSS
|
||||||
|
|
||||||
To generate the CSS, you need [Node.js](https://nodejs.org/) 8.0 or greater with npm. We use [less](http://lesscss.org/) and [postcss](https://postcss.org) to generate our CSS. Do **not** edit the files in `public/css` directly, as they are generated from `lessc` from the files in `public/less`.
|
Edit files in `web_src/less` and run the linter and build the CSS files via:
|
||||||
|
|
||||||
Edit files in `public/less`, and then run the linter and build the CSS files via:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make css
|
make css
|
||||||
```
|
```
|
||||||
|
|
||||||
### Updating JS
|
### Working on JS
|
||||||
|
|
||||||
To generate the JS files, you need [Node.js](https://nodejs.org/) 8.0 or greater with npm. Edit files in `public/js`, run the linter and build the JS files via:
|
Edit files in `web_src/js`, run the linter and build the JS files via:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make js
|
make js
|
||||||
|
@ -235,7 +237,7 @@ Unit tests will not and cannot completely test Gitea alone. Therefore, we
|
||||||
have written integration tests; however, these are database dependent.
|
have written integration tests; however, these are database dependent.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
TAGS="bindata sqlite sqlite_unlock_notify" make generate build test-sqlite
|
TAGS="bindata sqlite sqlite_unlock_notify" make build test-sqlite
|
||||||
```
|
```
|
||||||
|
|
||||||
will run the integration tests in an sqlite environment. Other database tests
|
will run the integration tests in an sqlite environment. Other database tests
|
||||||
|
|
|
@ -21,6 +21,10 @@ environment variable and to add the go bin directory or directories
|
||||||
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
|
`${GOPATH//://bin:}/bin` to the `$PATH`. See the Go wiki entry for
|
||||||
[GOPATH](https://github.com/golang/go/wiki/GOPATH).
|
[GOPATH](https://github.com/golang/go/wiki/GOPATH).
|
||||||
|
|
||||||
|
Next, [install Node.js with npm](https://nodejs.org/en/download/) which is
|
||||||
|
required to build the JavaScript and CSS files. The minimum supported Node.js
|
||||||
|
version is 10 and the latest LTS version is recommended.
|
||||||
|
|
||||||
**Note**: When executing make tasks that require external tools, like
|
**Note**: When executing make tasks that require external tools, like
|
||||||
`make misspell-check`, Gitea will automatically download and build these as
|
`make misspell-check`, Gitea will automatically download and build these as
|
||||||
necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory
|
necessary. To be able to use these, you must have the `"$GOPATH/bin"` directory
|
||||||
|
@ -75,9 +79,12 @@ git checkout v{{< version >}} # or git checkout pr-xyz
|
||||||
|
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
Since all required libraries are already bundled in the Gitea source, it's
|
To build from source, the following programs must be present on the system:
|
||||||
possible to build Gitea with no additional downloads apart from Make
|
|
||||||
<a href='{{< relref "doc/advanced/make.en-us.md" >}}'>(See here how to get Make)</a>.
|
- `go` 1.11.0 or higher, see [here](https://golang.org/dl/)
|
||||||
|
- `node` 10.0.0 or higher with `npm`, see [here](https://nodejs.org/en/download/)
|
||||||
|
- `make`, see <a href='{{< relref "doc/advanced/make.en-us.md" >}}'>here</a>
|
||||||
|
|
||||||
Various [make tasks](https://github.com/go-gitea/gitea/blob/master/Makefile)
|
Various [make tasks](https://github.com/go-gitea/gitea/blob/master/Makefile)
|
||||||
are provided to keep the build process as simple as possible.
|
are provided to keep the build process as simple as possible.
|
||||||
|
|
||||||
|
@ -93,11 +100,10 @@ Depending on requirements, the following build tags can be included.
|
||||||
|
|
||||||
Bundling assets into the binary using the `bindata` build tag can make
|
Bundling assets into the binary using the `bindata` build tag can make
|
||||||
development and testing easier, but is not ideal for a production deployment.
|
development and testing easier, but is not ideal for a production deployment.
|
||||||
To include assets, they must be built separately using the `generate` make
|
To include assets, add the `bindata` tag:
|
||||||
task e.g.:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
TAGS="bindata" make generate build
|
TAGS="bindata" make build
|
||||||
```
|
```
|
||||||
|
|
||||||
In the default release build of our continuous integration system, the build
|
In the default release build of our continuous integration system, the build
|
||||||
|
@ -105,7 +111,7 @@ tags are: `TAGS="bindata sqlite sqlite_unlock_notify"`. The simplest
|
||||||
recommended way to build from source is therefore:
|
recommended way to build from source is therefore:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
TAGS="bindata sqlite sqlite_unlock_notify" make generate build
|
TAGS="bindata sqlite sqlite_unlock_notify" make build
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test
|
## Test
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.7.2",
|
"@babel/core": "7.7.2",
|
||||||
|
|
1085
public/css/index.css
1085
public/css/index.css
File diff suppressed because it is too large
Load diff
|
@ -1,285 +0,0 @@
|
||||||
.hljs{display:block;overflow-x:auto;padding:.5em;color:#bababa}
|
|
||||||
.hljs-emphasis,.hljs-strong{color:#a8a8a2}
|
|
||||||
.hljs-bullet,.hljs-link,.hljs-literal,.hljs-number,.hljs-quote,.hljs-regexp{color:#6896ba}
|
|
||||||
.hljs-code,.hljs-selector-class{color:#a6e22e}
|
|
||||||
.hljs-emphasis{font-style:italic}
|
|
||||||
.hljs-attribute,.hljs-keyword,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-variable{color:#cb7832}
|
|
||||||
.hljs-params{color:#b9b9b9}
|
|
||||||
.hljs-string{color:#6a8759}
|
|
||||||
.hljs-addition,.hljs-built_in,.hljs-builtin-name,.hljs-selector-attr,.hljs-selector-id,.hljs-selector-pseudo,.hljs-subst,.hljs-symbol,.hljs-template-tag,.hljs-template-variable,.hljs-type{color:#e0c46c}
|
|
||||||
.hljs-comment,.hljs-deletion,.hljs-meta{color:#7f7f7f}
|
|
||||||
.repository .ui.segment.sub-menu .list .item a{color:#dbdbdb}
|
|
||||||
.ui.horizontal.segments>.segment{background-color:#383c4a}
|
|
||||||
body{background:#383c4a;color:#9e9e9e}
|
|
||||||
*{scrollbar-width:thin;scrollbar-color:#87ab63 rgba(255,255,255,.1)}
|
|
||||||
::-webkit-scrollbar{-webkit-appearance:none!important;width:10px!important;height:10px!important}
|
|
||||||
::-webkit-scrollbar-track{border-radius:0!important;background:rgba(255,255,255,.1)!important}
|
|
||||||
::-webkit-scrollbar-thumb{cursor:pointer!important;border-radius:5px!important;-webkit-transition:color .2s ease!important;transition:color .2s ease!important;background:#87ab63!important}
|
|
||||||
::-webkit-scrollbar-thumb:window-inactive{background:#87ab63!important}
|
|
||||||
::-webkit-scrollbar-thumb:hover{background:#87ab63!important}
|
|
||||||
a{color:#87ab63}
|
|
||||||
a:hover{color:#a0cc75}
|
|
||||||
.ui.card>.extra a:not(.ui):hover,.ui.cards>.card>.extra a:not(.ui):hover{color:#a0cc75}
|
|
||||||
.ui.breadcrumb a:hover{color:#a0cc75}
|
|
||||||
.ui.breadcrumb a{color:#87ab63}
|
|
||||||
.repository .metas .ui.list a .text{color:#87ab63}
|
|
||||||
.repository .metas .ui.list a .text:hover{color:#a0cc75}
|
|
||||||
.repository .label.list .item a{color:#87ab63}
|
|
||||||
.repository .label.list .item a:hover{color:#a0cc75}
|
|
||||||
.repository .milestone.list>.item>a{color:#87ab63}
|
|
||||||
.repository .milestone.list>.item>a:hover{color:#a0cc75}
|
|
||||||
.repository.release #release-list{border-top:1px solid #4c505c}
|
|
||||||
.repository .milestone.list>.item .operate>a{color:#87ab63}
|
|
||||||
.repository .milestone.list>.item .operate>a:hover{color:#a0cc75}
|
|
||||||
.ui.green.progress .bar{background-color:#684}
|
|
||||||
.ui.progress.success .bar{background-color:#7b9e57!important}
|
|
||||||
.following.bar.light{background:#2e323e;border-bottom:1px solid #313131}
|
|
||||||
.ui.secondary.menu .active.item{color:#dbdbdb}
|
|
||||||
.ui.secondary.menu .item{color:#9e9e9e}
|
|
||||||
.following.bar .top.menu a.item:hover{color:#fff}
|
|
||||||
.repository.view.issue .comment-list .comment .content>.bottom.segment a{border:solid 1px #353945;background-color:#353945}
|
|
||||||
.ui.attached.header{background:#404552;border:1px solid #404552;color:#dbdbdb}
|
|
||||||
.ui.attached.table{border:1px solid #304251;background:#304251}
|
|
||||||
.feeds .list ul li:not(:last-child){border-bottom:1px solid #333640}
|
|
||||||
.feeds .list ul li.private{background:#353945;border:1px solid #333640}
|
|
||||||
.ui.secondary.menu .active.item:hover,.ui.secondary.menu .dropdown.item:hover,.ui.secondary.menu .link.item:hover,.ui.secondary.menu a.item:hover{color:#fff}
|
|
||||||
.ui.menu .ui.dropdown .menu>.item{background:#2c303a!important;color:#9e9e9e!important}
|
|
||||||
.ui.secondary.menu .dropdown.item>.menu,.ui.text.menu .dropdown.item>.menu{border:1px solid #434444}
|
|
||||||
footer{background:#2e323e;border-top:1px solid #313131}
|
|
||||||
.ui.menu .dropdown.item .menu{background:#2c303a}
|
|
||||||
.ui.menu .ui.dropdown .menu>.item:hover,.ui.menu .ui.dropdown .menu>.selected.item{color:#fff!important}
|
|
||||||
.ui.dropdown .menu>.header{color:#dbdbdb}
|
|
||||||
.ui.red.label,.ui.red.labels .label{background-color:#7d3434!important;border-color:#8a2121!important}
|
|
||||||
.ui.menu{background:#404552;border:1px solid #353945}
|
|
||||||
.ui.menu .active.item:hover,.ui.vertical.menu .active.item:hover{color:#dbdbdb;background:#4b5162}
|
|
||||||
.ui.link.menu .item:hover,.ui.menu .dropdown.item:hover,.ui.menu .link.item:hover,.ui.menu a.item:hover{color:#dbdbdb;background:#454b5a}
|
|
||||||
.ui.menu .active.item{background:#4b5162;color:#dbdbdb}
|
|
||||||
.ui.input input{background:#404552;border:2px solid #353945;color:#dbdbdb}
|
|
||||||
.ui.input input:focus,.ui.input.focus input{background:#404552;border:2px solid #353945;color:#dbdbdb}
|
|
||||||
.ui.accordion .title:not(.ui){color:#dbdbdb}
|
|
||||||
.ui.label{color:#dbdbdb;background-color:#404552}
|
|
||||||
.issue.list>.item .title{color:#87ab63}
|
|
||||||
.issue.list>.item .title:hover{color:#a0cc75}
|
|
||||||
.issue.list>.item{border-bottom:1px dashed #475767}
|
|
||||||
.ui.basic.green.label,.ui.green.label,.ui.green.labels .label{background-color:#2d693b!important;border-color:#2d693b!important}
|
|
||||||
.ui.basic.green.labels a.label:hover,a.ui.basic.green.label:hover{background-color:#16ab39!important;border-color:#16ab39!important;color:#fff!important}
|
|
||||||
.issue.list>.item .comment{color:#129c92}
|
|
||||||
.ui.basic.button,.ui.basic.buttons .button{color:#797979!important}
|
|
||||||
.ui.basic.red.active.button,.ui.basic.red.buttons .active.button{box-shadow:0 0 0 1px #c75252 inset!important;color:#c75252!important}
|
|
||||||
.ui.basic.button:focus,.ui.basic.button:hover,.ui.basic.buttons .button:focus,.ui.basic.buttons .button:hover{background:0 0!important;color:#dbdbdb!important}
|
|
||||||
.ui.menu .item{background:#404552;color:#9e9e9e}
|
|
||||||
.ui.menu .item.disabled,.ui.menu .item.disabled:hover{color:#626773}
|
|
||||||
.ui.pagination.menu .active.item{color:#dbdbdb;background-color:#87ab63}
|
|
||||||
.repository .header-wrapper{background-color:#2a2e3a}
|
|
||||||
.ui.tabular.menu .active.item{background:#383c4a;color:#dbdbdb;border-left:1px solid transparent;border-right:1px solid transparent;border-top:0}
|
|
||||||
.ui.tabular.menu .item{color:#9e9e9e}
|
|
||||||
.ui.tabular.menu .item:hover{color:#dbdbdb}
|
|
||||||
.ui.breadcrumb .divider,.ui.header{color:#9e9e9e}
|
|
||||||
.ui.blue.label,.ui.blue.labels .label{background-color:#26577b!important;border-color:#26577b!important}
|
|
||||||
.ui.menu .item>.label{background:#565454}
|
|
||||||
.ui.blue.button,.ui.blue.buttons .button{background-color:#87ab63}
|
|
||||||
.ui.blue.button:hover,.ui.blue.buttons .button:hover{background-color:#a0cc75}
|
|
||||||
.ui.form input:not([type]),.ui.form input[type=text],.ui.form input[type=email],.ui.form input[type=search],.ui.form input[type=password],.ui.form input[type=date],.ui.form input[type=datetime-local],.ui.form input[type=tel],.ui.form input[type=time],.ui.form input[type=url],.ui.form input[type=number]{color:#9e9e9e;background:#404552;border:2px solid #353945}
|
|
||||||
.ui.form input:not([type]):focus,.ui.form input[type=text]:focus,.ui.form input[type=email]:focus,.ui.form input[type=search]:focus,.ui.form input[type=password]:focus,.ui.form input[type=date]:focus,.ui.form input[type=datetime-local]:focus,.ui.form input[type=tel]:focus,.ui.form input[type=time]:focus,.ui.form input[type=url]:focus,.ui.form input[type=number]:focus{background:#404552;border:2px solid #4b505f;color:#dbdbdb}
|
|
||||||
.ui.action.input:not([class*="left action"]) input:focus{border-right-color:#4b505f!important}
|
|
||||||
.ui.green.button,.ui.green.buttons .button{background-color:#87ab63}
|
|
||||||
.ui.green.button:hover,.ui.green.buttons .button:hover{background-color:#a0cc75}
|
|
||||||
.ui.button{background:#383c4a;border:1px solid #4c505c;color:#dbdbdb}
|
|
||||||
.ui.labeled.button:not([class*="left labeled"])>.label,.ui[class*="left labeled"].button>.button{background:#404552;border:1px solid #4c505c;color:#87ab63}
|
|
||||||
.ui.button:hover{background-color:#404552;color:#dbdbdb}
|
|
||||||
.ui.table thead th{background:#404552;color:#dbdbdb}
|
|
||||||
.repository.file.list #repo-files-table tr:hover{background-color:#393d4a}
|
|
||||||
.ui.table{color:#a5a5a5!important;border-color:#4c505c;background:#353945}
|
|
||||||
.ui.table tbody tr{border-color:#333640;background:#2a2e3a}
|
|
||||||
.ui .text.grey{color:#808084!important}
|
|
||||||
.ui.attached.table.segment{background:#353945;color:#dbdbdb!important}
|
|
||||||
.markdown:not(code) h2{border-bottom:1px solid #304251}
|
|
||||||
.repository.wiki.new .ui.container form .ui.tabular.menu{border-bottom:1px solid rgba(187,187,187,.6)}
|
|
||||||
.repository.wiki.new .ui.container form .ui.tabular.menu .active.item{border-top:1px solid rgba(187,187,187,.6);border-left:1px solid rgba(187,187,187,.6);border-right:1px solid rgba(187,187,187,.6)}
|
|
||||||
.repository.wiki.new .ui.container form .ui.tabular.menu .active.item:hover{background:#4b5162}
|
|
||||||
.hljs,.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#9daccc}
|
|
||||||
.markdown:not(code) .highlight pre,.markdown:not(code) pre{background-color:#2a2e3a;border:1px solid #404552}
|
|
||||||
.markdown:not(code) table tr:nth-child(2n){background-color:#2a2e39}
|
|
||||||
.markdown:not(code) table tr:nth-child(2n-1){background-color:#383b44}
|
|
||||||
.markdown:not(code) table thead tr:nth-child(2n-1){background-color:#464c5d!important}
|
|
||||||
.markdown:not(code) table td,.markdown:not(code) table th{border-color:#4c505c!important}
|
|
||||||
.repository.file.editor.edit,.repository.wiki.new .CodeMirror{border-right:1px solid rgba(187,187,187,.6);border-left:1px solid rgba(187,187,187,.6);border-bottom:1px solid rgba(187,187,187,.6)}
|
|
||||||
.repository.file.editor.edit .editor-preview,.repository.file.editor.edit .editor-preview-side,.repository.file.editor.edit+.editor-preview-side,.repository.wiki.new .CodeMirror .editor-preview,.repository.wiki.new .CodeMirror .editor-preview-side,.repository.wiki.new .CodeMirror+.editor-preview-side{background:#353945}
|
|
||||||
.repository.file.editor.edit .editor-preview .markdown:not(code).ui.segment,.repository.file.editor.edit .editor-preview-side .markdown:not(code).ui.segment,.repository.file.editor.edit+.editor-preview-side .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview-side .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror+.editor-preview-side .markdown:not(code).ui.segment{border-width:0}
|
|
||||||
.ui.dropdown .menu{background:#2c303a}
|
|
||||||
.ui.dropdown .menu>.message:not(.ui){color:#636363}
|
|
||||||
.ui.input{color:#dbdbdb}
|
|
||||||
.overflow.menu .items .item{color:#9d9d9d}
|
|
||||||
.overflow.menu .items .item:hover{color:#dbdbdb}
|
|
||||||
.ui.segment{background:#353945;color:#9e9e9e!important;border:1px solid #404552}
|
|
||||||
.ui.active.button:active,.ui.button:active,.ui.button:focus{background-color:#2e3e4e;color:#dbdbdb}
|
|
||||||
.ui.dropdown .menu .selected.item,.ui.dropdown.selected{color:#dbdbdb}
|
|
||||||
.ui.dropdown .menu>.item:hover{color:#dbdbdb}
|
|
||||||
.ui.dropdown .menu>.item{color:#9e9e9e}
|
|
||||||
.ui.attached.segment{border:1px solid #404552}
|
|
||||||
.repository.view.issue .comment-list .comment .content>.bottom.segment{background:#353945}
|
|
||||||
.repository.view.issue .comment-list .comment .content .header{color:#dbdbdb;background-color:#404552;border-bottom:1px solid #353944}
|
|
||||||
.repository.view.issue .comment-list .comment .content .merge-section{background-color:#404552;border-top:1px solid #353944}
|
|
||||||
.repository.view.issue .comment-list .event>.octicon.issue-symbol{background:#3b4954}
|
|
||||||
.repository.view.issue .comment-list .event>.octicon:not(.issue-symbol){text-shadow:-2px 0 #383c4a,0 2px #383c4a,2px 0 #383c4a,0 -2px #383c4a}
|
|
||||||
.ui .text.grey a{color:#dbdbdb!important}
|
|
||||||
.ui.comments .comment .actions a{color:#dbdbdb}
|
|
||||||
.repository.view.issue .comment-list .comment .content .header:after{border-right-color:#404552}
|
|
||||||
.repository.new.issue .comment.form .content:after{border-right-color:#353945}
|
|
||||||
.repository.view.issue .comment-list .comment .content .header:before{border-right-color:#404552}
|
|
||||||
.repository.new.issue .comment.form .content:before{border-right-color:#353945}
|
|
||||||
.repository.view.issue .comment-list .timeline-line:before,.repository.view.issue .comment-list:not(.prevent-before-timeline):before{background-color:#3b4954}
|
|
||||||
.repository .comment.form .content .form:after{border-right-color:#313c47}
|
|
||||||
.repository .comment.form .content .form:before{border-right-color:#313c47}
|
|
||||||
.ui .text.grey a:hover{color:#dbdbdb!important}
|
|
||||||
.ui.basic.green.active.button,.ui.basic.green.buttons .active.button{color:#13ae38!important}
|
|
||||||
.ui.form textarea,.ui.form textarea:focus{color:#dbdbdb;background:#404552;border:2px solid #353945}
|
|
||||||
.ui.form textarea:focus{border:1px solid #456580}
|
|
||||||
.ui .info.segment.top{background-color:#404552!important}
|
|
||||||
.repository .diff-file-box .code-diff-unified tbody tr.del-code td{background-color:#3c2626!important;border-color:#634343!important}
|
|
||||||
.repository .diff-file-box .code-diff-unified tbody tr.add-code td{background-color:#283e2d!important;border-color:#314a37!important}
|
|
||||||
.repository .diff-file-box .code-diff tbody tr .added-code{background-color:#3a523a}
|
|
||||||
.hljs-section,.hljs-selector-id,.hljs-title{color:#986c88}
|
|
||||||
.hljs-doctag,.hljs-string{color:#8ab398}
|
|
||||||
.repository .diff-file-box .code-diff tbody tr .removed-code{background-color:#5f3737}
|
|
||||||
.tag-code,.tag-code td{background:#242637!important;border-color:transparent!important}
|
|
||||||
.ui.vertical.menu .active.item{background:#4b5162}
|
|
||||||
.ui.vertical.menu .item{background:#353945}
|
|
||||||
.ui.vertical.menu .header.item{background:#404552}
|
|
||||||
.ui.vertical.menu{background:#353945;border:1px solid #333640}
|
|
||||||
.ui.repository.list .item:not(:first-child){border-top:1px solid #4c505c}
|
|
||||||
.ui .text.blue{color:#87ab63!important}
|
|
||||||
.ui.selection.active.dropdown,.ui.selection.active.dropdown .menu{border-color:#4e5361;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}
|
|
||||||
.ui.selection.active.dropdown:hover,.ui.selection.active.dropdown:hover .menu{border-color:#4e5361;box-shadow:0 2px 3px 0 rgba(34,36,38,.15)}
|
|
||||||
.ui.selection.dropdown{background:#404552;border:1px solid #404552;color:#9e9e9e}
|
|
||||||
.ui.menu .ui.dropdown .menu>.active.item{color:#dbdbdb!important}
|
|
||||||
.ui.tabular.menu{border-bottom:1px solid #313c47}
|
|
||||||
.ui.card,.ui.cards>.card{background:#353945;box-shadow:0 1px 3px 0 #4c505c,0 0 0 1px #4c505c}
|
|
||||||
.ui.card>.content>.header,.ui.cards>.card>.content>.header{color:#dbdbdb}
|
|
||||||
.ui.card>.extra a:not(.ui),.ui.cards>.card>.extra a:not(.ui){color:#87ab63}
|
|
||||||
.ui .text.black{color:#9e9e9e}
|
|
||||||
.ui .text.black:hover{color:#dbdbdb}
|
|
||||||
.ui.secondary.segment{background:#353945}
|
|
||||||
.ui.secondary.pointing.menu .active.item{color:#dbdbdb;border:0;background:#383c4a}
|
|
||||||
.ui.user.list .item:not(:first-child){border-top:1px solid #4c505c}
|
|
||||||
.ui.secondary.pointing.menu .active.item:hover{border-color:#af8b4c;color:#dbdbdb;background:#4b5162}
|
|
||||||
.ui.secondary.pointing.menu .dropdown.item:hover,.ui.secondary.pointing.menu .link.item:hover,.ui.secondary.pointing.menu a.item:hover{color:#dbdbdb}
|
|
||||||
.ui.checkbox label,.ui.checkbox+label,.ui.form .field>label{color:#9e9e9e}
|
|
||||||
.ui.form .inline.field>label,.ui.form .inline.field>p,.ui.form .inline.fields .field>label,.ui.form .inline.fields .field>p,.ui.form .inline.fields>label{color:#9e9e9e}
|
|
||||||
.user.settings .email.list .item:not(:first-child){border-top:1px solid #3f4451}
|
|
||||||
.explore .navbar{background-color:#2a2e3a!important}
|
|
||||||
.ui.menu.new-menu{background-color:#2a2e3a!important}
|
|
||||||
@media only screen and (max-width:1200px){.ui.menu.new-menu:after{background-image:linear-gradient(to right,rgba(42,46,42,0),#2a2e2a 100%)}
|
|
||||||
}
|
|
||||||
input{background:#2e323e}
|
|
||||||
.settings .key.list .item:not(:first-child){border-top:1px solid #404552}
|
|
||||||
.ui.attached.info.message,.ui.info.message{box-shadow:0 0 0 1px #4b5e71 inset,0 0 0 0 transparent}
|
|
||||||
.ui.bottom.attached.message{background-color:#2c662d;color:#87ab63}
|
|
||||||
.ui.bottom.attached.message .pull-right{color:#87ab63}
|
|
||||||
.ui.info.message{background-color:#2c3b4a;color:#9ebcc5}
|
|
||||||
.ui .warning.header{background-color:#5d3a22!important;border-color:#794f31}
|
|
||||||
.ui.red.message{background-color:rgba(80,23,17,.6);color:#f9cbcb;box-shadow:0 0 0 1px rgba(121,71,66,.5) inset,0 0 0 0 transparent}
|
|
||||||
.ui.red.button,.ui.red.buttons .button{background-color:#7d3434}
|
|
||||||
.ui.red.button:hover,.ui.red.buttons .button:hover{background-color:#984646}
|
|
||||||
.ui.checkbox label:hover,.ui.checkbox+label:hover{color:#dbdbdb!important}
|
|
||||||
.ui.checkbox input:checked~.box:after,.ui.checkbox input:checked~label:after{color:#7f98ad}
|
|
||||||
.ui.checkbox input:checked~.box:before,.ui.checkbox input:checked~label:before{background:#304251;opacity:1;color:#7f98ad;border-color:#304251}
|
|
||||||
.ui.checkbox .box:hover::before,.ui.checkbox label:hover::before{background:#304251}
|
|
||||||
.ui.checkbox .box:before,.ui.checkbox label:before{background:#304251;border:1px solid #304251}
|
|
||||||
.ui.checkbox label:before{border-color:#476075}
|
|
||||||
.ui.checkbox .box:active::before,.ui.checkbox label:active::before{background:#304251;border-color:rgba(34,36,38,.35)}
|
|
||||||
.ui.checkbox input:focus~.box:before,.ui.checkbox input:focus~label:before{border-color:#304251;background:#304251}
|
|
||||||
.ui.checkbox input:checked:focus~.box:before,.ui.checkbox input:checked:focus~label:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:before,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:before{border-color:#304251;background:#304251}
|
|
||||||
.ui.checkbox input:checked:focus~.box:after,.ui.checkbox input:checked:focus~label:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~.box:after,.ui.checkbox input:not([type=radio]):indeterminate:focus~label:after{color:#7f98ad}
|
|
||||||
.ui.checkbox input:focus~.box:after,.ui.checkbox input:focus~label,.ui.checkbox input:focus~label:after{color:#9a9a9a}
|
|
||||||
.ui.selection.dropdown:hover{border:1px solid #456580}
|
|
||||||
.ui.selection.dropdown .menu>.item{border-top:1px solid #313c47}
|
|
||||||
.ui.selection.visible.dropdown>.text:not(.default){color:#9e9e9e}
|
|
||||||
.ui.negative.message{background-color:rgba(80,23,17,.6);color:#f9cbcb;box-shadow:0 0 0 1px rgba(121,71,66,.5) inset,0 0 0 0 transparent}
|
|
||||||
.hljs-attribute,.hljs-name,.hljs-tag{color:#ef5e77}
|
|
||||||
.user.profile .ui.card .extra.content ul li:not(:last-child){border-bottom:1px solid #4c505c}
|
|
||||||
.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:#bd84bf}
|
|
||||||
.ui.form .dropzone{border:2px dashed #4c505c}
|
|
||||||
.ui.basic.red.button,.ui.basic.red.buttons .button{box-shadow:0 0 0 1px #a04141 inset!important;color:#a04141!important}
|
|
||||||
.ui.list .list>.item .header,.ui.list>.item .header{color:#dedede}
|
|
||||||
.ui.list .list>.item .description,.ui.list>.item .description{color:#9e9e9e}
|
|
||||||
.ui.user.list .item .description a{color:#668cb1}
|
|
||||||
.repository.file.list #repo-files-table tbody .octicon.octicon-file-directory,.repository.file.list #repo-files-table tbody .octicon.octicon-file-submodule{color:#7c9b5e}
|
|
||||||
.ui.blue.button:focus,.ui.blue.buttons .button:focus{background-color:#a27558}
|
|
||||||
.ui.basic.blue.button:hover,.ui.basic.blue.buttons .button:hover{box-shadow:0 0 0 1px #87ab63 inset!important;color:#87ab63!important}
|
|
||||||
.ui.basic.blue.button:focus,.ui.basic.blue.buttons .button:focus{box-shadow:0 0 0 1px #87ab63 inset!important;color:#87ab63!important}
|
|
||||||
.repository.labels .ui.basic.black.label{background-color:#bbb!important}
|
|
||||||
.lines-commit{background:#2e323e!important}
|
|
||||||
.bottom-line{border-color:#4e525e!important}
|
|
||||||
.lines-num{background:#2e323e!important;color:#9e9e9e!important;border-color:#2d2d2d!important}
|
|
||||||
.lines-code .hljs,.lines-code ol,.lines-code pre,.lines-num .hljs,.lines-num ol,.lines-num pre{background-color:#2a2e3a!important}
|
|
||||||
.code-view .active{background:#554a00}
|
|
||||||
a.ui.label:hover,a.ui.labels .label:hover{background-color:#505667!important;color:#dbdbdb!important}
|
|
||||||
.repository #commits-table td.sha .sha.label,.repository #repo-files-table .sha.label{border-color:#888}
|
|
||||||
.repository #commits-table td.sha .sha.label.isSigned .detail.icon,.repository #repo-files-table .sha.label.isSigned .detail.icon{background:0 0;border-left-color:#888}
|
|
||||||
.repository .label.list .item{border-bottom:1px dashed #4c505c}
|
|
||||||
.ui.basic.blue.button,.ui.basic.blue.buttons .button{box-shadow:0 0 0 1px #87ab63 inset!important;color:#87ab63!important}
|
|
||||||
.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1),.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2),.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3),.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4),.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5),.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6){background-color:#2a2e3a}
|
|
||||||
.repository .diff-file-box .code-diff-split tbody tr td.add-code,.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4),.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5),.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6){background-color:#283e2d!important;border-color:#314a37!important}
|
|
||||||
.repository .diff-file-box .code-diff-split tbody tr td.del-code,.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1),.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2),.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3){background-color:#3c2626!important;border-color:#634343!important}
|
|
||||||
.ui.blue.button:active,.ui.blue.buttons .button:active{background-color:#a27558}
|
|
||||||
#git-graph-container li a{color:#c79575}
|
|
||||||
#git-graph-container li .author{color:#c79575}
|
|
||||||
.ui.header .sub.header{color:#9e9e9e}
|
|
||||||
.ui.dividing.header{border-bottom:1px solid #4c505c}
|
|
||||||
.ui.modal>.header{background:#404552;color:#dbdbdb}
|
|
||||||
.ui.modal>.actions{background:#404552;border-top:1px solid #404552}
|
|
||||||
.ui.modal>.content{background:#383c4a}
|
|
||||||
.editor-toolbar{background-color:#404552}
|
|
||||||
.editor-toolbar a{color:#87ab63!important}
|
|
||||||
.repository .diff-detail-box{background-color:#383c4a}
|
|
||||||
.repository .diff-detail-box .detail-files{background-color:inherit}
|
|
||||||
.comment-code-cloud .ui.attached.tabular.menu{background:none transparent;border:0}
|
|
||||||
.comment-code-cloud .footer .markdown-info{color:inherit}
|
|
||||||
.file-comment{color:#888}
|
|
||||||
.ui.comments .comment .author{color:#dbdbdb}
|
|
||||||
.ui.comments .comment .metadata{color:#808084}
|
|
||||||
.ui.comments .comment .text{color:#9e9e9e}
|
|
||||||
.xdsoft_datetimepicker{background:#2a2e39;border:1px solid #4c505c;color:#9e9e9e}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker{height:36px;background:#464c5d;margin:-2px -8px 2px;padding:2px 8px 0}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker button{background-image:none;text-indent:0;text-align:center;color:#9e9e9e}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker button.xdsoft_prev::before{content:"\f0d9";font:normal normal normal 14px/1 FontAwesome,serif;font-size:1.7em}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker button.xdsoft_next::before{content:"\f0da";font:normal normal normal 14px/1 FontAwesome,serif;font-size:1.7em}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker button.xdsoft_today_button::before{content:"\f015";font:normal normal normal 14px/1 FontAwesome,serif;font-size:1.4em}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker>div.xdsoft_label{background:#464c5d}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker>div.xdsoft_label i{line-height:14px;background-image:none;text-indent:0;text-align:center}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker>div.xdsoft_label i ::before{content:"\f0dd";font:normal normal normal 14px/1 FontAwesome,serif;font-size:.7em}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_mounthpicker>div.xdsoft_label .xdsoft_select{background:#353945}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_datepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_datepicker .xdsoft_calendar th{border-color:#4c505c;background-color:#2a2e39}
|
|
||||||
.xdsoft_datetimepicker .xdsoft_datepicker .xdsoft_calendar td.xdsoft_disabled,.xdsoft_datetimepicker .xdsoft_datepicker .xdsoft_calendar td.xdsoft_other_month{opacity:.8;background:#a0cc75;color:#000}
|
|
||||||
.heatmap-color-0{background-color:#2d303b}
|
|
||||||
.heatmap-color-1{background-color:#444f47}
|
|
||||||
.heatmap-color-2{background-color:#5b6e52}
|
|
||||||
.heatmap-color-3{background-color:#728e5e}
|
|
||||||
.heatmap-color-4{background-color:#89ad69}
|
|
||||||
.heatmap-color-5{background-color:#a0cc75}
|
|
||||||
.CodeMirror{color:#9daccc;background-color:#2b2b2b;border-top:0}
|
|
||||||
.CodeMirror div.CodeMirror-cursor{border-left:1px solid #9e9e9e}
|
|
||||||
.CodeMirror .CodeMirror-gutters{background-color:#2b2b2b}
|
|
||||||
.CodeMirror .CodeMirror-selected,.CodeMirror ::-moz-selection,.CodeMirror ::selection{background:#42402f!important}
|
|
||||||
.CodeMirror.cm-s-default .cm-property,.CodeMirror.cm-s-paper .cm-property{color:#a0cc75}
|
|
||||||
.CodeMirror.cm-s-default .cm-header,.CodeMirror.cm-s-paper .cm-header{color:#9daccc}
|
|
||||||
.CodeMirror.cm-s-default .cm-quote,.CodeMirror.cm-s-paper .cm-quote{color:#090}
|
|
||||||
.CodeMirror.cm-s-default .cm-keyword,.CodeMirror.cm-s-paper .cm-keyword{color:#cc8a61}
|
|
||||||
.CodeMirror.cm-s-default .cm-atom,.CodeMirror.cm-s-paper .cm-atom{color:#ef5e77}
|
|
||||||
.CodeMirror.cm-s-default .cm-number,.CodeMirror.cm-s-paper .cm-number{color:#ff5656}
|
|
||||||
.CodeMirror.cm-s-default .cm-def,.CodeMirror.cm-s-paper .cm-def{color:#e4e4e4}
|
|
||||||
.CodeMirror.cm-s-default .cm-variable-2,.CodeMirror.cm-s-paper .cm-variable-2{color:#00bdbf}
|
|
||||||
.CodeMirror.cm-s-default .cm-variable-3,.CodeMirror.cm-s-paper .cm-variable-3{color:#085}
|
|
||||||
.CodeMirror.cm-s-default .cm-comment,.CodeMirror.cm-s-paper .cm-comment{color:#8e9ab3}
|
|
||||||
.CodeMirror.cm-s-default .cm-string,.CodeMirror.cm-s-paper .cm-string{color:#a77272}
|
|
||||||
.CodeMirror.cm-s-default .cm-string-2,.CodeMirror.cm-s-paper .cm-string-2{color:#f50}
|
|
||||||
.CodeMirror.cm-s-default .cm-meta,.CodeMirror.cm-s-default .cm-qualifier,.CodeMirror.cm-s-paper .cm-meta,.CodeMirror.cm-s-paper .cm-qualifier{color:#ffb176}
|
|
||||||
.CodeMirror.cm-s-default .cm-builtin,.CodeMirror.cm-s-paper .cm-builtin{color:#b7c951}
|
|
||||||
.CodeMirror.cm-s-default .cm-bracket,.CodeMirror.cm-s-paper .cm-bracket{color:#997}
|
|
||||||
.CodeMirror.cm-s-default .cm-tag,.CodeMirror.cm-s-paper .cm-tag{color:#f1d273}
|
|
||||||
.CodeMirror.cm-s-default .cm-attribute,.CodeMirror.cm-s-paper .cm-attribute{color:#bfcc70}
|
|
||||||
.CodeMirror.cm-s-default .cm-hr,.CodeMirror.cm-s-paper .cm-hr{color:#999}
|
|
||||||
.CodeMirror.cm-s-default .cm-url,.CodeMirror.cm-s-paper .cm-url{color:#c5cfd0}
|
|
||||||
.CodeMirror.cm-s-default .cm-link,.CodeMirror.cm-s-paper .cm-link{color:#d8c792}
|
|
||||||
.CodeMirror.cm-s-default .cm-error,.CodeMirror.cm-s-paper .cm-error{color:#dbdbeb}
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue