From 07f0dd0b55a79cba8ae71e6ade5981995515dbdc Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 12 May 2019 20:57:25 +0800 Subject: [PATCH 1/5] fix template --- templates/repo/empty.tmpl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/templates/repo/empty.tmpl b/templates/repo/empty.tmpl index 485a6aa4e55f0..2618908357587 100644 --- a/templates/repo/empty.tmpl +++ b/templates/repo/empty.tmpl @@ -15,6 +15,24 @@ {{.i18n.Tr "repo.quick_guide"}}
+ {{if .Repository.CanEnableEditor}} +
+
+
+ {{if .CanAddFile}} + + {{.i18n.Tr "repo.editor.new_file"}} + + {{end}} + {{if .CanUploadFile}} + + {{.i18n.Tr "repo.editor.upload_file"}} + + {{end}} +
+
+
+ {{end}}

{{.i18n.Tr "repo.clone_this_repo"}} {{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}

From aafb8b0b9fde4ab38b8a5ea5fb7f9427c1aa1c35 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 2 Jan 2021 20:20:14 +0800 Subject: [PATCH 2/5] Use new buttons --- templates/repo/empty.tmpl | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/templates/repo/empty.tmpl b/templates/repo/empty.tmpl index 2618908357587..827d482a9ce2a 100644 --- a/templates/repo/empty.tmpl +++ b/templates/repo/empty.tmpl @@ -15,27 +15,26 @@ {{.i18n.Tr "repo.quick_guide"}}
- {{if .Repository.CanEnableEditor}} -
-
-
- {{if .CanAddFile}} - - {{.i18n.Tr "repo.editor.new_file"}} - - {{end}} - {{if .CanUploadFile}} - - {{.i18n.Tr "repo.editor.upload_file"}} - - {{end}} -
-
-
- {{end}} +

{{.i18n.Tr "repo.clone_this_repo"}} {{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}

+
+
+ {{if .Repository.CanEnableEditor}} + {{if .CanAddFile}} + + {{.i18n.Tr "repo.editor.new_file"}} + + {{end}} + {{if .CanUploadFile}} + + {{.i18n.Tr "repo.editor.upload_file"}} + + {{end}} + {{end}} +
+
{{template "repo/clone_buttons" .}}
From ccacb8ab561675ebf861039b62922dd79a2d46f0 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 3 Jan 2021 10:30:05 +0800 Subject: [PATCH 3/5] Add buttons on empty repository page --- routers/web/repo/view.go | 8 ++++++++ templates/repo/empty.tmpl | 35 ++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 72726f0545f02..7e6c459a4e536 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -826,7 +826,15 @@ func renderCode(ctx *context.Context) { ctx.Data["PageIsViewCode"] = true if ctx.Repo.Repository.IsEmpty { +<<<<<<< HEAD:routers/web/repo/view.go ctx.HTML(http.StatusOK, tplRepoEMPTY) +======= + if ctx.Repo.CanWrite(models.UnitTypeCode) { + ctx.Data["CanAddFile"] = true + ctx.Data["CanUploadFile"] = setting.Repository.Upload.Enabled + } + ctx.HTML(200, tplRepoEMPTY) +>>>>>>> 7d4422307 (Add buttons on empty repository page):routers/repo/view.go return } diff --git a/templates/repo/empty.tmpl b/templates/repo/empty.tmpl index 827d482a9ce2a..edfdaf7cb70e9 100644 --- a/templates/repo/empty.tmpl +++ b/templates/repo/empty.tmpl @@ -15,27 +15,28 @@ {{.i18n.Tr "repo.quick_guide"}}
-

{{.i18n.Tr "repo.clone_this_repo"}} {{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}

-
-
-
- {{if .Repository.CanEnableEditor}} - {{if .CanAddFile}} - - {{.i18n.Tr "repo.editor.new_file"}} - - {{end}} - {{if .CanUploadFile}} - - {{.i18n.Tr "repo.editor.upload_file"}} - - {{end}} +
+
+ {{if .Repository.CanEnableEditor}} + {{if .CanAddFile}} + + {{.i18n.Tr "repo.editor.new_file"}} + {{end}} -
+ {{if .CanUploadFile}} + + {{.i18n.Tr "repo.editor.upload_file"}} + + {{end}} + {{end}} +
+
+
+
+ {{template "repo/clone_buttons" .}}
- {{template "repo/clone_buttons" .}}
From f5dd276251e9c0bc2b35e1b00d926472fe3f6d4a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 3 Jan 2021 17:53:31 +0800 Subject: [PATCH 4/5] allow create new file on empty repository --- modules/context/repo.go | 6 +++++- modules/repofiles/update.go | 11 +++++++---- options/locale/locale_en-US.ini | 2 +- routers/web/repo/view.go | 6 +----- routers/web/web.go | 10 ++++++++++ 5 files changed, 24 insertions(+), 11 deletions(-) diff --git a/modules/context/repo.go b/modules/context/repo.go index e3d66fc3b98ac..093a5e030511b 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -74,7 +74,7 @@ type Repository struct { // CanEnableEditor returns true if repository is editable and user has proper access level. func (r *Repository) CanEnableEditor() bool { - return r.Permission.CanWrite(unit_model.TypeCode) && r.Repository.CanEnableEditor() && r.IsViewBranch && !r.Repository.IsArchived + return r.Permission.CanWrite(unit_model.TypeCode) && r.Repository.CanEnableEditor() && (r.IsViewBranch || r.Repository.IsEmpty) && !r.Repository.IsArchived } // CanCreateBranch returns true if repository is editable and user has proper access level. @@ -753,6 +753,10 @@ func RepoRefByType(refType RepoRefType, ignoreNotExistErr ...bool) func(*Context return func(ctx *Context) (cancel context.CancelFunc) { // Empty repository does not have reference information. if ctx.Repo.Repository.IsEmpty { + ctx.Repo.BranchName = ctx.Repo.Repository.DefaultBranch + ctx.Repo.TreePath = "" + ctx.Data["TreePath"] = ctx.Repo.TreePath + ctx.Repo.IsViewBranch = true return } diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index d25accff1873a..f09209bd057a9 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -131,9 +131,11 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up opts.NewBranch = opts.OldBranch } - // oldBranch must exist for this operation - if _, err := repo_module.GetBranch(repo, opts.OldBranch); err != nil { - return nil, err + if !repo.IsEmpty { + // oldBranch must exist for this operation + if _, err := repo_module.GetBranch(repo, opts.OldBranch); err != nil { + return nil, err + } } // A NewBranch can be specified for the file to be created/updated in a new branch. @@ -153,6 +155,8 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up return nil, err } + fmt.Println("2-------") + // If FromTreePath is not set, set it to the opts.TreePath if opts.TreePath != "" && opts.FromTreePath == "" { opts.FromTreePath = opts.TreePath @@ -204,7 +208,6 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up return nil, fmt.Errorf("DeleteRepoFile: Invalid last commit ID: %v", err) } opts.LastCommitID = lastCommitID.String() - } encoding := "UTF-8" diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 6e39b4b03d833..c5e5bddc35e3a 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -942,7 +942,7 @@ download_archive = Download Repository no_desc = No Description quick_guide = Quick Guide -clone_this_repo = Clone this repository +clone_this_repo = Upload files or Clone this repository create_new_repo_command = Creating a new repository on the command line push_exist_repo = Pushing an existing repository from the command line empty_message = This repository does not contain any content. diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 7e6c459a4e536..316892265cb06 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -826,15 +826,11 @@ func renderCode(ctx *context.Context) { ctx.Data["PageIsViewCode"] = true if ctx.Repo.Repository.IsEmpty { -<<<<<<< HEAD:routers/web/repo/view.go - ctx.HTML(http.StatusOK, tplRepoEMPTY) -======= if ctx.Repo.CanWrite(models.UnitTypeCode) { ctx.Data["CanAddFile"] = true ctx.Data["CanUploadFile"] = setting.Repository.Upload.Enabled } - ctx.HTML(200, tplRepoEMPTY) ->>>>>>> 7d4422307 (Add buttons on empty repository page):routers/repo/view.go + ctx.HTML(http.StatusOK, tplRepoEMPTY) return } diff --git a/routers/web/web.go b/routers/web/web.go index f84d357bb126e..1b3866e168d7b 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -791,6 +791,16 @@ func RegisterRoutes(m *web.Route) { Get(repo.UploadFile). Post(bindIgnErr(forms.UploadRepoFileForm{}), repo.UploadFilePost) }, context.RepoRefByType(context.RepoRefBranch), repo.MustBeEditable) + }, context.RepoMustNotBeArchived(), reqRepoCodeWriter) + + m.Group("", func() { + m.Group("", func() { + m.Combo("/_edit/*").Get(repo.EditFile). + Post(bindIgnErr(auth.EditRepoFileForm{}), repo.EditFilePost) + m.Post("/_preview/*", bindIgnErr(auth.EditPreviewDiffForm{}), repo.DiffPreviewPost) + m.Combo("/_delete/*").Get(repo.DeleteFile). + Post(bindIgnErr(auth.DeleteRepoFileForm{}), repo.DeleteFilePost) + }, context.RepoRefByType(context.RepoRefBranch), repo.MustBeEditable) m.Group("", func() { m.Post("/upload-file", repo.UploadFileToServer) m.Post("/upload-remove", bindIgnErr(forms.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer) From 32ed105889bb01916636f4a96794b558e6a3c732 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 15 Nov 2021 09:35:22 +0800 Subject: [PATCH 5/5] Update --- modules/repofiles/update.go | 15 +++++++++++++-- modules/repository/generate.go | 2 +- modules/repository/init.go | 5 +++-- routers/web/repo/view.go | 2 +- routers/web/web.go | 7 ------- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/modules/repofiles/update.go b/modules/repofiles/update.go index f09209bd057a9..d432029b2838e 100644 --- a/modules/repofiles/update.go +++ b/modules/repofiles/update.go @@ -155,8 +155,6 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up return nil, err } - fmt.Println("2-------") - // If FromTreePath is not set, set it to the opts.TreePath if opts.TreePath != "" && opts.FromTreePath == "" { opts.FromTreePath = opts.TreePath @@ -181,6 +179,19 @@ func CreateOrUpdateRepoFile(repo *models.Repository, doer *models.User, opts *Up author, committer := GetAuthorAndCommitterUsers(opts.Author, opts.Committer, doer) + if repo.IsEmpty { + err := repo_module.CheckInitRepository(repo.OwnerName, repo.Name) + if err != nil && !models.IsErrRepoFilesAlreadyExist(err) { + return nil, err + } + + repo.IsEmpty = false + repo.DefaultBranch = opts.OldBranch + if err := models.UpdateRepository(repo, false); err != nil { + return nil, err + } + } + t, err := NewTemporaryUploadRepository(repo) if err != nil { log.Error("%v", err) diff --git a/modules/repository/generate.go b/modules/repository/generate.go index f6b76b14affa2..d3e48373ee6e4 100644 --- a/modules/repository/generate.go +++ b/modules/repository/generate.go @@ -271,7 +271,7 @@ func GenerateRepository(ctx context.Context, doer, owner *models.User, templateR } } - if err = checkInitRepository(owner.Name, generateRepo.Name); err != nil { + if err = CheckInitRepository(owner.Name, generateRepo.Name); err != nil { return generateRepo, err } diff --git a/modules/repository/init.go b/modules/repository/init.go index 076dbf748e687..ca86a0918e18d 100644 --- a/modules/repository/init.go +++ b/modules/repository/init.go @@ -172,7 +172,8 @@ func initRepoCommit(tmpPath string, repo *models.Repository, u *models.User, def return nil } -func checkInitRepository(owner, name string) (err error) { +// CheckInitRepository check and init git repository +func CheckInitRepository(owner, name string) (err error) { // Somehow the directory could exist. repoPath := models.RepoPath(owner, name) isExist, err := util.IsExist(repoPath) @@ -198,7 +199,7 @@ func checkInitRepository(owner, name string) (err error) { // InitRepository initializes README and .gitignore if needed. func initRepository(ctx context.Context, repoPath string, u *models.User, repo *models.Repository, opts models.CreateRepoOptions) (err error) { - if err = checkInitRepository(repo.OwnerName, repo.Name); err != nil { + if err = CheckInitRepository(repo.OwnerName, repo.Name); err != nil { return err } diff --git a/routers/web/repo/view.go b/routers/web/repo/view.go index 316892265cb06..3a0e6c6a7c7e8 100644 --- a/routers/web/repo/view.go +++ b/routers/web/repo/view.go @@ -826,7 +826,7 @@ func renderCode(ctx *context.Context) { ctx.Data["PageIsViewCode"] = true if ctx.Repo.Repository.IsEmpty { - if ctx.Repo.CanWrite(models.UnitTypeCode) { + if ctx.Repo.CanWrite(unit_model.TypeCode) { ctx.Data["CanAddFile"] = true ctx.Data["CanUploadFile"] = setting.Repository.Upload.Enabled } diff --git a/routers/web/web.go b/routers/web/web.go index 1b3866e168d7b..87f59fd6509c0 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -794,13 +794,6 @@ func RegisterRoutes(m *web.Route) { }, context.RepoMustNotBeArchived(), reqRepoCodeWriter) m.Group("", func() { - m.Group("", func() { - m.Combo("/_edit/*").Get(repo.EditFile). - Post(bindIgnErr(auth.EditRepoFileForm{}), repo.EditFilePost) - m.Post("/_preview/*", bindIgnErr(auth.EditPreviewDiffForm{}), repo.DiffPreviewPost) - m.Combo("/_delete/*").Get(repo.DeleteFile). - Post(bindIgnErr(auth.DeleteRepoFileForm{}), repo.DeleteFilePost) - }, context.RepoRefByType(context.RepoRefBranch), repo.MustBeEditable) m.Group("", func() { m.Post("/upload-file", repo.UploadFileToServer) m.Post("/upload-remove", bindIgnErr(forms.RemoveUploadFileForm{}), repo.RemoveUploadFileFromServer)