diff options
author | zeripath <art27@cantab.net> | 2020-09-25 05:09:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-25 07:09:23 +0300 |
commit | 7a7f56044ae0b94d9f5e733d863821dbe222a395 (patch) | |
tree | 0a6ebe01ce4f48a117598c7b42e189a207314553 /templates/user | |
parent | 6fa19a8458e993972be2355e0575a76823a75735 (diff) | |
download | gitea-7a7f56044ae0b94d9f5e733d863821dbe222a395.tar.gz gitea-7a7f56044ae0b94d9f5e733d863821dbe222a395.zip |
Adopt repositories (#12920)
* Don't automatically delete repository files if they are present
Prior to this PR Gitea would delete any repository files if they are
present during creation or migration. This can in certain circumstances
lead to data-loss and is slightly unpleasant.
This PR provides a mechanism for Gitea to adopt repositories on creation
and otherwise requires an explicit flag for deletion.
PushCreate is slightly different - the create will cause adoption if
that is allowed otherwise it will delete the data if that is allowed.
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Update swagger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix tests and migrate overwrite
Signed-off-by: Andrew Thornton <art27@cantab.net>
* as per @lunny
Only offer to adopt or overwrite if the user can do that.
Allow the site administrator to adopt or overwrite in all
circumstances
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Use setting.Repository.DefaultBranch for the default branch
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Always set setting.Repository.DefaultBranch
Signed-off-by: Andrew Thornton <art27@cantab.net>
* update swagger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* update templates
Signed-off-by: Andrew Thornton <art27@cantab.net>
* ensure repo closed
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Rewrite of adoption as per @6543 and @lunny
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Apply suggestions from code review
* update swagger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* missing not
Signed-off-by: Andrew Thornton <art27@cantab.net>
* add modals and flash reporting
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Make the unadopted page searchable
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Add API
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Fix swagger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* fix swagger
Signed-off-by: Andrew Thornton <art27@cantab.net>
* Handle empty and non-master branched repositories
Signed-off-by: Andrew Thornton <art27@cantab.net>
* placate lint
Signed-off-by: Andrew Thornton <art27@cantab.net>
* remove commented out code
Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'templates/user')
-rw-r--r-- | templates/user/settings/repos.tmpl | 152 |
1 files changed, 126 insertions, 26 deletions
diff --git a/templates/user/settings/repos.tmpl b/templates/user/settings/repos.tmpl index 8d9065ec61..456647d9be 100644 --- a/templates/user/settings/repos.tmpl +++ b/templates/user/settings/repos.tmpl @@ -7,34 +7,134 @@ {{.i18n.Tr "settings.repos"}} </h4> <div class="ui attached segment"> - {{if .Repos}} - <div class="ui middle aligned divided list"> - {{range .Repos}} - <div class="item"> - <div class="content"> - {{if .IsPrivate}} - <span class="text gold iconFloat">{{svg "octicon-lock"}}</span> - {{else if .IsFork}} - <span class="iconFloat">{{svg "octicon-repo-forked"}}</span> - {{else if .IsMirror}} - <span class="iconFloat">{{svg "octicon-mirror"}}</span> - {{else}} - <span class="iconFloat">{{svg "octicon-repo"}}</span> - {{end}} - <a class="name" href="{{AppSubUrl}}/{{$.Owner.Name}}/{{.Name}}">{{$.Owner.Name}}/{{.Name}}</a> - <span>{{SizeFmt .Size}}</span> - {{if .IsFork}} - {{$.i18n.Tr "repo.forked_from"}} - <span><a href="{{AppSubUrl}}/{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}">{{.BaseRepo.Owner.Name}}/{{.BaseRepo.Name}}</a></span> - {{end}} + {{if or .allowAdopt .allowDelete}} + {{if .Dirs}} + <div class="ui middle aligned divided list"> + {{range $dirI, $dir := .Dirs}} + {{ $repo := index $.ReposMap $dir}} + <div class="item"> + <div class="content"> + {{if $repo}} + {{if $repo.IsPrivate}} + <span class="text gold icon">{{svg "octicon-lock"}}</span> + {{else if $repo.IsFork}} + <span class="icon">{{svg "octicon-repo-forked"}}</span> + {{else if $repo.IsMirror}} + <span class="icon">{{svg "octicon-mirror"}}</span> + {{else if $repo.IsTemplate}} + <span class="icon">{{svg "octicon-repo-template"}}</span> + {{else}} + <span class="icon">{{svg "octicon-repo"}}</span> + {{end}} + <a class="name" href="{{AppSubUrl}}/{{$repo.OwnerName}}/{{$repo.Name}}">{{$repo.OwnerName}}/{{$repo.Name}}</a> + <span>{{SizeFmt $repo.Size}}</span> + {{if $repo.IsFork}} + {{$.i18n.Tr "repo.forked_from"}} + <span><a href="{{AppSubUrl}}/{{$repo.BaseRepo.OwnerName}}/{{$repo.BaseRepo.Name}}">{{$repo.BaseRepo.OwnerName}}/{{$repo.BaseRepo.Name}}</a></span> + {{end}} + {{else}} + <span class="icon">{{svg "octicon-file-directory"}}</span> + <span class="name">{{$.Owner.Name}}/{{$dir}}</span> + <div class="right floated content"> + {{if $.allowAdopt}} + <button class="ui button submit tiny green adopt show-modal" data-modal="#adopt-unadopted-modal-{{$dirI}}"><span class="icon">{{svg "octicon-plus"}}</span><span class="label">{{$.i18n.Tr "repo.adopt_preexisting_label"}}</span></button> + <div class="ui basic modal" id="adopt-unadopted-modal-{{$dirI}}"> + <i class="close icon"></i> + <div class="header"> + <span class="label">{{$.i18n.Tr "repo.adopt_preexisting"}}</span> + </div> + <div class="content"> + <p>{{$.i18n.Tr "repo.adopt_preexisting_content" $dir}}</p> + </div> + <form class="ui form" method="POST" action="{{AppSubUrl}}/user/settings/repos/unadopted"> + {{$.CsrfTokenHtml}} + <input type="hidden" name="id" value="{{$dir}}"> + <input type="hidden" name="action" value="adopt"> + <div class="actions"> + <div class="ui red basic inverted cancel button"> + <i class="remove icon"></i> + {{$.i18n.Tr "modal.no"}} + </div> + <button class="ui green basic inverted ok button"> + <i class="checkmark icon"></i> + {{$.i18n.Tr "modal.yes"}} + </button> + </div> + </form> + </div> + {{end}} + {{if $.allowDelete}} + <button class="ui button submit tiny red delete show-modal" data-modal="#delete-unadopted-modal-{{$dirI}}"><span class="icon">{{svg "octicon-x"}}</span><span class="label">{{$.i18n.Tr "repo.delete_preexisting_label"}}</span></button> + <div class="ui basic modal" id="delete-unadopted-modal-{{$dirI}}"> + <i class="close icon"></i> + <div class="header"> + <span class="label">{{$.i18n.Tr "repo.delete_preexisting"}}</span> + </div> + <div class="content"> + <p>{{$.i18n.Tr "repo.delete_preexisting_content" $dir}}</p> + </div> + <form class="ui form" method="POST" action="{{AppSubUrl}}/user/settings/repos/unadopted"> + {{$.CsrfTokenHtml}} + <input type="hidden" name="id" value="{{$dir}}"> + <input type="hidden" name="action" value="delete"> + <div class="actions"> + <div class="ui red basic inverted cancel button"> + <i class="remove icon"></i> + {{$.i18n.Tr "modal.no"}} + </div> + <button class="ui green basic inverted ok button"> + <i class="checkmark icon"></i> + {{$.i18n.Tr "modal.yes"}} + </button> + </div> + </form> + </div> + {{end}} + </div> + {{end}} + </div> </div> - </div> - {{end}} - </div> + {{end}} + </div> + {{template "base/paginate" .}} + {{else}} + <div class="item"> + {{.i18n.Tr "settings.repos_none"}} + </div> + {{end}} {{else}} - <div class="item"> - {{.i18n.Tr "settings.repos_none"}} - </div> + {{if .Repos}} + <div class="ui middle aligned divided list"> + {{range .Repos}} + <div class="item"> + <div class="content"> + {{if .IsPrivate}} + <span class="text gold iconFloat">{{svg "octicon-lock"}}</span> + {{else if .IsFork}} + <span class="iconFloat">{{svg "octicon-repo-forked"}}</span> + {{else if .IsMirror}} + <span class="iconFloat">{{svg "octicon-mirror"}}</span> + {{else if .IsTemplate}} + <span class="iconFloat">{{svg "octicon-repo-template"}}</span> + {{else}} + <span class="iconFloat">{{svg "octicon-repo"}}</span> + {{end}} + <a class="name" href="{{AppSubUrl}}/{{$.OwnerName}}/{{.Name}}">{{$.OwnerName}}/{{.Name}}</a> + <span>{{SizeFmt .Size}}</span> + {{if .IsFork}} + {{$.i18n.Tr "repo.forked_from"}} + <span><a href="{{AppSubUrl}}/{{.BaseRepo.OwnerName}}/{{.BaseRepo.Name}}">{{.BaseRepo.OwnerName}}/{{.BaseRepo.Name}}</a></span> + {{end}} + </div> + </div> + {{end}} + </div> + {{template "base/paginate" .}} + {{else}} + <div class="item"> + {{.i18n.Tr "settings.repos_none"}} + </div> + {{end}} {{end}} </div> </div> |