トラブルシューティングプロジェクト
プロジェクトを操作する際、以下の問題が発生したり、特定のタスクを完了するために代替方法が必要になったりする場合があります。
An error occurred while fetching commit data
プロジェクトにアクセスしたときに、ブラウザで広告ブロッカーを使用している場合、An error occurred while fetching commit dataというメッセージが表示されることがあります。解決策は、アクセスしようとしているGitLabインスタンスの広告ブロッカーを無効にすることです。
SQLクエリを使用してプロジェクトを検索する
Railsコンソールセッションで、SQLクエリに基づいてプロジェクトの配列を検索して格納できます:
# Finds projects that end with '%ject'
projects = Project.find_by_sql("SELECT * FROM projects WHERE name LIKE '%ject'")
=> [#<Project id:12 root/my-first-project>>, #<Project id:13 root/my-second-project>>]プロジェクトまたはリポジトリのキャッシュをクリアする
プロジェクトまたはリポジトリが更新されたのに、その状態がUIに反映されない場合は、プロジェクトまたはリポジトリのキャッシュをクリアする必要があります。Railsコンソールセッションと、以下のいずれかを使用してこれを行うことができます:
データを変更するコマンドは、正しく実行されなかった場合、または適切な条件下で実行されなかった場合、損害を与える可能性があります。最初にテスト環境でコマンドを実行し、復元できるバックアップインスタンスを準備してください。
## Clear project cache
ProjectCacheWorker.perform_async(project.id)
## Clear repository .exists? cache
project.repository.expire_exists_cache削除保留中のプロジェクトを検索する
削除対象としてマークされているが、まだ削除されていないすべてのプロジェクトを検索する必要がある場合は、Railsコンソールセッションを開始して、以下を実行します:
projects = Project.where(pending_delete: true)
projects.each do |p|
puts "Project ID: #{p.id}"
puts "Project name: #{p.name}"
puts "Repository path: #{p.repository.full_path}"
endコンソールを使用してプロジェクトを転送する
UIまたはAPIを介してプロジェクトを転送できない場合は、Railsコンソールセッションで転送を試みることができます。
p = Project.find_by_full_path('<project_path>')
# To set the owner of the project
current_user = p.creator
# Namespace where you want this to be moved
namespace = Namespace.find_by_full_path("<new_namespace>")
Projects::TransferService.new(p, current_user).execute(namespace)コンソールを使用してプロジェクトを削除する
プロジェクトを削除できない場合は、Railsコンソールを使用して削除を試みることができます。
データを変更するコマンドは、正しく実行されなかった場合、または適切な条件下で実行されなかった場合、損害を与える可能性があります。最初にテスト環境でコマンドを実行し、復元できるバックアップインスタンスを準備してください。
project = Project.find_by_full_path('<project_path>')
user = User.find_by_username('<username>')
Projects::DestroyService.new(project, user, {}).executeこれが失敗した場合は、次のコマンドでその理由を表示します:
project = Project.find_by_full_path('<project_path>')
project.delete_errorグループ内のすべてのプロジェクトの機能を切替する
プロジェクトの機能の切替は、projects APIを介して行うことができますが、多数のプロジェクトでこれを行う必要がある場合があります。
特定の機能を切替するには、Railsコンソールセッションを開始して、次の関数を実行します:
データを変更するコマンドは、正しく実行されなかった場合、または適切な条件下で実行されなかった場合、損害を与える可能性があります。最初にテスト環境でコマンドを実行し、復元できるバックアップインスタンスを準備してください。
projects = Group.find_by_name('_group_name').projects
projects.each do |p|
## replace <feature-name> with the appropriate feature name in all instances
state = p.<feature-name>
if state != 0
puts "#{p.name} has <feature-name> already enabled. Skipping..."
else
puts "#{p.name} didn't have <feature-name> enabled. Enabling..."
p.project_feature.update!(<feature-name>: ProjectFeature::PRIVATE)
end
end切替可能な機能を見つけるには、pp p.project_featureを実行します。使用可能な権限レベルは、concerns/featurable.rbにリストされています。