Compare commits

...

14 Commits

Author SHA1 Message Date
ᴜɴᴋɴᴡᴏɴ
f0e3cd90f8 release: update version to 0.12.3 2020-10-07 22:39:36 +08:00
ᴜɴᴋɴᴡᴏɴ
fbe34c8c61 lfs: ask client to always send the same value for the HTTP header (#6369)
# Conflicts:
#	go.sum
2020-10-06 13:12:56 +08:00
Jeff
e6b4c467e8 markup: render SHA links without branch prefix (#6350)
Co-authored-by: Zhukov Roman <zhukov.roman@gmail.com>
Co-authored-by: ᴜɴᴋɴᴡᴏɴ <u@gogs.io>
2020-10-06 13:08:27 +08:00
ᴜɴᴋɴᴡᴏɴ
6b6bfe8bb0 cmd/serv: use different log files for ORMs in hook mode (#6361)
# Conflicts:
#	CHANGELOG.md
#	go.sum
#	internal/db/db.go
#	internal/db/models.go
2020-09-29 22:36:02 +08:00
ᴜɴᴋɴᴡᴏɴ
253b2bef4c ci: update Go workflow from main 2020-09-26 16:53:26 +08:00
ᴜɴᴋɴᴡᴏɴ
1a051ae5f8 release: update version to 0.12.2 2020-09-26 16:50:07 +08:00
ᴜɴᴋɴᴡᴏɴ
ca54cbd055 action: fix issue reference regexp and error handling (#6352) 2020-09-26 16:23:40 +08:00
ᴜɴᴋɴᴡᴏɴ
9044afa40f dep: update github.com/unknwon/cae to v1.0.2 (#6342)
# Conflicts:
#	go.mod
#	go.sum
2020-09-21 20:32:05 +08:00
ᴜɴᴋɴᴡᴏɴ
672625b55c gitutil: infer submodule with baseURL when it is a relative path (#6337)
# Conflicts:
#	internal/assets/templates/templates_gen.go
#	internal/conf/testdata/TestInit.golden.ini
2020-09-18 16:21:16 +08:00
ᴜɴᴋɴᴡᴏɴ
98c65f319f web: correctly serving go-get pages for subdirs (#6318)
* web: correctly serving go-get page for subdirs

* Update CHANGELOG

* Fix golint error
# Conflicts:
#	CHANGELOG.md
2020-09-09 20:15:44 +08:00
ᴜɴᴋɴᴡᴏɴ
43fc826085 release: update version to 0.12.1 2020-08-27 14:47:41 +08:00
ᴜɴᴋɴᴡᴏɴ
d7a6bb8bcb db: fix wrong column type of login_source (#6283)
# Conflicts:
#	CHANGELOG.md
2020-08-27 14:46:26 +08:00
Kosadchiy
db037495de issue: fix timestamp updating (#6210)
Co-authored-by: ᴜɴᴋɴᴡᴏɴ <u@gogs.io>
2020-08-27 14:46:06 +08:00
ᴜɴᴋɴᴡᴏɴ
39bdd5c2cd assets: make generate (#6265) 2020-08-22 19:13:00 +08:00
30 changed files with 2320 additions and 2086 deletions

View File

@@ -1,8 +1,14 @@
name: Go
on:
push:
branches: [master]
branches:
- main
- 'release/**'
paths:
- '**.go'
pull_request:
paths:
- '**.go'
env:
GOPROXY: "https://proxy.golang.org"
@@ -21,7 +27,7 @@ jobs:
name: Test
strategy:
matrix:
go-version: [1.14.x]
go-version: [1.14.x, 1.15.x]
platform: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
@@ -45,4 +51,3 @@ jobs:
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-

View File

@@ -2,13 +2,60 @@
All notable changes to Gogs are documented in this file.
## 0.13.0+dev (`master`)
## 0.13.0+dev (`main`)
### Added
- An unlisted option is added when create or migrate a repository. Unlisted repositories are public but not being listed for users without direct access in the UI. [#5733](https://github.com/gogs/gogs/issues/5733)
### Changed
- The default branch has been changed to `main`. [#6285](https://github.com/gogs/gogs/pull/6285)
- MSSQL as database backend is deprecated, installation page no longer shows it as an option. Existing installations and manually craft configuration file continue to work. [#6295](https://github.com/gogs/gogs/pull/6295)
- Use [Task](https://github.com/go-task/task) as the default build tool for development. [#6297](https://github.com/gogs/gogs/pull/6297)
### Fixed
- _Regression:_ Pages are correctly rendered when requesting `?go-get=1` for subdirectories. [#6314](https://github.com/gogs/gogs/issues/6314)
- _Regression:_ Submodule with a relative path is linked correctly. [#6319](https://github.com/gogs/gogs/issues/6319)
- Backup can be processed when `--target` is specified on Windows. [#6339](https://github.com/gogs/gogs/issues/6339)
- Commit message contains keywords look like an issue reference no longer fails the push entirely. [#6289](https://github.com/gogs/gogs/issues/6289)
- _Regression:_ When running Gogs on Windows, push commits no longer fail on a daily basis with the error "pre-receive hook declined". [#6316](https://github.com/gogs/gogs/issues/6316)
- Auto-linked commit SHAs now have correct links. [#6300](https://github.com/gogs/gogs/issues/6300)
- Git LFS client (with version >= 2.5.0) wasn't able to upload files with known format (e.g. PNG, JPEG), and the server is expecting the HTTP Header `Content-Type` to be `application/octet-stream`. The server now tells the LFS client to always use `Content-Type: application/octet-stream` when upload files.
### Removed
- ⚠️ Migrations before 0.12 are removed, installations not on 0.12 should upgrade to it to run the migrations and then upgrade to 0.13.
- Configuration section `[mailer]` is no longer used.
- Configuration section `[service]` is no longer used.
- Configuration option `APP_NAME` is no longer used.
- Configuration option `[security] REVERSE_PROXY_AUTHENTICATION_USER` is no longer used.
- Configuration option `[database] PASSWD` is no longer used.
- Configuration option `[auth] ACTIVE_CODE_LIVE_MINUTES` is no longer used.
- Configuration option `[auth] RESET_PASSWD_CODE_LIVE_MINUTES` is no longer used.
- Configuration option `[auth] ENABLE_CAPTCHA` is no longer used.
- Configuration option `[auth] ENABLE_NOTIFY_MAIL` is no longer used.
- Configuration option `[auth] REGISTER_EMAIL_CONFIRM` is no longer used.
- Configuration option `[session] GC_INTERVAL_TIME` is no longer used.
- Configuration option `[session] SESSION_LIFE_TIME` is no longer used.
- Configuration option `[server] ROOT_URL` is no longer used.
- Configuration option `[server] LANDING_PAGE` is no longer used.
- Configuration option `[database] DB_TYPE` is no longer used.
- Configuration option `[database] PASSWD` is no longer used.
## 0.12.1
### Fixed
- The `updated_at` field is now correctly updated when updates an issue. [#6209](https://github.com/gogs/gogs/issues/6209)
- Fixed a regression which created `login_source.cfg` column to have `VARCHAR(255)` instead of `TEXT` in MySQL. [#6280](https://github.com/gogs/gogs/issues/6280)
## 0.12.0
### Added
- Support for Git LFS, you can read documentation for both [user](https://github.com/gogs/gogs/blob/master/docs/user/lfs.md) and [admin](https://github.com/gogs/gogs/blob/master/docs/admin/lfs.md). [#1322](https://github.com/gogs/gogs/issues/1322)
- Support for Git LFS, you can read documentation for both [user](https://github.com/gogs/gogs/blob/main/docs/user/lfs.md) and [admin](https://github.com/gogs/gogs/blob/main/docs/admin/lfs.md). [#1322](https://github.com/gogs/gogs/issues/1322)
- Allow admin to remove observers from the repository. [#5803](https://github.com/gogs/gogs/pull/5803)
- Use `Last-Modified` HTTP header for raw files. [#5811](https://github.com/gogs/gogs/issues/5811)
- Support syntax highlighting for SAS code files (i.e. `.r`, `.sas`, `.tex`, `.yaml`). [#5856](https://github.com/gogs/gogs/pull/5856)

2
go.mod
View File

@@ -51,7 +51,7 @@ require (
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
github.com/stretchr/testify v1.6.1
github.com/t-tiger/gorm-bulk-insert v1.3.0
github.com/unknwon/cae v1.0.0
github.com/unknwon/cae v1.0.2
github.com/unknwon/com v1.0.1
github.com/unknwon/i18n v0.0.0-20190805065654-5c6446a380b6
github.com/unknwon/paginater v0.0.0-20170405233947-45e5d631308e

12
go.sum
View File

@@ -266,6 +266,7 @@ github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUr
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v0.0.0-20190731233626-505e41936337/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo=
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -282,8 +283,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
github.com/t-tiger/gorm-bulk-insert v1.3.0 h1:9k7BaVEhw/3fsvh6GTOBwJ2RXk3asc5xs5m6hwozq20=
github.com/t-tiger/gorm-bulk-insert v1.3.0/go.mod h1:ruDlk8xDl+8sX4bA7PQuYly9YEb3pbp1eP2LCyeRrFY=
github.com/unknwon/cae v1.0.0 h1:i39lOFaBXZxhGjQOy/RNbi8uzettCs6OQxpR0xXohGU=
github.com/unknwon/cae v1.0.0/go.mod h1:QaSeRctcea9fK6piJpAMCCPKxzJ01+xFcr2k1m3WRPU=
github.com/unknwon/cae v1.0.2 h1:3L8/RCN1ARvD5quyNjU30EdvYkFbxBfnRcIBXugpHlg=
github.com/unknwon/cae v1.0.2/go.mod h1:HqpmD2fVq9G1oGEXrXzbgIp51uJ29Hshv41n9ljm+AA=
github.com/unknwon/com v0.0.0-20190804042917-757f69c95f3e/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
github.com/unknwon/com v1.0.1 h1:3d1LTxD+Lnf3soQiD4Cp/0BRB+Rsa/+RTvz8GMMzIXs=
github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
@@ -353,7 +354,6 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f h1:gWF768j/LaZugp8dyS4UwsslY
golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -400,7 +400,6 @@ gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMy
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
gopkg.in/ini.v1 v1.46.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.55.0 h1:E8yzL5unfpW3M6fz/eB7Cb5MQAYSZ7GKo4Qth+N2sgQ=
gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.56.0 h1:DPMeDvGTM54DXbPkVIZsp19fp/I2K7zwA/itHYHKo8Y=
gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@@ -408,10 +407,6 @@ gopkg.in/ldap.v2 v2.5.1 h1:wiu0okdNfjlBzg6UWvd1Hn8Y+Ux17/u/4nlk4CQr6tU=
gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk=
gopkg.in/macaron.v1 v1.3.4/go.mod h1:/RoHTdC8ALpyJ3+QR36mKjwnT1F1dyYtsGM9Ate6ZFI=
gopkg.in/macaron.v1 v1.3.5/go.mod h1:uMZCFccv9yr5TipIalVOyAyZQuOH3OkmXvgcWwhJuP4=
gopkg.in/macaron.v1 v1.3.6 h1:mHw5qRGj2f86sCjBV/S5OOPvPbiZpu0OEs1F5l66fYI=
gopkg.in/macaron.v1 v1.3.6/go.mod h1:uMZCFccv9yr5TipIalVOyAyZQuOH3OkmXvgcWwhJuP4=
gopkg.in/macaron.v1 v1.3.8 h1:45bQT4dDF+5SLd75qlj+dulQsuFQ9aFyLlvZX6YUJWE=
gopkg.in/macaron.v1 v1.3.8/go.mod h1:uMZCFccv9yr5TipIalVOyAyZQuOH3OkmXvgcWwhJuP4=
gopkg.in/macaron.v1 v1.3.9 h1:Dw+DDRYdXgQyEsPlfAfKz+UA5qVUrH3KPD7JhmZ9MFc=
gopkg.in/macaron.v1 v1.3.9/go.mod h1:uMZCFccv9yr5TipIalVOyAyZQuOH3OkmXvgcWwhJuP4=
gopkg.in/redis.v2 v2.3.2 h1:GPVIIB/JnL1wvfULefy3qXmPu1nfNu2d0yA09FHgwfs=
@@ -421,7 +416,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@@ -18,7 +18,7 @@ import (
)
func init() {
conf.App.Version = "0.12.0"
conf.App.Version = "0.12.3"
}
func main() {

View File

@@ -4504,7 +4504,7 @@ func confLocaleLocale_bgBgIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_bg-BG.ini", size: 97949, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_bg-BG.ini", size: 97949, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0x23, 0x4e, 0xc, 0xc9, 0xd2, 0xb1, 0x18, 0xde, 0xfa, 0x7f, 0xe1, 0xa7, 0xb6, 0xb0, 0x9b, 0xd0, 0xf7, 0x36, 0xc9, 0xeb, 0x95, 0x6c, 0x94, 0xaf, 0xb, 0xaf, 0x1e, 0x7e, 0xa3, 0x31, 0x28}}
return a, nil
}
@@ -4524,7 +4524,7 @@ func confLocaleLocale_csCzIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_cs-CZ.ini", size: 73424, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_cs-CZ.ini", size: 73424, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0x2e, 0xe4, 0x3, 0x52, 0x46, 0xdb, 0x60, 0x8a, 0x3d, 0xcd, 0xf1, 0x23, 0x21, 0x26, 0x16, 0xbe, 0xb3, 0x4, 0x7e, 0xa4, 0xf3, 0x54, 0x5, 0x26, 0x82, 0x4, 0xf9, 0xbd, 0x47, 0x3f, 0x7a}}
return a, nil
}
@@ -4544,7 +4544,7 @@ func confLocaleLocale_deDeIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_de-DE.ini", size: 74540, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_de-DE.ini", size: 74540, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x89, 0x59, 0xc7, 0x7c, 0xb3, 0xe4, 0xa3, 0xf2, 0x7e, 0x84, 0xbf, 0x17, 0xa0, 0x80, 0xec, 0xb7, 0xb6, 0xb6, 0xde, 0xd9, 0xa5, 0x12, 0xd0, 0xd5, 0x47, 0x30, 0x7f, 0xb9, 0x7c, 0x40, 0x4c, 0xc8}}
return a, nil
}
@@ -4564,7 +4564,7 @@ func confLocaleLocale_enGbIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_en-GB.ini", size: 66927, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_en-GB.ini", size: 66927, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0x3e, 0x3f, 0xd7, 0xdd, 0xf4, 0x9d, 0x79, 0x82, 0x92, 0xe, 0xc3, 0xcd, 0x34, 0xd2, 0xe7, 0x1f, 0xe0, 0xf, 0xd1, 0x4a, 0xe7, 0x87, 0xa7, 0x98, 0x4a, 0xac, 0x91, 0x1a, 0x2e, 0xce, 0xe0}}
return a, nil
}
@@ -4604,7 +4604,7 @@ func confLocaleLocale_esEsIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_es-ES.ini", size: 74541, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_es-ES.ini", size: 74541, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x89, 0x71, 0x97, 0xe9, 0x92, 0x76, 0x4, 0x35, 0x3a, 0x8a, 0x56, 0xec, 0x5a, 0x35, 0xcd, 0xe5, 0xc3, 0x18, 0xd3, 0xe4, 0x7c, 0xd4, 0x52, 0xb, 0xe, 0xd3, 0x9f, 0x37, 0x2b, 0x22, 0x98, 0xce}}
return a, nil
}
@@ -4624,7 +4624,7 @@ func confLocaleLocale_faIrIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_fa-IR.ini", size: 92428, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_fa-IR.ini", size: 92428, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x27, 0xfc, 0xec, 0xa, 0xe6, 0xeb, 0x68, 0xd2, 0xcb, 0xc2, 0x99, 0x8f, 0xf4, 0x35, 0x1d, 0xdf, 0x89, 0x9a, 0x2b, 0xee, 0x2f, 0x2d, 0xf1, 0x97, 0xea, 0xc, 0xe5, 0xe7, 0xd, 0x7f, 0x6e, 0x55}}
return a, nil
}
@@ -4644,7 +4644,7 @@ func confLocaleLocale_fiFiIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_fi-FI.ini", size: 70799, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_fi-FI.ini", size: 70799, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa2, 0xd6, 0x9b, 0x1a, 0x71, 0xe1, 0x56, 0x96, 0x8d, 0x45, 0xb8, 0xb4, 0x1f, 0xfc, 0xd, 0x91, 0x5b, 0xae, 0x4e, 0xd2, 0xba, 0xaa, 0x20, 0xab, 0x72, 0x55, 0x7b, 0x18, 0xd2, 0x19, 0x40, 0xa7}}
return a, nil
}
@@ -4664,7 +4664,7 @@ func confLocaleLocale_frFrIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_fr-FR.ini", size: 75031, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_fr-FR.ini", size: 75031, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb2, 0xf9, 0xcc, 0xa8, 0x8f, 0x54, 0xb, 0x69, 0xd5, 0xe, 0x8c, 0x29, 0x2b, 0xbe, 0xa8, 0xf3, 0x1f, 0x8b, 0x3b, 0xf5, 0x40, 0x5, 0x43, 0xa5, 0x29, 0xf0, 0x8e, 0x94, 0xde, 0x63, 0x1b, 0x6d}}
return a, nil
}
@@ -4684,7 +4684,7 @@ func confLocaleLocale_glEsIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_gl-ES.ini", size: 72427, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_gl-ES.ini", size: 72427, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x2c, 0x7d, 0x6d, 0xc6, 0x1a, 0xb, 0xf5, 0xd8, 0x8d, 0x9e, 0x5c, 0xed, 0x82, 0x43, 0xb6, 0xa6, 0x53, 0x33, 0x68, 0x7, 0xe3, 0x7, 0xd9, 0x64, 0x51, 0x8c, 0x76, 0x4e, 0xc9, 0xc0, 0xa4}}
return a, nil
}
@@ -4704,7 +4704,7 @@ func confLocaleLocale_huHuIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_hu-HU.ini", size: 73590, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_hu-HU.ini", size: 73590, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x98, 0xec, 0x98, 0x96, 0xac, 0x29, 0x4f, 0xaa, 0x4f, 0x45, 0x93, 0xa8, 0x56, 0x89, 0xb7, 0xea, 0x46, 0xb2, 0xf0, 0xd0, 0x46, 0x69, 0x2e, 0xfd, 0x72, 0x4b, 0x5e, 0xae, 0xf9, 0x52, 0xec, 0x63}}
return a, nil
}
@@ -4724,7 +4724,7 @@ func confLocaleLocale_idIdIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_id-ID.ini", size: 69575, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_id-ID.ini", size: 69575, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x87, 0xcc, 0x85, 0x34, 0xea, 0xd6, 0xb8, 0xe1, 0x9d, 0x73, 0x13, 0xfd, 0x71, 0x2c, 0xf6, 0x9e, 0x93, 0x72, 0xef, 0xe1, 0xc3, 0x39, 0x5b, 0x9b, 0x55, 0xf3, 0x4b, 0x5, 0x1e, 0x67, 0xf9, 0x31}}
return a, nil
}
@@ -4744,7 +4744,7 @@ func confLocaleLocale_itItIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_it-IT.ini", size: 71571, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_it-IT.ini", size: 71571, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb0, 0x8d, 0xf4, 0x29, 0x9d, 0x18, 0x7f, 0xe9, 0x67, 0xe4, 0xfd, 0xd2, 0xe6, 0x19, 0x76, 0x44, 0x4a, 0x5d, 0xfb, 0x21, 0xc3, 0x68, 0xf1, 0x9c, 0x4, 0x3f, 0xe5, 0x38, 0x23, 0x16, 0xbc, 0x5f}}
return a, nil
}
@@ -4764,7 +4764,7 @@ func confLocaleLocale_jaJpIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_ja-JP.ini", size: 83822, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_ja-JP.ini", size: 83822, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x91, 0xc2, 0xf7, 0xf0, 0x93, 0xa, 0x3f, 0xec, 0x92, 0x84, 0x36, 0xd8, 0xfb, 0x22, 0xa9, 0x79, 0x42, 0x58, 0x89, 0x12, 0xe0, 0x12, 0xea, 0x0, 0x1a, 0x56, 0x38, 0xe4, 0x96, 0x21, 0xeb, 0x6f}}
return a, nil
}
@@ -4784,7 +4784,7 @@ func confLocaleLocale_koKrIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_ko-KR.ini", size: 74794, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_ko-KR.ini", size: 74794, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4a, 0x5, 0x51, 0x2b, 0x17, 0x78, 0x4, 0x82, 0xfc, 0x20, 0x5b, 0x15, 0x52, 0x7d, 0x7e, 0xcf, 0xe4, 0x37, 0x8f, 0x63, 0xf9, 0x7a, 0x69, 0x4d, 0xdd, 0x9, 0x49, 0xa, 0xa5, 0xbd, 0x23, 0x2c}}
return a, nil
}
@@ -4804,7 +4804,7 @@ func confLocaleLocale_lvLvIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_lv-LV.ini", size: 73813, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_lv-LV.ini", size: 73813, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0x38, 0x24, 0xf0, 0xdc, 0xfd, 0xce, 0x94, 0x78, 0xa9, 0x94, 0x5d, 0x75, 0xc1, 0xe5, 0xfc, 0x46, 0x55, 0x79, 0x21, 0x95, 0x39, 0x6b, 0x6, 0x68, 0xb, 0xa, 0x9d, 0xe8, 0x11, 0x2c, 0x9a}}
return a, nil
}
@@ -4824,7 +4824,7 @@ func confLocaleLocale_nlNlIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_nl-NL.ini", size: 70067, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_nl-NL.ini", size: 70067, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x18, 0xc2, 0xfc, 0xf8, 0xc7, 0x90, 0x9, 0xea, 0x71, 0x4a, 0xca, 0xf7, 0x92, 0xb6, 0x3c, 0xf7, 0x31, 0x5a, 0x31, 0x99, 0xaa, 0xc7, 0xf4, 0xe, 0x39, 0x9d, 0xe8, 0x4f, 0x70, 0x11, 0x24, 0x1}}
return a, nil
}
@@ -4844,7 +4844,7 @@ func confLocaleLocale_plPlIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_pl-PL.ini", size: 72244, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_pl-PL.ini", size: 72244, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x9e, 0x79, 0x60, 0xfb, 0xda, 0xb9, 0x3b, 0x34, 0x83, 0x36, 0x56, 0x27, 0xc0, 0x88, 0xd7, 0xdd, 0xdb, 0xd4, 0xb7, 0x40, 0xbf, 0x19, 0x50, 0xb5, 0x49, 0xb, 0x1, 0x39, 0x5f, 0x16, 0xe7}}
return a, nil
}
@@ -4864,7 +4864,7 @@ func confLocaleLocale_ptBrIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_pt-BR.ini", size: 72290, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_pt-BR.ini", size: 72290, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0x5c, 0x7b, 0x14, 0x91, 0xc, 0x4d, 0xbf, 0x9c, 0x87, 0xed, 0xeb, 0x2b, 0x35, 0x14, 0x18, 0xa2, 0x5a, 0x57, 0x6a, 0xfa, 0x43, 0x63, 0x88, 0x5d, 0x4, 0x39, 0x6, 0x8c, 0xc4, 0x32, 0xe5}}
return a, nil
}
@@ -4884,7 +4884,7 @@ func confLocaleLocale_ptPtIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_pt-PT.ini", size: 73346, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_pt-PT.ini", size: 73346, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb3, 0x82, 0xc, 0x3f, 0x6, 0xe7, 0x3d, 0x6b, 0x6c, 0x6e, 0x55, 0x1a, 0xae, 0x59, 0xbe, 0x4a, 0x35, 0x5, 0xf7, 0xf2, 0xa3, 0x74, 0x95, 0xe0, 0x9b, 0x67, 0x8c, 0xf9, 0xe4, 0xc9, 0x1d, 0xb}}
return a, nil
}
@@ -4904,7 +4904,7 @@ func confLocaleLocale_ruRuIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_ru-RU.ini", size: 102698, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_ru-RU.ini", size: 102698, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2b, 0x2c, 0x2d, 0x7b, 0x60, 0xb6, 0xe6, 0x8e, 0xcb, 0x8f, 0xe7, 0x6, 0x99, 0xcb, 0xc0, 0xec, 0xa1, 0x20, 0x4a, 0xcb, 0x49, 0x4, 0x2c, 0x6f, 0xc9, 0x40, 0xf5, 0xf6, 0xea, 0xb5, 0x52, 0xb5}}
return a, nil
}
@@ -4924,7 +4924,7 @@ func confLocaleLocale_skSkIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_sk-SK.ini", size: 73355, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_sk-SK.ini", size: 73355, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x27, 0x30, 0x4e, 0xf2, 0xda, 0xc0, 0xd5, 0xb8, 0x9d, 0xd4, 0x7, 0xd1, 0x4a, 0x44, 0xa3, 0x78, 0xf0, 0x33, 0xaa, 0xd8, 0x96, 0xac, 0xad, 0xb2, 0xb4, 0x66, 0x8f, 0xdb, 0xc6, 0x25, 0x67}}
return a, nil
}
@@ -4944,7 +4944,7 @@ func confLocaleLocale_srSpIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_sr-SP.ini", size: 94621, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_sr-SP.ini", size: 94621, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x4, 0x3c, 0xa9, 0x98, 0x92, 0xb8, 0x6c, 0x1a, 0x3a, 0x2d, 0x46, 0x40, 0xe3, 0x9e, 0x0, 0xe1, 0x22, 0x1d, 0xb3, 0x1, 0x23, 0x2b, 0xff, 0xe8, 0x93, 0x38, 0xbe, 0xa6, 0x25, 0xab, 0x4c}}
return a, nil
}
@@ -4964,7 +4964,7 @@ func confLocaleLocale_svSeIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_sv-SE.ini", size: 69955, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_sv-SE.ini", size: 69955, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xca, 0xf7, 0xd6, 0x13, 0xc4, 0x88, 0x71, 0x33, 0xce, 0xb7, 0x18, 0x4b, 0xd3, 0xc3, 0xd3, 0xf6, 0xae, 0x40, 0xce, 0x7f, 0x15, 0x4f, 0x34, 0x9d, 0xc8, 0xfc, 0x2f, 0x5, 0xa1, 0x3, 0x50}}
return a, nil
}
@@ -4984,7 +4984,7 @@ func confLocaleLocale_trTrIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_tr-TR.ini", size: 72816, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_tr-TR.ini", size: 72816, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xbb, 0x69, 0xe4, 0xa7, 0xef, 0x25, 0x66, 0x76, 0x5d, 0xee, 0x17, 0x59, 0xf7, 0xd5, 0xda, 0x1e, 0x26, 0x32, 0x44, 0xf3, 0xa2, 0xa7, 0x4b, 0xf1, 0xe6, 0x59, 0xa6, 0x5b, 0x67, 0xc4, 0x6e}}
return a, nil
}
@@ -5004,7 +5004,7 @@ func confLocaleLocale_ukUaIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_uk-UA.ini", size: 100202, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_uk-UA.ini", size: 100202, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5c, 0xb1, 0x82, 0xd9, 0xa2, 0x6e, 0x8, 0x4f, 0x60, 0x8c, 0xc0, 0x6b, 0x3f, 0x76, 0xbf, 0xc7, 0x9c, 0x2d, 0x59, 0x8c, 0x7e, 0x94, 0x14, 0x76, 0x8a, 0x20, 0xa0, 0xf0, 0xa8, 0xfb, 0x22, 0x1f}}
return a, nil
}
@@ -5024,7 +5024,7 @@ func confLocaleLocale_viVnIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_vi-VN.ini", size: 77827, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_vi-VN.ini", size: 77827, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x35, 0x9e, 0x58, 0x1a, 0x31, 0x59, 0xc4, 0xe5, 0x46, 0x50, 0x21, 0x3, 0x44, 0x22, 0xa5, 0x86, 0x8e, 0xfd, 0x5, 0x17, 0xd, 0x1d, 0x6e, 0x25, 0x40, 0x8, 0x41, 0x23, 0xcf, 0x90, 0xb9}}
return a, nil
}
@@ -5044,7 +5044,7 @@ func confLocaleLocale_zhCnIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_zh-CN.ini", size: 66011, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_zh-CN.ini", size: 66011, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x1, 0xd, 0x67, 0xba, 0xe, 0xbc, 0x8c, 0x9b, 0x46, 0x26, 0x96, 0x19, 0x7b, 0x60, 0x6f, 0x55, 0xb7, 0x97, 0x8a, 0xf3, 0x60, 0x17, 0xda, 0x8f, 0x47, 0xc6, 0x62, 0xfa, 0x27, 0x33, 0xdd}}
return a, nil
}
@@ -5064,7 +5064,7 @@ func confLocaleLocale_zhHkIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_zh-HK.ini", size: 66519, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_zh-HK.ini", size: 66519, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfe, 0x11, 0x6c, 0x73, 0x6, 0x0, 0x24, 0xc5, 0x7f, 0x38, 0x55, 0x8e, 0x48, 0x93, 0xf5, 0x61, 0x4, 0x5c, 0x74, 0xe1, 0xbc, 0x5a, 0x1e, 0xaa, 0x9c, 0xf5, 0x2e, 0x79, 0x54, 0x95, 0xc, 0xb6}}
return a, nil
}
@@ -5084,7 +5084,7 @@ func confLocaleLocale_zhTwIni() (*asset, error) {
return nil, err
}
info := bindataFileInfo{name: "conf/locale/locale_zh-TW.ini", size: 65809, mode: os.FileMode(0644), modTime: time.Unix(1598088982, 0)}
info := bindataFileInfo{name: "conf/locale/locale_zh-TW.ini", size: 65809, mode: os.FileMode(0644), modTime: time.Unix(1598089975, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x98, 0xdb, 0xc8, 0xe3, 0xe9, 0xe9, 0xa7, 0xf1, 0x5b, 0x6a, 0xde, 0x46, 0x24, 0xac, 0x10, 0x23, 0xf5, 0xdc, 0xb6, 0xea, 0xdc, 0x3b, 0x4b, 0xcb, 0x3f, 0xf3, 0x89, 0xa6, 0xa3, 0xb5, 0x1f, 0x1}}
return a, nil
}
@@ -5486,258 +5486,258 @@ type bintree struct {
}
var _bintree = &bintree{nil, map[string]*bintree{
"conf": {nil, map[string]*bintree{
"app.ini": {confAppIni, map[string]*bintree{}},
"auth.d": {nil, map[string]*bintree{
"github.conf.example": {confAuthDGithubConfExample, map[string]*bintree{}},
"ldap_bind_dn.conf.example": {confAuthDLdap_bind_dnConfExample, map[string]*bintree{}},
"ldap_simple_auth.conf.example": {confAuthDLdap_simple_authConfExample, map[string]*bintree{}},
"pam.conf.example": {confAuthDPamConfExample, map[string]*bintree{}},
"smtp.conf.example": {confAuthDSmtpConfExample, map[string]*bintree{}},
"conf": &bintree{nil, map[string]*bintree{
"app.ini": &bintree{confAppIni, map[string]*bintree{}},
"auth.d": &bintree{nil, map[string]*bintree{
"github.conf.example": &bintree{confAuthDGithubConfExample, map[string]*bintree{}},
"ldap_bind_dn.conf.example": &bintree{confAuthDLdap_bind_dnConfExample, map[string]*bintree{}},
"ldap_simple_auth.conf.example": &bintree{confAuthDLdap_simple_authConfExample, map[string]*bintree{}},
"pam.conf.example": &bintree{confAuthDPamConfExample, map[string]*bintree{}},
"smtp.conf.example": &bintree{confAuthDSmtpConfExample, map[string]*bintree{}},
}},
"gitignore": {nil, map[string]*bintree{
"Actionscript": {confGitignoreActionscript, map[string]*bintree{}},
"Ada": {confGitignoreAda, map[string]*bintree{}},
"Agda": {confGitignoreAgda, map[string]*bintree{}},
"Android": {confGitignoreAndroid, map[string]*bintree{}},
"Anjuta": {confGitignoreAnjuta, map[string]*bintree{}},
"AppEngine": {confGitignoreAppengine, map[string]*bintree{}},
"AppceleratorTitanium": {confGitignoreAppceleratortitanium, map[string]*bintree{}},
"ArchLinuxPackages": {confGitignoreArchlinuxpackages, map[string]*bintree{}},
"Archives": {confGitignoreArchives, map[string]*bintree{}},
"Autotools": {confGitignoreAutotools, map[string]*bintree{}},
"BricxCC": {confGitignoreBricxcc, map[string]*bintree{}},
"C": {confGitignoreC, map[string]*bintree{}},
"C Sharp": {confGitignoreCSharp, map[string]*bintree{}},
"C++": {confGitignoreC2, map[string]*bintree{}},
"CFWheels": {confGitignoreCfwheels, map[string]*bintree{}},
"CMake": {confGitignoreCmake, map[string]*bintree{}},
"CUDA": {confGitignoreCuda, map[string]*bintree{}},
"CVS": {confGitignoreCvs, map[string]*bintree{}},
"CakePHP": {confGitignoreCakephp, map[string]*bintree{}},
"ChefCookbook": {confGitignoreChefcookbook, map[string]*bintree{}},
"Cloud9": {confGitignoreCloud9, map[string]*bintree{}},
"CodeIgniter": {confGitignoreCodeigniter, map[string]*bintree{}},
"CodeKit": {confGitignoreCodekit, map[string]*bintree{}},
"CommonLisp": {confGitignoreCommonlisp, map[string]*bintree{}},
"Composer": {confGitignoreComposer, map[string]*bintree{}},
"Concrete5": {confGitignoreConcrete5, map[string]*bintree{}},
"Coq": {confGitignoreCoq, map[string]*bintree{}},
"CraftCMS": {confGitignoreCraftcms, map[string]*bintree{}},
"DM": {confGitignoreDm, map[string]*bintree{}},
"Dart": {confGitignoreDart, map[string]*bintree{}},
"DartEditor": {confGitignoreDarteditor, map[string]*bintree{}},
"Delphi": {confGitignoreDelphi, map[string]*bintree{}},
"Dreamweaver": {confGitignoreDreamweaver, map[string]*bintree{}},
"Drupal": {confGitignoreDrupal, map[string]*bintree{}},
"EPiServer": {confGitignoreEpiserver, map[string]*bintree{}},
"Eagle": {confGitignoreEagle, map[string]*bintree{}},
"Eclipse": {confGitignoreEclipse, map[string]*bintree{}},
"EiffelStudio": {confGitignoreEiffelstudio, map[string]*bintree{}},
"Elisp": {confGitignoreElisp, map[string]*bintree{}},
"Elixir": {confGitignoreElixir, map[string]*bintree{}},
"Emacs": {confGitignoreEmacs, map[string]*bintree{}},
"Ensime": {confGitignoreEnsime, map[string]*bintree{}},
"Erlang": {confGitignoreErlang, map[string]*bintree{}},
"Espresso": {confGitignoreEspresso, map[string]*bintree{}},
"ExpressionEngine": {confGitignoreExpressionengine, map[string]*bintree{}},
"ExtJs": {confGitignoreExtjs, map[string]*bintree{}},
"Fancy": {confGitignoreFancy, map[string]*bintree{}},
"Finale": {confGitignoreFinale, map[string]*bintree{}},
"FlexBuilder": {confGitignoreFlexbuilder, map[string]*bintree{}},
"ForceDotCom": {confGitignoreForcedotcom, map[string]*bintree{}},
"FuelPHP": {confGitignoreFuelphp, map[string]*bintree{}},
"GWT": {confGitignoreGwt, map[string]*bintree{}},
"Gcov": {confGitignoreGcov, map[string]*bintree{}},
"GitBook": {confGitignoreGitbook, map[string]*bintree{}},
"Go": {confGitignoreGo, map[string]*bintree{}},
"Gradle": {confGitignoreGradle, map[string]*bintree{}},
"Grails": {confGitignoreGrails, map[string]*bintree{}},
"Haskell": {confGitignoreHaskell, map[string]*bintree{}},
"IGORPro": {confGitignoreIgorpro, map[string]*bintree{}},
"IPythonNotebook": {confGitignoreIpythonnotebook, map[string]*bintree{}},
"Idris": {confGitignoreIdris, map[string]*bintree{}},
"JDeveloper": {confGitignoreJdeveloper, map[string]*bintree{}},
"Java": {confGitignoreJava, map[string]*bintree{}},
"Jboss": {confGitignoreJboss, map[string]*bintree{}},
"Jekyll": {confGitignoreJekyll, map[string]*bintree{}},
"JetBrains": {confGitignoreJetbrains, map[string]*bintree{}},
"Joomla": {confGitignoreJoomla, map[string]*bintree{}},
"KDevelop4": {confGitignoreKdevelop4, map[string]*bintree{}},
"Kate": {confGitignoreKate, map[string]*bintree{}},
"KiCAD": {confGitignoreKicad, map[string]*bintree{}},
"Kohana": {confGitignoreKohana, map[string]*bintree{}},
"LabVIEW": {confGitignoreLabview, map[string]*bintree{}},
"Laravel": {confGitignoreLaravel, map[string]*bintree{}},
"Lazarus": {confGitignoreLazarus, map[string]*bintree{}},
"Leiningen": {confGitignoreLeiningen, map[string]*bintree{}},
"LemonStand": {confGitignoreLemonstand, map[string]*bintree{}},
"LibreOffice": {confGitignoreLibreoffice, map[string]*bintree{}},
"Lilypond": {confGitignoreLilypond, map[string]*bintree{}},
"Linux": {confGitignoreLinux, map[string]*bintree{}},
"Lithium": {confGitignoreLithium, map[string]*bintree{}},
"Lua": {confGitignoreLua, map[string]*bintree{}},
"LyX": {confGitignoreLyx, map[string]*bintree{}},
"Magento": {confGitignoreMagento, map[string]*bintree{}},
"Matlab": {confGitignoreMatlab, map[string]*bintree{}},
"Maven": {confGitignoreMaven, map[string]*bintree{}},
"Mercurial": {confGitignoreMercurial, map[string]*bintree{}},
"Mercury": {confGitignoreMercury, map[string]*bintree{}},
"MetaProgrammingSystem": {confGitignoreMetaprogrammingsystem, map[string]*bintree{}},
"MicrosoftOffice": {confGitignoreMicrosoftoffice, map[string]*bintree{}},
"ModelSim": {confGitignoreModelsim, map[string]*bintree{}},
"Momentics": {confGitignoreMomentics, map[string]*bintree{}},
"MonoDevelop": {confGitignoreMonodevelop, map[string]*bintree{}},
"Nanoc": {confGitignoreNanoc, map[string]*bintree{}},
"NetBeans": {confGitignoreNetbeans, map[string]*bintree{}},
"Nim": {confGitignoreNim, map[string]*bintree{}},
"Ninja": {confGitignoreNinja, map[string]*bintree{}},
"Node": {confGitignoreNode, map[string]*bintree{}},
"NotepadPP": {confGitignoreNotepadpp, map[string]*bintree{}},
"OCaml": {confGitignoreOcaml, map[string]*bintree{}},
"Objective-C": {confGitignoreObjectiveC, map[string]*bintree{}},
"Opa": {confGitignoreOpa, map[string]*bintree{}},
"OpenCart": {confGitignoreOpencart, map[string]*bintree{}},
"OracleForms": {confGitignoreOracleforms, map[string]*bintree{}},
"Packer": {confGitignorePacker, map[string]*bintree{}},
"Perl": {confGitignorePerl, map[string]*bintree{}},
"Phalcon": {confGitignorePhalcon, map[string]*bintree{}},
"PhpStorm": {confGitignorePhpstorm, map[string]*bintree{}},
"PlayFramework": {confGitignorePlayframework, map[string]*bintree{}},
"Plone": {confGitignorePlone, map[string]*bintree{}},
"Prestashop": {confGitignorePrestashop, map[string]*bintree{}},
"Processing": {confGitignoreProcessing, map[string]*bintree{}},
"Python": {confGitignorePython, map[string]*bintree{}},
"Qooxdoo": {confGitignoreQooxdoo, map[string]*bintree{}},
"Qt": {confGitignoreQt, map[string]*bintree{}},
"R": {confGitignoreR, map[string]*bintree{}},
"ROS": {confGitignoreRos, map[string]*bintree{}},
"Rails": {confGitignoreRails, map[string]*bintree{}},
"Redcar": {confGitignoreRedcar, map[string]*bintree{}},
"Redis": {confGitignoreRedis, map[string]*bintree{}},
"RhodesRhomobile": {confGitignoreRhodesrhomobile, map[string]*bintree{}},
"Ruby": {confGitignoreRuby, map[string]*bintree{}},
"Rust": {confGitignoreRust, map[string]*bintree{}},
"SBT": {confGitignoreSbt, map[string]*bintree{}},
"SCons": {confGitignoreScons, map[string]*bintree{}},
"SVN": {confGitignoreSvn, map[string]*bintree{}},
"Sass": {confGitignoreSass, map[string]*bintree{}},
"Scala": {confGitignoreScala, map[string]*bintree{}},
"Scrivener": {confGitignoreScrivener, map[string]*bintree{}},
"Sdcc": {confGitignoreSdcc, map[string]*bintree{}},
"SeamGen": {confGitignoreSeamgen, map[string]*bintree{}},
"SketchUp": {confGitignoreSketchup, map[string]*bintree{}},
"SlickEdit": {confGitignoreSlickedit, map[string]*bintree{}},
"Stella": {confGitignoreStella, map[string]*bintree{}},
"SublimeText": {confGitignoreSublimetext, map[string]*bintree{}},
"SugarCRM": {confGitignoreSugarcrm, map[string]*bintree{}},
"Swift": {confGitignoreSwift, map[string]*bintree{}},
"Symfony": {confGitignoreSymfony, map[string]*bintree{}},
"SymphonyCMS": {confGitignoreSymphonycms, map[string]*bintree{}},
"SynopsysVCS": {confGitignoreSynopsysvcs, map[string]*bintree{}},
"Tags": {confGitignoreTags, map[string]*bintree{}},
"TeX": {confGitignoreTex, map[string]*bintree{}},
"TextMate": {confGitignoreTextmate, map[string]*bintree{}},
"Textpattern": {confGitignoreTextpattern, map[string]*bintree{}},
"TortoiseGit": {confGitignoreTortoisegit, map[string]*bintree{}},
"TurboGears2": {confGitignoreTurbogears2, map[string]*bintree{}},
"Typo3": {confGitignoreTypo3, map[string]*bintree{}},
"Umbraco": {confGitignoreUmbraco, map[string]*bintree{}},
"Unity": {confGitignoreUnity, map[string]*bintree{}},
"UnrealEngine": {confGitignoreUnrealengine, map[string]*bintree{}},
"VVVV": {confGitignoreVvvv, map[string]*bintree{}},
"Vagrant": {confGitignoreVagrant, map[string]*bintree{}},
"Vim": {confGitignoreVim, map[string]*bintree{}},
"VirtualEnv": {confGitignoreVirtualenv, map[string]*bintree{}},
"VisualStudio": {confGitignoreVisualstudio, map[string]*bintree{}},
"VisualStudioCode": {confGitignoreVisualstudiocode, map[string]*bintree{}},
"Waf": {confGitignoreWaf, map[string]*bintree{}},
"WebMethods": {confGitignoreWebmethods, map[string]*bintree{}},
"WebStorm": {confGitignoreWebstorm, map[string]*bintree{}},
"Windows": {confGitignoreWindows, map[string]*bintree{}},
"WordPress": {confGitignoreWordpress, map[string]*bintree{}},
"Xcode": {confGitignoreXcode, map[string]*bintree{}},
"XilinxISE": {confGitignoreXilinxise, map[string]*bintree{}},
"Xojo": {confGitignoreXojo, map[string]*bintree{}},
"Yeoman": {confGitignoreYeoman, map[string]*bintree{}},
"Yii": {confGitignoreYii, map[string]*bintree{}},
"ZendFramework": {confGitignoreZendframework, map[string]*bintree{}},
"Zephir": {confGitignoreZephir, map[string]*bintree{}},
"macOS": {confGitignoreMacos, map[string]*bintree{}},
"gitignore": &bintree{nil, map[string]*bintree{
"Actionscript": &bintree{confGitignoreActionscript, map[string]*bintree{}},
"Ada": &bintree{confGitignoreAda, map[string]*bintree{}},
"Agda": &bintree{confGitignoreAgda, map[string]*bintree{}},
"Android": &bintree{confGitignoreAndroid, map[string]*bintree{}},
"Anjuta": &bintree{confGitignoreAnjuta, map[string]*bintree{}},
"AppEngine": &bintree{confGitignoreAppengine, map[string]*bintree{}},
"AppceleratorTitanium": &bintree{confGitignoreAppceleratortitanium, map[string]*bintree{}},
"ArchLinuxPackages": &bintree{confGitignoreArchlinuxpackages, map[string]*bintree{}},
"Archives": &bintree{confGitignoreArchives, map[string]*bintree{}},
"Autotools": &bintree{confGitignoreAutotools, map[string]*bintree{}},
"BricxCC": &bintree{confGitignoreBricxcc, map[string]*bintree{}},
"C": &bintree{confGitignoreC, map[string]*bintree{}},
"C Sharp": &bintree{confGitignoreCSharp, map[string]*bintree{}},
"C++": &bintree{confGitignoreC2, map[string]*bintree{}},
"CFWheels": &bintree{confGitignoreCfwheels, map[string]*bintree{}},
"CMake": &bintree{confGitignoreCmake, map[string]*bintree{}},
"CUDA": &bintree{confGitignoreCuda, map[string]*bintree{}},
"CVS": &bintree{confGitignoreCvs, map[string]*bintree{}},
"CakePHP": &bintree{confGitignoreCakephp, map[string]*bintree{}},
"ChefCookbook": &bintree{confGitignoreChefcookbook, map[string]*bintree{}},
"Cloud9": &bintree{confGitignoreCloud9, map[string]*bintree{}},
"CodeIgniter": &bintree{confGitignoreCodeigniter, map[string]*bintree{}},
"CodeKit": &bintree{confGitignoreCodekit, map[string]*bintree{}},
"CommonLisp": &bintree{confGitignoreCommonlisp, map[string]*bintree{}},
"Composer": &bintree{confGitignoreComposer, map[string]*bintree{}},
"Concrete5": &bintree{confGitignoreConcrete5, map[string]*bintree{}},
"Coq": &bintree{confGitignoreCoq, map[string]*bintree{}},
"CraftCMS": &bintree{confGitignoreCraftcms, map[string]*bintree{}},
"DM": &bintree{confGitignoreDm, map[string]*bintree{}},
"Dart": &bintree{confGitignoreDart, map[string]*bintree{}},
"DartEditor": &bintree{confGitignoreDarteditor, map[string]*bintree{}},
"Delphi": &bintree{confGitignoreDelphi, map[string]*bintree{}},
"Dreamweaver": &bintree{confGitignoreDreamweaver, map[string]*bintree{}},
"Drupal": &bintree{confGitignoreDrupal, map[string]*bintree{}},
"EPiServer": &bintree{confGitignoreEpiserver, map[string]*bintree{}},
"Eagle": &bintree{confGitignoreEagle, map[string]*bintree{}},
"Eclipse": &bintree{confGitignoreEclipse, map[string]*bintree{}},
"EiffelStudio": &bintree{confGitignoreEiffelstudio, map[string]*bintree{}},
"Elisp": &bintree{confGitignoreElisp, map[string]*bintree{}},
"Elixir": &bintree{confGitignoreElixir, map[string]*bintree{}},
"Emacs": &bintree{confGitignoreEmacs, map[string]*bintree{}},
"Ensime": &bintree{confGitignoreEnsime, map[string]*bintree{}},
"Erlang": &bintree{confGitignoreErlang, map[string]*bintree{}},
"Espresso": &bintree{confGitignoreEspresso, map[string]*bintree{}},
"ExpressionEngine": &bintree{confGitignoreExpressionengine, map[string]*bintree{}},
"ExtJs": &bintree{confGitignoreExtjs, map[string]*bintree{}},
"Fancy": &bintree{confGitignoreFancy, map[string]*bintree{}},
"Finale": &bintree{confGitignoreFinale, map[string]*bintree{}},
"FlexBuilder": &bintree{confGitignoreFlexbuilder, map[string]*bintree{}},
"ForceDotCom": &bintree{confGitignoreForcedotcom, map[string]*bintree{}},
"FuelPHP": &bintree{confGitignoreFuelphp, map[string]*bintree{}},
"GWT": &bintree{confGitignoreGwt, map[string]*bintree{}},
"Gcov": &bintree{confGitignoreGcov, map[string]*bintree{}},
"GitBook": &bintree{confGitignoreGitbook, map[string]*bintree{}},
"Go": &bintree{confGitignoreGo, map[string]*bintree{}},
"Gradle": &bintree{confGitignoreGradle, map[string]*bintree{}},
"Grails": &bintree{confGitignoreGrails, map[string]*bintree{}},
"Haskell": &bintree{confGitignoreHaskell, map[string]*bintree{}},
"IGORPro": &bintree{confGitignoreIgorpro, map[string]*bintree{}},
"IPythonNotebook": &bintree{confGitignoreIpythonnotebook, map[string]*bintree{}},
"Idris": &bintree{confGitignoreIdris, map[string]*bintree{}},
"JDeveloper": &bintree{confGitignoreJdeveloper, map[string]*bintree{}},
"Java": &bintree{confGitignoreJava, map[string]*bintree{}},
"Jboss": &bintree{confGitignoreJboss, map[string]*bintree{}},
"Jekyll": &bintree{confGitignoreJekyll, map[string]*bintree{}},
"JetBrains": &bintree{confGitignoreJetbrains, map[string]*bintree{}},
"Joomla": &bintree{confGitignoreJoomla, map[string]*bintree{}},
"KDevelop4": &bintree{confGitignoreKdevelop4, map[string]*bintree{}},
"Kate": &bintree{confGitignoreKate, map[string]*bintree{}},
"KiCAD": &bintree{confGitignoreKicad, map[string]*bintree{}},
"Kohana": &bintree{confGitignoreKohana, map[string]*bintree{}},
"LabVIEW": &bintree{confGitignoreLabview, map[string]*bintree{}},
"Laravel": &bintree{confGitignoreLaravel, map[string]*bintree{}},
"Lazarus": &bintree{confGitignoreLazarus, map[string]*bintree{}},
"Leiningen": &bintree{confGitignoreLeiningen, map[string]*bintree{}},
"LemonStand": &bintree{confGitignoreLemonstand, map[string]*bintree{}},
"LibreOffice": &bintree{confGitignoreLibreoffice, map[string]*bintree{}},
"Lilypond": &bintree{confGitignoreLilypond, map[string]*bintree{}},
"Linux": &bintree{confGitignoreLinux, map[string]*bintree{}},
"Lithium": &bintree{confGitignoreLithium, map[string]*bintree{}},
"Lua": &bintree{confGitignoreLua, map[string]*bintree{}},
"LyX": &bintree{confGitignoreLyx, map[string]*bintree{}},
"Magento": &bintree{confGitignoreMagento, map[string]*bintree{}},
"Matlab": &bintree{confGitignoreMatlab, map[string]*bintree{}},
"Maven": &bintree{confGitignoreMaven, map[string]*bintree{}},
"Mercurial": &bintree{confGitignoreMercurial, map[string]*bintree{}},
"Mercury": &bintree{confGitignoreMercury, map[string]*bintree{}},
"MetaProgrammingSystem": &bintree{confGitignoreMetaprogrammingsystem, map[string]*bintree{}},
"MicrosoftOffice": &bintree{confGitignoreMicrosoftoffice, map[string]*bintree{}},
"ModelSim": &bintree{confGitignoreModelsim, map[string]*bintree{}},
"Momentics": &bintree{confGitignoreMomentics, map[string]*bintree{}},
"MonoDevelop": &bintree{confGitignoreMonodevelop, map[string]*bintree{}},
"Nanoc": &bintree{confGitignoreNanoc, map[string]*bintree{}},
"NetBeans": &bintree{confGitignoreNetbeans, map[string]*bintree{}},
"Nim": &bintree{confGitignoreNim, map[string]*bintree{}},
"Ninja": &bintree{confGitignoreNinja, map[string]*bintree{}},
"Node": &bintree{confGitignoreNode, map[string]*bintree{}},
"NotepadPP": &bintree{confGitignoreNotepadpp, map[string]*bintree{}},
"OCaml": &bintree{confGitignoreOcaml, map[string]*bintree{}},
"Objective-C": &bintree{confGitignoreObjectiveC, map[string]*bintree{}},
"Opa": &bintree{confGitignoreOpa, map[string]*bintree{}},
"OpenCart": &bintree{confGitignoreOpencart, map[string]*bintree{}},
"OracleForms": &bintree{confGitignoreOracleforms, map[string]*bintree{}},
"Packer": &bintree{confGitignorePacker, map[string]*bintree{}},
"Perl": &bintree{confGitignorePerl, map[string]*bintree{}},
"Phalcon": &bintree{confGitignorePhalcon, map[string]*bintree{}},
"PhpStorm": &bintree{confGitignorePhpstorm, map[string]*bintree{}},
"PlayFramework": &bintree{confGitignorePlayframework, map[string]*bintree{}},
"Plone": &bintree{confGitignorePlone, map[string]*bintree{}},
"Prestashop": &bintree{confGitignorePrestashop, map[string]*bintree{}},
"Processing": &bintree{confGitignoreProcessing, map[string]*bintree{}},
"Python": &bintree{confGitignorePython, map[string]*bintree{}},
"Qooxdoo": &bintree{confGitignoreQooxdoo, map[string]*bintree{}},
"Qt": &bintree{confGitignoreQt, map[string]*bintree{}},
"R": &bintree{confGitignoreR, map[string]*bintree{}},
"ROS": &bintree{confGitignoreRos, map[string]*bintree{}},
"Rails": &bintree{confGitignoreRails, map[string]*bintree{}},
"Redcar": &bintree{confGitignoreRedcar, map[string]*bintree{}},
"Redis": &bintree{confGitignoreRedis, map[string]*bintree{}},
"RhodesRhomobile": &bintree{confGitignoreRhodesrhomobile, map[string]*bintree{}},
"Ruby": &bintree{confGitignoreRuby, map[string]*bintree{}},
"Rust": &bintree{confGitignoreRust, map[string]*bintree{}},
"SBT": &bintree{confGitignoreSbt, map[string]*bintree{}},
"SCons": &bintree{confGitignoreScons, map[string]*bintree{}},
"SVN": &bintree{confGitignoreSvn, map[string]*bintree{}},
"Sass": &bintree{confGitignoreSass, map[string]*bintree{}},
"Scala": &bintree{confGitignoreScala, map[string]*bintree{}},
"Scrivener": &bintree{confGitignoreScrivener, map[string]*bintree{}},
"Sdcc": &bintree{confGitignoreSdcc, map[string]*bintree{}},
"SeamGen": &bintree{confGitignoreSeamgen, map[string]*bintree{}},
"SketchUp": &bintree{confGitignoreSketchup, map[string]*bintree{}},
"SlickEdit": &bintree{confGitignoreSlickedit, map[string]*bintree{}},
"Stella": &bintree{confGitignoreStella, map[string]*bintree{}},
"SublimeText": &bintree{confGitignoreSublimetext, map[string]*bintree{}},
"SugarCRM": &bintree{confGitignoreSugarcrm, map[string]*bintree{}},
"Swift": &bintree{confGitignoreSwift, map[string]*bintree{}},
"Symfony": &bintree{confGitignoreSymfony, map[string]*bintree{}},
"SymphonyCMS": &bintree{confGitignoreSymphonycms, map[string]*bintree{}},
"SynopsysVCS": &bintree{confGitignoreSynopsysvcs, map[string]*bintree{}},
"Tags": &bintree{confGitignoreTags, map[string]*bintree{}},
"TeX": &bintree{confGitignoreTex, map[string]*bintree{}},
"TextMate": &bintree{confGitignoreTextmate, map[string]*bintree{}},
"Textpattern": &bintree{confGitignoreTextpattern, map[string]*bintree{}},
"TortoiseGit": &bintree{confGitignoreTortoisegit, map[string]*bintree{}},
"TurboGears2": &bintree{confGitignoreTurbogears2, map[string]*bintree{}},
"Typo3": &bintree{confGitignoreTypo3, map[string]*bintree{}},
"Umbraco": &bintree{confGitignoreUmbraco, map[string]*bintree{}},
"Unity": &bintree{confGitignoreUnity, map[string]*bintree{}},
"UnrealEngine": &bintree{confGitignoreUnrealengine, map[string]*bintree{}},
"VVVV": &bintree{confGitignoreVvvv, map[string]*bintree{}},
"Vagrant": &bintree{confGitignoreVagrant, map[string]*bintree{}},
"Vim": &bintree{confGitignoreVim, map[string]*bintree{}},
"VirtualEnv": &bintree{confGitignoreVirtualenv, map[string]*bintree{}},
"VisualStudio": &bintree{confGitignoreVisualstudio, map[string]*bintree{}},
"VisualStudioCode": &bintree{confGitignoreVisualstudiocode, map[string]*bintree{}},
"Waf": &bintree{confGitignoreWaf, map[string]*bintree{}},
"WebMethods": &bintree{confGitignoreWebmethods, map[string]*bintree{}},
"WebStorm": &bintree{confGitignoreWebstorm, map[string]*bintree{}},
"Windows": &bintree{confGitignoreWindows, map[string]*bintree{}},
"WordPress": &bintree{confGitignoreWordpress, map[string]*bintree{}},
"Xcode": &bintree{confGitignoreXcode, map[string]*bintree{}},
"XilinxISE": &bintree{confGitignoreXilinxise, map[string]*bintree{}},
"Xojo": &bintree{confGitignoreXojo, map[string]*bintree{}},
"Yeoman": &bintree{confGitignoreYeoman, map[string]*bintree{}},
"Yii": &bintree{confGitignoreYii, map[string]*bintree{}},
"ZendFramework": &bintree{confGitignoreZendframework, map[string]*bintree{}},
"Zephir": &bintree{confGitignoreZephir, map[string]*bintree{}},
"macOS": &bintree{confGitignoreMacos, map[string]*bintree{}},
}},
"label": {nil, map[string]*bintree{
"Default": {confLabelDefault, map[string]*bintree{}},
"label": &bintree{nil, map[string]*bintree{
"Default": &bintree{confLabelDefault, map[string]*bintree{}},
}},
"license": {nil, map[string]*bintree{
"Abstyles License": {confLicenseAbstylesLicense, map[string]*bintree{}},
"Academic Free License v1.1": {confLicenseAcademicFreeLicenseV11, map[string]*bintree{}},
"Academic Free License v1.2": {confLicenseAcademicFreeLicenseV12, map[string]*bintree{}},
"Academic Free License v2.0": {confLicenseAcademicFreeLicenseV20, map[string]*bintree{}},
"Academic Free License v2.1": {confLicenseAcademicFreeLicenseV21, map[string]*bintree{}},
"Academic Free License v3.0": {confLicenseAcademicFreeLicenseV30, map[string]*bintree{}},
"Affero General Public License v1.0": {confLicenseAfferoGeneralPublicLicenseV10, map[string]*bintree{}},
"Apache License 1.0": {confLicenseApacheLicense10, map[string]*bintree{}},
"Apache License 1.1": {confLicenseApacheLicense11, map[string]*bintree{}},
"Apache License 2.0": {confLicenseApacheLicense20, map[string]*bintree{}},
"Artistic License 1.0": {confLicenseArtisticLicense10, map[string]*bintree{}},
"Artistic License 2.0": {confLicenseArtisticLicense20, map[string]*bintree{}},
"BSD 2-clause License": {confLicenseBsd2ClauseLicense, map[string]*bintree{}},
"BSD 3-clause License": {confLicenseBsd3ClauseLicense, map[string]*bintree{}},
"BSD 4-clause License": {confLicenseBsd4ClauseLicense, map[string]*bintree{}},
"Creative Commons CC0 1.0 Universal": {confLicenseCreativeCommonsCc010Universal, map[string]*bintree{}},
"Eclipse Public License 1.0": {confLicenseEclipsePublicLicense10, map[string]*bintree{}},
"Educational Community License v1.0": {confLicenseEducationalCommunityLicenseV10, map[string]*bintree{}},
"Educational Community License v2.0": {confLicenseEducationalCommunityLicenseV20, map[string]*bintree{}},
"GNU Affero General Public License v3.0": {confLicenseGnuAfferoGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Free Documentation License v1.1": {confLicenseGnuFreeDocumentationLicenseV11, map[string]*bintree{}},
"GNU Free Documentation License v1.2": {confLicenseGnuFreeDocumentationLicenseV12, map[string]*bintree{}},
"GNU Free Documentation License v1.3": {confLicenseGnuFreeDocumentationLicenseV13, map[string]*bintree{}},
"GNU General Public License v1.0": {confLicenseGnuGeneralPublicLicenseV10, map[string]*bintree{}},
"GNU General Public License v2.0": {confLicenseGnuGeneralPublicLicenseV20, map[string]*bintree{}},
"GNU General Public License v3.0": {confLicenseGnuGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Lesser General Public License v2.1": {confLicenseGnuLesserGeneralPublicLicenseV21, map[string]*bintree{}},
"GNU Lesser General Public License v3.0": {confLicenseGnuLesserGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Library General Public License v2.0": {confLicenseGnuLibraryGeneralPublicLicenseV20, map[string]*bintree{}},
"ISC license": {confLicenseIscLicense, map[string]*bintree{}},
"MIT License": {confLicenseMitLicense, map[string]*bintree{}},
"Mozilla Public License 1.0": {confLicenseMozillaPublicLicense10, map[string]*bintree{}},
"Mozilla Public License 1.1": {confLicenseMozillaPublicLicense11, map[string]*bintree{}},
"Mozilla Public License 2.0": {confLicenseMozillaPublicLicense20, map[string]*bintree{}},
"license": &bintree{nil, map[string]*bintree{
"Abstyles License": &bintree{confLicenseAbstylesLicense, map[string]*bintree{}},
"Academic Free License v1.1": &bintree{confLicenseAcademicFreeLicenseV11, map[string]*bintree{}},
"Academic Free License v1.2": &bintree{confLicenseAcademicFreeLicenseV12, map[string]*bintree{}},
"Academic Free License v2.0": &bintree{confLicenseAcademicFreeLicenseV20, map[string]*bintree{}},
"Academic Free License v2.1": &bintree{confLicenseAcademicFreeLicenseV21, map[string]*bintree{}},
"Academic Free License v3.0": &bintree{confLicenseAcademicFreeLicenseV30, map[string]*bintree{}},
"Affero General Public License v1.0": &bintree{confLicenseAfferoGeneralPublicLicenseV10, map[string]*bintree{}},
"Apache License 1.0": &bintree{confLicenseApacheLicense10, map[string]*bintree{}},
"Apache License 1.1": &bintree{confLicenseApacheLicense11, map[string]*bintree{}},
"Apache License 2.0": &bintree{confLicenseApacheLicense20, map[string]*bintree{}},
"Artistic License 1.0": &bintree{confLicenseArtisticLicense10, map[string]*bintree{}},
"Artistic License 2.0": &bintree{confLicenseArtisticLicense20, map[string]*bintree{}},
"BSD 2-clause License": &bintree{confLicenseBsd2ClauseLicense, map[string]*bintree{}},
"BSD 3-clause License": &bintree{confLicenseBsd3ClauseLicense, map[string]*bintree{}},
"BSD 4-clause License": &bintree{confLicenseBsd4ClauseLicense, map[string]*bintree{}},
"Creative Commons CC0 1.0 Universal": &bintree{confLicenseCreativeCommonsCc010Universal, map[string]*bintree{}},
"Eclipse Public License 1.0": &bintree{confLicenseEclipsePublicLicense10, map[string]*bintree{}},
"Educational Community License v1.0": &bintree{confLicenseEducationalCommunityLicenseV10, map[string]*bintree{}},
"Educational Community License v2.0": &bintree{confLicenseEducationalCommunityLicenseV20, map[string]*bintree{}},
"GNU Affero General Public License v3.0": &bintree{confLicenseGnuAfferoGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Free Documentation License v1.1": &bintree{confLicenseGnuFreeDocumentationLicenseV11, map[string]*bintree{}},
"GNU Free Documentation License v1.2": &bintree{confLicenseGnuFreeDocumentationLicenseV12, map[string]*bintree{}},
"GNU Free Documentation License v1.3": &bintree{confLicenseGnuFreeDocumentationLicenseV13, map[string]*bintree{}},
"GNU General Public License v1.0": &bintree{confLicenseGnuGeneralPublicLicenseV10, map[string]*bintree{}},
"GNU General Public License v2.0": &bintree{confLicenseGnuGeneralPublicLicenseV20, map[string]*bintree{}},
"GNU General Public License v3.0": &bintree{confLicenseGnuGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Lesser General Public License v2.1": &bintree{confLicenseGnuLesserGeneralPublicLicenseV21, map[string]*bintree{}},
"GNU Lesser General Public License v3.0": &bintree{confLicenseGnuLesserGeneralPublicLicenseV30, map[string]*bintree{}},
"GNU Library General Public License v2.0": &bintree{confLicenseGnuLibraryGeneralPublicLicenseV20, map[string]*bintree{}},
"ISC license": &bintree{confLicenseIscLicense, map[string]*bintree{}},
"MIT License": &bintree{confLicenseMitLicense, map[string]*bintree{}},
"Mozilla Public License 1.0": &bintree{confLicenseMozillaPublicLicense10, map[string]*bintree{}},
"Mozilla Public License 1.1": &bintree{confLicenseMozillaPublicLicense11, map[string]*bintree{}},
"Mozilla Public License 2.0": &bintree{confLicenseMozillaPublicLicense20, map[string]*bintree{}},
}},
"locale": {nil, map[string]*bintree{
"locale_bg-BG.ini": {confLocaleLocale_bgBgIni, map[string]*bintree{}},
"locale_cs-CZ.ini": {confLocaleLocale_csCzIni, map[string]*bintree{}},
"locale_de-DE.ini": {confLocaleLocale_deDeIni, map[string]*bintree{}},
"locale_en-GB.ini": {confLocaleLocale_enGbIni, map[string]*bintree{}},
"locale_en-US.ini": {confLocaleLocale_enUsIni, map[string]*bintree{}},
"locale_es-ES.ini": {confLocaleLocale_esEsIni, map[string]*bintree{}},
"locale_fa-IR.ini": {confLocaleLocale_faIrIni, map[string]*bintree{}},
"locale_fi-FI.ini": {confLocaleLocale_fiFiIni, map[string]*bintree{}},
"locale_fr-FR.ini": {confLocaleLocale_frFrIni, map[string]*bintree{}},
"locale_gl-ES.ini": {confLocaleLocale_glEsIni, map[string]*bintree{}},
"locale_hu-HU.ini": {confLocaleLocale_huHuIni, map[string]*bintree{}},
"locale_id-ID.ini": {confLocaleLocale_idIdIni, map[string]*bintree{}},
"locale_it-IT.ini": {confLocaleLocale_itItIni, map[string]*bintree{}},
"locale_ja-JP.ini": {confLocaleLocale_jaJpIni, map[string]*bintree{}},
"locale_ko-KR.ini": {confLocaleLocale_koKrIni, map[string]*bintree{}},
"locale_lv-LV.ini": {confLocaleLocale_lvLvIni, map[string]*bintree{}},
"locale_nl-NL.ini": {confLocaleLocale_nlNlIni, map[string]*bintree{}},
"locale_pl-PL.ini": {confLocaleLocale_plPlIni, map[string]*bintree{}},
"locale_pt-BR.ini": {confLocaleLocale_ptBrIni, map[string]*bintree{}},
"locale_pt-PT.ini": {confLocaleLocale_ptPtIni, map[string]*bintree{}},
"locale_ru-RU.ini": {confLocaleLocale_ruRuIni, map[string]*bintree{}},
"locale_sk-SK.ini": {confLocaleLocale_skSkIni, map[string]*bintree{}},
"locale_sr-SP.ini": {confLocaleLocale_srSpIni, map[string]*bintree{}},
"locale_sv-SE.ini": {confLocaleLocale_svSeIni, map[string]*bintree{}},
"locale_tr-TR.ini": {confLocaleLocale_trTrIni, map[string]*bintree{}},
"locale_uk-UA.ini": {confLocaleLocale_ukUaIni, map[string]*bintree{}},
"locale_vi-VN.ini": {confLocaleLocale_viVnIni, map[string]*bintree{}},
"locale_zh-CN.ini": {confLocaleLocale_zhCnIni, map[string]*bintree{}},
"locale_zh-HK.ini": {confLocaleLocale_zhHkIni, map[string]*bintree{}},
"locale_zh-TW.ini": {confLocaleLocale_zhTwIni, map[string]*bintree{}},
"locale": &bintree{nil, map[string]*bintree{
"locale_bg-BG.ini": &bintree{confLocaleLocale_bgBgIni, map[string]*bintree{}},
"locale_cs-CZ.ini": &bintree{confLocaleLocale_csCzIni, map[string]*bintree{}},
"locale_de-DE.ini": &bintree{confLocaleLocale_deDeIni, map[string]*bintree{}},
"locale_en-GB.ini": &bintree{confLocaleLocale_enGbIni, map[string]*bintree{}},
"locale_en-US.ini": &bintree{confLocaleLocale_enUsIni, map[string]*bintree{}},
"locale_es-ES.ini": &bintree{confLocaleLocale_esEsIni, map[string]*bintree{}},
"locale_fa-IR.ini": &bintree{confLocaleLocale_faIrIni, map[string]*bintree{}},
"locale_fi-FI.ini": &bintree{confLocaleLocale_fiFiIni, map[string]*bintree{}},
"locale_fr-FR.ini": &bintree{confLocaleLocale_frFrIni, map[string]*bintree{}},
"locale_gl-ES.ini": &bintree{confLocaleLocale_glEsIni, map[string]*bintree{}},
"locale_hu-HU.ini": &bintree{confLocaleLocale_huHuIni, map[string]*bintree{}},
"locale_id-ID.ini": &bintree{confLocaleLocale_idIdIni, map[string]*bintree{}},
"locale_it-IT.ini": &bintree{confLocaleLocale_itItIni, map[string]*bintree{}},
"locale_ja-JP.ini": &bintree{confLocaleLocale_jaJpIni, map[string]*bintree{}},
"locale_ko-KR.ini": &bintree{confLocaleLocale_koKrIni, map[string]*bintree{}},
"locale_lv-LV.ini": &bintree{confLocaleLocale_lvLvIni, map[string]*bintree{}},
"locale_nl-NL.ini": &bintree{confLocaleLocale_nlNlIni, map[string]*bintree{}},
"locale_pl-PL.ini": &bintree{confLocaleLocale_plPlIni, map[string]*bintree{}},
"locale_pt-BR.ini": &bintree{confLocaleLocale_ptBrIni, map[string]*bintree{}},
"locale_pt-PT.ini": &bintree{confLocaleLocale_ptPtIni, map[string]*bintree{}},
"locale_ru-RU.ini": &bintree{confLocaleLocale_ruRuIni, map[string]*bintree{}},
"locale_sk-SK.ini": &bintree{confLocaleLocale_skSkIni, map[string]*bintree{}},
"locale_sr-SP.ini": &bintree{confLocaleLocale_srSpIni, map[string]*bintree{}},
"locale_sv-SE.ini": &bintree{confLocaleLocale_svSeIni, map[string]*bintree{}},
"locale_tr-TR.ini": &bintree{confLocaleLocale_trTrIni, map[string]*bintree{}},
"locale_uk-UA.ini": &bintree{confLocaleLocale_ukUaIni, map[string]*bintree{}},
"locale_vi-VN.ini": &bintree{confLocaleLocale_viVnIni, map[string]*bintree{}},
"locale_zh-CN.ini": &bintree{confLocaleLocale_zhCnIni, map[string]*bintree{}},
"locale_zh-HK.ini": &bintree{confLocaleLocale_zhHkIni, map[string]*bintree{}},
"locale_zh-TW.ini": &bintree{confLocaleLocale_zhTwIni, map[string]*bintree{}},
}},
"readme": {nil, map[string]*bintree{
"Default": {confReadmeDefault, map[string]*bintree{}},
"readme": &bintree{nil, map[string]*bintree{
"Default": &bintree{confReadmeDefault, map[string]*bintree{}},
}},
}},
}}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -66,7 +66,7 @@ func runHookPreReceive(c *cli.Context) error {
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
return nil
}
setup(c, "hooks/pre-receive.log", true)
setup(c, "pre-receive.log", true)
isWiki := strings.Contains(os.Getenv(db.ENV_REPO_CUSTOM_HOOKS_PATH), ".wiki.git/")
@@ -159,7 +159,7 @@ func runHookUpdate(c *cli.Context) error {
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
return nil
}
setup(c, "hooks/update.log", false)
setup(c, "update.log", false)
args := c.Args()
if len(args) != 3 {
@@ -193,7 +193,7 @@ func runHookPostReceive(c *cli.Context) error {
if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
return nil
}
setup(c, "hooks/post-receive.log", true)
setup(c, "post-receive.log", true)
// Post-receive hook does more than just gather Git information,
// so we need to setup additional services for email notifications.

View File

@@ -38,7 +38,7 @@ var Serv = cli.Command{
// logs error message on the server side. When not in "prod" mode,
// error message is also printed to the client for easier debugging.
func fail(userMessage, errMessage string, args ...interface{}) {
fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
_, _ = fmt.Fprintln(os.Stderr, "Gogs:", userMessage)
if len(errMessage) > 0 {
if !conf.IsProdMode() {
@@ -47,10 +47,11 @@ func fail(userMessage, errMessage string, args ...interface{}) {
log.Error(errMessage, args...)
}
log.Stop()
os.Exit(1)
}
func setup(c *cli.Context, logPath string, connectDB bool) {
func setup(c *cli.Context, logFile string, connectDB bool) {
conf.HookMode = true
var customConf string
@@ -73,7 +74,7 @@ func setup(c *cli.Context, logPath string, connectDB bool) {
err = log.NewFile(log.FileConfig{
Level: level,
Filename: filepath.Join(conf.Log.RootPath, logPath),
Filename: filepath.Join(conf.Log.RootPath, "hooks", logFile),
FileRotationConfig: log.FileRotationConfig{
Rotate: true,
Daily: true,

View File

@@ -611,7 +611,7 @@ func runWeb(c *cli.Context) error {
m.Get("/compare/:before([a-z0-9]{40})\\.\\.\\.:after([a-z0-9]{40})", repo.MustBeNotBare, context.RepoRef(), repo.CompareDiff)
}, ignSignIn, context.RepoAssignment())
m.Group("/:username/:reponame", func() {
m.Get("", repo.Home)
m.Get("", context.ServeGoGet(), repo.Home)
m.Get("/stars", repo.Stars)
m.Get("/watchers", repo.Watchers)
}, ignSignIn, context.RepoAssignment(), context.RepoRef())
@@ -659,7 +659,7 @@ func runWeb(c *cli.Context) error {
lfs.RegisterRoutes(m.Router)
})
m.Route("/*", "GET,POST,OPTIONS", repo.HTTPContexter(), repo.HTTP)
m.Route("/*", "GET,POST,OPTIONS", context.ServeGoGet(), repo.HTTPContexter(), repo.HTTP)
})
// ***************************

View File

@@ -8,7 +8,6 @@ import (
"fmt"
"io"
"net/http"
"path"
"strings"
"time"
@@ -16,7 +15,6 @@ import (
"github.com/go-macaron/csrf"
"github.com/go-macaron/i18n"
"github.com/go-macaron/session"
"github.com/unknwon/com"
"gopkg.in/macaron.v1"
log "unknwon.dev/clog/v2"
@@ -249,52 +247,6 @@ func Contexter() macaron.Handler {
c.Data["Link"] = template.EscapePound(c.Link)
c.Data["PageStartTime"] = time.Now()
// Quick responses appropriate go-get meta with status 200
// regardless of if user have access to the repository,
// or the repository does not exist at all.
// This is particular a workaround for "go get" command which does not respect
// .netrc file.
if c.Query("go-get") == "1" {
ownerName := c.Params(":username")
repoName := c.Params(":reponame")
branchName := "master"
owner, err := db.GetUserByName(ownerName)
if err != nil {
c.NotFoundOrError(err, "get user by name")
return
}
repo, err := db.GetRepositoryByName(owner.ID, repoName)
if err == nil && len(repo.DefaultBranch) > 0 {
branchName = repo.DefaultBranch
}
prefix := conf.Server.ExternalURL + path.Join(ownerName, repoName, "src", branchName)
insecureFlag := ""
if !strings.HasPrefix(conf.Server.ExternalURL, "https://") {
insecureFlag = "--insecure "
}
c.PlainText(http.StatusOK, com.Expand(`<!doctype html>
<html>
<head>
<meta name="go-import" content="{GoGetImport} git {CloneLink}">
<meta name="go-source" content="{GoGetImport} _ {GoDocDirectory} {GoDocFile}">
</head>
<body>
go get {InsecureFlag}{GoGetImport}
</body>
</html>
`, map[string]string{
"GoGetImport": path.Join(conf.Server.URL.Host, conf.Server.Subpath, ownerName, repoName),
"CloneLink": db.ComposeHTTPSCloneURL(ownerName, repoName),
"GoDocDirectory": prefix + "{/dir}",
"GoDocFile": prefix + "{/dir}/{file}#L{line}",
"InsecureFlag": insecureFlag,
}))
return
}
if len(conf.HTTP.AccessControlAllowOrigin) > 0 {
c.Header().Set("Access-Control-Allow-Origin", conf.HTTP.AccessControlAllowOrigin)
c.Header().Set("'Access-Control-Allow-Credentials' ", "true")

View File

@@ -0,0 +1,62 @@
package context
import (
"net/http"
"path"
"strings"
"github.com/unknwon/com"
"gopkg.in/macaron.v1"
"gogs.io/gogs/internal/conf"
"gogs.io/gogs/internal/db"
)
// ServeGoGet does quick responses for appropriate go-get meta with status OK
// regardless of whether the user has access to the repository, or the repository
// does exist at all. This is particular a workaround for "go get" command which
// does not respect .netrc file.
func ServeGoGet() macaron.Handler {
return func(c *macaron.Context) {
if c.Query("go-get") != "1" {
return
}
ownerName := c.Params(":username")
repoName := c.Params(":reponame")
branchName := "master"
owner, err := db.Users.GetByUsername(ownerName)
if err == nil {
repo, err := db.Repos.GetByName(owner.ID, repoName)
if err == nil && repo.DefaultBranch != "" {
branchName = repo.DefaultBranch
}
}
prefix := conf.Server.ExternalURL + path.Join(ownerName, repoName, "src", branchName)
insecureFlag := ""
if !strings.HasPrefix(conf.Server.ExternalURL, "https://") {
insecureFlag = "--insecure "
}
c.PlainText(http.StatusOK, []byte(com.Expand(`<!doctype html>
<html>
<head>
<meta name="go-import" content="{GoGetImport} git {CloneLink}">
<meta name="go-source" content="{GoGetImport} _ {GoDocDirectory} {GoDocFile}">
</head>
<body>
go get {InsecureFlag}{GoGetImport}
</body>
</html>
`,
map[string]string{
"GoGetImport": path.Join(conf.Server.URL.Host, conf.Server.Subpath, ownerName, repoName),
"CloneLink": db.ComposeHTTPSCloneURL(ownerName, repoName),
"GoDocDirectory": prefix + "{/dir}",
"GoDocFile": prefix + "{/dir}/{file}#L{line}",
"InsecureFlag": insecureFlag,
},
)))
}
}

View File

@@ -57,9 +57,9 @@ var (
IssueCloseKeywords = []string{"close", "closes", "closed", "fix", "fixes", "fixed", "resolve", "resolves", "resolved"}
IssueReopenKeywords = []string{"reopen", "reopens", "reopened"}
IssueCloseKeywordsPat = lazyregexp.New(assembleKeywordsPattern(IssueCloseKeywords))
IssueReopenKeywordsPat = lazyregexp.New(assembleKeywordsPattern(IssueReopenKeywords))
IssueReferenceKeywordsPat = lazyregexp.New(`(?i)(?:)(^| )\S+`)
IssueCloseKeywordsPat = lazyregexp.New(assembleKeywordsPattern(IssueCloseKeywords))
IssueReopenKeywordsPat = lazyregexp.New(assembleKeywordsPattern(IssueReopenKeywords))
issueReferencePattern = lazyregexp.New(`(?i)(?:)(^| )\S*#\d+`)
)
func assembleKeywordsPattern(words []string) string {
@@ -321,8 +321,8 @@ func UpdateIssuesCommit(doer *User, repo *Repository, commits []*PushCommit) err
c := commits[i]
refMarked := make(map[int64]bool)
for _, ref := range IssueReferenceKeywordsPat.FindAllString(c.Message, -1) {
ref = ref[strings.IndexByte(ref, byte(' '))+1:]
for _, ref := range issueReferencePattern.FindAllString(c.Message, -1) {
ref = strings.TrimSpace(ref)
ref = strings.TrimRightFunc(ref, issueIndexTrimRight)
if len(ref) == 0 {
@@ -455,7 +455,7 @@ type CommitRepoActionOptions struct {
Commits *PushCommits
}
// CommitRepoAction adds new commit actio to the repository, and prepare corresponding webhooks.
// CommitRepoAction adds new commit action to the repository, and prepare corresponding webhooks.
func CommitRepoAction(opts CommitRepoActionOptions) error {
pusher, err := GetUserByName(opts.PusherName)
if err != nil {

View File

@@ -0,0 +1,41 @@
// Copyright 2020 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package db
import (
"testing"
"github.com/stretchr/testify/assert"
)
func Test_issueReferencePattern(t *testing.T) {
tests := []struct {
name string
message string
expStrings []string
}{
{
name: "no match",
message: "Hello world!",
expStrings: nil,
},
{
name: "contains issue numbers",
message: "#123 is fixed, and #456 is WIP",
expStrings: []string{"#123", " #456"},
},
{
name: "contains full issue references",
message: "#123 is fixed, and user/repo#456 is WIP",
expStrings: []string{"#123", " user/repo#456"},
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
strs := issueReferencePattern.FindAllString(test.message, -1)
assert.Equal(t, test.expStrings, strs)
})
}
}

View File

@@ -128,7 +128,7 @@ var tables = []interface{}{
new(LFSObject), new(LoginSource),
}
func Init() (*gorm.DB, error) {
func Init(w io.Writer) (*gorm.DB, error) {
db, err := openDB(conf.Database)
if err != nil {
return nil, errors.Wrap(err, "open database")
@@ -138,10 +138,6 @@ func Init() (*gorm.DB, error) {
db.DB().SetMaxIdleConns(conf.Database.MaxIdleConns)
db.DB().SetConnMaxLifetime(time.Minute)
w, err := getLogWriter()
if err != nil {
return nil, errors.Wrap(err, "get log writer")
}
db.SetLogger(&dbutil.Writer{Writer: w})
if !conf.IsProdMode() {
db = db.LogMode(true)

View File

@@ -1,20 +0,0 @@
// Copyright 2017 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package errors
import "fmt"
type InvalidIssueReference struct {
Ref string
}
func IsInvalidIssueReference(err error) bool {
_, ok := err.(InvalidIssueReference)
return ok
}
func (err InvalidIssueReference) Error() string {
return fmt.Sprintf("invalid issue reference [ref: %s]", err.Ref)
}

View File

@@ -408,6 +408,7 @@ func (issue *Issue) ReadBy(uid int64) error {
}
func updateIssueCols(e Engine, issue *Issue, cols ...string) error {
cols = append(cols, "updated_unix")
_, err := e.ID(issue.ID).Cols(cols...).Update(issue)
return err
}
@@ -816,12 +817,11 @@ func (ErrIssueNotExist) NotFound() bool {
return true
}
// GetIssueByRef returns an Issue specified by a GFM reference.
// See https://help.github.com/articles/writing-on-github#references for more information on the syntax.
// GetIssueByRef returns an Issue specified by a GFM reference, e.g. owner/repo#123.
func GetIssueByRef(ref string) (*Issue, error) {
n := strings.IndexByte(ref, byte('#'))
if n == -1 {
return nil, errors.InvalidIssueReference{Ref: ref}
return nil, ErrIssueNotExist{args: map[string]interface{}{"ref": ref}}
}
index := com.StrTo(ref[n+1:]).MustInt64()

View File

@@ -51,7 +51,7 @@ type LoginSource struct {
IsActived bool `xorm:"NOT NULL DEFAULT false" gorm:"NOT NULL"`
IsDefault bool `xorm:"DEFAULT false"`
Config interface{} `xorm:"-" gorm:"-"`
RawConfig string `xorm:"TEXT cfg" gorm:"COLUMN:cfg"`
RawConfig string `xorm:"TEXT cfg" gorm:"COLUMN:cfg;TYPE:TEXT"`
Created time.Time `xorm:"-" gorm:"-" json:"-"`
CreatedUnix int64

View File

@@ -7,13 +7,16 @@ package db
import (
"database/sql"
"fmt"
"io"
"net/url"
"os"
"path"
"path/filepath"
"strings"
"time"
"github.com/jinzhu/gorm"
"github.com/pkg/errors"
log "unknwon.dev/clog/v2"
"xorm.io/core"
"xorm.io/xorm"
@@ -130,16 +133,21 @@ func SetEngine() (*gorm.DB, error) {
x.SetMapper(core.GonicMapper{})
// WARNING: for serv command, MUST remove the output to os.stdout,
// so use log file to instead print to stdout.
var logPath string
if conf.HookMode {
logPath = filepath.Join(conf.Log.RootPath, "hooks", "xorm.log")
} else {
logPath = filepath.Join(conf.Log.RootPath, "xorm.log")
}
sec := conf.File.Section("log.xorm")
logger, err := log.NewFileWriter(path.Join(conf.Log.RootPath, "xorm.log"),
fileWriter, err := log.NewFileWriter(logPath,
log.FileRotationConfig{
Rotate: sec.Key("ROTATE").MustBool(true),
Daily: sec.Key("ROTATE_DAILY").MustBool(true),
MaxSize: sec.Key("MAX_SIZE").MustInt64(100) * 1024 * 1024,
MaxDays: sec.Key("MAX_DAYS").MustInt64(3),
})
},
)
if err != nil {
return nil, fmt.Errorf("create 'xorm.log': %v", err)
}
@@ -149,12 +157,22 @@ func SetEngine() (*gorm.DB, error) {
x.SetConnMaxLifetime(time.Second)
if conf.IsProdMode() {
x.SetLogger(xorm.NewSimpleLogger3(logger, xorm.DEFAULT_LOG_PREFIX, xorm.DEFAULT_LOG_FLAG, core.LOG_WARNING))
x.SetLogger(xorm.NewSimpleLogger3(fileWriter, xorm.DEFAULT_LOG_PREFIX, xorm.DEFAULT_LOG_FLAG, core.LOG_WARNING))
} else {
x.SetLogger(xorm.NewSimpleLogger(logger))
x.SetLogger(xorm.NewSimpleLogger(fileWriter))
}
x.ShowSQL(true)
return Init()
var w io.Writer
if conf.HookMode {
w = fileWriter
} else {
w, err = getLogWriter()
if err != nil {
return nil, errors.Wrap(err, "get log writer")
}
}
return Init(w)
}
func NewEngine() (err error) {

View File

@@ -426,24 +426,29 @@ func (repo *Repository) UpdateSize() error {
return nil
}
// ComposeMetas composes a map of metas for rendering external issue tracker URL.
// ComposeMetas composes a map of metas for rendering SHA1 URL and external issue tracker URL.
func (repo *Repository) ComposeMetas() map[string]string {
if !repo.EnableExternalTracker {
return nil
} else if repo.ExternalMetas == nil {
repo.ExternalMetas = map[string]string{
"format": repo.ExternalTrackerFormat,
"user": repo.MustOwner().Name,
"repo": repo.Name,
}
if repo.ExternalMetas != nil {
return repo.ExternalMetas
}
repo.ExternalMetas = map[string]string{
"repoLink": repo.Link(),
}
if repo.EnableExternalTracker {
repo.ExternalMetas["user"] = repo.MustOwner().Name
repo.ExternalMetas["repo"] = repo.Name
repo.ExternalMetas["format"] = repo.ExternalTrackerFormat
switch repo.ExternalTrackerStyle {
case markup.ISSUE_NAME_STYLE_ALPHANUMERIC:
repo.ExternalMetas["style"] = markup.ISSUE_NAME_STYLE_ALPHANUMERIC
default:
repo.ExternalMetas["style"] = markup.ISSUE_NAME_STYLE_NUMERIC
}
}
return repo.ExternalMetas
}

View File

@@ -19,14 +19,19 @@ func TestRepository_ComposeMetas(t *testing.T) {
t.Run("no external tracker is configured", func(t *testing.T) {
repo.EnableExternalTracker = false
assert.Equal(t, map[string]string(nil), repo.ComposeMetas())
// Should be nil even if other settings are present
repo.ExternalTrackerStyle = markup.ISSUE_NAME_STYLE_NUMERIC
assert.Equal(t, map[string]string(nil), repo.ComposeMetas())
metas := repo.ComposeMetas()
assert.Equal(t, metas["repoLink"], repo.Link())
// Should no format and style if no external tracker is configured
_, ok := metas["format"]
assert.False(t, ok)
_, ok = metas["style"]
assert.False(t, ok)
})
t.Run("an external issue tracker is configured", func(t *testing.T) {
repo.ExternalMetas = nil
repo.EnableExternalTracker = true
// Default to numeric issue style

View File

@@ -17,10 +17,21 @@ import (
var scpSyntax = lazyregexp.New(`^([a-zA-Z0-9_]+@)?([a-zA-Z0-9._-]+):(.*)$`)
// InferSubmoduleURL returns the inferred external URL of the submodule at best effort.
func InferSubmoduleURL(mod *git.Submodule) string {
// The `baseURL` should be the URL of the current repository. If the submodule URL looks
// like a relative path, it assumes that the submodule is another repository on the same
// Gogs instance by appending it to the `baseURL` with the commit.
func InferSubmoduleURL(baseURL string, mod *git.Submodule) string {
if !strings.HasSuffix(baseURL, "/") {
baseURL += "/"
}
raw := strings.TrimSuffix(mod.URL, "/")
raw = strings.TrimSuffix(raw, ".git")
if strings.HasPrefix(raw, "../") {
return fmt.Sprintf("%s%s/commit/%s", baseURL, raw, mod.Commit)
}
parsed, err := url.Parse(raw)
if err != nil {
// Try parse as SCP syntax again

View File

@@ -41,6 +41,14 @@ func TestInferSubmoduleURL(t *testing.T) {
},
expURL: "http://github.com/gogs/docs-api/commit/6b08f76a5313fa3d26859515b30aa17a5faa2807",
},
{
name: "relative path",
submodule: &git.Submodule{
URL: "../repo2.git",
Commit: "6b08f76a5313fa3d26859515b30aa17a5faa2807",
},
expURL: "https://gogs.example.com/user/repo/../repo2/commit/6b08f76a5313fa3d26859515b30aa17a5faa2807",
},
{
name: "bad URL",
submodule: &git.Submodule{
@@ -52,7 +60,7 @@ func TestInferSubmoduleURL(t *testing.T) {
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
assert.Equal(t, test.expURL, InferSubmoduleURL(test.submodule))
assert.Equal(t, test.expURL, InferSubmoduleURL("https://gogs.example.com/user/repo", test.submodule))
})
}
}

View File

@@ -145,7 +145,8 @@ func RenderSha1CurrentPattern(rawBytes []byte, urlPrefix string) []byte {
if com.StrTo(m).MustInt() > 0 {
return m
}
return fmt.Sprintf(`<a href="%s/commit/%s"><code>%s</code></a>`, urlPrefix, m, tool.ShortSHA1(string(m)))
return fmt.Sprintf(`<a href="%s/commit/%s"><code>%s</code></a>`, urlPrefix, m, tool.ShortSHA1(m))
}))
}
@@ -160,7 +161,7 @@ func RenderSpecialLink(rawBytes []byte, urlPrefix string, metas map[string]strin
rawBytes = RenderIssueIndexPattern(rawBytes, urlPrefix, metas)
rawBytes = RenderCrossReferenceIssueIndexPattern(rawBytes, urlPrefix, metas)
rawBytes = RenderSha1CurrentPattern(rawBytes, urlPrefix)
rawBytes = RenderSha1CurrentPattern(rawBytes, metas["repoLink"])
return rawBytes
}

View File

@@ -215,3 +215,41 @@ func Test_RenderIssueIndexPattern(t *testing.T) {
})
})
}
func TestRenderSha1CurrentPattern(t *testing.T) {
metas := map[string]string{
"repoLink": "/someuser/somerepo",
}
tests := []struct {
desc string
input string
prefix string
expVal string
}{
{
desc: "Full SHA (40 symbols)",
input: "ad8ced4f57d9068cb2874557245be3c7f341149d",
prefix: metas["repoLink"],
expVal: `<a href="/someuser/somerepo/commit/ad8ced4f57d9068cb2874557245be3c7f341149d"><code>ad8ced4f57</code></a>`,
},
{
desc: "Short SHA (8 symbols)",
input: "ad8ced4f",
prefix: metas["repoLink"],
expVal: `<a href="/someuser/somerepo/commit/ad8ced4f"><code>ad8ced4f</code></a>`,
},
{
desc: "9 digits",
input: "123456789",
prefix: metas["repoLink"],
expVal: "123456789",
},
}
for _, test := range tests {
t.Run(test.desc, func(t *testing.T) {
assert.Equal(t, test.expVal, string(RenderSha1CurrentPattern([]byte(test.input), test.prefix)))
})
}
}

View File

@@ -44,6 +44,11 @@ func serveBatch(c *macaron.Context, owner *db.User, repo *db.Repository) {
actions = batchActions{
Upload: &batchAction{
Href: fmt.Sprintf("%s/%s", baseHref, obj.Oid),
Header: map[string]string{
// NOTE: git-lfs v2.5.0 sets the Content-Type based on the uploaded file.
// This ensures that the client always uses the designated value for the header.
"Content-Type": "application/octet-stream",
},
},
Verify: &batchAction{
Href: fmt.Sprintf("%s/verify", baseHref),
@@ -136,7 +141,8 @@ type batchError struct {
}
type batchAction struct {
Href string `json:"href"`
Href string `json:"href"`
Header map[string]string `json:"header,omitempty"`
}
type batchActions struct {

View File

@@ -6,6 +6,7 @@ package lfs
import (
"bytes"
"encoding/json"
"io/ioutil"
"net/http"
"net/http/httptest"
@@ -42,7 +43,7 @@ func Test_serveBatch(t *testing.T) {
name: "unrecognized operation",
body: `{"operation": "update"}`,
expStatusCode: http.StatusBadRequest,
expBody: `{"message":"Operation not recognized"}` + "\n",
expBody: `{"message": "Operation not recognized"}` + "\n",
},
{
name: "upload: contains invalid oid",
@@ -53,7 +54,25 @@ func Test_serveBatch(t *testing.T) {
{"oid": "ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f", "size": 123}
]}`,
expStatusCode: http.StatusOK,
expBody: `{"transfer":"basic","objects":[{"oid":"bad_oid","size":123,"actions":{"error":{"code":422,"message":"Object has invalid oid"}}},{"oid":"ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f","size":123,"actions":{"upload":{"href":"https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f"},"verify":{"href":"https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/verify"}}}]}` + "\n",
expBody: `{
"transfer": "basic",
"objects": [
{"oid": "bad_oid", "size":123, "actions": {"error": {"code": 422, "message": "Object has invalid oid"}}},
{
"oid": "ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f",
"size": 123,
"actions": {
"upload": {
"href": "https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f",
"header": {"Content-Type": "application/octet-stream"}
},
"verify": {
"href": "https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/verify"
}
}
}
]
}` + "\n",
},
{
name: "download: contains non-existent oid and mismatched size",
@@ -78,7 +97,26 @@ func Test_serveBatch(t *testing.T) {
},
},
expStatusCode: http.StatusOK,
expBody: `{"transfer":"basic","objects":[{"oid":"bad_oid","size":123,"actions":{"error":{"code":404,"message":"Object does not exist"}}},{"oid":"ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f","size":123,"actions":{"error":{"code":422,"message":"Object size mismatch"}}},{"oid":"5cac0a318669fadfee734fb340a5f5b70b428ac57a9f4b109cb6e150b2ba7e57","size":456,"actions":{"download":{"href":"https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/5cac0a318669fadfee734fb340a5f5b70b428ac57a9f4b109cb6e150b2ba7e57"}}}]}` + "\n",
expBody: `{
"transfer": "basic",
"objects": [
{"oid": "bad_oid", "size": 123, "actions": {"error": {"code": 404, "message": "Object does not exist"}}},
{
"oid": "ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f",
"size": 123,
"actions": {"error": {"code": 422, "message": "Object size mismatch"}}
},
{
"oid": "5cac0a318669fadfee734fb340a5f5b70b428ac57a9f4b109cb6e150b2ba7e57",
"size": 456,
"actions": {
"download": {
"href": "https://gogs.example.com/owner/repo.git/info/lfs/objects/basic/5cac0a318669fadfee734fb340a5f5b70b428ac57a9f4b109cb6e150b2ba7e57"
}
}
}
]
}` + "\n",
},
}
for _, test := range tests {
@@ -100,7 +138,20 @@ func Test_serveBatch(t *testing.T) {
if err != nil {
t.Fatal(err)
}
assert.Equal(t, test.expBody, string(body))
var expBody bytes.Buffer
err = json.Indent(&expBody, []byte(test.expBody), "", " ")
if err != nil {
t.Fatal(err)
}
var gotBody bytes.Buffer
err = json.Indent(&gotBody, body, "", " ")
if err != nil {
t.Fatal(err)
}
assert.Equal(t, expBody.String(), gotBody.String())
})
}
}

View File

@@ -135,6 +135,8 @@ func authorize(mode db.AccessMode) macaron.Handler {
return
}
log.Trace("[LFS] Authorized user %q to %q", actor.Name, username+"/"+reponame)
c.Map(owner) // NOTE: Override actor
c.Map(repo)
}
@@ -144,10 +146,15 @@ func authorize(mode db.AccessMode) macaron.Handler {
// When not, response given "failCode" as status code.
func verifyHeader(key, value string, failCode int) macaron.Handler {
return func(c *macaron.Context) {
if !strings.Contains(c.Req.Header.Get(key), value) {
c.Status(failCode)
return
vals := c.Req.Header.Values(key)
for _, val := range vals {
if strings.Contains(val, value) {
return
}
}
log.Trace("[LFS] HTTP header %q does not contain value %q", key, value)
c.Status(failCode)
}
}

View File

@@ -28,7 +28,7 @@
{{if .Submodule}}
<td>
<span class="octicon octicon-file-submodule"></span>
<a href="{{InferSubmoduleURL .Submodule}}">{{.Entry.Name}} @ {{ShortSHA1 .Submodule.Commit}}</a>
<a href="{{InferSubmoduleURL $.RepoLink .Submodule}}">{{.Entry.Name}} @ {{ShortSHA1 .Submodule.Commit}}</a>
</td>
{{else}}
<td class="name">