You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

660 lines
25 KiB

  1. ifeq ($(USE_REPO_TEST_DIR),1)
  2. # This rule replaces the whole Makefile when we're trying to use /tmp repository temporary files
  3. location = $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
  4. self := $(location)
  5. %:
  6. @tmpdir=`mktemp --tmpdir -d` ; \
  7. echo Using temporary directory $$tmpdir for test repositories ; \
  8. USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \
  9. STATUS=$$? ; rm -r "$$tmpdir" ; exit $$STATUS
  10. else
  11. # This is the "normal" part of the Makefile
  12. DIST := dist
  13. DIST_DIRS := $(DIST)/binaries $(DIST)/release
  14. IMPORT := code.gitea.io/gitea
  15. export GO111MODULE=on
  16. GO ?= go
  17. SED_INPLACE := sed -i
  18. SHASUM ?= shasum -a 256
  19. HAS_GO = $(shell hash $(GO) > /dev/null 2>&1 && echo "GO" || echo "NOGO" )
  20. COMMA := ,
  21. XGO_VERSION := go-1.14.x
  22. MIN_GO_VERSION := 001012000
  23. MIN_NODE_VERSION := 010013000
  24. ifeq ($(HAS_GO), GO)
  25. GOPATH ?= $(shell $(GO) env GOPATH)
  26. export PATH := $(GOPATH)/bin:$(PATH)
  27. endif
  28. ifeq ($(OS), Windows_NT)
  29. EXECUTABLE ?= opendata.exe
  30. else
  31. EXECUTABLE ?= opendata
  32. UNAME_S := $(shell uname -s)
  33. ifeq ($(UNAME_S),Darwin)
  34. SED_INPLACE := sed -i ''
  35. endif
  36. ifeq ($(UNAME_S),FreeBSD)
  37. SED_INPLACE := sed -i ''
  38. endif
  39. endif
  40. GOFMT ?= gofmt -s
  41. GOFLAGS := -v
  42. EXTRA_GOFLAGS ?=
  43. MAKE_VERSION := $(shell $(MAKE) -v | head -n 1)
  44. MAKE_EVIDENCE_DIR := .make_evidence
  45. ifneq ($(RACE_ENABLED),)
  46. GOTESTFLAGS ?= -race
  47. endif
  48. STORED_VERSION_FILE := VERSION
  49. ifneq ($(DRONE_TAG),)
  50. VERSION ?= $(subst v,,$(DRONE_TAG))
  51. GITEA_VERSION ?= $(VERSION)
  52. else
  53. ifneq ($(DRONE_BRANCH),)
  54. VERSION ?= $(subst release/v,,$(DRONE_BRANCH))
  55. else
  56. VERSION ?= master
  57. endif
  58. STORED_VERSION=$(shell cat $(STORED_VERSION_FILE) 2>/dev/null)
  59. ifneq ($(STORED_VERSION),)
  60. GITEA_VERSION ?= $(STORED_VERSION)
  61. else
  62. GITEA_VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
  63. endif
  64. endif
  65. LDFLAGS := $(LDFLAGS) -X "main.MakeVersion=$(MAKE_VERSION)" -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)"
  66. GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations/migration-test,$(filter-out code.gitea.io/gitea/integrations,$(shell $(GO) list -mod=vendor ./... | grep -v /vendor/)))
  67. WEBPACK_SOURCES := $(shell find web_src/js web_src/less -type f)
  68. WEBPACK_CONFIGS := webpack.config.js
  69. WEBPACK_DEST := public/js/index.js public/css/index.css
  70. WEBPACK_DEST_DIRS := public/js public/css public/fonts
  71. BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go
  72. BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST))
  73. TAGS ?=
  74. TAGS_SPLIT := $(subst $(COMMA), ,$(TAGS))
  75. TAGS_EVIDENCE := $(MAKE_EVIDENCE_DIR)/tags
  76. GO_DIRS := cmd integrations models modules routers build services vendor
  77. GO_SOURCES := $(wildcard *.go)
  78. GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" -not -path modules/options/bindata.go -not -path modules/public/bindata.go -not -path modules/templates/bindata.go)
  79. ifeq ($(filter $(TAGS_SPLIT),bindata),bindata)
  80. GO_SOURCES += $(BINDATA_DEST)
  81. endif
  82. GO_SOURCES_OWN := $(filter-out vendor/% %/bindata.go, $(GO_SOURCES))
  83. FOMANTIC_CONFIGS := semantic.json web_src/fomantic/theme.config.less web_src/fomantic/_site/globals/site.variables web_src/fomantic/css.js
  84. FOMANTIC_DEST := public/fomantic/semantic.min.js public/fomantic/semantic.min.css
  85. FOMANTIC_DEST_DIR := public/fomantic
  86. #To update swagger use: GO111MODULE=on go get -u github.com/go-swagger/go-swagger/cmd/swagger@v0.20.1
  87. SWAGGER := $(GO) run -mod=vendor github.com/go-swagger/go-swagger/cmd/swagger
  88. SWAGGER_SPEC := templates/swagger/v1_json.tmpl
  89. SWAGGER_SPEC_S_TMPL := s|"basePath": *"/api/v1"|"basePath": "{{AppSubUrl}}/api/v1"|g
  90. SWAGGER_SPEC_S_JSON := s|"basePath": *"{{AppSubUrl}}/api/v1"|"basePath": "/api/v1"|g
  91. SWAGGER_NEWLINE_COMMAND := -e '$$a\'
  92. TEST_MYSQL_HOST ?= mysql:3306
  93. TEST_MYSQL_DBNAME ?= testgitea
  94. TEST_MYSQL_USERNAME ?= root
  95. TEST_MYSQL_PASSWORD ?=
  96. TEST_MYSQL8_HOST ?= mysql8:3306
  97. TEST_MYSQL8_DBNAME ?= testgitea
  98. TEST_MYSQL8_USERNAME ?= root
  99. TEST_MYSQL8_PASSWORD ?=
  100. TEST_PGSQL_HOST ?= pgsql:5432
  101. TEST_PGSQL_DBNAME ?= testgitea
  102. TEST_PGSQL_USERNAME ?= postgres
  103. TEST_PGSQL_PASSWORD ?= postgres
  104. TEST_PGSQL_SCHEMA ?= gtestschema
  105. TEST_MSSQL_HOST ?= mssql:1433
  106. TEST_MSSQL_DBNAME ?= gitea
  107. TEST_MSSQL_USERNAME ?= sa
  108. TEST_MSSQL_PASSWORD ?= MwantsaSecurePassword1
  109. .PHONY: all
  110. all: build
  111. include docker/Makefile
  112. .PHONY: help
  113. help:
  114. @echo "Make Routines:"
  115. @echo " - \"\" equivalent to \"build\""
  116. @echo " - build build everything"
  117. @echo " - frontend build frontend files"
  118. @echo " - backend build backend files"
  119. @echo " - clean delete backend and integration files"
  120. @echo " - clean-all delete backend, frontend and integration files"
  121. @echo " - lint lint everything"
  122. @echo " - lint-frontend lint frontend files"
  123. @echo " - lint-backend lint backend files"
  124. @echo " - watch-frontend watch frontend files and continuously rebuild"
  125. @echo " - webpack build webpack files"
  126. @echo " - fomantic build fomantic files"
  127. @echo " - generate run \"go generate\""
  128. @echo " - fmt format the Go code"
  129. @echo " - generate-swagger generate the swagger spec from code comments"
  130. @echo " - swagger-validate check if the swagger spec is valid"
  131. @echo " - golangci-lint run golangci-lint linter"
  132. @echo " - revive run revive linter"
  133. @echo " - misspell check for misspellings"
  134. @echo " - vet examines Go source code and reports suspicious constructs"
  135. @echo " - test[\#TestSpecificName] run unit test"
  136. @echo " - test-sqlite[\#TestSpecificName] run integration test for sqlite"
  137. @echo " - pr#<index> build and start gitea from a PR with integration test data loaded"
  138. .PHONY: go-check
  139. go-check:
  140. $(eval GO_VERSION := $(shell printf "%03d%03d%03d" $(shell go version | grep -Eo '[0-9]+\.[0-9.]+' | tr '.' ' ');))
  141. @if [ "$(GO_VERSION)" -lt "$(MIN_GO_VERSION)" ]; then \
  142. echo "Gitea requires Go 1.12 or greater to build. You can get it at https://golang.org/dl/"; \
  143. exit 1; \
  144. fi
  145. .PHONY: git-check
  146. git-check:
  147. @if git lfs >/dev/null 2>&1 ; then : ; else \
  148. echo "Gitea requires git with lfs support to run tests." ; \
  149. exit 1; \
  150. fi
  151. .PHONY: node-check
  152. node-check:
  153. $(eval NODE_VERSION := $(shell printf "%03d%03d%03d" $(shell node -v | cut -c2- | tr '.' ' ');))
  154. $(eval NPM_MISSING := $(shell hash npm > /dev/null 2>&1 || echo 1))
  155. @if [ "$(NODE_VERSION)" -lt "$(MIN_NODE_VERSION)" -o "$(NPM_MISSING)" = "1" ]; then \
  156. echo "Gitea requires Node.js 10 or greater and npm to build. You can get it at https://nodejs.org/en/download/"; \
  157. exit 1; \
  158. fi
  159. .PHONY: clean-all
  160. clean-all: clean
  161. rm -rf $(WEBPACK_DEST_DIRS) $(FOMANTIC_DEST_DIR)
  162. .PHONY: clean
  163. clean:
  164. $(GO) clean -i ./...
  165. rm -rf $(EXECUTABLE) $(DIST) $(BINDATA_DEST) $(BINDATA_HASH) \
  166. integrations*.test \
  167. integrations/gitea-integration-pgsql/ integrations/gitea-integration-mysql/ integrations/gitea-integration-mysql8/ integrations/gitea-integration-sqlite/ \
  168. integrations/gitea-integration-mssql/ integrations/indexers-mysql/ integrations/indexers-mysql8/ integrations/indexers-pgsql integrations/indexers-sqlite \
  169. integrations/indexers-mssql integrations/mysql.ini integrations/mysql8.ini integrations/pgsql.ini integrations/mssql.ini
  170. .PHONY: fmt
  171. fmt:
  172. $(GOFMT) -w $(GO_SOURCES_OWN)
  173. .PHONY: vet
  174. vet:
  175. # Default vet
  176. $(GO) vet $(GO_PACKAGES)
  177. # Custom vet
  178. $(GO) build -mod=vendor gitea.com/jolheiser/gitea-vet
  179. $(GO) vet -vettool=gitea-vet $(GO_PACKAGES)
  180. .PHONY: $(TAGS_EVIDENCE)
  181. $(TAGS_EVIDENCE):
  182. @mkdir -p $(MAKE_EVIDENCE_DIR)
  183. @echo "$(TAGS)" > $(TAGS_EVIDENCE)
  184. ifneq "$(TAGS)" "$(shell cat $(TAGS_EVIDENCE) 2>/dev/null)"
  185. TAGS_PREREQ := $(TAGS_EVIDENCE)
  186. endif
  187. .PHONY: generate-swagger
  188. generate-swagger:
  189. $(SWAGGER) generate spec -o './$(SWAGGER_SPEC)'
  190. $(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
  191. $(SED_INPLACE) $(SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)'
  192. .PHONY: swagger-check
  193. swagger-check: generate-swagger
  194. @diff=$$(git diff '$(SWAGGER_SPEC)'); \
  195. if [ -n "$$diff" ]; then \
  196. echo "Please run 'make generate-swagger' and commit the result:"; \
  197. echo "$${diff}"; \
  198. exit 1; \
  199. fi;
  200. .PHONY: swagger-validate
  201. swagger-validate:
  202. $(SED_INPLACE) '$(SWAGGER_SPEC_S_JSON)' './$(SWAGGER_SPEC)'
  203. $(SWAGGER) validate './$(SWAGGER_SPEC)'
  204. $(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)'
  205. .PHONY: errcheck
  206. errcheck:
  207. @hash errcheck > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  208. $(GO) get -u github.com/kisielk/errcheck; \
  209. fi
  210. errcheck $(GO_PACKAGES)
  211. .PHONY: revive
  212. revive:
  213. GO111MODULE=on $(GO) run -mod=vendor build/lint.go -config .revive.toml -exclude=./vendor/... ./... || exit 1
  214. .PHONY: misspell-check
  215. misspell-check:
  216. @hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  217. $(GO) get -u github.com/client9/misspell/cmd/misspell; \
  218. fi
  219. misspell -error -i unknwon,destory $(GO_SOURCES_OWN)
  220. .PHONY: misspell
  221. misspell:
  222. @hash misspell > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  223. $(GO) get -u github.com/client9/misspell/cmd/misspell; \
  224. fi
  225. misspell -w -i unknwon $(GO_SOURCES_OWN)
  226. .PHONY: fmt-check
  227. fmt-check:
  228. # get all go files and run go fmt on them
  229. @diff=$$($(GOFMT) -d $(GO_SOURCES_OWN)); \
  230. if [ -n "$$diff" ]; then \
  231. echo "Please run 'make fmt' and commit the result:"; \
  232. echo "$${diff}"; \
  233. exit 1; \
  234. fi;
  235. .PHONY: lint
  236. lint: lint-backend lint-frontend
  237. .PHONY: lint-backend
  238. lint-backend: golangci-lint revive vet swagger-check swagger-validate test-vendor
  239. .PHONY: lint-frontend
  240. lint-frontend: node_modules
  241. npx eslint web_src/js webpack.config.js
  242. npx stylelint web_src/less
  243. .PHONY: watch-frontend
  244. watch-frontend: node_modules
  245. NODE_ENV=development npx webpack --hide-modules --display-entrypoints=false --watch --progress
  246. .PHONY: test
  247. test:
  248. $(GO) test $(GOTESTFLAGS) -mod=vendor -tags='sqlite sqlite_unlock_notify' $(GO_PACKAGES)
  249. .PHONY: test-check
  250. test-check:
  251. @echo "Checking if tests have changed the source tree...";
  252. @diff=$$(git status -s); \
  253. if [ -n "$$diff" ]; then \
  254. echo "make test has changed files in the source tree:"; \
  255. echo "$${diff}"; \
  256. echo "You should change the tests to create these files in a temporary directory."; \
  257. echo "Do not simply add these files to .gitignore"; \
  258. exit 1; \
  259. fi;
  260. .PHONY: test\#%
  261. test\#%:
  262. $(GO) test -mod=vendor -tags='sqlite sqlite_unlock_notify' -run $(subst .,/,$*) $(GO_PACKAGES)
  263. .PHONY: coverage
  264. coverage:
  265. GO111MODULE=on $(GO) run -mod=vendor build/gocovmerge.go integration.coverage.out $(shell find . -type f -name "coverage.out") > coverage.all
  266. .PHONY: unit-test-coverage
  267. unit-test-coverage:
  268. $(GO) test $(GOTESTFLAGS) -mod=vendor -tags='sqlite sqlite_unlock_notify' -cover -coverprofile coverage.out $(GO_PACKAGES) && echo "\n==>\033[32m Ok\033[m\n" || exit 1
  269. .PHONY: vendor
  270. vendor:
  271. $(GO) mod tidy && $(GO) mod vendor
  272. .PHONY: test-vendor
  273. test-vendor: vendor
  274. @diff=$$(git diff vendor/); \
  275. if [ -n "$$diff" ]; then \
  276. echo "Please run 'make vendor' and commit the result:"; \
  277. echo "$${diff}"; \
  278. exit 1; \
  279. fi;
  280. generate-ini-sqlite:
  281. sed -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
  282. integrations/sqlite.ini.tmpl > integrations/sqlite.ini
  283. .PHONY: test-sqlite
  284. test-sqlite: integrations.sqlite.test generate-ini-sqlite
  285. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test
  286. .PHONY: test-sqlite\#%
  287. test-sqlite\#%: integrations.sqlite.test generate-ini-sqlite
  288. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test -test.run $(subst .,/,$*)
  289. .PHONY: test-sqlite-migration
  290. test-sqlite-migration: migrations.sqlite.test generate-ini-sqlite
  291. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./migrations.sqlite.test
  292. generate-ini-mysql:
  293. sed -e 's|{{TEST_MYSQL_HOST}}|${TEST_MYSQL_HOST}|g' \
  294. -e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \
  295. -e 's|{{TEST_MYSQL_USERNAME}}|${TEST_MYSQL_USERNAME}|g' \
  296. -e 's|{{TEST_MYSQL_PASSWORD}}|${TEST_MYSQL_PASSWORD}|g' \
  297. -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
  298. integrations/mysql.ini.tmpl > integrations/mysql.ini
  299. .PHONY: test-mysql
  300. test-mysql: integrations.mysql.test generate-ini-mysql
  301. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.mysql.test
  302. .PHONY: test-mysql\#%
  303. test-mysql\#%: integrations.mysql.test generate-ini-mysql
  304. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.mysql.test -test.run $(subst .,/,$*)
  305. .PHONY: test-mysql-migration
  306. test-mysql-migration: migrations.mysql.test generate-ini-mysql
  307. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./migrations.mysql.test
  308. generate-ini-mysql8:
  309. sed -e 's|{{TEST_MYSQL8_HOST}}|${TEST_MYSQL8_HOST}|g' \
  310. -e 's|{{TEST_MYSQL8_DBNAME}}|${TEST_MYSQL8_DBNAME}|g' \
  311. -e 's|{{TEST_MYSQL8_USERNAME}}|${TEST_MYSQL8_USERNAME}|g' \
  312. -e 's|{{TEST_MYSQL8_PASSWORD}}|${TEST_MYSQL8_PASSWORD}|g' \
  313. -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
  314. integrations/mysql8.ini.tmpl > integrations/mysql8.ini
  315. .PHONY: test-mysql8
  316. test-mysql8: integrations.mysql8.test generate-ini-mysql8
  317. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql8.ini ./integrations.mysql8.test
  318. .PHONY: test-mysql8\#%
  319. test-mysql8\#%: integrations.mysql8.test generate-ini-mysql8
  320. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql8.ini ./integrations.mysql8.test -test.run $(subst .,/,$*)
  321. .PHONY: test-mysql8-migration
  322. test-mysql8-migration: migrations.mysql8.test generate-ini-mysql8
  323. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql8.ini ./migrations.mysql8.test
  324. generate-ini-pgsql:
  325. sed -e 's|{{TEST_PGSQL_HOST}}|${TEST_PGSQL_HOST}|g' \
  326. -e 's|{{TEST_PGSQL_DBNAME}}|${TEST_PGSQL_DBNAME}|g' \
  327. -e 's|{{TEST_PGSQL_USERNAME}}|${TEST_PGSQL_USERNAME}|g' \
  328. -e 's|{{TEST_PGSQL_PASSWORD}}|${TEST_PGSQL_PASSWORD}|g' \
  329. -e 's|{{TEST_PGSQL_SCHEMA}}|${TEST_PGSQL_SCHEMA}|g' \
  330. -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
  331. integrations/pgsql.ini.tmpl > integrations/pgsql.ini
  332. .PHONY: test-pgsql
  333. test-pgsql: integrations.pgsql.test generate-ini-pgsql
  334. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.pgsql.test
  335. .PHONY: test-pgsql\#%
  336. test-pgsql\#%: integrations.pgsql.test generate-ini-pgsql
  337. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.pgsql.test -test.run $(subst .,/,$*)
  338. .PHONY: test-pgsql-migration
  339. test-pgsql-migration: migrations.pgsql.test generate-ini-pgsql
  340. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./migrations.pgsql.test
  341. generate-ini-mssql:
  342. sed -e 's|{{TEST_MSSQL_HOST}}|${TEST_MSSQL_HOST}|g' \
  343. -e 's|{{TEST_MSSQL_DBNAME}}|${TEST_MSSQL_DBNAME}|g' \
  344. -e 's|{{TEST_MSSQL_USERNAME}}|${TEST_MSSQL_USERNAME}|g' \
  345. -e 's|{{TEST_MSSQL_PASSWORD}}|${TEST_MSSQL_PASSWORD}|g' \
  346. -e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \
  347. integrations/mssql.ini.tmpl > integrations/mssql.ini
  348. .PHONY: test-mssql
  349. test-mssql: integrations.mssql.test generate-ini-mssql
  350. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./integrations.mssql.test
  351. .PHONY: test-mssql\#%
  352. test-mssql\#%: integrations.mssql.test generate-ini-mssql
  353. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./integrations.mssql.test -test.run $(subst .,/,$*)
  354. .PHONY: test-mssql-migration
  355. test-mssql-migration: migrations.mssql.test generate-ini-mssql
  356. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./migrations.mssql.test
  357. .PHONY: bench-sqlite
  358. bench-sqlite: integrations.sqlite.test generate-ini-sqlite
  359. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
  360. .PHONY: bench-mysql
  361. bench-mysql: integrations.mysql.test generate-ini-mysql
  362. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.mysql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
  363. .PHONY: bench-mssql
  364. bench-mssql: integrations.mssql.test generate-ini-mssql
  365. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./integrations.mssql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
  366. .PHONY: bench-pgsql
  367. bench-pgsql: integrations.pgsql.test generate-ini-pgsql
  368. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.pgsql.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench .
  369. .PHONY: integration-test-coverage
  370. integration-test-coverage: integrations.cover.test generate-ini-mysql
  371. GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.cover.test -test.coverprofile=integration.coverage.out
  372. integrations.mysql.test: git-check $(GO_SOURCES)
  373. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql.test
  374. integrations.mysql8.test: git-check $(GO_SOURCES)
  375. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mysql8.test
  376. integrations.pgsql.test: git-check $(GO_SOURCES)
  377. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.pgsql.test
  378. integrations.mssql.test: git-check $(GO_SOURCES)
  379. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.mssql.test
  380. integrations.sqlite.test: git-check $(GO_SOURCES)
  381. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -o integrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
  382. integrations.cover.test: git-check $(GO_SOURCES)
  383. $(GO) test $(GOTESTFLAGS) -mod=vendor -c code.gitea.io/gitea/integrations -coverpkg $(shell echo $(GO_PACKAGES) | tr ' ' ',') -o integrations.cover.test
  384. .PHONY: migrations.mysql.test
  385. migrations.mysql.test: $(GO_SOURCES)
  386. $(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql.test
  387. .PHONY: migrations.mysql8.test
  388. migrations.mysql8.test: $(GO_SOURCES)
  389. $(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/integrations/migration-test -o migrations.mysql8.test
  390. .PHONY: migrations.pgsql.test
  391. migrations.pgsql.test: $(GO_SOURCES)
  392. $(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/integrations/migration-test -o migrations.pgsql.test
  393. .PHONY: migrations.mssql.test
  394. migrations.mssql.test: $(GO_SOURCES)
  395. $(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/integrations/migration-test -o migrations.mssql.test
  396. .PHONY: migrations.sqlite.test
  397. migrations.sqlite.test: $(GO_SOURCES)
  398. $(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/integrations/migration-test -o migrations.sqlite.test -tags 'sqlite sqlite_unlock_notify'
  399. .PHONY: check
  400. check: test
  401. .PHONY: install $(TAGS_PREREQ)
  402. install: $(wildcard *.go)
  403. $(GO) install -v -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)'
  404. .PHONY: build
  405. build: frontend backend
  406. .PHONY: frontend
  407. frontend: node-check $(FOMANTIC_DEST) $(WEBPACK_DEST)
  408. .PHONY: backend
  409. backend: go-check generate $(EXECUTABLE)
  410. .PHONY: generate
  411. generate: $(TAGS_PREREQ)
  412. CC= GOOS= GOARCH= $(GO) generate -mod=vendor -tags '$(TAGS)' $(GO_PACKAGES)
  413. $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ)
  414. $(GO) build -mod=vendor $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@
  415. .PHONY: release
  416. release: frontend generate release-windows release-linux release-darwin release-copy release-compress release-sources release-check
  417. $(DIST_DIRS):
  418. mkdir -p $(DIST_DIRS)
  419. .PHONY: release-windows
  420. release-windows: | $(DIST_DIRS)
  421. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  422. $(GO) get -u src.techknowlogick.com/xgo; \
  423. fi
  424. GO111MODULE=off xgo -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out opendata-$(VERSION) .
  425. ifeq ($(CI),drone)
  426. cp /build/* $(DIST)/binaries
  427. endif
  428. .PHONY: release-linux
  429. release-linux: | $(DIST_DIRS)
  430. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  431. $(GO) get -u src.techknowlogick.com/xgo; \
  432. fi
  433. GO111MODULE=off xgo -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64,linux/mips64le,linux/mips,linux/mipsle' -out opendata-$(VERSION) .
  434. ifeq ($(CI),drone)
  435. cp /build/* $(DIST)/binaries
  436. endif
  437. .PHONY: release-darwin
  438. release-darwin: | $(DIST_DIRS)
  439. @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  440. $(GO) get -u src.techknowlogick.com/xgo; \
  441. fi
  442. GO111MODULE=off xgo -go $(XGO_VERSION) -dest $(DIST)/binaries -tags 'netgo osusergo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out opendata-$(VERSION) .
  443. ifeq ($(CI),drone)
  444. cp /build/* $(DIST)/binaries
  445. endif
  446. .PHONY: release-copy
  447. release-copy: | $(DIST_DIRS)
  448. cd $(DIST); for file in `find /build -type f -name "*"`; do cp $${file} ./release/; done;
  449. .PHONY: release-check
  450. release-check: | $(DIST_DIRS)
  451. cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "checksumming $${file}" && $(SHASUM) `echo $${file} | sed 's/^..//'` > $${file}.sha256; done;
  452. .PHONY: release-compress
  453. release-compress: | $(DIST_DIRS)
  454. @hash gxz > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  455. GO111MODULE=off $(GO) get -u github.com/ulikunitz/xz/cmd/gxz; \
  456. fi
  457. cd $(DIST)/release/; for file in `find . -type f -name "*"`; do echo "compressing $${file}" && gxz -k -9 $${file}; done;
  458. .PHONY: release-sources
  459. release-sources: | $(DIST_DIRS) node_modules
  460. echo $(VERSION) > $(STORED_VERSION_FILE)
  461. tar --exclude=./$(DIST) --exclude=./.git --exclude=./$(MAKE_EVIDENCE_DIR) --exclude=./node_modules/.cache -czf $(DIST)/release/opendata-src-$(VERSION).tar.gz .
  462. rm -f $(STORED_VERSION_FILE)
  463. node_modules: package-lock.json
  464. npm install --no-save
  465. @touch node_modules
  466. .PHONY: npm-update
  467. npm-update: node-check | node_modules
  468. npx updates -cu
  469. rm -rf node_modules package-lock.json
  470. npm install --package-lock
  471. .PHONY: fomantic
  472. fomantic: $(FOMANTIC_DEST)
  473. $(FOMANTIC_DEST): $(FOMANTIC_CONFIGS) package-lock.json | node_modules
  474. rm -rf $(FOMANTIC_DEST_DIR)
  475. cp web_src/fomantic/theme.config.less node_modules/fomantic-ui/src/theme.config
  476. cp -r web_src/fomantic/_site/* node_modules/fomantic-ui/src/_site/
  477. cp web_src/fomantic/css.js node_modules/fomantic-ui/tasks/build/css.js
  478. npx gulp -f node_modules/fomantic-ui/gulpfile.js build
  479. @touch $(FOMANTIC_DEST)
  480. .PHONY: webpack
  481. webpack: $(WEBPACK_DEST)
  482. $(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json | node_modules
  483. rm -rf $(WEBPACK_DEST_DIRS)
  484. npx webpack --hide-modules --display-entrypoints=false
  485. @touch $(WEBPACK_DEST)
  486. .PHONY: update-translations
  487. update-translations:
  488. mkdir -p ./translations
  489. cd ./translations && curl -L https://crowdin.com/download/project/opendata.zip > opendata.zip && unzip opendata.zip
  490. rm ./translations/opendata.zip
  491. $(SED_INPLACE) -e 's/="/=/g' -e 's/"$$//g' ./translations/*.ini
  492. $(SED_INPLACE) -e 's/\\"/"/g' ./translations/*.ini
  493. mv ./translations/*.ini ./options/locale/
  494. rmdir ./translations
  495. .PHONY: generate-images
  496. generate-images:
  497. $(eval TMPDIR := $(shell mktemp -d 2>/dev/null || mktemp -d -t 'gitea-temp'))
  498. mkdir -p $(TMPDIR)/images
  499. inkscape $(PWD)/assets/logo.svg -w 880 -h 880 --export-filename=$(PWD)/public/img/gitea-lg.png
  500. inkscape $(PWD)/assets/logo.svg -w 512 -h 512 --export-filename=$(PWD)/public/img/gitea-512.png
  501. inkscape $(PWD)/assets/logo.svg -w 192 -h 192 --export-filename=$(PWD)/public/img/gitea-192.png
  502. inkscape $(PWD)/assets/logo.svg -w 120 -h 120 --export-filename=$(TMPDIR)/images/sm-1.png
  503. inkscape $(PWD)/assets/logo.svg -w 120 -h 120 --export-filename=$(TMPDIR)/images/sm-2.png
  504. composite -compose atop $(TMPDIR)/images/sm-2.png $(TMPDIR)/images/sm-1.png $(PWD)/public/img/gitea-sm.png
  505. inkscape $(PWD)/assets/logo.svg -w 200 -h 200 --export-filename=$(PWD)/public/img/avatar_default.png
  506. inkscape $(PWD)/assets/logo.svg -w 180 -h 180 --export-filename=$(PWD)/public/img/favicon.png
  507. inkscape $(PWD)/assets/logo.svg -w 128 -h 128 --export-filename=$(TMPDIR)/images/128-raw.png
  508. inkscape $(PWD)/assets/logo.svg -w 64 -h 64 --export-filename=$(TMPDIR)/images/64-raw.png
  509. inkscape $(PWD)/assets/logo.svg -w 32 -h 32 --export-filename=$(TMPDIR)/images/32-1.png
  510. inkscape $(PWD)/assets/logo.svg -w 32 -h 32 --export-filename=$(TMPDIR)/images/32-2.png
  511. composite -compose atop $(TMPDIR)/images/32-2.png $(TMPDIR)/images/32-1.png $(TMPDIR)/images/32-raw.png
  512. inkscape $(PWD)/assets/logo.svg -w 16 -h 16 --export-filename=$(TMPDIR)/images/16-raw.png
  513. zopflipng -m -y $(TMPDIR)/images/128-raw.png $(TMPDIR)/images/128.png
  514. zopflipng -m -y $(TMPDIR)/images/64-raw.png $(TMPDIR)/images/64.png
  515. zopflipng -m -y $(TMPDIR)/images/32-raw.png $(TMPDIR)/images/32.png
  516. zopflipng -m -y $(TMPDIR)/images/16-raw.png $(TMPDIR)/images/16.png
  517. rm -f $(TMPDIR)/images/*-*.png
  518. convert $(TMPDIR)/images/16.png $(TMPDIR)/images/32.png \
  519. $(TMPDIR)/images/64.png $(TMPDIR)/images/128.png \
  520. $(PWD)/public/img/favicon.ico
  521. convert -flatten $(PWD)/public/img/favicon.png $(PWD)/public/img/apple-touch-icon.png
  522. rm -rf $(TMPDIR)/images
  523. $(foreach file, $(shell find public/img -type f -name '*.png' ! -name 'loading.png'),zopflipng -m -y $(file) $(file);)
  524. .PHONY: pr\#%
  525. pr\#%: clean-all
  526. $(GO) run contrib/pr/checkout.go $*
  527. .PHONY: golangci-lint
  528. golangci-lint:
  529. @hash golangci-lint > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
  530. export BINARY="golangci-lint"; \
  531. curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOPATH)/bin v1.24.0; \
  532. fi
  533. golangci-lint run --timeout 5m
  534. # This endif closes the if at the top of the file
  535. endif

简介

本项目是群体化方法与技术的开源实现案例,在基于Gitea的基础上,进一步支持社交化的协同开发、协同学习、协同研究等群体创新实践服务,特别是针对新一代人工智能技术特点,重点支持项目管理、git代码管理、大数据集存储管理与智能计算平台接入。

https://git.openi.org.cn

openigolanggitpcl

Go SVG Roff JavaScript Shell other

贡献者 (997)

u@gogs.io xiaolunwen@gmail.com teabot@gitea.io art27@cantab.net joe2010xtmf@163.com 6543@obermui.de me@silverwind.io lauris@nix.lv sapk@users.noreply.github.com techknowlogick@gitea.io 42128690+jolheiser@users.noreply.github.com etk39@cornell.edu fuxiaohei@hexiaz.com andrey.nering@gmail.com 18600385+guillep2k@users.noreply.github.com thomas@webhippie.de ethantkoenig@gmail.com gitea@fake.local 1447794+CirnoT@users.noreply.github.com strk@kbt.io appleboy.tw@gmail.com info@mrsdizzie.com vslene@gmail.com adelowomailbox@gmail.com kim.carlbacker@gmail.com john.olheiser@gmail.com 1012112796@qq.com techknowlogick@users.noreply.github.com bouwko@gmail.com davidsvantesson@gmail.com info@jonasfranz.software typeless@users.noreply.github.com 24977596+6543@users.noreply.github.com ssx205@gmail.com daviian@users.noreply.github.com mail@matthiasloibl.com matti@mdranta.net peter@smitmail.eu sageptr@gmail.com ono@java.pl noerw@users.noreply.github.com fuxiaohei@vip.qq.com 48099350+jaqra@users.noreply.github.com konrad@kola-entertainments.de tboerger@suse.de richmahn@users.noreply.github.com hello@techknowlogick.com justin.nuss@hmmh.de Morlinest@users.noreply.github.com michael@gnehr.de florian.kaiser@fnkr.net git@howl.moe thomas@fanninger.at hit172587zpz@163.com gary@garykim.dev bagasdotme@gmail.com cez81@users.noreply.github.com jimmy.praet@telenet.be mario.lubenka@googlemail.com sxty32@126.com sapk@sapk.fr roemer.jp@gmail.com brickley@gmail.com joshfng@gmail.com juzhenatpku@gmail.com nuss.justin@gmail.com 0xbaadf00d@users.noreply.github.com 36822577+flufmonster@users.noreply.github.com kdumontnu@gmail.com makhov.alex@gmail.com suraia@ikkoku.de odin@ugedal.com geek1011@outlook.com geek1011@users.noreply.github.com meyer.thibault@gmail.com codeskyblue@gmail.com andrew@acusti.ca harshitbansal2015@gmail.com jamesorlakin@users.noreply.github.com morlinest@gmail.com sbenitez@mit.edu k@knt.li genedna@gmail.com info@chriswatt.org 32200834+bhalbright@users.noreply.github.com gogitservice@gmail.com jimmy.praet@ksz-bcss.fgov.be github@hartkorn.net cl.jeremy@qq.com rboulanouar@gmail.com blueworrybear@gmail.com outman99@hotmail.com cyril.rohr@gmail.com fjsanjulian@hotmail.com filip.navara@gmail.com yo@lanre.wtf tstorch@math.uni-bielefeld.de iwendellsun@gmail.com gzsombor@users.noreply.github.com 32939607+bugreport0@users.noreply.github.com github.com@mailfilter.com.ar 61180606+wULLSnpAXbWZGYDYyhWTKKspEQoaYxXyhoisqHf@users.noreply.github.com 13252042+8ctopus@users.noreply.github.com axifnx@gmail.com aswild@users.noreply.github.com shimokawa@fsfe.org thiago@avelino.xxx don.waterloo@gmail.com jp@roemer.im lance@crenolab.com tony@tcnhk.com stevegt@t7a.org das7pad@outlook.com julian.toelle97@gmail.com KN4CK3R@users.noreply.github.com kazuki@6715.jp lars.lehtonen@gmail.com MTecknology@users.noreply.github.com wqweto@gmail.com m0sth8@yandex-team.ru 31291059+ngourdon@users.noreply.github.com linuxbash8@gmail.com alexander.m.scheel@gmail.com write@imaginarycode.com angus.gibson@anu.edu.au gibheer+git@zero-knowledge.org james.h.cracknell@gmail.com 9416498+cez81@users.noreply.github.com kevans91@users.noreply.github.com xuan199651@gmail.com linquize@yahoo.com.hk patrick.schratz@gmail.com Hoffmann.P@gmx.net sjackel@trustinternational.com segev208@gmail.com tamal@appscode.com wim@42.be xaver.maierhofer@xwissen.info luke.stahlman@gmail.com xiaoxiao@gmail.com amakhov@avito.ru muesli@gmail.com elias@aisle.se great.mafia2010@gmail.com webjoel@users.noreply.github.com johan@gisky.be me+github@redrat.com.br julien@craftyx.fr kjell@kvinge.biz mkuhlmann@users.noreply.github.com opensource@andmarios.com chadoe@gmail.com Mike.Fellows@shaw.ca mordred@inaugust.com iamolegkovalov@gmail.com pawel.boguslawski@ib.pl piotr@orzechowski.tech tech@orzechowski.hub.pl nicolai86@me.com tfaelligen@gmail.com soud@protonmail.com senluowanxiangt@163.com 49699333+dependabot[bot]@users.noreply.github.com steve@evolvedlight.co.uk cfddream@gmail.com harryzhxu@gmail.com laofo521@gmail.com romankl@users.noreply.github.com coolaj86@gmail.com bugs@sentido-labs.com andrew.boyarshin@gmail.com bkmgit@users.noreply.github.com me@ciarand.me danielflira@gmail.com denji@users.noreply.github.com mr.exodia.tpodt@gmail.com eneuschild@gmail.com evorui@gmail.com fabian@youremail.eu flare@lefs.me gibheer@gmail.com gogs@fake.local greg@karekinian.com admin@dhchouse.com kzmizzz@gmail.com james@jamesanderson.me corvus@inaugust.com LefsFlarey@users.noreply.github.com LukBukkit@users.noreply.github.com 73301416+M4RKUS-11111@users.noreply.github.com likeit.mp@googlemail.com michael@mbict.nl michael@nucleus.com.au nuno-silva@users.noreply.github.com PeterDaveHello@users.noreply.github.com couling@gmail.com philfry@users.noreply.github.com rfwatson@users.noreply.github.com robinlambertz+dev@gmail.com villa061004@gmail.com shashvat51@gmail.com Stefan-Code@users.noreply.github.com vedran.mikov@protonmail.com wgh@torlan.ru willemvd@users.noreply.github.com everhopingandwaiting@users.noreply.github.com carpentier.pf@gmail.com lstahlman@users.noreply.github.com modmew8@gmail.com 44643697+oscarlofwenhamn@users.noreply.github.com rogerluo410@gmail.com spam@b-web.org 0x5c.dev@gmail.com anton.khimich@gmail.com arthur.oy+github@gmail.com skyline75489@outlook.com Chri-s@users.noreply.github.com codrut.gusoi@gmail.com cornelk@users.noreply.github.com github@codejuggle.dj mobigod0@gmail.com barracks510@gmail.com divbest99@gmail.com dmitry@dsa.pp.ru dustin.webber@gmail.com EpicCoder@users.noreply.github.com eltociear@gmail.com iv@a.ki james.anderson@target.com eu+github@redrat.com.br lauris.buksis@zzdats.lv mqudsi@neosmart.net themaymeow@gmail.com deringer@iatstuti.net mxs@cmu.edu nicolas@eisfunke.com nolan@thewordnerd.info pborelli@gnome.org rba@live.com sk261@snu.edu.in Sorien@users.noreply.github.com me@gaydin.io moltam@gmail.com twang2218@gmail.com 45337851+Tekaoh@users.noreply.github.com theo.bouge@gmail.com tonivj5@Gmail.com vladtemian@gmail.com viz@linux.com haoyixin@live.cn inbox.github@jhodges.co.uk 17836261+clavinet@users.noreply.github.com crackcomm@gmail.com ac861219@gmail.com 530933208@qq.com manuel.luis@gmail.com joe.mccann@gmail.com xiaowangzi61@gmail.com tz@zztt.eu yasuokav@gmail.com zhssoge@gmail.com andruwa13@me.com alban@garrigue.me msoedov@gmail.com alv2412@googlemail.com andrew.bezold@gmail.com ErebusBat@gmail.com a.groetschel@phurosy.com tuxillo@quantumachine.net arens@arpemedia.com ash@the-rebellion.net ask@develooper.com BNolet@users.noreply.github.com baiju.m.mail@gmail.com Memorion@users.noreply.github.com bpetri@users.noreply.github.com clee@mg8.org chrisshyi13@gmail.com clint@clintarmstrong.net carnott@snapchat.com cstroe@users.sf.net magnus@dnmgns.com dane.elwell@gmail.com inxonic@users.noreply.github.com daniel@danieloaks.net silverkorn@gmail.com davmrtl@gmail.com david.svantesson@qrtech.se deiwin.sarjas@gmail.com dhuanco@gmail.com fangdingjun@gmail.com dominik.schulz@gauner.org download-fritz@outlook.com emanuel.angelo@gmail.com raxetul@gmail.com enrico.ferro@dncsrl.com faridtsl@users.noreply.github.com feitel@indeedgeek.de fhuebner@posteo.de guillaume.dube.girard@gmail.com simoes.sgabriel@gmail.com wzc782970009@gmail.com girish@cloudron.io hhenkel@users.noreply.github.com InonS@users.noreply.github.com kreyren@fsfe.org jan@ruken.pw xor-gate@users.noreply.github.com contact@johnmaguire.me 17295146@qq.com 166291@gmail.com joohoi@users.noreply.github.com eatsleepgame@gmail.com me@jba.io jorgesumle@freakspot.net joaopms@users.noreply.github.com jnlinn@gmail.com JustAnotherArchivist@users.noreply.github.com juergen@hoetzel.info github@soebes.de cam.lafit@azerttyu.net mzch@me.com kristian@derfor.dk lbeltrame@kde.org lucien@kerl.io etienne@mageti.fr marat@slonopotamus.org martin@delille.org m@tthamilton.com 24367033+mmdoogie@users.noreply.github.com melroy@melroy.org the@howl.moe 13287984+mohe2015@users.noreply.github.com muhammedtiftikci@outlook.com mul14@users.noreply.github.com mura_li@castech.com.tw mysticboy@live.com nathan@nathan7.eu nicolas@damutten.ch toadron@yandex.ru patrick@luehne.de paulsb@gmail.com pbrackin@users.noreply.github.com ptman@users.noreply.github.com pta2002@users.noreply.github.com phtan90@gmail.com philippe@purecobalt.com xinity@users.noreply.github.com richardcoleman7@icloud.com github@vdberg.org saboya@gmail.com pd4d10@gmail.com roy@marples.name sasha@sashavarlamov.com Schwobaland@users.noreply.github.com shaun.dowling@gmail.com tsl0922@gmail.com shyim@users.noreply.github.com navatski@gmail.com simon@hilchenba.ch Simon.Legner@gmail.com nilsen.sondre@gmail.com 57448158+root360-StefanHeitmueller@users.noreply.github.com stb@lassitu.de gaodacheng@protonmail.ch xabufr@users.noreply.github.com thomas.mc.work@gmail.com tobias@kunicke.eu vszakats@users.noreply.github.com vvitalvas@yandex.ru doggy.huang@gmail.com alban.gruin@gmail.com j@mailb.org beautrepp@gmail.com esno@users.noreply.github.com dev.lh@web.de dnnssmth8@netscape.net esell@users.noreply.github.com euank@euank.com github@fralix.ovh glaszig@gmail.com guyzmo+github+pub@m0g.net hjl780000 iszla@users.noreply.github.com jwdeitch@users.noreply.github.com 5585491+leonklingele@users.noreply.github.com 395973991@qq.com mcheng827@gmail.com mingpeng16@gmail.com felix@nehrke.info contact@nickolas360.com borisovano@users.noreply.github.com puffybsd@yahoo.com pvgoran@users.noreply.github.com quanta.linux@gmail.com 261274+renothing@users.noreply.github.com rugk@posteo.de sauer.sebastian@gmail.com 1037160+spaeps@users.noreply.github.com success.go@gaodacheng.com kawewong@gmail.com 34678034+xdch47@users.noreply.github.com 1@5.nu huww98@outlook.com nalla@hamal.uberspace.de 0xflotus@gmail.com 41307817+7FM@users.noreply.github.com aj@daplie.com surganda@gmail.com awwalker3@gmail.com a.jurkiewicz5@gmail.com 44787359+AdamKorcz@users.noreply.github.com aqalieh95@gmail.com poigetadrian@gmail.com 36796532+ad-si@users.noreply.github.com aidan-fitz@users.noreply.github.com alan.pope@canonical.com alan@popey.com w.albert221@gmail.com A.Bulyshchenko@globallogic.com Savegod1@gmail.com alxwrd@googlemail.com alunegov@gmail.com 10987574+anicolaides@users.noreply.github.com melipse@gmail.com terentyev.alexey@gmail.com alukardd@alukardd.org ambrose@chua.family hesamgholami@yahoo.com k1nzy@outlook.com aes@eurenius.eu admin@andresmazzo.com boyarshinand@gmail.com andrew@wyominghealthfairs.com theasp@users.noreply.github.com andrewyoungwerth@Andrews-iMac.local andrey.arapov@nixaid.com jereksel@gmail.com aharrison@gmail.com andyleap@gmail.com github@angus.agibson.me anthonyv.be@outlook.com anton@nsl.cz antonio.facciolo@ad-notam.com antonio.meireles@reformi.st mmarif4u@gmail.com me@artem.ist atakangktepe@gmail.com atillabyte@null.net 42626718+beeonthego@users.noreply.github.com qianlei90@gmail.com bart_louwers@hotmail.com basstottelaar@gmail.com 60454087+bbros-dev@users.noreply.github.com ben@tilde.team ben@benyanke.com benedikt.kroll@der-arbeitende.de j100002ben@gmail.com benjamin@bitquabit.com bdemirkir@users.noreply.github.com decke@bluelife.at bwenrich@users.noreply.github.com bo@kbct.de Bobonium@users.noreply.github.com bogdan@presslabs.com bruno@robotinfra.com bigras.bruno@gmail.com bryan.johnson2@td.com 43413216+Cacciuc@users.noreply.github.com cameron@drivenow.com.au carlosg@sca.mx cedric@cedric-ziel.com chance.zibolski@gmail.com charuru2009@gmail.com charlesreid1@Gmail.com jcfrank7@gmail.com yan12125@gmail.com 3216719+chrissexton@users.noreply.github.com admin@teknik.io christian.dietrich@informatik.uni-erlangen.de derkoe@users.noreply.github.com cweiske+github.com@cweiske.de christoph.burgdorf@bvsn.org fragfutter@gmail.com christoph.koenig@gmail.com c35sys@gmail.com chdxD1@users.noreply.github.com christopherjmedlin@gmail.com chris.thomas@antimatter-studios.com dan.hearnah@gmail.com clar@charr.xyz clark.boylan@gmail.com claudius.ellsel@live.de github@clintarmstrong.net johnrazeur@gmail.com Corben78@users.noreply.github.com cumgun@users.noreply.github.com cuong.manhle.vn@gmail.com dwe@boreus.de damien@cassou.me psolyca@users.noreply.github.com 53821801+gouttegd@users.noreply.github.com damien.pollet@gmail.com dan.mcgregor@usask.ca dan@danmolik.com morrildl@gmail.com code@daniel.priv.no daniel.grier@gmail.com dan.peukert@gmail.com kardianos@gmail.com 45820840+vosdev@users.noreply.github.com 1461334+nephatrine@users.noreply.github.com github@pinshot.net menschel-d@posteo.de deoren@users.noreply.github.com 05zhujiahua@gmail.com me@favadi.com 33354314+Discusal@users.noreply.github.com dima@doroshev.com dmitry.neverov@gmail.com dyokunev@ut.mephi.ru 77961427+dofrijonsson@users.noreply.github.com liebler.dominik@googlemail.com domrim@users.noreply.github.com iDonlon@hotmail.com drewkowalski93@gmail.com 43180086+drewbowering@users.noreply.github.com dryusdan@hotmail.fr theduckyjason@gmail.com duncan@vtllf.org 1640391+E14@users.noreply.github.com 63237520+EV3R4@users.noreply.github.com eloyekunle@gmail.com exa@elou.world rico-github@ricozome.net elesiuta@gmail.com zephone@protonmail.com etienne.bruines@huperwebs.nl neezer@users.noreply.github.com fabian-braun@users.noreply.github.com FabioFortini@users.noreply.github.com felix@fwdekker.com feodor@appveyor.com manferwebs@gmail.com filippo@cloudflare.com yuyue_whu@foxmail.com sinnlosername@users.noreply.github.com fh@cbix.de flokli@flokli.de FlorianBen@users.noreply.github.com flutterlice@gmail.com valsatize@gmail.com francoism90@users.noreply.github.com admin@freecipher.com gabriel@coffeepowered.co 11440490+HarvsG@users.noreply.github.com scar45@users.noreply.github.com gerben@treora.com gernot.eger@gmail.com gibheer+github@zero-knowledge.org girish@forwardbias.in mail@girish.in Gjergj@users.noreply.github.com 30454698+c4lliope@users.noreply.github.com gramlich@eosc.de gdev@live.de site-github@guidodiepen.nl gmarion@netc.fr gbonvehi@gmail.com gustavo.marin@intelygenz.com gustavo.paes@gmail.com scr34m@gmail.com hb@aroma-project.org cryptix@riseup.net leroyz.mailaccount@gmx.net howiezhaohr@hotmail.com 0w0@loli.pet hussainpilot05@gmail.com ilux@cpan.org iluxz@mail.ru ivan.marban@gmail.com iv@nvald.es ibk@labhijau.net jacob@jacobparry.ca RealOrangeOne@users.noreply.github.com jake.net@gmail.com nukklen@gmail.com jakub.arbet@protonmail.com jakub@stasiak.at james@jamesa.me prologic@fb.com ravenscroftj@gmail.com jan.breuer@jaybee.cz janoliver@oelerich.org code@jannikbeyerstedt.de j20@users.noreply.github.com jasduaner@gmail.com geerlingguy@mac.com jeff@jeffvstein.org deray.jeremie@gmail.com jesselaprade@gmail.com jesse@jesselucas.com jsstrn@users.noreply.github.com jiri.hubacek@gmail.com no-go-nix@outlook.com jochen@tabbed.de JofkosDE@gmail.com jofkosde@gmail.com johnny@joskar.se jpds@protonmail.com jonas.ostanback@gmail.com jlozadad@users.noreply.github.com jonnytran@gmail.com 73816+inful@users.noreply.github.com drsect0r@users.noreply.github.com jbcrail@gmail.com josh.kalderimis@gmail.com voxxit@users.noreply.github.com jomp16@users.noreply.github.com 7@jqs7.com juanpablo.santos@gmail.com Julian.scholle@googlemail.com roidelapluie@inuits.eu jul.reich43@opmbx.org junhsieh@users.noreply.github.com justin@gluster.org justin.r.cutler@gmail.com vroomanj@gmail.com kamil@domanski.co kama@soebes.de mail@kalehmann.de KasiR1995@hotmail.co.uk keith@analytech-solutions.com 54439512+kevinschweikert@users.noreply.github.com kevin.zun@gmail.com khaled.hamedt@gmail.com klaus@vink-slott.dk camille.lafitte@webelys.com koen@chillheid.nl gawrilyako@gmail.com connyduck@users.noreply.github.com kuba@lbl.pl legoktm@gmail.com kmadel@mac.com me@KylePDavis.com kyungmin.bae@devsisters.com williambae1@gmail.com LER0ever@users.noreply.github.com amosng1@gmail.com Laica-Lunasys@users.noreply.github.com lars.gregori@gmail.com LarsKistner@sr4l.de lasse@bitmand.com github@ca.em0lar.de lewiscowles@me.com killtheidols@hotmail.co.uk limian.wang@gmail.com 5216518+linkjay@users.noreply.github.com louis@u5r.nl neolit123@gmail.com me@lucasqueiroz.dev luka.dornhecker@wlw.de account-github@lukasbestle.com lukas@lukasdietrich.com zyclonite@users.noreply.github.com lukastreyer@bluewin.ch gdutyifei@163.com LydiaSevelt@gmail.com at.mattenn@gmail.com manuel.kroeber@gmail.com manush@stendahls.se marc@ma-br.de m4rc.schiller@gmail.com marcin@python-blog.com 7380756+MarcelHillmann@users.noreply.github.com maxlazio@gmail.com mario.lubenka@dkd.de xiongnemo@126.com 5703553+pre-martin@users.noreply.github.com martin.garton@ft.com martin.h.pedersen@gmail.com me@masonx.ca masudjuly02@gmail.com mathew.robinson@chasinglogic.com mathieu@gagnon.name matthew.arnold@m-w.co.uk mattbutcher@google.com mattbaird@gmail.com 515152+iOnline247@users.noreply.github.com mrichar1@users.noreply.github.com beckert.matthias@googlemail.com codescale@users.noreply.github.com mniess@gmail.com git@mattsch.com mattiasbpersson@gmail.com maurizio.porrato@gmail.com max.wittig@siemens.com maxim.tkachenko@gmail.com zhiburt@gmail.com michael@crosbymichael.com michael.kuhn@informatik.uni-hamburg.de mlitbk@gmail.com mpeppler@carnegiehall.org peppage@gmail.com msvobodin@gmail.com mjwwit@gmail.com mjwwit@users.noreply.github.com michel@ganguin.net xefir@crystalyx.net mgdelacroix@gmail.com mikaela@mikaela.info mblacktree@users.noreply.github.com neingeist@bl0rg.net mailport@mikescher.de mikko@aino.se wp.parsi@gmail.com mordred@redhat.com github@heiber.im moritz@mekelburger.org mail@kl1m.dk MoshiBin@users.noreply.github.com muh.muhten@gmail.com 2606021+typeless@users.noreply.github.com nztim@users.noreply.github.com najib.idrissi.kaitouni@gmail.com NateScarlet@Gmail.com sabanski.n@gmail.com michael.schunk@medialyse-photography.de nicholas.smith4@utdallas.edu nick@e3b0c442.io niclas.kroon@protonmail.ch nico@nmandery.net scattaglia.nicola@gmail.com nikko.miu@nikkomiu.com github@niklasgoerke.de OhDaeto@users.noreply.github.com omar@assadi.co.il oscarcosta@gmail.com overminddl1@gmail.com 47217436+PE1NUT@users.noreply.github.com pje@telecommunity.com saavedra.pablo@gmail.com patcito@gmail.com patrick.devivo@gmail.com goldbattle@users.noreply.github.com pluehne@users.noreply.github.com redoz@redoz.com 28630076+paulbarton90@users.noreply.github.com p.e.strickland@gmail.com pauloedgarcastro@gmail.com p@tristero.se peter@colberg.org hsu@peterdavehello.org philhopper@sibertec.com phil@wysdom.co.uk pab@pabnet.de homann.philipp@googlemail.com philippe@main oct@zoy.org pierre-alexis@ciavaldini.fr git@pofilo.fr leitzler@users.noreply.github.com pourya@daneshvar.me pranavnachanekar@pm.me pink.banana.fish@gmail.com info@quasoft.net rakshith.ravi@gmx.com ralph_ld@aliyun.com Ramon_Fischer@hotmail.de renato.aquino@gmail.com richard.bukovansky@gmail.com richard_mahn@wycliffeassociates.org richard.schneeman+no-recruiters@gmail.com paladin2012gnu@gmail.com r.nowak@sciencia.se rauchrob@users.noreply.github.com rspeicher@gmail.com github@sprunk.me 32664920+rstefan1@users.noreply.github.com roobre@users.noreply.github.com 1105080+openscript@users.noreply.github.com rk@simple-is-better.org romdum@users.noreply.github.com romain.rom1@gmail.com romanegunkov@users.noreply.github.com psychomario@users.noreply.github.com ross@smithii.com raunger@gmail.com rutgerbroekhoff3@gmail.com ryan@rshaw.me me@ryanhalliday.com pawel.rychlicki@gmail.com rems4e@users.noreply.github.com sandro.jaeckel@gmail.com saren@sarencurrie.com Scarsz@users.noreply.github.com skibum55@hotmail.com sergey.dryabzhinsky+github@gmail.com xxsmotur@gmail.com sergio.schvezov@canonical.com 60224604+sijiaoh@users.noreply.github.com Chouchen@users.noreply.github.com me@sijmenschoon.nl silkeh@users.noreply.github.com siadat@gmail.com SjonHortensius@users.noreply.github.com webmaster@slany.work slavikz@pc sohny.bean@streber24.de 511121939@qq.com ekenno@gmail.com SpaWn2KiLl@users.noreply.github.com smtaylorslc@gmail.com stefan@stklcode.de stesachse@users.noreply.github.com solka@hey.com sternik@gmail.com shabbychef@gmail.com stormxx@1024.engineer tjyang2001@gmail.com roesch.eric@protonmail.com tait@tait.tech corentinfiloche@hotmail.fr 32878496+tle-huu@users.noreply.github.com badger@gitter.im winfr34k@gmail.com tho.laroche@gmail.com tbraeutigam@users.noreply.github.com tbouge@acacia.theobouge.eu tandrepires@gmail.com timo.gurr@gmail.com auth@tilera.xyz timo.myyra@iki.fi timo.schindler87@googlemail.com timonegk@users.noreply.github.com tim@siosm.fr Timur.makarchuk@gmail.com darktohka@users.noreply.github.com tom@carrio.me tomcat@tomcat-lily.com tenacubus@gmail.com tony@git-pull.com tony@uniongate.com.hk i@tosiney.com travis.parker@gmail.com tris.git@tfconsulting.com.au schmittlauch@users.noreply.github.com vakabus@users.noreply.github.com bazilek@gmail.com vaskas@lxmx.com.au victor@xirion.net vityatheboss@gmail.com popsul1993@gmail.com CyberShadow@users.noreply.github.com wranders@protonmail.com wmark@hurrikane.de WarsFeng@gmail.com 57538841+WeebDataHoarder@users.noreply.github.com wiktor.zurawik@gmail.com will@willglynn.com wfriesen@gmail.com wmhilton@gmail.com william.lepommelet@gmail.com wmantly@gmail.com william.roush@roushtech.net Wind0r@users.noreply.github.com lars.klompmaker@googlemail.com xwissen@xwissen.info 42207558+yasarciv67@users.noreply.github.com huyong5802@163.com c.zhou@live.com zacheryph@gmail.com g2pc@visionduweb.com aloupfor@users.noreply.github.com atzoum@gmail.com bibaijin@users.noreply.github.com blemasle+github@gmail.com bradder555@users.noreply.github.com 39764170+briolantonio@users.noreply.github.com blazej.cegielka@gmail.com caiwenpi@gmail.com cezar97@protonmail.com chaishushan@gmail.com moqiruyi@gmail.com collingstyles@gmail.com ddelpero@gmail.com derSuessmann@users.noreply.github.com machiel.sleeuwaert@dioss.com Stetsenkoem@gmail.com fzerorubigd@gmail.com e.bekrek@yandex.com gima@iki.fi gordon_vdlg@gmx.de gsilvan@users.noreply.github.com 48522963+hanahaneull@users.noreply.github.com haytona@users.noreply.github.com helix84@centrum.sk sux2mfgj@gmail.com iliyan87.ivanov@gmail.com isotas38@example.com jessachandler@gmail.com jiangjianxiao@gmail.com j_p@aleph0.info github@julian-picht.de julian.picht@gmail.com cahterinedesienne@gmail.com garciagonzalez.julien@gmail.com shmibs@users.noreply.github.com LoveEevee@users.noreply.github.com 7793728+kevinlin18@users.noreply.github.com me@koyu.space 43265000+l-jonas@users.noreply.github.com l2d4y3@gmail.com l2dy@icloud.com stealthybox@users.noreply.github.com m@luto.at maicss@foxmail.com maiki@interi.org mappu04@gmail.com masegaloeh@gmail.com 42911384+mavenbline@users.noreply.github.com maxm123@techie.com mcnesium@users.noreply.github.com michael@wyraz.de miki123211@gmail.com morpheyesh@gmail.com m.cramet@gmail.com muhfaris@disroot.org 22817873+n0emis@users.noreply.github.com ngourdon@gmail.com niphor@gmail.com nodiscc@gmail.com fcoffee@gmail.com mail@nunoand.re github@nubenum.de public@omeid.me 64696032+opyale@users.noreply.github.com pcl@mail.com pgodwin@gmail.com pmd.lotr.gandalf@gmail.com programkode@users.noreply.github.com raoulb@users.noreply.github.com 1206203935@qq.com rebecka.nylander@hotmail.com rektide@voodoowarez.com rojaro@gmail.com mschaff@gmail.com semlanik@gmail.com mail@shakeme.info shxsun@gmail.com guy.callum@gmail.com stephen@mcquay.me stroucki@andrew.cmu.edu 16743652+succcubbus@users.noreply.github.com 42143099+suisseWalter@users.noreply.github.com sura_sun@hotmail.com repsac-by@users.noreply.github.com lukasz@jarosz.in taziden@flexiden.org christiaan@droiddev.nl tklein23@users.noreply.github.com toby.zxj@gmail.com 837503+tuxmaster5000@users.noreply.github.com twitchyliquid64@ciphersink.net 40141083+ucodi@users.noreply.github.com uli.heller@daemons-point.com unclejack@users.noreply.github.com 1430016+sabinich@users.noreply.github.com viktike32@gmail.com t.z@mail.com veni0@qq.com vzvway@gmail.com wanglinzhizhi@hotmail.com xDShot@users.noreply.github.com 45297511+xenofem@users.noreply.github.com 50892683@qq.com yaggytter@momiage.com sxty32@hotmail.com yohann.delafollye@gmail.com yisiliang@foxmail.com hostmaster@zhuharev.ru znegva@users.noreply.github.com ogarcia@connectical.com Ahed91@users.noreply.github.com s.k.noe@hinoshiba.com a844620174@gmail.com