@@ -818,7 +818,6 @@ func registerRoutes(m *web.Router) {
818
818
819
819
reqRepoAdmin := context .RequireRepoAdmin ()
820
820
reqRepoCodeWriter := context .RequireUnitWriter (unit .TypeCode )
821
- canEnableEditor := context .CanEnableEditor ()
822
821
reqRepoReleaseWriter := context .RequireUnitWriter (unit .TypeReleases )
823
822
reqRepoReleaseReader := context .RequireUnitReader (unit .TypeReleases )
824
823
reqRepoIssuesOrPullsWriter := context .RequireUnitWriter (unit .TypeIssues , unit .TypePullRequests )
@@ -1153,7 +1152,7 @@ func registerRoutes(m *web.Router) {
1153
1152
// end "/{username}/{reponame}/settings"
1154
1153
1155
1154
// user/org home, including rss feeds
1156
- m .Get ("/{username}/{reponame}" , optSignIn , context .RepoAssignment , context .RepoRef ( ), repo .SetEditorconfigIfExists , repo .Home )
1155
+ m .Get ("/{username}/{reponame}" , optSignIn , context .RepoAssignment , context .RepoRefByType ( git . RefTypeBranch ), repo .SetEditorconfigIfExists , repo .Home )
1157
1156
1158
1157
m .Post ("/{username}/{reponame}/markup" , optSignIn , context .RepoAssignment , reqUnitsWithMarkdown , web .Bind (structs.MarkupOption {}), misc .Markup )
1159
1158
@@ -1293,26 +1292,31 @@ func registerRoutes(m *web.Router) {
1293
1292
m .Group ("/{username}/{reponame}" , func () { // repo code
1294
1293
m .Group ("" , func () {
1295
1294
m .Group ("" , func () {
1296
- m .Combo ("/_edit/*" ).Get (repo .EditFile ).
1295
+ m .Combo ("/_edit/*" ).
1296
+ Get (repo .EditFile ).
1297
1297
Post (web .Bind (forms.EditRepoFileForm {}), repo .EditFilePost )
1298
- m .Combo ("/_new/*" ).Get (repo .NewFile ).
1298
+ m .Combo ("/_new/*" ).
1299
+ Get (repo .NewFile ).
1299
1300
Post (web .Bind (forms.EditRepoFileForm {}), repo .NewFilePost )
1300
1301
m .Post ("/_preview/*" , web .Bind (forms.EditPreviewDiffForm {}), repo .DiffPreviewPost )
1301
- m .Combo ("/_delete/*" ).Get (repo .DeleteFile ).
1302
+ m .Combo ("/_delete/*" ).
1303
+ Get (repo .DeleteFile ).
1302
1304
Post (web .Bind (forms.DeleteRepoFileForm {}), repo .DeleteFilePost )
1303
1305
m .Combo ("/_upload/*" , repo .MustBeAbleToUpload ).
1304
1306
Get (repo .UploadFile ).
1305
1307
Post (web .Bind (forms.UploadRepoFileForm {}), repo .UploadFilePost )
1306
- m .Combo ("/_diffpatch/*" ).Get (repo .NewDiffPatch ).
1308
+ m .Combo ("/_diffpatch/*" ).
1309
+ Get (repo .NewDiffPatch ).
1307
1310
Post (web .Bind (forms.EditRepoFileForm {}), repo .NewDiffPatchPost )
1308
- m .Combo ("/_cherrypick/{sha:([a-f0-9]{7,64})}/*" ).Get (repo .CherryPick ).
1311
+ m .Combo ("/_cherrypick/{sha:([a-f0-9]{7,64})}/*" ).
1312
+ Get (repo .CherryPick ).
1309
1313
Post (web .Bind (forms.CherryPickForm {}), repo .CherryPickPost )
1310
- }, repo . MustBeEditable )
1314
+ }, context . RepoRefByType ( git . RefTypeBranch ), context . CanWriteToBranch () )
1311
1315
m .Group ("" , func () {
1312
1316
m .Post ("/upload-file" , repo .UploadFileToServer )
1313
1317
m .Post ("/upload-remove" , web .Bind (forms.RemoveUploadFileForm {}), repo .RemoveUploadFileFromServer )
1314
- }, repo .MustBeEditable , repo . MustBeAbleToUpload )
1315
- }, context . RepoRef (), canEnableEditor , context .RepoMustNotBeArchived ())
1318
+ }, repo .MustBeAbleToUpload , reqRepoCodeWriter )
1319
+ }, repo . MustBeEditable , context .RepoMustNotBeArchived ())
1316
1320
1317
1321
m .Group ("/branches" , func () {
1318
1322
m .Group ("/_new" , func () {
@@ -1333,39 +1337,36 @@ func registerRoutes(m *web.Router) {
1333
1337
m .Group ("/{username}/{reponame}" , func () { // repo tags
1334
1338
m .Group ("/tags" , func () {
1335
1339
m .Get ("" , repo .TagsList )
1336
- m .Get ("/list" , repo .GetTagList )
1337
1340
m .Get (".rss" , feedEnabled , repo .TagsListFeedRSS )
1338
1341
m .Get (".atom" , feedEnabled , repo .TagsListFeedAtom )
1339
- }, ctxDataSet ("EnableFeed" , setting .Other .EnableFeed ),
1340
- repo .MustBeNotEmpty , context .RepoRefByType (git .RefTypeTag , context.RepoRefByTypeOptions {IgnoreNotExistErr : true }))
1341
- m .Post ("/tags/delete" , repo .DeleteTag , reqSignIn ,
1342
- repo .MustBeNotEmpty , context .RepoMustNotBeArchived (), reqRepoCodeWriter , context .RepoRef ())
1343
- }, optSignIn , context .RepoAssignment , reqUnitCodeReader )
1342
+ m .Get ("/list" , repo .GetTagList )
1343
+ }, ctxDataSet ("EnableFeed" , setting .Other .EnableFeed ))
1344
+ m .Post ("/tags/delete" , reqSignIn , reqRepoCodeWriter , context .RepoMustNotBeArchived (), repo .DeleteTag )
1345
+ }, optSignIn , context .RepoAssignment , repo .MustBeNotEmpty , reqUnitCodeReader )
1344
1346
// end "/{username}/{reponame}": repo tags
1345
1347
1346
1348
m .Group ("/{username}/{reponame}" , func () { // repo releases
1347
1349
m .Group ("/releases" , func () {
1348
1350
m .Get ("" , repo .Releases )
1349
- m .Get ("/tag/*" , repo .SingleRelease )
1350
- m .Get ("/latest" , repo .LatestRelease )
1351
1351
m .Get (".rss" , feedEnabled , repo .ReleasesFeedRSS )
1352
1352
m .Get (".atom" , feedEnabled , repo .ReleasesFeedAtom )
1353
- }, ctxDataSet ("EnableFeed" , setting .Other .EnableFeed ),
1354
- repo .MustBeNotEmpty , context .RepoRefByType (git .RefTypeTag , context.RepoRefByTypeOptions {IgnoreNotExistErr : true }))
1355
- m .Get ("/releases/attachments/{uuid}" , repo .MustBeNotEmpty , repo .GetAttachment )
1356
- m .Get ("/releases/download/{vTag}/{fileName}" , repo .MustBeNotEmpty , repo .RedirectDownload )
1353
+ m .Get ("/tag/*" , repo .SingleRelease )
1354
+ m .Get ("/latest" , repo .LatestRelease )
1355
+ }, ctxDataSet ("EnableFeed" , setting .Other .EnableFeed ))
1356
+ m .Get ("/releases/attachments/{uuid}" , repo .GetAttachment )
1357
+ m .Get ("/releases/download/{vTag}/{fileName}" , repo .RedirectDownload )
1357
1358
m .Group ("/releases" , func () {
1358
1359
m .Get ("/new" , repo .NewRelease )
1359
1360
m .Post ("/new" , web .Bind (forms.NewReleaseForm {}), repo .NewReleasePost )
1360
1361
m .Post ("/delete" , repo .DeleteRelease )
1361
1362
m .Post ("/attachments" , repo .UploadReleaseAttachment )
1362
1363
m .Post ("/attachments/remove" , repo .DeleteAttachment )
1363
- }, reqSignIn , repo . MustBeNotEmpty , context .RepoMustNotBeArchived (), reqRepoReleaseWriter , context .RepoRef ())
1364
+ }, reqSignIn , context .RepoMustNotBeArchived (), reqRepoReleaseWriter , context .RepoRef ())
1364
1365
m .Group ("/releases" , func () {
1365
1366
m .Get ("/edit/*" , repo .EditRelease )
1366
1367
m .Post ("/edit/*" , web .Bind (forms.EditReleaseForm {}), repo .EditReleasePost )
1367
- }, reqSignIn , repo . MustBeNotEmpty , context .RepoMustNotBeArchived (), reqRepoReleaseWriter , repo .CommitInfoCache )
1368
- }, optSignIn , context .RepoAssignment , reqRepoReleaseReader )
1368
+ }, reqSignIn , context .RepoMustNotBeArchived (), reqRepoReleaseWriter , repo .CommitInfoCache )
1369
+ }, optSignIn , context .RepoAssignment , repo . MustBeNotEmpty , reqRepoReleaseReader )
1369
1370
// end "/{username}/{reponame}": repo releases
1370
1371
1371
1372
m .Group ("/{username}/{reponame}" , func () { // to maintain compatibility with old attachments
@@ -1529,21 +1530,19 @@ func registerRoutes(m *web.Router) {
1529
1530
}, repo .MustBeNotEmpty , context .RepoRef ())
1530
1531
1531
1532
m .Group ("/media" , func () {
1533
+ m .Get ("/blob/{sha}" , repo .DownloadByIDOrLFS )
1532
1534
m .Get ("/branch/*" , context .RepoRefByType (git .RefTypeBranch ), repo .SingleDownloadOrLFS )
1533
1535
m .Get ("/tag/*" , context .RepoRefByType (git .RefTypeTag ), repo .SingleDownloadOrLFS )
1534
1536
m .Get ("/commit/*" , context .RepoRefByType (git .RefTypeCommit ), repo .SingleDownloadOrLFS )
1535
- m .Get ("/blob/{sha}" , repo .DownloadByIDOrLFS )
1536
- // "/*" route is deprecated, and kept for backward compatibility
1537
- m .Get ("/*" , context .RepoRefByType ("" ), repo .SingleDownloadOrLFS )
1537
+ m .Get ("/*" , context .RepoRefByType ("" ), repo .SingleDownloadOrLFS ) // "/*" route is deprecated, and kept for backward compatibility
1538
1538
}, repo .MustBeNotEmpty )
1539
1539
1540
1540
m .Group ("/raw" , func () {
1541
+ m .Get ("/blob/{sha}" , repo .DownloadByID )
1541
1542
m .Get ("/branch/*" , context .RepoRefByType (git .RefTypeBranch ), repo .SingleDownload )
1542
1543
m .Get ("/tag/*" , context .RepoRefByType (git .RefTypeTag ), repo .SingleDownload )
1543
1544
m .Get ("/commit/*" , context .RepoRefByType (git .RefTypeCommit ), repo .SingleDownload )
1544
- m .Get ("/blob/{sha}" , repo .DownloadByID )
1545
- // "/*" route is deprecated, and kept for backward compatibility
1546
- m .Get ("/*" , context .RepoRefByType ("" ), repo .SingleDownload )
1545
+ m .Get ("/*" , context .RepoRefByType ("" ), repo .SingleDownload ) // "/*" route is deprecated, and kept for backward compatibility
1547
1546
}, repo .MustBeNotEmpty )
1548
1547
1549
1548
m .Group ("/render" , func () {
@@ -1557,8 +1556,7 @@ func registerRoutes(m *web.Router) {
1557
1556
m .Get ("/branch/*" , context .RepoRefByType (git .RefTypeBranch ), repo .RefCommits )
1558
1557
m .Get ("/tag/*" , context .RepoRefByType (git .RefTypeTag ), repo .RefCommits )
1559
1558
m .Get ("/commit/*" , context .RepoRefByType (git .RefTypeCommit ), repo .RefCommits )
1560
- // "/*" route is deprecated, and kept for backward compatibility
1561
- m .Get ("/*" , context .RepoRefByType ("" ), repo .RefCommits )
1559
+ m .Get ("/*" , context .RepoRefByType ("" ), repo .RefCommits ) // "/*" route is deprecated, and kept for backward compatibility
1562
1560
}, repo .MustBeNotEmpty )
1563
1561
1564
1562
m .Group ("/blame" , func () {
0 commit comments