アーカイブ

Posts Tagged ‘TFS’

TFSブランチガイド

ここ2年ほど開発してきたシステムがちょっと前にリリースされました。早速新機能の開発が保守と同時に走り始めました。ソースコードのブランチなんて切らないほうが絶対にいいんですが、そうとも行っていられないのでブランチを作成することに。

TFSでブランチを計画する際にまず目を当したいのが、下の長澤さんのブログで紹介されているTeam Foundation Server 2010ブランチとマージガイドです。TFS 2012は使ったことが無いのですが基本的な考え方は変わらないのでこれでフォローできるはずです。ソース管理にGITなんかを使っていると変わってくるのかな??

分岐ガイドのメインドキュメント(TFS_Branching_Guide_Main_2010_v1.pdf)を読む前に、シナリオのポスター(TFS Branching Guide – Scenarios 2010_20100330.pdf)を見るとわかりやすいです。

とりあえず標準分岐計画を元に分岐シナリオを考えることにします。

カテゴリー:TFS タグ:

TFS Everywareでエラーが出たけれどメッセージが読めない。。。

そんなこんなで、EclipseでC言語を利用した開発なんてのをやっているわけですが、EclipseからTFSのリポジトリーにシェルブしようとしたら、こんなダイアログが表示されてシェルブすることができませんでした。

文字化けして読めない。

image

TFSから帰ってきた文字のエンコーディングが予期したものではなかったのが原因なんだろうけれど、対処方法を調べるのがめんどくさいので、おもむろにFiddlerを起動してTFSとの通信を覗いてみる。

Eclipseからの通信をFiddlerで拾うには、Eclipse側のProxy設定を変更する必要があります。Eclipseのウインドウ→設定→一般→ネットワーク設定から、手動プロキシー構成を選択し、Fiddlerの通信ポートを設定します。

image

Fiddlerの通信ポートがわからない場合は、Fiddler側のTool→Fiddler Option→ConnectionsにあるFiddler listens on portがそれです。

image

で、通信をキャプチャーしてみたらこんなのが表示された。どうも、最新バージョンを取っていないのが問題らしい。そういえばTFSのソース管理オプションで、最新ソースを取っていないとチェックインできない設定にした覚えがある。

image

最新を撮り直して、コンフリクトを解消したらちゃんとシェルブ出来ました。

#だれか、TFS Everywareからのメッセージボックスエンコードの設定方法知教えてください。

メモ:Eclipse 対応 Team Foundation Server プラグイン

カテゴリー:プログラミング, メモ, TFS タグ: ,

Team Explorer Everywhereで特定フォルダーのソース管理を除外する。

仕事でC言語を扱う必要が出てきてなかなかテンションが上りません。しかも開発環境にVisual Studioが利用できなく、更にエミュレーターも準備されていないとかどんだけですかと。最近なんとかEclipseが利用できるようになったらしいですがそれまでは独自開発環境でインテリセンスもないとか、Visual Studioでぬるま湯に使っている身としてはなかなか耐えられそうにありません(開発環境はXPじゃないとリモートデバックもできない模様。。。)。

とりあえずEclipseが利用できそうなので、長沢さんの下記記事を参考に既存のソースファイルをTFSリポジトリーに追加します。Team Explorer Everwhereを入れてEclipseのリポジトリーに既存ソースをチェックインするまではできたのですが、ビルドのたびに変更が入るbinフォルダーまでリポジトリーに登録されてしまいました。。。

TFSの極意 Vol.6 | TFS に Eclipse からアクセス! Team Explorer Everywhere 2010

まぁ当たり前なんですが、TFSリポジトリー上からbinフォルダーを削除しても次回ビルド時には新しくバイナリーファイルがプロジェクトに追加されるので常にbinフォルダーが変更状態でバイナリファイルが追加状態になるという。このあたりはVisual Studioを利用すると勝手にやってくれるんですよね。

image

MSDNのTeam Explorer Everywhere関連のドキュメントを見ると、フォルダーの除外方法が掲載されていました。

バージョン管理からの Eclipse プロジェクト リソースの除外

拡張子やファイル名のパターンなどで除外ファイルを識別できる場合は、設定→チーム→無視するリソースから、除外パターンを追加することでソース管理からの除外ファイルを指定することができます。もしくは、複雑な条件が必要な場合は、tpignoreファイルを作成して除外条件を記述することで除外ファイルを指定することもできるそうです。

image

まぁ、うだうだやってもしょうがないので、できるだけサクッと終わらせよう。。。

カテゴリー:プログラミング, メモ, 雑記, TFS タグ: ,

TFSのバックアップって何やっているの?ちょっと覗いてみよう。

なーんか、TFSのフルバックアップが失敗するなーということで調査してみました。

TFSのバックアップには、TFS PowerToolsのバックアップツール(http://msdn.microsoft.com/ja-jp/library/ms253070.aspx)を利用しています。バックアッププランの作成については、りばてぃさんの記事がまとまっています。

TFS Advent Calendar Day 10~TFS 2010のバックアップとリストア~

まずはログの確認

何はともあれログの確認です。バックアップログはここに出力されます。→ C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs

ログを確認すると、結構順調にバックアップを行なっているようなんだけれど、BackupSet(バックアップのカタログ?)の更新をしようとして、XMLのカタログファイルを読み込む段階でエラーになっているようです。

[Error  @06:16:49.170] System.InvalidOperationException: XML ドキュメント (302906,36) でエラーが発生しました。 —> System.Xml.XmlException: ‘.’ (16 進数値 0x00) は無効な文字です。 行 302906、位置 36。

   … 略 …

   — 内部例外スタック トレースの終わり —
   場所 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Helpers.BackupSetSerializer.Load(String path)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Helpers.BackupSetHelper.AddAndSaveBackupSet(String path, TfsBackupSet backupSet)
   場所 Microsoft.TeamFoundation.PowerTools.Admin.Apply.TakeFullBackup.Run()

TFSのバックアップって何やっているの?

TFSのフルバックアップがやっていることを簡単にまとめると、次の4つになります。

  1. バックアッププラン定義ファイルの読み込み
  2. バックアップセットの作成
  3. バックアップの実行
  4. バックアップカタログの更新

バックアッププラン定義ファイルの読み込み

バックアッププラン定義ファイルは、バックアッププラン作成時にこのあたりに作成されます。→ C:\ProgramData\Microsoft\Team Foundation\Server Configuration\ConfigPT.xml

ConfigPT.xmlには、バックアップ対象のデータベースの一覧やバックアップ頻度、通知メール設定、レポーティングサーバーのバックアップキーファイルの場所など、バックアッププランの設定がすべて記述されています。

バックアップセットの作成

ConfigPT.xmlのTfsConfiguration, TfsCollections, TfsWarehouse, Reporting, Sharepointセクションからバックアップ対象のDatabase情報を取得し、バックアップセットを作成します。

バックアップの実行

Microsoft.SqlServer.Management.Smo.Backupクラスを利用して、ConfigPTから読み込んだDatabaseを順次バックアップしていきます。

バックアップカタログの更新

レストア時に参照するバックアップカタログを更新します。バックアップカタログはこのあたりに作成されます。→ バックアップフォルダー\BackupSets.xml

結局なんで落ちたの?

どうも、BackupSets.xmlがぶっ壊れていたようです。BackupSets.xmlを覗いたら、確かにこんな感じでXMLがぶっ壊れていました。

<TfsBackupSet Id="20120127033004" Time="2012/01/27 03:30:04">
  <Databases>
    <BackupSetDatabase Name="StateService_a02fc1fdb80b4052b21b6f5b74932695" File="" Parent="" />

    … 略 …

    <BackupSetDatabase Name="WSS_Search_SVTFS" File="" Parent="" />
    <BackupSetDatabase Name="Se

XMLを無理やり意味のある形に修正するか、壊れちゃったものは仕方ないとBackupSets.xmlを思い切って削除(!!)してもう一度フルバックアップをしてみましょう。もちろんBackupSets.xmlを削除すると、データベースのバックアップがあったとしてもTFSのバックアップシステムからレストアすることはできないので注意してください。

どうしたら良いかな?

Webで検索するとカタログファイルがぶっ壊れてしまったためにバックアップが失敗したり、レストアが出来なかったりと言った事例が見て取れます。ちょっと残念なんですが、カタログファイルは別途バックアップしておいたほうがいいかもしれません。

あともう一つ、ReportingServerのキーファイルはバックアッププラン作成時に作成されます。もしバックアップファイルを直に消すことがあっても、この子は消さないように注意しましょう。まぁ別途キーファイルを出力してあげればいいんですけれどね。

ふぅ、焦った。

カテゴリー:インフラ タグ:

TFSPreviewを使ってみる

さて、ソース管理はどうしようと考えた時に、まず思い浮かぶのがCodePlexなわけですが、そういえば少し前にTFSのPreviewサイトをアクティベートしたので、今回はこいつにいろいろな方法で接続してみます。

チームプロジェクトの作成方法は、下のブログの記事がよくまとまって参考になりました。

Windows Azure上でTeam Foundation Server:プレビュー版提供開始

http://sqlazure.jp/b/windows-azure/838/

ちなみに、長澤さんのブログのエントリーによると、60日間アクティブでないユーザーは削除されるそうなのでお気をつけを。

プロジェクトの作成

TFSPreviewにログインすると、Create team Projectというリンクがあるので、クリックしてプロジェクトを作成します。今回は「MobileSample」としておきましょう。ProjectTemplateはよくわからないので、「Microsoft Visual Studio Scrum 2.0 – Preview 4」にしておきます。

image

Visual Studioで接続してみる

Visual Studio 2010でTFS Previewに接続するためには、ダウンロードセンターからVisual Studio 2010 SP1 Team Foundation Server 11 Compatibility GDRをダウンロードしてインストールしておく必要があります。

Visual StudioからTFS Previewに接続する方法は、TFS2005,2008やCodePlexのチームプロジェクトに接続する方法と変わりません。

  1. Visual Studioのチームエクスプローラーから、チームプロジェクトへ接続ボタンをクリックし
  2. 接続サーバーを登録して
  3. 接続サーバーを選択して、
  4. 接続プロジェクトを選択します。

image

接続が完了すると、チームエクスプローラーには次のように表示されます。

image

Eclipseで接続してみる。

Javaなどで人気のIDE、Eclipseからもこれまでと同様、TFS Previewに接続することができます。Eclipseから接続する場合は、ダウンロードセンターから、Microsoft Team Explorer Everywhere 11 Betaにアクセスして、「TFSEclipsePlugin-UpdateSiteArchive-11.0.0-Beta.zip」をダウンロードしてください。ちなみに「TEE-CLC-11.0.0-Beta.zip」はWindowsのコマンドプロンプトやLinuxなどの各種Shellなどから、TFS Previewのデータにアクセスするためのコマンドラインインターフェイスです。

EclipseでTFS用の拡張機能をセットアップするには、Eclipseのメニュー→ヘルプ→新規ソフトウェアのインストールからインストールダイアログを開き、ダウンロードした「TFSEclipsePlugin-UpdateSiteArchive-11.0.0-Beta.zip」をアーカイブとして参照してインストールを行います。

image

インストールが完了したら、TFS用のパースペクティブを開いて、TFS Previewに接続します。パースペクティブを開くには、Eclipseメニュ→ウインドウ→パースペクティブを開く→その他からパースペクティブを開くダイアログを表示し、「Team Foundation Server Exlporing」を選択します。

image

追加された Team Explorerから、Connect To Team Foundation Serverを選択して、Visual Studioと同じようにTFS Previewのチームサイトを登録します。

image image

見慣れた画面が表示されました。

image

PowerShellで接続してみる。

TFS 2011と同様にTFS “11”にもTFSを利用する上で便利な拡張機能であるVisual Studio Power Toolsが用意されています。この中から、Microsoft Visual Studio Team Foundation Server 11 Beta Power Toolsを利用すると、PowerShellでTFS Previewのデータ利用することができるはず。。。なんだけれど。。。結局上手くつながりませんでした。。。

以下足あとです。

PowerShellのコマンドレットがインストールされませんね。。。あれ?インストールダイアログに、PowerShellなんかを使うには、Team Exploer 11が必要ってでてますね。Visual Studio 2010 SP1 Team Foundation Server 11 Compatibility GDRTeam Exploer 11って別モノだったんですね。

Team Exploer 11がインストールされていると、PowerShellのコマンドレットもインストールできるようになります。

image

以前のバージョンのWindows Shell拡張がインストールされている場合は、同居できないためこんなダイアログが表示されます。一つ前に戻ってWindows Shell Extension(x64)をインストールから除外するか、以前のバージョンをアンインストールしてください。

image

スタートメニューから、Microsoft Team Foundation Server 11 Power Tools → PowreShell Consoleを起動して、TFSサーバーの情報を取得してみます。

image

うーん、エラーになっちゃいますね。TFS 2010には問題なくつながるので、TFS 11 Previewに接続するにはもう少しパラメータが必要なんでしょうか。。。

カテゴリー:プログラミング, メモ タグ: ,

ワークグループ構成のTFSでログインするユーザーを切り替える

2011年12月20日 2件のコメント

この記事は、TFS Advent Calendarの12/20分の記事です。TFS Advent Calendar : ATND

(Live Writerの操作を間違って、フライングで16日に一度公開しちゃっていたんだけれど、素知らぬ顔でもう一度公開します。)

TFSでは構築時にTFSのユーザー管理をワークグループ(ローカルコンピューター)で行うか、ActiveDirectory(ドメインサーバー)で行うかを選択できます。ActiveDirectoryでTFSを構成した場合は、Windowsログイン時にユーザーが確定されるので、その認証情報を元にTFSにシングルサインオンできます。ワークグループモードで作った場合は、Windows側で認証されていないので、TFS接続時にユーザーIDとパスワードを入力してログインします。

とはいえ、ワークグループで作成しても、ユーザーIDとパスワードを入力する機会というのはほとんどありません。ほとんどの場合は、初回にTFSに接続した段階のユーザーIDとパスワードをIEがキャッシュとして持っているものを利用するからです。

ただ、TFSエクスプローラーにはログアウト的なメニューが存在しないので、一時的に別のアカウントでログインしたい場合や、ユーザーの変更などで別アカウントでログインしたい場合は、IEの設定を変更して上げる必要があります。

Visual StudioはIEのセキュリティー設定をもとにTFSに接続に行くので、IEのセキュリティー設定で毎回ユーザーIDとパスワードを入力するように変更します。

インターネットオプション>セキュリティー>TFSのセキュリティーゾーン(ここでは信頼済みサイト)>レベルのカスタマイズ

image_thumb

設定ウインドウの一番下にある、ユーザー認証を「ユーザー名とパスワードを入力してログオンする。」に変更します。

image_thumb1

この状態でVisual Studioを起動すると、チームプロジェクト接続時にユーザー名とパスワードを聞いてくるようになります。

カテゴリー:TFS タグ: ,

チームドキュメントの変更を受け取る

2011年12月14日 1件のコメント

この記事は、TFS Advent Calendarの12/14分の記事です。TFS Advent Calendar : ATND

接続しているプロジェクトをチームエクスプローラーで見ると、ドキュメントツリーの下に幾つかのドキュメントを見て取れます。ここには、プロジェクトで共有するドキュメントなどを格納していくのですが、新しいファイルが追加されたり、ファイルが更新された際にメールで通知を受けるにはどうしたらいいでしょうか。

答え

SharePointの機能を利用して、通知を設定します。

TFSと言うよりも、TFSがポータルサイトに利用しているSharePointの機能なのですが、チームエクスプローラーのドキュメントフォルダーの実体は、そのチームプロジェクトのプロジェクトポータルがホストされているSharePointのリストになります。変更を購読したいリストの通知を設定すればいいだけです。

image

もちろん通知の機能を利用する場合は、ユーザーに対してメールアドレスが設定されている必要があります。TFSをアクティブディレクトリー構成で構築していれば問題ありませんが、ワークグループ構成で構築したい場合は、ユーザーに対してメールアドレスがうまく設定されない(というか、SharePointのユーザー設定からメールアドレスを設定できない)ので、SPUserの設定をどうにか書き換えて上げる必要があります。

PowerShellを利用したメールアドレスの設定についてはこちら
SharePointのユーザーをPowerShellで修正してみる。

プロジェクトポータルのURLがわからない(!?)場合は、チームエクスプローラのコンテキストメニューから、「プロジェクトポータルの表示」をクリックしてプロジェクトポータルを開くのが簡単です。

image

プロジェクトポータルを開いたら、サイドバーから通知を設定したいリストを選択し、リボンのライブラリを開きます。

image

ライブラリタブを開き、ブラウザーをそれなりに大きくすると、リボンに幾つかのアクションが見て取れます。ドキュメントが追加されたり、修正されたりした場合にメールによる通知が欲しい場合は、「通知」>「このライブラリに通知を設定」をクリックします。メーラーにアウトルックを利用している場合は、ライブラリタブの「Outlookに接続」を利用すると、ドキュメントをアウトルックで読んだり、更新を確認できるようになって便利です。

image

通知の設定画面が出てくるので、どの頻度で通知を受け取るか設定してOKボタンをクリックします。

image

誰かがドキュメントに、ファイルを追加するとこんなメールが来ます。

image

カテゴリー:TFS タグ: ,