Files
gitea/templates/repo/migrate/github.tmpl
T
Lunny Xiaoandwxiaoguang f10f7e7f91 fix(migrations): only allow local paths for plain git migration (#40006)
Only the plain git migration can clone from a local server path. Other
services (Gitea, GitLab, Gogs, OneDev, GitBucket, Codebase, CodeCommit,
Bitbucket Server) are accessed through their remote API, so a local path
never works, yet their migrate forms advertised "or a local server
path".

- Remove the local path hint from those templates.
- Add `IsMigrateURLAllowedForService` and use it in the web and API
migrate handlers and in `MigrateRepository`, rejecting local paths for
any service other than plain git.
- Add a unit test.

Raised in review of #39913.

_Authored with Codet (AI assistant) on behalf of @lunny._

---------

Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
2026-10-25 21:21:19 +00:00

73 lines
2.5 KiB
Handlebars

{{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content repository new migrate">
<div class="ui container medium-width">
<h3 class="ui top attached header">
{{ctx.Locale.Tr "repo.migrate.migrate" .service.Title}}
</h3>
<div class="ui attached segment">
{{template "base/alert" .}}
<form class="ui form left-right-form form-fetch-action" action="{{.Link}}" method="post">
{{template "repo/migrate/common-init" (dict "ServiceType" .service)}}
{{template "repo/migrate/common-clone-addr"}}
<div class="inline field">
<label>{{ctx.Locale.Tr "access_token"}}</label>
<input name="auth_token" type="password" autocomplete="new-password">
<a target="_blank" href="https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token">{{svg "octicon-question"}}</a>
<span class="help">
{{ctx.Locale.Tr "repo.migrate.github_token_desc"}}
</span>
</div>
{{template "repo/migrate/common-options" .}}
<div class="inline field">
<label>{{ctx.Locale.Tr "repo.migrate_items"}}</label>
<div class="ui checkbox">
<input name="wiki" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_wiki"}}</label>
</div>
</div>
<div id="migrate_items" class="inline field">
<span class="help">{{ctx.Locale.Tr "repo.migrate.migrate_items_options"}}</span>
<div class="inline field">
<label></label>
<div class="ui checkbox">
<input name="labels" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label>
</div>
<div class="ui checkbox">
<input name="issues" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label>
</div>
</div>
<div class="inline field">
<label></label>
<div class="ui checkbox">
<input name="pull_requests" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label>
</div>
<div class="ui checkbox">
<input name="releases" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_releases"}}</label>
</div>
</div>
<div class="inline field">
<label></label>
<div class="ui checkbox">
<input name="milestones" type="checkbox">
<label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label>
</div>
</div>
</div>
<div class="divider"></div>
{{template "repo/migrate/common-migrated-repo"}}
</form>
</div>
</div>
</div>
{{template "base/footer" .}}