正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

トラブルシューティングプロジェクト

プロジェクトを操作する際、以下の問題が発生したり、特定のタスクを完了するために代替方法が必要になったりする場合があります。

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にリストされています。