1

C#を使用してVisual Studio 2010でカスタムチェックインポリシーを作成しています。私はクラスPolicyBaseを拡張し、ユーザーのチェックインコメントに特定の情報が含まれているかどうかを確認できるようにEvaluate()メソッドをオーバーライドしました。私はthis.PendingCheckin.PendingChanges.Commentを使用してユーザーのチェックインコメントを取得しています。Team Foundation Server:PolicyBaseオブジェクトからChangeset IDを取得する

私ができることを望むのは、チェックインに割り当てられるチェンジセット番号を引き出すことです。この番号はどこでどのように入手できますか?

私は、チェンジセットがその時点でコミットされているため、チェンジセット番号を特定できないため、評価メソッドが間違っていると推測しています。

TIA

答えて

2

彼らは唯一のを事前にチェックインに評価されるようあなたは、チェックインポリシーと確実性のいずれかの学位を取得してこれを行うことはできません。サーバーは、チェックイン時にチェンジセットを割り当てます。

$ /のヒストリをクエリすることで、次のチェンジセット番号を推測できます(返される履歴項目の数は1つです)。しかし、もしあなたがこの価値に頼っているなら、明らかにあなたは競争状態に陥るだろう - 誰かがあなたを次のチェックインに簡単に追い込むことができ、次の数字になるだろう。

つまり、チェックインポリシーフレームワークの外では、チェックインに関するデータをで取得できます。 hook up a CommitCheckin event to an instance of Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer、またはan alert that will notify you when a check-in occursに接続できます。

+0

この程度の不確実性は、私の目的には不適切です。私は、チェックインポリシーやその他の技術を使ってこれを得る方法がないことは奇妙であることがわかります。 – millie

+0

なぜそれは奇妙ですか?それは**完全に知られていない**です。チェックインポリシーは、文字通り、保留中の変更を行った瞬間に実行されます。あなたがチェックインする前に評価されているだけではありません。 (そして、もし彼らがそうだったとしても、まだ**はまだ競合状態があるので、チェンジセット番号をある程度確実に知ることができませんでした。ちょっと小さいウィンドウのものです) –

+0

私はEvaluateメソッドがチェックインの前に呼び出されましたが、チェックインが発生したときに公開される他のメソッドがあると仮定して、保証されたチェンジセット番号を与えました。このフックが存在しないという事実は、私が奇妙に感じるものです。 – millie

関連する問題