2016-12-21 15 views
3

私の会社はTFVCからTFS Gitに切り替えました。私はスイッチをサポートするリリースオートメーションツールを移行しています。TFS Git - リモートリポジトリに直接ブランチとタグを作成する

とりわけ、このツールはリリースの新しいブランチと新しいラベル(Gitの "tag")を作成します。 TFVCの場合、これらの操作はTFSサーバー上で直接実行され、リポジトリのローカルコピーは必要ありません。 Gitでこれを達成することは可能ですか、あるいはこれらの操作のためにローカルでリポジトリをクローンする必要がありますか?

私が今まで見た2つのライブラリは、TFS Git REST APIとLibGit2Sharpの公式ラッパーと思われるMicrosoft.TeamFoundation.Git.Clientです。私はそれらの図書館に限られていないので、別の選択肢も同様に歓迎されています。

TFS 2015からTFS 2017にもアップグレードされていますので、これらのうちの1つのみを対象とする回答もあります。

EDIT 1

「直接リモートリポジトリ上の」によって、明確にするため、私は地元の1を通過することなくを意味します。このツールは完全に自動化されており、可能であればファイルシステムにアクセスする必要はありません。

EDITリモートサーバー上で直接タグを作成することが可能になりました@rmcsharryによってmentioned belowとして2

。これはすばらしい改善ですが、主な目的は最初にブランチをリモートで直接作成することです。これはWeb UIでは可能ですが、API経由ではまだできません。ここでは、ウェブUIのスクリーンショットです:

enter image description here

その部分がなければ、私は私が私の目標であるローカルファイルシステム、通過せずに言及したプロセスを自動化することはできません。

+0

あなたは何を試してみましたか?あなたが簡単にオンラインで見つけることができるTFS/VSTSのGitのための文書化されたAPIがあります。具体的な難しさは何ですか? –

+1

@MrHinsh私は両方の上記のライブラリの多くのドキュメントを読んだ。 Microsoft.TeamFountadion.Git.Clientを使用すると、リモートリポジトリに接続できますが、文書化されたGit REST APIの一部しか公開されていないようですが、ドキュメントでもリモートブランチとタグを直接作成する方法はありませんリモート。 LibGit2Sharpでは、リポジトリをローカルで最初に複製せずに直接リモートに接続することさえできなかったので、リモートで直接操作を実行することはできませんでした。あなたは、リモートで直接動作するどちらのライブラリのコードにも私を指摘できますか? – tsemer

+0

create refs REST APIエンドポイントを使用してください:https://www.visualstudio.com/en-us/docs/integrate/api/git/refs#modify-one-or-rerefs –

答えて

1

あなたは今、手動で(サーバー上で直接)TFSにコミットにタグを追加することができ、それは助けるかもしれません。

あなたが最初のコミットを選択する必要があり、その後、ドロップダウンメニュー、タグを作成することとなっている一つの選択肢開く、右端にある[...]ボタンをクリックしてください:

enter image description here

これはREST APIを介して公開されています。答えはhereです。


APIにブランチを作成することも可能です質問

に2を編集するに応じて更新します。コミットに別のコミット(40 0によって表される)はnil からREFを更新することにより達成されたリファレンスを作成

:ドキュメントには、「参照」として支店を指します。例えば

POST https://{instance}/DefaultCollection 
/{project}/_apis/git/repositories 
/{repository}/refs?api-version={version} 


Content-Type: application/json 

[ 
    { 
    "name": {string}, 
    "oldObjectId": {string}, 
    "newObjectId": {string} 
    } 
] 

構造は、この({プロジェクト}はオプションであることに注意してください)のようなものです。この体で

POST https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection 
/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249 
/refs?api-version=1.0 

、「ライブと呼ばれる新しいブランチを作成します。 ':

[ 
    { 
    "name": "refs/heads/live", 
    "oldObjectId": "0000000000000000000000000000000000000000", 
    "newObjectId": "4b223e9c93ec3b6aaa6499f06e3ebb7c702e6106" 
    }, 
] 

ドキュメントhere


私のTFSのバージョンは次のとおりです。

enter image description here


+1

ありがとう!これは確かにタグを作成することに関する私の質問の一部に答える。もちろん、より重要な部分は、最初にAPIを介してリモートで直接ブランチを作成することです。その部分がなければ、ローカルファイルシステムを経由せずに私が述べたプロセスを自動化することはできません。これが私の目標です。私はそのタイトルを変更し、それを反映するために少し質問をしようとします。 – tsemer

+0

@tsemer良い点。 APIを介してブランチを作成する方法を含めるように答えを更新しました。 – rmcsharry

+0

ありがとう!私は実現していなかった(または忘れていた?)gitのブランチとタグは名前だけで違います:)これを答えとしてマークします。これは、Microsoft.TeamFountadion.Git.Clientを含むNuGetパッケージに追加されているのか、直接Web API通信にフォールバックする必要があるのか​​分かります。 – tsemer

1

現在のところ、VS2015ではGitタグ(ローカル)しか作成できませんが、リモートサーバにはそのタグをプッシュできません。 gitのコマンドライン:git push --tagsを使用してタグをプッシュする必要があります。リモートにGitのタグをプッシュする

しかし、サポートの機能能力が計画されてきました:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/10189500-support-the-ability-to-push-git-tags-to-remote

+0

ありがとうこの制限は、私はLibGit2Sharpを使用しなければならないと思います:)しかし、あなたは私の質問がローカルを通らずにリモートで直接操作することを参照することができます。私はこれがGitの方法ではないと思う(これは私にとっては恥ずべきことである)。 – tsemer

+0

はい、gitは分散化されているため、gitは基本的にローカルです。すべてはローカルリポジトリでプッシュする前に実行されます。私はそれのための残りのAPIがあるとは思わないが、Microsoftはそれのようないくつかの余分なものを行う前に他の優先事項がある(しかし、私は間違っている可能性があります)。それは読んだAPIだけがあるようです... https://www.visualstudio.com/en-us/docs/integrate/api/git/overview – Philippe

+0

Libgit2sharpはとても良いライブラリですが、gitがインストールされていれば、プレーンなgitコマンドそのような些細なことをするのが簡単かもしれません... – Philippe

関連する問題