Now Playing Tracks

SubversionのコミットをVisual Studio Online (TFS)へ

imageJenkins + SubversionでAzureへデプロイしているプロセスのデプロイ部分をTFSに任せてみたいと思う。今回はその第1弾でSubversionのコミット内容をTFSにも反映させるのを実現します。

最終的なミッションはこの2つになります。

  1. Subversion から自動でTFSにコミット & ビルド
  2. TFS → Azureへデプロイ & テスト

今回は 1. の部分です

指定のフォルダーをサーバーのローカルフォルダーに紐付けたりプロジェクトを0から作ったりと色々と事前準備を全てコンソールから出来る整備をしようかと思ったけど面倒そう、と言うか欲しい情報が判りやすい形で転がってない。

この辺はJenkinsとかと比べて残念に思いつつ今回の 1. のSubversion → TFS辺りは将来捨てる可能性が高い部分なのでガッツリと手を抜きます。

そんな訳でプロジェクト作成してローカルフォルダに最新ファイルが落としてある状態までを手動操作で完了させます。

準備が出来たら対象のフォルダーに対して以下の操作テストを実行

  1. 変更
  2. 追加
  3. 削除
  4. SuvbersionとTFSのワークスペースを同一の場所で実行

1.変更

tf checkin /noprompt

変更は簡単で上記のコマンドをVisualStudio上でローカルにマッピングした場所に行うだけでコミット(checkin)は出来た。

2.追加

tf add

ファイル増加も簡単

3.削除(消失状態からの昇格)

tf deleteが本来の削除ですが実は自分の要求は「MissingになっているのをDeleteに昇格させる」事。tf statusできちんと消失は検知できているので文字列を見てtf deleteに渡せばいいだけど、そのもの機能は地味に見当たらない。仕方ないので文字列を見てtf deleteを呼ぶコードで対応。

最終的なPowershellのコード

tf add
$tfStatus = tf status
for ($i=1; $i -le $tfStatus.Length ; $i++) {
    if ( ($tfStatus[$i] -ne $null) -And ($tfStatus[$i].Length -ge 2) ) {
        if ( $tfStatus[$i].IndexOf("削除") -ge 0 ) {
            $split = $tfStatus[$i].split()
            tf delete $split[$split.Length-1]
        }
    }
}
tf checkin /noprompt

上記のコードをSubversionでファイルが更新される毎に実行する様に設定します。ここは当然ですがJenkinsでSubversionのトリガーで実行となります。

私が何故高齢者視点にこだわるかというと、彼らの視点にはフールプルーフのすべてが含まれるから(根っからの愚者って意味ではないよ。Webページの操作についてに限定した話)。

彼らを相手にユーザーテストを行ない、最悪の状況を想定して作っておけば他の世代をすべてカバーできる。

現在のFacebookのUIがいかに話になってないレベルか - MIZの日記 (via nakano)
教え方のルール10カ条
1.熱意よりも何をどうすればいいのか具体的な指示を
2.「教えた」かどうかは「学ぶ側が学んだかどうか」で考える
3.結果が思わしくないのは,すべて教える側の責任
4.上手に教えたいのならコミュニケーション上手になる
5.教えるときは相手をよく観察して相手の状況をつかむ
6.相手にとってちょうどいい知識を与える
7.相手に教えたことを練習させて結果をフィードバックする
8.相手にできるようになってほしい具体的なゴールを決める
9.相手の「心」は変えられないが「行動」は変えられる
10.ゴールは必ず行動として設定する
向後千春,2012.『いちばんやさしい教える技術』永岡書店,pp.58-59 (via kbysht)

(出典: kh-journal)

To Tumblr, Love Pixel Union