mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Compare commits
	
		
			11 Commits
		
	
	
		
			v1.9.0-rc1
			...
			v1.0.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					155fb93b9b | ||
| 
						 | 
					3a8c792303 | ||
| 
						 | 
					807c64800c | ||
| 
						 | 
					6ddb2dcd57 | ||
| 
						 | 
					729ab80065 | ||
| 
						 | 
					a5ea9b4f30 | ||
| 
						 | 
					8f08ccdb9f | ||
| 
						 | 
					10d73d38e0 | ||
| 
						 | 
					fbb424c61d | ||
| 
						 | 
					e8bac94d1f | ||
| 
						 | 
					99c6556ff3 | 
@@ -3,6 +3,10 @@ workspace:
 | 
				
			|||||||
  path: src/code.gitea.io/gitea
 | 
					  path: src/code.gitea.io/gitea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pipeline:
 | 
					pipeline:
 | 
				
			||||||
 | 
					  clone:
 | 
				
			||||||
 | 
					    image: plugins/git
 | 
				
			||||||
 | 
					    tags: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  test:
 | 
					  test:
 | 
				
			||||||
    image: webhippie/golang:edge
 | 
					    image: webhippie/golang:edge
 | 
				
			||||||
    pull: true
 | 
					    pull: true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
eyJhbGciOiJIUzI1NiJ9.d29ya3NwYWNlOgogIGJhc2U6IC9zcnYvYXBwCiAgcGF0aDogc3JjL2NvZGUuZ2l0ZWEuaW8vZ2l0ZWEKCnBpcGVsaW5lOgogIHRlc3Q6CiAgICBpbWFnZTogd2ViaGlwcGllL2dvbGFuZzplZGdlCiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gYXBrIC1VIGFkZCBvcGVuc3NoLWNsaWVudAogICAgICAtIG1ha2UgY2xlYW4KICAgICAgLSBtYWtlIGdlbmVyYXRlCiAgICAgIC0gbWFrZSB2ZXQKICAgICAgLSBtYWtlIGxpbnQKICAgICAgLSBtYWtlIHRlc3QKICAgICAgLSBtYWtlIGJ1aWxkCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcsIHB1bGxfcmVxdWVzdCBdCgogIHRlc3QtbXlzcWw6CiAgICBpbWFnZTogd2ViaGlwcGllL2dvbGFuZzplZGdlCiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gbWFrZSB0ZXN0LW15c3FsCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KCiAgdGVzdC1wZ3NxbDoKICAgIGltYWdlOiB3ZWJoaXBwaWUvZ29sYW5nOmVkZ2UKICAgIHB1bGw6IHRydWUKICAgIGVudmlyb25tZW50OgogICAgICBDR09fRU5BQkxFRDogMQogICAgICBUQUdTOiBzcWxpdGUgYmluZGF0YQogICAgICBHT1BBVEg6IC9zcnYvYXBwCiAgICBjb21tYW5kczoKICAgICAgLSBtYWtlIHRlc3QtcGdzcWwKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQoKICB1cGRhdGVyOgogICAgaW1hZ2U6IGthcmFsYWJlL3hnby1sYXRlc3Q6bGF0ZXN0CiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gbWFrZSByZWxlYXNlCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcgXQogICAgICBicmFuY2g6IFsgbWFzdGVyLCByZWxlYXNlLyosIHJlZnMvdGFncy8qIF0KCiAgY292ZXJhZ2U6CiAgICBpbWFnZTogcGx1Z2lucy9jb3ZlcmFnZQogICAgc2VydmVyOiBodHRwczovL2NvdmVyYWdlLmdpdGVhLmlvCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcsIHB1bGxfcmVxdWVzdCBdCgogIGRvY2tlcjoKICAgIGltYWdlOiBwbHVnaW5zL2RvY2tlcgogICAgcmVwbzogZ2l0ZWEvZ2l0ZWEKICAgIHRhZ3M6IFsgJyR7RFJPTkVfVEFHIyN2fScgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgdGFnIF0KICAgICAgYnJhbmNoOiBbIHJlZnMvdGFncy8qIF0KCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICByZXBvOiBnaXRlYS9naXRlYQogICAgdGFnczogWyAnJHtEUk9ORV9CUkFOQ0gjI3JlbGVhc2Uvdn0nIF0KICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQogICAgICBicmFuY2g6IFsgcmVsZWFzZS8qIF0KCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICByZXBvOiBnaXRlYS9naXRlYQogICAgdGFnczogWyAnbGF0ZXN0JyBdCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciBdCgogIHJlbGVhc2U6CiAgICBpbWFnZTogcGx1Z2lucy9zMwogICAgcGF0aF9zdHlsZTogdHJ1ZQogICAgc3RyaXBfcHJlZml4OiBkaXN0L3JlbGVhc2UvCiAgICBzb3VyY2U6IGRpc3QvcmVsZWFzZS8qCiAgICB0YXJnZXQ6IC9naXRlYS8ke0RST05FX1RBRyMjdn0KICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHRhZyBdCiAgICAgIGJyYW5jaDogWyByZWZzL3RhZ3MvKiBdCgogIHJlbGVhc2U6CiAgICBpbWFnZTogcGx1Z2lucy9zMwogICAgcGF0aF9zdHlsZTogdHJ1ZQogICAgc3RyaXBfcHJlZml4OiBkaXN0L3JlbGVhc2UvCiAgICBzb3VyY2U6IGRpc3QvcmVsZWFzZS8qCiAgICB0YXJnZXQ6IC9naXRlYS8ke0RST05FX0JSQU5DSCMjcmVsZWFzZS92fQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLyogXQoKICByZWxlYXNlOgogICAgaW1hZ2U6IHBsdWdpbnMvczMKICAgIHBhdGhfc3R5bGU6IHRydWUKICAgIHN0cmlwX3ByZWZpeDogZGlzdC9yZWxlYXNlLwogICAgc291cmNlOiBkaXN0L3JlbGVhc2UvKgogICAgdGFyZ2V0OiAvZ2l0ZWEvbWFzdGVyCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciBdCgogIGdpdGh1YjoKICAgIGltYWdlOiBwbHVnaW5zL2dpdGh1Yi1yZWxlYXNlCiAgICBmaWxlczoKICAgICAgLSBkaXN0L3JlbGVhc2UvKgogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgdGFnIF0KICAgICAgYnJhbmNoOiBbIHJlZnMvdGFncy8qIF0KCiAgZ2l0dGVyOgogICAgaW1hZ2U6IHBsdWdpbnMvZ2l0dGVyCgpzZXJ2aWNlczoKICBteXNxbDoKICAgIGltYWdlOiBteXNxbDo1LjcKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX0RBVEFCQVNFPXRlc3QKICAgICAgLSBNWVNRTF9BTExPV19FTVBUWV9QQVNTV09SRD15ZXMKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQoKICBwZ3NxbDoKICAgIGltYWdlOiBwb3N0Z3Jlczo5LjUKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPXRlc3QKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQo._4feZQfrP_lA1JxSLtj7CDpAN-uB4n4nJKR1R2UcxHg
 | 
					eyJhbGciOiJIUzI1NiJ9.d29ya3NwYWNlOgogIGJhc2U6IC9zcnYvYXBwCiAgcGF0aDogc3JjL2NvZGUuZ2l0ZWEuaW8vZ2l0ZWEKCnBpcGVsaW5lOgogIGNsb25lOgogICAgaW1hZ2U6IHBsdWdpbnMvZ2l0CiAgICB0YWdzOiB0cnVlCgogIHRlc3Q6CiAgICBpbWFnZTogd2ViaGlwcGllL2dvbGFuZzplZGdlCiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gYXBrIC1VIGFkZCBvcGVuc3NoLWNsaWVudAogICAgICAtIG1ha2UgY2xlYW4KICAgICAgLSBtYWtlIGdlbmVyYXRlCiAgICAgIC0gbWFrZSB2ZXQKICAgICAgLSBtYWtlIGxpbnQKICAgICAgLSBtYWtlIHRlc3QKICAgICAgLSBtYWtlIGJ1aWxkCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcsIHB1bGxfcmVxdWVzdCBdCgogIHRlc3QtbXlzcWw6CiAgICBpbWFnZTogd2ViaGlwcGllL2dvbGFuZzplZGdlCiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gbWFrZSB0ZXN0LW15c3FsCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KCiAgdGVzdC1wZ3NxbDoKICAgIGltYWdlOiB3ZWJoaXBwaWUvZ29sYW5nOmVkZ2UKICAgIHB1bGw6IHRydWUKICAgIGVudmlyb25tZW50OgogICAgICBDR09fRU5BQkxFRDogMQogICAgICBUQUdTOiBzcWxpdGUgYmluZGF0YQogICAgICBHT1BBVEg6IC9zcnYvYXBwCiAgICBjb21tYW5kczoKICAgICAgLSBtYWtlIHRlc3QtcGdzcWwKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQoKICB1cGRhdGVyOgogICAgaW1hZ2U6IGthcmFsYWJlL3hnby1sYXRlc3Q6bGF0ZXN0CiAgICBwdWxsOiB0cnVlCiAgICBlbnZpcm9ubWVudDoKICAgICAgQ0dPX0VOQUJMRUQ6IDEKICAgICAgVEFHUzogc3FsaXRlIGJpbmRhdGEKICAgICAgR09QQVRIOiAvc3J2L2FwcAogICAgY29tbWFuZHM6CiAgICAgIC0gbWFrZSByZWxlYXNlCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcgXQogICAgICBicmFuY2g6IFsgbWFzdGVyLCByZWxlYXNlLyosIHJlZnMvdGFncy8qIF0KCiAgY292ZXJhZ2U6CiAgICBpbWFnZTogcGx1Z2lucy9jb3ZlcmFnZQogICAgc2VydmVyOiBodHRwczovL2NvdmVyYWdlLmdpdGVhLmlvCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoLCB0YWcsIHB1bGxfcmVxdWVzdCBdCgogIGRvY2tlcjoKICAgIGltYWdlOiBwbHVnaW5zL2RvY2tlcgogICAgcmVwbzogZ2l0ZWEvZ2l0ZWEKICAgIHRhZ3M6IFsgJyR7RFJPTkVfVEFHIyN2fScgXQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgdGFnIF0KICAgICAgYnJhbmNoOiBbIHJlZnMvdGFncy8qIF0KCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICByZXBvOiBnaXRlYS9naXRlYQogICAgdGFnczogWyAnJHtEUk9ORV9CUkFOQ0gjI3JlbGVhc2Uvdn0nIF0KICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQogICAgICBicmFuY2g6IFsgcmVsZWFzZS8qIF0KCiAgZG9ja2VyOgogICAgaW1hZ2U6IHBsdWdpbnMvZG9ja2VyCiAgICByZXBvOiBnaXRlYS9naXRlYQogICAgdGFnczogWyAnbGF0ZXN0JyBdCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciBdCgogIHJlbGVhc2U6CiAgICBpbWFnZTogcGx1Z2lucy9zMwogICAgcGF0aF9zdHlsZTogdHJ1ZQogICAgc3RyaXBfcHJlZml4OiBkaXN0L3JlbGVhc2UvCiAgICBzb3VyY2U6IGRpc3QvcmVsZWFzZS8qCiAgICB0YXJnZXQ6IC9naXRlYS8ke0RST05FX1RBRyMjdn0KICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHRhZyBdCiAgICAgIGJyYW5jaDogWyByZWZzL3RhZ3MvKiBdCgogIHJlbGVhc2U6CiAgICBpbWFnZTogcGx1Z2lucy9zMwogICAgcGF0aF9zdHlsZTogdHJ1ZQogICAgc3RyaXBfcHJlZml4OiBkaXN0L3JlbGVhc2UvCiAgICBzb3VyY2U6IGRpc3QvcmVsZWFzZS8qCiAgICB0YXJnZXQ6IC9naXRlYS8ke0RST05FX0JSQU5DSCMjcmVsZWFzZS92fQogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgcHVzaCBdCiAgICAgIGJyYW5jaDogWyByZWxlYXNlLyogXQoKICByZWxlYXNlOgogICAgaW1hZ2U6IHBsdWdpbnMvczMKICAgIHBhdGhfc3R5bGU6IHRydWUKICAgIHN0cmlwX3ByZWZpeDogZGlzdC9yZWxlYXNlLwogICAgc291cmNlOiBkaXN0L3JlbGVhc2UvKgogICAgdGFyZ2V0OiAvZ2l0ZWEvbWFzdGVyCiAgICB3aGVuOgogICAgICBldmVudDogWyBwdXNoIF0KICAgICAgYnJhbmNoOiBbIG1hc3RlciBdCgogIGdpdGh1YjoKICAgIGltYWdlOiBwbHVnaW5zL2dpdGh1Yi1yZWxlYXNlCiAgICBmaWxlczoKICAgICAgLSBkaXN0L3JlbGVhc2UvKgogICAgd2hlbjoKICAgICAgZXZlbnQ6IFsgdGFnIF0KICAgICAgYnJhbmNoOiBbIHJlZnMvdGFncy8qIF0KCiAgZ2l0dGVyOgogICAgaW1hZ2U6IHBsdWdpbnMvZ2l0dGVyCgpzZXJ2aWNlczoKICBteXNxbDoKICAgIGltYWdlOiBteXNxbDo1LjcKICAgIGVudmlyb25tZW50OgogICAgICAtIE1ZU1FMX0RBVEFCQVNFPXRlc3QKICAgICAgLSBNWVNRTF9BTExPV19FTVBUWV9QQVNTV09SRD15ZXMKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQoKICBwZ3NxbDoKICAgIGltYWdlOiBwb3N0Z3Jlczo5LjUKICAgIGVudmlyb25tZW50OgogICAgICAtIFBPU1RHUkVTX0RCPXRlc3QKICAgIHdoZW46CiAgICAgIGV2ZW50OiBbIHB1c2ggXQo.NGE3UiNBappXiPimJXv1DzgjT3k2hofGPsCPhw7KsSM
 | 
				
			||||||
@@ -25,3 +25,6 @@ indent_size = 4
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[Makefile]
 | 
					[Makefile]
 | 
				
			||||||
indent_style = tab
 | 
					indent_style = tab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[*.md]
 | 
				
			||||||
 | 
					trim_trailing_whitespace = false
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -1,5 +1,18 @@
 | 
				
			|||||||
# Changelog
 | 
					# Changelog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## [1.0.1](https://github.com/go-gitea/gitea/releases/tag/v1.0.1) - 2017-01-05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* BUGFIXES
 | 
				
			||||||
 | 
					  * Fixed localized MIN_PASSWORD_LENGTH [#501](https://github.com/go-gitea/gitea/pull/501)
 | 
				
			||||||
 | 
					  * Fixed 500 error on organization delete [#507](https://github.com/go-gitea/gitea/pull/507)
 | 
				
			||||||
 | 
					  * Ignore empty wiki repo on migrate [#544](https://github.com/go-gitea/gitea/pull/544)
 | 
				
			||||||
 | 
					  * Proper check access for forking [#563](https://github.com/go-gitea/gitea/pull/563)
 | 
				
			||||||
 | 
					  * Fix SSH domain on installer [#506](https://github.com/go-gitea/gitea/pull/506)
 | 
				
			||||||
 | 
					  * Fix missing data rows on admin UI [#580](https://github.com/go-gitea/gitea/pull/580)
 | 
				
			||||||
 | 
					  * Do not delete tags with releases by default [#579](https://github.com/go-gitea/gitea/pull/579)
 | 
				
			||||||
 | 
					  * Fix missing session config data on admin UI [#578](https://github.com/go-gitea/gitea/pull/578)
 | 
				
			||||||
 | 
					  * Properly show the version within footer on the UI [#593](https://github.com/go-gitea/gitea/pull/593)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## [1.0.0](https://github.com/go-gitea/gitea/releases/tag/v1.0.0) - 2016-12-23
 | 
					## [1.0.0](https://github.com/go-gitea/gitea/releases/tag/v1.0.0) - 2016-12-23
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* BREAKING
 | 
					* BREAKING
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -206,12 +206,9 @@ func Organizations(page, pageSize int) ([]*User, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DeleteOrganization completely and permanently deletes everything of organization.
 | 
					// DeleteOrganization completely and permanently deletes everything of organization.
 | 
				
			||||||
func DeleteOrganization(org *User) (err error) {
 | 
					func DeleteOrganization(org *User) (err error) {
 | 
				
			||||||
	if err := DeleteUser(org); err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sess := x.NewSession()
 | 
						sess := x.NewSession()
 | 
				
			||||||
	defer sessionRelease(sess)
 | 
						defer sess.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = sess.Begin(); err != nil {
 | 
						if err = sess.Begin(); err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -228,7 +225,11 @@ func DeleteOrganization(org *User) (err error) {
 | 
				
			|||||||
		return fmt.Errorf("deleteUser: %v", err)
 | 
							return fmt.Errorf("deleteUser: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return sess.Commit()
 | 
						if err = sess.Commit(); err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return RewriteAllPublicKeys()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ________                ____ ___
 | 
					// ________                ____ ___
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -189,7 +189,7 @@ func UpdateRelease(gitRepo *git.Repository, rel *Release) (err error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// DeleteReleaseByID deletes a release and corresponding Git tag by given ID.
 | 
					// DeleteReleaseByID deletes a release and corresponding Git tag by given ID.
 | 
				
			||||||
func DeleteReleaseByID(id int64, u *User) error {
 | 
					func DeleteReleaseByID(id int64, u *User, delTag bool) error {
 | 
				
			||||||
	rel, err := GetReleaseByID(id)
 | 
						rel, err := GetReleaseByID(id)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return fmt.Errorf("GetReleaseByID: %v", err)
 | 
							return fmt.Errorf("GetReleaseByID: %v", err)
 | 
				
			||||||
@@ -207,12 +207,14 @@ func DeleteReleaseByID(id int64, u *User) error {
 | 
				
			|||||||
		return fmt.Errorf("DeleteReleaseByID: permission denied")
 | 
							return fmt.Errorf("DeleteReleaseByID: permission denied")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if delTag {
 | 
				
			||||||
		_, stderr, err := process.ExecDir(-1, repo.RepoPath(),
 | 
							_, stderr, err := process.ExecDir(-1, repo.RepoPath(),
 | 
				
			||||||
			fmt.Sprintf("DeleteReleaseByID (git tag -d): %d", rel.ID),
 | 
								fmt.Sprintf("DeleteReleaseByID (git tag -d): %d", rel.ID),
 | 
				
			||||||
			"git", "tag", "-d", rel.TagName)
 | 
								"git", "tag", "-d", rel.TagName)
 | 
				
			||||||
		if err != nil && !strings.Contains(stderr, "not found") {
 | 
							if err != nil && !strings.Contains(stderr, "not found") {
 | 
				
			||||||
			return fmt.Errorf("git tag -d: %v - %s", err, stderr)
 | 
								return fmt.Errorf("git tag -d: %v - %s", err, stderr)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if _, err = x.Id(rel.ID).Delete(new(Release)); err != nil {
 | 
						if _, err = x.Id(rel.ID).Delete(new(Release)); err != nil {
 | 
				
			||||||
		return fmt.Errorf("Delete: %v", err)
 | 
							return fmt.Errorf("Delete: %v", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -691,7 +691,6 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	wikiRemotePath := wikiRemoteURL(opts.RemoteAddr)
 | 
						wikiRemotePath := wikiRemoteURL(opts.RemoteAddr)
 | 
				
			||||||
	if len(wikiRemotePath) > 0 {
 | 
						if len(wikiRemotePath) > 0 {
 | 
				
			||||||
 | 
					 | 
				
			||||||
		if err := os.RemoveAll(wikiPath); err != nil {
 | 
							if err := os.RemoveAll(wikiPath); err != nil {
 | 
				
			||||||
			return repo, fmt.Errorf("Fail to remove %s: %v", wikiPath, err)
 | 
								return repo, fmt.Errorf("Fail to remove %s: %v", wikiPath, err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -700,8 +699,12 @@ func MigrateRepository(u *User, opts MigrateRepoOptions) (*Repository, error) {
 | 
				
			|||||||
			Mirror:  true,
 | 
								Mirror:  true,
 | 
				
			||||||
			Quiet:   true,
 | 
								Quiet:   true,
 | 
				
			||||||
			Timeout: migrateTimeout,
 | 
								Timeout: migrateTimeout,
 | 
				
			||||||
 | 
								Branch:  "master",
 | 
				
			||||||
		}); err != nil {
 | 
							}); err != nil {
 | 
				
			||||||
			log.Info("Clone wiki: %v", err)
 | 
								log.Warn("Clone wiki: %v", err)
 | 
				
			||||||
 | 
								if err := os.RemoveAll(wikiPath); err != nil {
 | 
				
			||||||
 | 
									return repo, fmt.Errorf("Fail to remove %s: %v", wikiPath, err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -885,9 +885,11 @@ func deleteUser(e *xorm.Session, u *User) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	avatarPath := u.CustomAvatarPath()
 | 
						avatarPath := u.CustomAvatarPath()
 | 
				
			||||||
 | 
						if com.IsExist(avatarPath) {
 | 
				
			||||||
		if err := os.Remove(avatarPath); err != nil {
 | 
							if err := os.Remove(avatarPath); err != nil {
 | 
				
			||||||
			return fmt.Errorf("Fail to remove %s: %v", avatarPath, err)
 | 
								return fmt.Errorf("Fail to remove %s: %v", avatarPath, err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Щракнете тук, за да получите (отнов
 | 
				
			|||||||
reset_password=Нулиране на паролата
 | 
					reset_password=Нулиране на паролата
 | 
				
			||||||
invalid_code=За съжаление Вашия код за потвърждение е изтекъл или е невалиден.
 | 
					invalid_code=За съжаление Вашия код за потвърждение е изтекъл или е невалиден.
 | 
				
			||||||
reset_password_helper=Щракнете тук, за да нулирате паролата си
 | 
					reset_password_helper=Щракнете тук, за да нулирате паролата си
 | 
				
			||||||
password_too_short=Размерът на паролата не може да бъде по-малък от 6 знака.
 | 
					password_too_short=Размерът на паролата не може да бъде по-малък от %d знака.
 | 
				
			||||||
non_local_account=Нелокални потребители не могат да сменят паролата си през Gitea.
 | 
					non_local_account=Нелокални потребители не могат да сменят паролата си през Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Klikněte zde pro znovuposlání e-mailu pro změnu vašeho hesl
 | 
				
			|||||||
reset_password=Obnova vašeho hesla
 | 
					reset_password=Obnova vašeho hesla
 | 
				
			||||||
invalid_code=Omlouváme se, ale kód potvrzení vašeho účtu vypršel nebo není správný.
 | 
					invalid_code=Omlouváme se, ale kód potvrzení vašeho účtu vypršel nebo není správný.
 | 
				
			||||||
reset_password_helper=Klikněte zde pro obnovu vašeho hesla
 | 
					reset_password_helper=Klikněte zde pro obnovu vašeho hesla
 | 
				
			||||||
password_too_short=Délka hesla musí být minimálně 6 znaků.
 | 
					password_too_short=Délka hesla musí být minimálně %d znaků.
 | 
				
			||||||
non_local_account=Externí účty nemohou měnit hesla přes Gitea.
 | 
					non_local_account=Externí účty nemohou měnit hesla přes Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Hier klicken, um die E-Mail zum Passwort-zurücksetzen erneut zu
 | 
				
			|||||||
reset_password=Passwort zurücksetzen
 | 
					reset_password=Passwort zurücksetzen
 | 
				
			||||||
invalid_code=Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig.
 | 
					invalid_code=Es tut uns leid, der Bestätigungscode ist abgelaufen oder ungültig.
 | 
				
			||||||
reset_password_helper=Hier klicken, um das Passwort zurückzusetzen
 | 
					reset_password_helper=Hier klicken, um das Passwort zurückzusetzen
 | 
				
			||||||
password_too_short=Das Passwort muss mindenstens 6 Zeichen lang sein.
 | 
					password_too_short=Das Passwort muss mindenstens %d Zeichen lang sein.
 | 
				
			||||||
non_local_account=Nicht-lokale Konten können Passwörter nicht via Gitea ändern.
 | 
					non_local_account=Nicht-lokale Konten können Passwörter nicht via Gitea ändern.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Haga clic aquí para (re)enviar el correo para el restablecimien
 | 
				
			|||||||
reset_password=Restablecer su contraseña
 | 
					reset_password=Restablecer su contraseña
 | 
				
			||||||
invalid_code=Lo sentimos, su código de confirmación ha expirado o no es valido.
 | 
					invalid_code=Lo sentimos, su código de confirmación ha expirado o no es valido.
 | 
				
			||||||
reset_password_helper=Haga Clic aquí para restablecer su contraseña
 | 
					reset_password_helper=Haga Clic aquí para restablecer su contraseña
 | 
				
			||||||
password_too_short=La longitud de la contraseña no puede ser menor a 6.
 | 
					password_too_short=La longitud de la contraseña no puede ser menor a %d.
 | 
				
			||||||
non_local_account=Cuentas que no son locales no pueden cambiar las contraseñas a través de Gitea.
 | 
					non_local_account=Cuentas que no son locales no pueden cambiar las contraseñas a través de Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Klikkaa tästä (uudelleen)lähettääksesi salasanan nollaus s
 | 
				
			|||||||
reset_password=Nollaa salasanasi
 | 
					reset_password=Nollaa salasanasi
 | 
				
			||||||
invalid_code=Sori, varmistuskoodisi on vanhentunut tai väärä.
 | 
					invalid_code=Sori, varmistuskoodisi on vanhentunut tai väärä.
 | 
				
			||||||
reset_password_helper=Klikkaa tästä nollataksesi salasanasi
 | 
					reset_password_helper=Klikkaa tästä nollataksesi salasanasi
 | 
				
			||||||
password_too_short=Salasanan pituus ei voi olla vähemmän kuin 6 merkkiä.
 | 
					password_too_short=Salasanan pituus ei voi olla vähemmän kuin %d merkkiä.
 | 
				
			||||||
non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
					non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Cliquez ici pour (r)envoyer le mail de réinitialisation du mot
 | 
				
			|||||||
reset_password=Réinitialiser le mot de passe
 | 
					reset_password=Réinitialiser le mot de passe
 | 
				
			||||||
invalid_code=Désolé, votre code de confirmation est invalide ou a expiré.
 | 
					invalid_code=Désolé, votre code de confirmation est invalide ou a expiré.
 | 
				
			||||||
reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe
 | 
					reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe
 | 
				
			||||||
password_too_short=Le mot de passe doit contenir 6 caractères minimum.
 | 
					password_too_short=Le mot de passe doit contenir %d caractères minimum.
 | 
				
			||||||
non_local_account=Les comptes non locaux ne peuvent pas changer leur mot de passe via Gitea.
 | 
					non_local_account=Les comptes non locaux ne peuvent pas changer leur mot de passe via Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Clicca qui per (ri)inviare la tua e-mail di reimpostazione passw
 | 
				
			|||||||
reset_password=Reimposta la tua Password
 | 
					reset_password=Reimposta la tua Password
 | 
				
			||||||
invalid_code=Siamo spiacenti, il codice di conferma è scaduto o non valido.
 | 
					invalid_code=Siamo spiacenti, il codice di conferma è scaduto o non valido.
 | 
				
			||||||
reset_password_helper=Clicca qui per reimpostare la password
 | 
					reset_password_helper=Clicca qui per reimpostare la password
 | 
				
			||||||
password_too_short=La lunghezza della password non può essere meno 6 caratteri.
 | 
					password_too_short=La lunghezza della password non può essere meno %d caratteri.
 | 
				
			||||||
non_local_account=Gli account non locali non possono modificare le password tramite Gitea.
 | 
					non_local_account=Gli account non locali non possono modificare le password tramite Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=パスワードリセットのメールを再送するにはこ
 | 
				
			|||||||
reset_password=パスワードリセット
 | 
					reset_password=パスワードリセット
 | 
				
			||||||
invalid_code=申し訳ありませんが、確認用コードが期限切れまたは無効です。
 | 
					invalid_code=申し訳ありませんが、確認用コードが期限切れまたは無効です。
 | 
				
			||||||
reset_password_helper=パスワードをリセットするにはここをクリック
 | 
					reset_password_helper=パスワードをリセットするにはここをクリック
 | 
				
			||||||
password_too_short=6文字未満のパスワードは設定できません。
 | 
					password_too_short=%d文字未満のパスワードは設定できません。
 | 
				
			||||||
non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
					non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=여기를 눌러 비밀번호 초기화 메일을 (재)전송
 | 
				
			|||||||
reset_password=비밀번호 초기화
 | 
					reset_password=비밀번호 초기화
 | 
				
			||||||
invalid_code=죄송합니다. 확인 코드가 만료되었거나 유효하지 않습니다.
 | 
					invalid_code=죄송합니다. 확인 코드가 만료되었거나 유효하지 않습니다.
 | 
				
			||||||
reset_password_helper=이곳을 눌러 비밀번호를 재설정
 | 
					reset_password_helper=이곳을 눌러 비밀번호를 재설정
 | 
				
			||||||
password_too_short=비밀번호의 길이는 6글자 미만일 수 없습니다.
 | 
					password_too_short=비밀번호의 길이는 %d글자 미만일 수 없습니다.
 | 
				
			||||||
non_local_account=Gitea 계정이 아니면 암호를 변경할 수 없습니다.
 | 
					non_local_account=Gitea 계정이 아니면 암호를 변경할 수 없습니다.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Spiediet šeit, lai nosūtītu paroles maiņas vēstuli uz Jūsu
 | 
				
			|||||||
reset_password=Atjaunot savu paroli
 | 
					reset_password=Atjaunot savu paroli
 | 
				
			||||||
invalid_code=Atvainojiet, Jūsu apstiprināšanas kodam ir beidzies derīguma termiņš vai arī tas ir nepareizs.
 | 
					invalid_code=Atvainojiet, Jūsu apstiprināšanas kodam ir beidzies derīguma termiņš vai arī tas ir nepareizs.
 | 
				
			||||||
reset_password_helper=Nospiediet šeit, lai atjaunotu paroli
 | 
					reset_password_helper=Nospiediet šeit, lai atjaunotu paroli
 | 
				
			||||||
password_too_short=Paroles garums nedrīkst būt mazāks par 6.
 | 
					password_too_short=Paroles garums nedrīkst būt mazāks par %d.
 | 
				
			||||||
non_local_account=Tikai lokālie konti var nomainīt savu paroli Gitea.
 | 
					non_local_account=Tikai lokālie konti var nomainīt savu paroli Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Klik hier om uw wachtwoord reset mail (nogmaals) te versturen
 | 
				
			|||||||
reset_password=Reset uw wachtwoord
 | 
					reset_password=Reset uw wachtwoord
 | 
				
			||||||
invalid_code=Sorry, uw bevestigingscode is verlopen of niet meer geldig.
 | 
					invalid_code=Sorry, uw bevestigingscode is verlopen of niet meer geldig.
 | 
				
			||||||
reset_password_helper=Klik hier om uw wachtwoord opnieuw in te stellen.
 | 
					reset_password_helper=Klik hier om uw wachtwoord opnieuw in te stellen.
 | 
				
			||||||
password_too_short=De lengte van uw wachtwoord moet minimaal zes karakters zijn.
 | 
					password_too_short=De lengte van uw wachtwoord moet minimaal %d karakters zijn.
 | 
				
			||||||
non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
					non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Kliknij tutaj, aby (ponownie) wysłać e-mail z instrukcjami res
 | 
				
			|||||||
reset_password=Resetowanie hasła
 | 
					reset_password=Resetowanie hasła
 | 
				
			||||||
invalid_code=Niestety, Twój kod potwierdzający wygasł lub jest nieprawidłowy.
 | 
					invalid_code=Niestety, Twój kod potwierdzający wygasł lub jest nieprawidłowy.
 | 
				
			||||||
reset_password_helper=Kliknij tutaj, aby zresetować hasło
 | 
					reset_password_helper=Kliknij tutaj, aby zresetować hasło
 | 
				
			||||||
password_too_short=Długość hasła nie może być mniejsza niż 6 znaków.
 | 
					password_too_short=Długość hasła nie może być mniejsza niż %d znaków.
 | 
				
			||||||
non_local_account=Nie lokalne konta nie mogą zmieniać haseł przez Gitea.
 | 
					non_local_account=Nie lokalne konta nie mogą zmieniać haseł przez Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Clique aqui para (re)enviar seu e-mail de redefinição da senha
 | 
				
			|||||||
reset_password=Redefinir sua senha
 | 
					reset_password=Redefinir sua senha
 | 
				
			||||||
invalid_code=Desculpe, seu código de confirmação expirou ou não é válido.
 | 
					invalid_code=Desculpe, seu código de confirmação expirou ou não é válido.
 | 
				
			||||||
reset_password_helper=Clique aqui para redefinir sua senha
 | 
					reset_password_helper=Clique aqui para redefinir sua senha
 | 
				
			||||||
password_too_short=O comprimento da senha não pode ser menor que 6.
 | 
					password_too_short=O comprimento da senha não pode ser menor que %d.
 | 
				
			||||||
non_local_account=Não é possível mudar a senha de contas remotas pelo Gitea.
 | 
					non_local_account=Não é possível mudar a senha de contas remotas pelo Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Нажмите сюда, чтобы отправить пись
 | 
				
			|||||||
reset_password=Сброс пароля
 | 
					reset_password=Сброс пароля
 | 
				
			||||||
invalid_code=Извините, ваш код подтверждения истек или не является допустимым.
 | 
					invalid_code=Извините, ваш код подтверждения истек или не является допустимым.
 | 
				
			||||||
reset_password_helper=Нажмите здесь, чтобы сбросить свой пароль
 | 
					reset_password_helper=Нажмите здесь, чтобы сбросить свой пароль
 | 
				
			||||||
password_too_short=Длина пароля не менее 6 символов.
 | 
					password_too_short=Длина пароля не менее %d символов.
 | 
				
			||||||
non_local_account=Нелокальные аккаунты не могут изменить пароль через Gitea.
 | 
					non_local_account=Нелокальные аккаунты не могут изменить пароль через Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Кликните овде да (поново) пошаљете 
 | 
				
			|||||||
reset_password=Ресет лозинке
 | 
					reset_password=Ресет лозинке
 | 
				
			||||||
invalid_code=Извините, ваш код за потврду је истекао или није валидан.
 | 
					invalid_code=Извините, ваш код за потврду је истекао или није валидан.
 | 
				
			||||||
reset_password_helper=Кликните овде да ресетујете вашу лозинку
 | 
					reset_password_helper=Кликните овде да ресетујете вашу лозинку
 | 
				
			||||||
password_too_short=Лозинка неможе бити краћа од 6 карактера.
 | 
					password_too_short=Лозинка неможе бити краћа од %d карактера.
 | 
				
			||||||
non_local_account=Нелокални налози не могу да промените лозинку преко Gitea.
 | 
					non_local_account=Нелокални налози не могу да промените лозинку преко Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Klicka här för att skicka e-post med lösenordsåterställning
 | 
				
			|||||||
reset_password=Återställ ditt lösenord
 | 
					reset_password=Återställ ditt lösenord
 | 
				
			||||||
invalid_code=Tyvärr, din bekräftelsekod har antingen upphört att gälla eller är ogiltig.
 | 
					invalid_code=Tyvärr, din bekräftelsekod har antingen upphört att gälla eller är ogiltig.
 | 
				
			||||||
reset_password_helper=Klicka här för att återställa ditt lösenord
 | 
					reset_password_helper=Klicka här för att återställa ditt lösenord
 | 
				
			||||||
password_too_short=Lösenordet får ej vara kortare än 6 tecken.
 | 
					password_too_short=Lösenordet får ej vara kortare än %d tecken.
 | 
				
			||||||
non_local_account=Icke-lokala konton får inte ändra lösenord genom Gogs.
 | 
					non_local_account=Icke-lokala konton får inte ändra lösenord genom Gogs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=Parola sıfırlama e-postasını (yeniden) göndermek için bura
 | 
				
			|||||||
reset_password=Parolanızı Sıfırlayın
 | 
					reset_password=Parolanızı Sıfırlayın
 | 
				
			||||||
invalid_code=Üzgünüz, doğrulama kodunuz geçersiz veya süresi dolmuş.
 | 
					invalid_code=Üzgünüz, doğrulama kodunuz geçersiz veya süresi dolmuş.
 | 
				
			||||||
reset_password_helper=Parolanızı sıfırlamak için buraya tıklayın
 | 
					reset_password_helper=Parolanızı sıfırlamak için buraya tıklayın
 | 
				
			||||||
password_too_short=Parola uzunluğu 6 karakterden az olamaz.
 | 
					password_too_short=Parola uzunluğu %d karakterden az olamaz.
 | 
				
			||||||
non_local_account=Yerel olmayan hesapların şifrelerini Gitea aracılığıyla değiştiremezsiniz.
 | 
					non_local_account=Yerel olmayan hesapların şifrelerini Gitea aracılığıyla değiştiremezsiniz.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -165,7 +165,7 @@ send_reset_mail=单击此处(重新)发送您的密码重置邮件
 | 
				
			|||||||
reset_password=重置密码
 | 
					reset_password=重置密码
 | 
				
			||||||
invalid_code=对不起,您的确认代码已过期或已失效。
 | 
					invalid_code=对不起,您的确认代码已过期或已失效。
 | 
				
			||||||
reset_password_helper=单击此处重置密码
 | 
					reset_password_helper=单击此处重置密码
 | 
				
			||||||
password_too_short=密码长度不能少于 6 位!
 | 
					password_too_short=密码长度不能少于 %d 位!
 | 
				
			||||||
non_local_account=非本地类型的帐户无法通过 Gitea 修改密码。
 | 
					non_local_account=非本地类型的帐户无法通过 Gitea 修改密码。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=單擊此處(重新)發送您的密碼重置郵件
 | 
				
			|||||||
reset_password=重置密碼
 | 
					reset_password=重置密碼
 | 
				
			||||||
invalid_code=對不起,您的確認代碼已過期或已失效。
 | 
					invalid_code=對不起,您的確認代碼已過期或已失效。
 | 
				
			||||||
reset_password_helper=單擊此處重置密碼
 | 
					reset_password_helper=單擊此處重置密碼
 | 
				
			||||||
password_too_short=密碼長度不能少於 6 位!
 | 
					password_too_short=密碼長度不能少於 %d 位!
 | 
				
			||||||
non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
					non_local_account=Non-local accounts cannot change passwords through Gitea.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -161,7 +161,7 @@ send_reset_mail=單擊此處(重新)發送您的密碼重置郵件
 | 
				
			|||||||
reset_password=重置密碼
 | 
					reset_password=重置密碼
 | 
				
			||||||
invalid_code=對不起,您的確認代碼已過期或已失效。
 | 
					invalid_code=對不起,您的確認代碼已過期或已失效。
 | 
				
			||||||
reset_password_helper=單擊此處重置密碼
 | 
					reset_password_helper=單擊此處重置密碼
 | 
				
			||||||
password_too_short=密碼長度不能少於 6 位!
 | 
					password_too_short=密碼長度不能少於 %d 位!
 | 
				
			||||||
non_local_account=非本地帳戶無法通過 Gitea 修改密碼。
 | 
					non_local_account=非本地帳戶無法通過 Gitea 修改密碼。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[mail]
 | 
					[mail]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -241,7 +241,7 @@ func InstallPost(ctx *context.Context, form auth.InstallForm) {
 | 
				
			|||||||
	cfg.Section("").Key("APP_NAME").SetValue(form.AppName)
 | 
						cfg.Section("").Key("APP_NAME").SetValue(form.AppName)
 | 
				
			||||||
	cfg.Section("repository").Key("ROOT").SetValue(form.RepoRootPath)
 | 
						cfg.Section("repository").Key("ROOT").SetValue(form.RepoRootPath)
 | 
				
			||||||
	cfg.Section("").Key("RUN_USER").SetValue(form.RunUser)
 | 
						cfg.Section("").Key("RUN_USER").SetValue(form.RunUser)
 | 
				
			||||||
	cfg.Section("server").Key("DOMAIN").SetValue(form.Domain)
 | 
						cfg.Section("server").Key("SSH_DOMAIN").SetValue(form.Domain)
 | 
				
			||||||
	cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort)
 | 
						cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort)
 | 
				
			||||||
	cfg.Section("server").Key("ROOT_URL").SetValue(form.AppURL)
 | 
						cfg.Section("server").Key("ROOT_URL").SetValue(form.AppURL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,7 @@ func getForkRepository(ctx *context.Context) *models.Repository {
 | 
				
			|||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !forkRepo.CanBeForked() {
 | 
						if !forkRepo.CanBeForked() || !forkRepo.HasAccess(ctx.User) {
 | 
				
			||||||
		ctx.Handle(404, "getForkRepository", nil)
 | 
							ctx.Handle(404, "getForkRepository", nil)
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -296,7 +296,8 @@ func EditReleasePost(ctx *context.Context, form auth.EditReleaseForm) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DeleteRelease delete a release
 | 
					// DeleteRelease delete a release
 | 
				
			||||||
func DeleteRelease(ctx *context.Context) {
 | 
					func DeleteRelease(ctx *context.Context) {
 | 
				
			||||||
	if err := models.DeleteReleaseByID(ctx.QueryInt64("id"), ctx.User); err != nil {
 | 
						delTag := ctx.QueryBool("delTag")
 | 
				
			||||||
 | 
						if err := models.DeleteReleaseByID(ctx.QueryInt64("id"), ctx.User, delTag); err != nil {
 | 
				
			||||||
		ctx.Flash.Error("DeleteReleaseByID: " + err.Error())
 | 
							ctx.Flash.Error("DeleteReleaseByID: " + err.Error())
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		ctx.Flash.Success(ctx.Tr("repo.release.deletion_success"))
 | 
							ctx.Flash.Success(ctx.Tr("repo.release.deletion_success"))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,15 +88,15 @@
 | 
				
			|||||||
						<dt>{{.i18n.Tr "admin.config.db_type"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_type"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.Type}}</dd>
 | 
											<dd>{{.DbCfg.Type}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.db_host"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_host"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.Host}}</dd>
 | 
											<dd>{{if .DbCfg.Host}}{{.DbCfg.Host}}{{else}}-{{end}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.db_name"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_name"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.Name}}</dd>
 | 
											<dd>{{if .DbCfg.Name}}{{.DbCfg.Name}}{{else}}-{{end}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.db_user"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_user"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.User}}</dd>
 | 
											<dd>{{if .DbCfg.User}}{{.DbCfg.User}}{{else}}-{{end}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.db_ssl_mode"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_ssl_mode"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.SSLMode}} {{.i18n.Tr "admin.config.db_ssl_mode_helper"}}</dd>
 | 
											<dd><i class="fa fa{{if .DbCfg.SSLMode}}-check{{end}}-square-o"></i> {{.i18n.Tr "admin.config.db_ssl_mode_helper"}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.db_path"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.db_path"}}</dt>
 | 
				
			||||||
						<dd>{{.DbCfg.Path}} {{.i18n.Tr "admin.config.db_path_helper"}}</dd>
 | 
											<dd>{{if .DbCfg.Path}}{{.DbCfg.Path}}{{else}}-{{end}} {{.i18n.Tr "admin.config.db_path_helper"}}</dd>
 | 
				
			||||||
					</dl>
 | 
										</dl>
 | 
				
			||||||
				</div>
 | 
									</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -194,7 +194,7 @@
 | 
				
			|||||||
						<dt>{{.i18n.Tr "admin.config.session_provider"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.session_provider"}}</dt>
 | 
				
			||||||
						<dd>{{.SessionConfig.Provider}}</dd>
 | 
											<dd>{{.SessionConfig.Provider}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.provider_config"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.provider_config"}}</dt>
 | 
				
			||||||
						<dd><code>{{.SessionConfig.ProviderConfig}}</code></dd>
 | 
											<dd><code>{{if .SessionConfig.ProviderConfig}}{{.SessionConfig.ProviderConfig}}{{else}}-{{end}}</code></dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt>
 | 
				
			||||||
						<dd>{{.SessionConfig.CookieName}}</dd>
 | 
											<dd>{{.SessionConfig.CookieName}}</dd>
 | 
				
			||||||
						<dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt>
 | 
											<dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user