Visual Studio Team Services

(作成:2017/09)

C#で個人的にコード開発を始めたくなって、自宅環境に色々導入してみた。
そのうちGitのリモートリポジトリを何処かに置きたいと思ったけれど、GitHubは無償の場合全公開が全体のようで、趣味レヴェルのうんコード公開するのも恥ずかしい。んで探してみたらMSのAzuleサービスがあったので手を出してみた。

サービスURL

Microsoftアカウントがあればサービスを開始できる。

初期設定

MicrosoftアカウントのVSTS設定として画面右上のユーザアイコンから[My profile]を開く。

My profile

画面が英語表記だったりタイムスタンプが変だったりするので好みに合わせておく。
。。。といっても2017/09現在、サービスが日本語化されるわけではない。

  • Edit profile
    • Preferences
    • Locale
      • Preferred Language: 日本語(日本)
      • Date Pattern: 1970-01-01 (yyyy-MM-dd)
      • Time Zone: (UTC+9:00) Osaka, Sapporo, Tokyo

Notification settings

デフォルトで色々通知項目があるけれど、個人利用だしメール貰ってもウザいので全部off。
必要になったらまた考えよう。

Security

  • Personal access tokens
    ブラウザ外のアプリ(VisualStudioとかGitとか)へスムーズにアクセスするためのトークンについて、権限とか有効期限とか設定できる。今はいいや。
  • Alternate authentication credentials
    今はPersonal access tokens使えって書いてあるので無視。
  • OAuth authorizations
    Team Foundation Server使うためのサードパーティアプリ一覧。まあ使わないだろう。
  • SSH public keys
    Gitリポジトリへのアクセスで使うSSH公開鍵を登録する。鍵作成済なら、公開鍵の内容をコピペしておく。

Usage

多分利用状況(閲覧したデータが何だとか、アクセスしたエージェントが何だとか)が見れるのだと思う。特に設定なし。

プロジェクト作成

作成直後はこんな感じになっている、筈。(サービス開始時は深く考えずポチポチしたので、人によっては少し違う表示かも)
で、管理するリポジトリの構成は取り敢えず以下のような感じにしたいナーと考える。

Sandbox は所謂セキュリティ的なアレを模しているけど、デフォルトで1コはプロジェクトが無いと駄目みたいなので取り敢えず。
Plactice はコーディング練習用。C#で色々やってみたいので、リポジトリ内は基盤毎とかそんな感じに分けたい。
なおTeamsはProject毎勝手に作られる模様。チームにはMicrosoftアカウントが入る。でも個人利用なので全部ウチ1人やな。

Project操作

操作に入る前に、VSTSはアクティブなコンテンツによってメニューが変化するみたいなので注意。
それでもProjectとTeamは一緒かな?

Projectがアクティブ Teamがアクティブ Accountがアクティブ

以下、それぞれの状態を (Project)(Team)(Account) と表す。

リネーム

(Project)
Setting (歯車)
Account settings

(Account)
(Project name): 右クリック Rename

「ビルド中だと失敗するぞ」「全員IDE環境再起動しろよ」「Gitリモート名は新しくしとけ」「バージョン管理(Gitとか)のワークスペース更新しとけ」とか言われる。
個人用途なので無視してGo。でも本当にプロジェクトチーム組んでたりする場合は注意。

あと、同画面左側の Project profile で Description を直接修正できる。この文言は(Project name) Home の画面で、プロジェクト名直下に表示される。

追加

(Project)
Setting (歯車)
Account settings

(Account)
New team project...

(Project)
Code
or initialize with a README or gitignore
Add a README: チェック
Initialize
標準でmasterブランチに README.md だけが入ったリポジトリが作成される。これを基点に、作業用ブランチを切ってpush、mergeしていく。

削除

ついでなので、Project や branch の削除方法も。

Project の削除

(Project)
Setting (歯車)
Account settings

(Account)
(Project name): 右クリック Delete

以下のように聞かれるので、Project名を書いて Delete Project 押下。
branch の削除
(Project)
Code
Branches
(branch名) 右クリック Delete branch

Team操作

今回は個人管理用なのであまり操作しないけど、アクセス権限とかあるので気になる人は変更すると良いかも。

取り敢えず Description 変える操作まで。
変更したいProjectをアクティブに(Sandbox Homeを開く、など)してから以下の操作で。

(Project)
Setting (歯車)
Default team settings

(Team)
Team Profile
Description

ソリューション管理

個人でVSTS使ってリポジトリ管理する流れはこんなだと思う。forkとかしないのでシンプルながら、やろうと思えばmasterに直pushできるので怖い。

環境を汚さない為にもブランチ切りつつ作業するとして、ここでは橙色周りの処理を簡単にまとめる。

参考:
Github-flowを分かりやすく図解してみた
Visual Studio ローカルでバージョン管理(git) – Qiita

clone

初回のクローンはブラウザから実施できる。
(Project)
Dashboard
Visual Studio
Open in Visual Studio

余談だけれどSVNでいうcheckoutはGitだとcloneなのね。git checkoutだと新規にbranchを作ってしまう。下手にSubversion経験あると混乱するネ。

またここで、VS17上でのGit設定も修正しておく。

  • チームエクスプローラ
    • 設定グローバル設定
    • 基底のリポジトリの場所: (お好みのフォルダ)
    • 更新

これで今後VSTSからリポジトリを展開する時に、デフォルトで指定したフォルダ配下に展開してくれるようになる。

branch, commitなど

branch

testブランチを作成して、そこで色々弄ってみることにする。

ブランチの切替(checkout)までしてくれているので、このままコーディング開始できる。

まずはともあれソリューション作成。

  • チームエクスプローラ
    • 新規作成...
    • Visual C#コンソールアプリ (.NET Framework)
    • 名前: MyConsole
      • OK
取り敢えずコンソールアプリでこんにちは世界してみた。

commit

ブランチ: test なのを確認。

  • チームエクスプローラ
    • プロジェクト
    • 変更すべてをコミット

ここまでで、TortoiseGitからログを見てみる。作業通り「1. masterへの初回commit」「2. testブランチへcommit」になってる。

push

VSTSへpushしてみる。プッシュを押すだけで何も問われずpushが開始するので、ちょっとビクってなる。

現在のブランチは~ の部分は、今回pushするブランチがリモート側に無いのでこう表示される。リモートブランチがあればcommitログが表示される。

今度はVSTSを見てみる。ちゃんと入ってるネ。

(Project)
Code
Files
mastertest

pull request

リモートリポジトリで team ブランチ→ master ブランチに mergeしてもらうためにリクエストを発行する。

ブラウザが開き、VSTSへ移動する。

(Team)
Code
Pull Requests
内容に問題が無ければCreate

masterへmerge

こちらもVSTS側で実施する。かなり色々なやりとりができるけれど、プロジェクトひとりではメモ書きくらいだろうナァ。
(Team)
Code
Pull Requests
問題なければApprove``Completeする。

Delete test after mergingは一旦ゴミ箱に入れられるだけで、本当に消すにはCodeBranchesにて削除をする必要がある。

Complete mergeを押して完了。

CodeCommitsを見ると、 merge まで実施されている。

(Team)
Code
Commits