No default selection of destination namespace when importing with GH, BB ad Gitea
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Problem
When user gets to "choose the projects to import" page the personal namespace is selected by default. We also show personal namespace (under User
) first in the options and then group under Groups
. However, we don't want to encourage users to import to personal namespaces, rather the opposite, see Add confirmation modal when user wants to impor... (#533992 - closed).
Proposal
The user should still be able to find their personal namespace, but we should not default to it.
Do not select personal namespace by default - nothing is selected when user arrived to the page.
User
is still above the Groups
.
Add a validation in case users try to click Import or Import N repositories without first selecting the destination namespace - show error to user.
Update
The recent MR for this work was reverted because of errors reported in Sentry from the backend. The MR ostensibly blocks a user from importing a github project before selecting a destination. And yet somehow users are importing and getting to the backend error.
ArgumentError
Target namespace is required (ArgumentError)
raise ArgumentError, s_('GithubImport|Target namespace is required') if params[:target_namespace].blank?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
https://new-sentry.gitlab.net/organizations/gitlab/issues/1602627/?project=3
Stacktrace
from app/services/import/github_service.rb:139:in
target_namespace_path' from app/services/import/github_service.rb:63:in
target_namespace' from app/services/import/github_service.rb:131:invalidate_context' from ee/import/github_service.rb:16:in
validate_context' from app/services/import/github_service.rb:16:inexecute' from app/controllers/import/github_controller.rb:75:in
create' from action_controller/metal/basic_implicit_render.rb:6:insend_action' from abstract_controller/base.rb:224:in
process_action' from action_controller/metal/rendering.rb:165:inprocess_action' from abstract_controller/callbacks.rb:259:in
block in process_action' from active_support/callbacks.rb:121:inblock in run_callbacks' from app/controllers/application_controller.rb:493:in
set_current_admin' from active_support/callbacks.rb:130:inblock in run_callbacks' from lib/gitlab/session.rb:11:in
with_session' from app/controllers/application_controller.rb:484:inset_session_storage' from active_support/callbacks.rb:130:in
block in run_callbacks' from lib/gitlab/i18n.rb:116:inwith_locale' from lib/gitlab/i18n.rb:122:in
with_user_locale' from app/controllers/application_controller.rb:475:inset_locale' from active_support/callbacks.rb:130:in
block in run_callbacks' from app/controllers/application_controller.rb:464:inset_current_context' from active_support/callbacks.rb:130:in
block in run_callbacks' from lib/gitlab/ip_address_state.rb:11:inwith' from app/controllers/application_controller.rb:470:in
set_current_ip_address' from active_support/callbacks.rb:130:inblock in run_callbacks' from marginalia.rb:109:in
record_query_comment' from active_support/callbacks.rb:130:inblock in run_callbacks' from sentry/rails/controller_transaction.rb:34:in
block in sentry_around_action' from sentry/hub.rb:138:inwith_child_span' from sentry-ruby.rb:515:in
with_child_span' from sentry/rails/controller_transaction.rb:18:insentry_around_action' from active_support/callbacks.rb:130:in
block in run_callbacks' from active_support/callbacks.rb:141:inrun_callbacks' from abstract_controller/callbacks.rb:258:in
process_action' from action_controller/metal/rescue.rb:25:inprocess_action' from action_controller/metal/instrumentation.rb:74:in
block in process_action' from active_support/notifications.rb:206:inblock in instrument' from active_support/notifications/instrumenter.rb:58:in
instrument' from active_support/notifications.rb:206:ininstrument' from action_controller/metal/instrumentation.rb:73:in
process_action' from action_controller/metal/params_wrapper.rb:261:inprocess_action' from active_record/railties/controller_runtime.rb:32:in
process_action' from abstract_controller/base.rb:160:inprocess' from action_view/rendering.rb:40:in
process' from action_controller/metal.rb:227:indispatch' from action_controller/metal.rb:307:in
block in dispatch' from lib/gitlab/middleware/action_controller_static_context.rb:23:incall' from action_controller/metal.rb:307:in
dispatch' from action_dispatch/routing/route_set.rb:49:indispatch' from action_dispatch/routing/route_set.rb:32:in
serve' from action_dispatch/journey/router.rb:51:inblock in serve' from config/initializers/action_dispatch_journey_router.rb:52:in
block in find_routes' from config/initializers/action_dispatch_journey_router.rb:25:inmap!' from config/initializers/action_dispatch_journey_router.rb:25:in
find_routes' from action_dispatch/journey/router.rb:32:inserve' from action_dispatch/routing/route_set.rb:882:in
call' from gitlab/experiment/middleware.rb:19:incall' from omniauth/strategy.rb:202:in
call!' from omniauth/strategy.rb:169:incall' from omniauth/strategy.rb:470:in
call_app!' from omni_auth/strategies/group_saml.rb:41:inother_phase' from omniauth/strategy.rb:195:in
call!' from omniauth/strategy.rb:169:incall' from omniauth/strategy.rb:202:in
call!' from omniauth/strategy.rb:169:incall' from omniauth/strategy.rb:202:in
call!' from omniauth/strategy.rb:169:incall' from omniauth/strategy.rb:202:in
call!' from omniauth/strategy.rb:169:incall' from flipper/middleware/memoizer.rb:72:in
memoized_call' from flipper/middleware/memoizer.rb:37:incall' from lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in
call' from lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:inblock in call' from lib/gitlab/sidekiq_sharding/validator.rb:42:in
enabled' from lib/gitlab/middleware/sidekiq_shard_awareness_validation.rb:20:incall' from lib/gitlab/middleware/memory_report.rb:13:in
call' from lib/gitlab/middleware/speedscope.rb:13:incall' from lib/gitlab/database/load_balancing/rack_middleware.rb:23:in
call' from lib/gitlab/middleware/rails_queue_duration.rb:33:incall' from lib/gitlab/etag_caching/middleware.rb:21:in
call' from lib/gitlab/metrics/rack_middleware.rb:16:inblock in call' from lib/gitlab/metrics/web_transaction.rb:46:in
run' from lib/gitlab/metrics/rack_middleware.rb:16:incall' from lib/gitlab/middleware/go.rb:21:in
call' from lib/gitlab/middleware/query_analyzer.rb:11:inblock in call' from lib/gitlab/database/query_analyzer.rb:83:in
within' from lib/gitlab/middleware/query_analyzer.rb:11:incall' from lib/ci/job_token/middleware.rb:11:in
call' from batch_loader/middleware.rb:11:incall' from rack/attack.rb:103:in
call' from apollo_upload_server/middleware.rb:19:incall' from lib/gitlab/middleware/multipart.rb:173:in
call' from rack/attack.rb:127:incall' from warden/manager.rb:36:in
block in call' from warden/manager.rb:34:incatch' from warden/manager.rb:34:in
call' from rack/cors.rb:102:incall' from rack/tempfile_reaper.rb:15:in
call' from rack/etag.rb:27:incall' from rack/conditional_get.rb:40:in
call' from rack/head.rb:12:incall' from action_dispatch/http/permissions_policy.rb:36:in
call' from action_dispatch/http/content_security_policy.rb:36:incall' from lib/gitlab/middleware/read_only/controller.rb:50:in
call' from lib/gitlab/middleware/read_only.rb:18:incall' from lib/gitlab/middleware/unauthenticated_session_expiry.rb:18:in
call' from rack/session/abstract/id.rb:266:incontext' from rack/session/abstract/id.rb:260:in
call' from lib/gitlab/middleware/secure_headers.rb:11:incall' from action_dispatch/middleware/cookies.rb:689:in
call' from lib/gitlab/middleware/same_site_cookies.rb:27:incall' from action_dispatch/middleware/callbacks.rb:29:in
block in call' from active_support/callbacks.rb:101:inrun_callbacks' from action_dispatch/middleware/callbacks.rb:28:in
call' from sentry/rails/rescued_exception_interceptor.rb:14:incall' from action_dispatch/middleware/debug_exceptions.rb:29:in
call' from lib/gitlab/middleware/path_traversal_check.rb:40:incall' from lib/gitlab/middleware/handle_malformed_strings.rb:21:in
call' from sentry/rack/capture_exceptions.rb:30:inblock (2 levels) in call' from sentry/hub.rb:299:in
with_session_tracking' from sentry-ruby.rb:428:inwith_session_tracking' from sentry/rack/capture_exceptions.rb:21:in
block in call' from sentry/hub.rb:89:inwith_scope' from sentry-ruby.rb:408:in
with_scope' from sentry/rack/capture_exceptions.rb:20:incall' from action_dispatch/middleware/show_exceptions.rb:31:in
call' from lib/gitlab/middleware/basic_health_check.rb:25:incall' from lograge/rails_ext/rack/logger.rb:15:in
call_app' from rails/rack/logger.rb:24:inblock in call' from active_support/tagged_logging.rb:139:in
block in tagged' from active_support/tagged_logging.rb:39:intagged' from active_support/tagged_logging.rb:139:in
tagged' from active_support/broadcast_logger.rb:241:inmethod_missing' from rails/rack/logger.rb:24:in
call' from action_dispatch/middleware/remote_ip.rb:92:incall' from lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in
call' from lib/gitlab/middleware/request_context.rb:15:incall' from lib/gitlab/middleware/webhook_recursion_detection.rb:15:in
call' from request_store/middleware.rb:19:incall' from rack/method_override.rb:24:in
call' from rack/runtime.rb:22:incall' from rack/timeout/core.rb:154:in
block in call' from rack/timeout/support/timeout.rb:19:intimeout' from rack/timeout/core.rb:153:in
call' from config/initializers/fix_local_cache_middleware.rb:11:incall' from lib/gitlab/middleware/compressed_json.rb:44:in
call' from action_dispatch/middleware/executor.rb:14:incall' from lib/gitlab/middleware/rack_multipart_tempfile_factory.rb:19:in
call' from lib/gitlab/metrics/requests_rack_middleware.rb:83:incall' from labkit/middleware/rack.rb:22:in
block in call' from labkit/context.rb:35:inwith_context' from labkit/middleware/rack.rb:21:in
call' from rack/sendfile.rb:110:incall' from action_dispatch/middleware/request_id.rb:28:in
call' from lib/gitlab/middleware/sidekiq_web_static.rb:20:incall' from rails/engine.rb:536:in
call' from rails/railtie.rb:226:inpublic_send' from rails/railtie.rb:226:in
method_missing' from lib/gitlab/middleware/release_env.rb:12:incall' from rack/urlmap.rb:74:in
block in call' from rack/urlmap.rb:58:ineach' from rack/urlmap.rb:58:in
call' from puma/configuration.rb:279:incall' from puma/request.rb:99:in
block in handle_request' from puma/thread_pool.rb:389:inwith_force_shutdown' from puma/request.rb:98:in
handle_request' from puma/server.rb:468:inprocess_client' from puma/server.rb:249:in
block in run' from puma/thread_pool.rb:166:in `block in spawn_thread'
https://log.gprd.gitlab.net/app/discover#/?_g=h@edecbe8&_a=h@dcd93f4