web-dev-qa-db-ja.com

TFS 2015でGitリポジトリを削除する方法は?

TFS 2015 Update 1でGitリポジトリを削除しようとしています。リポジトリは、新しい 同じプロジェクト内のGitとTFVC 機能を使用して既存のTFVCチームプロジェクト内に作成されます。ただし、TFSポータルを使用して([コード]タブを使用して)Gitリポジトリを簡単に作成できます。また、TFSポータル内にGitリポジトリを削除するための機能やコマンドラインベースの機能が見つかりません。また、「リポジトリの管理...」をナビゲートすると、「リポジトリの削除」という機能が見つかりません。

グーグルでMSDNページを検索するのは運が悪かった。

そのため、チームプロジェクト全体を削除するのではなく(ソースコード、作業項目、履歴が多数含まれているため)、空のGitリポジトリのみを削除します。

誰か提案がありますか?

編集#1管理ページに[リポジトリの削除]オプションを表示するはずのサブメニューが、Gitリポジトリが1つしかない場合に有効になっていないようです特定のチームプロジェクトで(スクリーンショットを参照)。記録のために:2つ以上のGitリポジトリが存在する場合に表示されます。

enter image description here

11
Herman Cordes

プロジェクトに複数のgitリポジトリがある場合、実際には非常に簡単です。

  1. コードタブを選択します。
  2. リポジトリが表示されているドロップダウンをクリックします。
  3. [リポジトリの管理]を選択します。
  4. 削除するリポジトリの横にあるコンテキストドロップダウンをクリックします。
  5. リポジトリの削除を選択します。

enter image description here

enter image description here

編集(編集に基づく):

TFS 2015(更新プログラム1)には、TFSチームプロジェクトに含まれるGitリポジトリの数に明示的な最小制限が設定されています。

TFS REST apiには、gitリポジトリを削除するために一緒に使用できる関数が含まれていますが、TFSの 'last'リポジトリは削除されません。事業。

これが一般的なAPIドキュメントです

Gitリポジトリの削除に関連する2つの機能は次のとおりです。

  1. リポジトリのリストを取得します

    (動詞を取得)https:// {instance}/defaultcollection/[{project}]/_ apis/git/repository?api-version = {version}

プロジェクト名を指定すると、gitリポジトリとそのリポジトリIDのリストを含むjsonが返されます。

  1. リポジトリを削除します。リポジトリIDを指定すると、指定したリポジトリが削除されます。

    (動詞を削除)https:// {instance}/defaultcollection/_apis/git/repository/{repository}?api-version = {version}

残念ながら、リポジトリの削除機能を呼び出すときに問題があります。

{
"$id": "1"
"innerException": null
"message": "There must always be at least one repository per Team Project."
"typeName": "Microsoft.TeamFoundation.Git.Server.GitRepositoryMinimumPerProjectThresholdExceededException, Microsoft.TeamFoundation.Git.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
"typeKey": "GitRepositoryMinimumPerProjectThresholdExceededException"
"errorCode": 0
"eventId": 3000
}

MSDNの例外ドキュメント

私が持っているラボインスタンスのSQLサーバーを見る(私の意見では、製品環境で誤用された場合はサポートされていません)

TFSデータベースには、prc_DeleteGitRepositoriesと呼ばれるgitリポジトリを削除するストアドプロシージャが含まれています。データベースで検索したか、web-uiでF12を押した4つの引数を取ります。

次のように呼び出されます。

EXEC prc_DeleteGitRepositories @partitionId=1, 
@teamProjectUri ='vstfs:///Classification/TestProject1/cbcc3093-247d-448a-8c3b-f5d447fc8afa', 
@repositoryId='4111286D-D066-4F3D-89B9-960055D678FE', 
@deleterId='769254d3-1f13-431c-a580-1500dcbffbce'

ただし、指定されたプロジェクトに1つのgitリポジトリのみが存在するシナリオでは、次のようになります。

Msg 50000, Level 16, State 1, Procedure prc_DeleteGitRepositories, Line 65
%error="1200013";%:<SERVERNAME>.TestCollection.dbo.prc_DeleteGitRepositories: There must always be at least one repository per Team Project.

要約すると:このQ/Aに関するコメントで説明されているように、 servoice に最も適した潜在的な機能要求。

12
Elmar

あなたができないリポジトリを管理する方法の文書化に関して

チームプロジェクトで唯一のGitリポジトリである場合、リポジトリを削除することはできません。チームプロジェクトで唯一のGitリポジトリを削除する必要がある場合は、最初に新しいGitリポジトリを作成してから、リポジトリを削除します。

チームプロジェクトからリポジトリを削除するには、リポジトリの削除権限が必要です。

このリンクを見てください: https://www.visualstudio.com/en-us/docs/git/delete-existing-repo

5
feras damra

UIから直接削除することはできませんが、回避策があります。別のリポジトリを作成するだけで、削除するオプションが表示されます。

したがって、全体として複数のリポジトリがある場合はそのうちの1つを削除できますただし、リポジトリが1つしかない場合は、UIから直接削除することはできません。

3
Abhinav Saxena