してみるテストロゴ
Apache 2.4系でHTTP/2サーバを構築してみるテスト。

Visual Studioからgitを使ってみる。

チーム開発を行う際には必携のツールとなっているgitですが、visual studioからも利用できるようになっています。

GitHub for Visual Studioというプラグインを利用するのですが、名前の通り、githubへの接続については、手厚くなっていますが、自前のgitのリポジトリでも利用できます。

特に、ソースコードを公開したくないため、自分の管理するサーバでリポジトリを共有したい方も多いと思います。

そこで、自前のUnix系サーバに共有型のリモートリポジトリを作成し、Visual Studioからプッシュして、Unix系サーバのローカルリポジトリに同期する方法を整理したいと思います。

順序としては、

1、サーバのアカウント準備と、証明書ログインの設定

2、サーバに、共有リポジトリを作成

3、Visual Studioの設定と、ソリューションのローカルリポジトリ作成

4、Visual Studioから、リモート(共有)リポジトリへの同期

5、サーバ側で、共有リポジトリからcloneを試す。

の順序で説明します。

サーバのアカウントの準備

まず、サーバのアカウントを用意します。

ここでは便宜上、WindowsもUnix系サーバも同じ『yourname』というアカウントを使うことを前提に、説明します。

 

今回は、SSH認証を利用して、リモートリポジトリにアクセスしたいと思います。

そこで、必要になるのは、SSHログインができるアカウント、特に証明書ログインができる必要があります。

そのためには、Visual StudioのインストールされたWindowsマシンにTeraTermをインストールして、SSHの秘密鍵と公開鍵を作成する必要があります。

 

まず、Windows側に、ssh秘密鍵を保存するフォルダを作ります。

フォルダを作るのは、c:\Users\youraname\配下になります。

フォルダの名前は、上図赤枠にあるように『.ssh』(ドット・エス・エス・エイチ)です。

 

続いて、以下のページを参考に、SSHの秘密鍵(id_rsaもしくは、id_ecdsa)と公開鍵(id_rsa.pubもしくは、id_ecdsa.pub)を作成してください。下記の作成例では、256ビットのECDSAを利用していますが、RSAでもかまいません。

ここで重要なのは、「鍵のパスフレーズ」には何も入れないようにしてください。

(下記リンク先のページの例では「鍵のパスフレーズ」を入れていますが、今回は入れないでください。)

そうしないと、GitHub for Visual Studioのプラグインが自動ログインできません。

公開鍵、秘密鍵ともに、先ほど作ったC:\Users\youraname\.sshフォルダに保存します。

RSAを使って公開鍵、秘密鍵を作った場合、以下のようになっていればOKです。

この.sshフォルダにある、id_rsa.pubもしくは、id_ecdsa.pubは公開鍵で、中身はテキストファイルです。

.pubが付いていない方は秘密鍵のファイルなので、いまは触りません。

この公開鍵のファイルを「メモ帳」(notepad)で開いて、

全体を選択してコピーします。

続いて、サーバにSSHログインして、.sshディレクトリを作ります。

(すでに有ればそれでかまいません。)

.sshディレクトリのパーミッションは、0700となるように、しておきましょう。

そして、authorized_keysファイルの末行にさきほど「メモ帳」(notepad)からコピーした公開鍵を貼り付けます。

# mkdir .ssh
# chmod 700 ~/.ssh
# vi .ssh/authorized_keys
~/.ssh/authorized_keys
(…省略…)
ssh-rsa AAAAB3(…省略…)

これで、SSHの自動ログインの準備が整いました。

一応、TeraTermからパスフレーズなしでログインできるか試してみてください。

サーバに共有リポジトリを作成

続いて、サーバに共有リポジトリを作成します。

今回は、以下のようなディレクトリ構成のサーバを想定しています。

それぞれのフォルダの役割ですが、

②が、『共有リポジトリ』を配置するフォルダ

③が、サーバ上の『共有リポジトリ』、Windows側から見た『リモートリポジトリ』

⑤が、あなたのホームディレクトリ

⑥が、『ローカルリポジトリ』

となります。

①/exportと、④/home、⑤/home/yournameはすでに有る前提です。

①と④は、それぞれ、ルートとば別のパティーションをマウントしておくことをお勧めします。

(ルートのパティーションの容量を使い尽くすとサーバが起動しなくなる可能性があります。)

⑥は最後に作りますので、ここでは、②、③について作業します。

 

②については、管理者権限で以下のようなコマンドで作ります。

# cd /export
# mkdir git
# chgrp gituser git
# chmod 770 git

 

③については、

まず、/export/git配下に移動してから、ソリューション名の末尾に.gitを付加した名称で、ディレクトリを作成します。

そのディレクトリに入って、--bareと、--sharedオプションをつけて、git initを実行します。

# cd /export/git
# mkdir example_sln.git
# cd /export/git/example_sln.git
# git init --bare --shared
Initialized empty shared Git repository in /export/git/example_sln.git/
#

これで、サーバにVisual Studioのソリューションを格納する、共有のリポジトリが完成しました。

Visual Studioの設定

まず、Windowsにgitをインストールします。

Git for Windows」(自動的にダウンロードが開始されます)をダウンロードし、これを実行してインストールします。

Visual Studioの拡張機能のインストール

次に、メニューバーの「拡張機能」の「拡張機能の管理」を選び、「Manage Extentions」のウィンドウを開きます。

ここで、「GitHub Extension for Windows」を探してインストールします。

続いて、Visual Studioのデフォルトのソース管理をgitにします。

メニューバーの『ツール』⇒『オプション』を選びます。

右側のタブの①『ソース管理』をクリックして、②の『現在のソース管理プラグイン』を「Git」にします。

続いて、ソリューションをソース管理にGitに追加します。

 

GitHub for Visual Studioのにソリューションを追加

追加するソリューションを右クリックして、「ソリューションをソース管理に追加」を選びます。

これで、ソリューションが、「ソース管理」に追加されましたが、見た目はあまり変化がありません。

つづいて、ローカルリポジトリにソリューションが追加されたか確認します。

チームエクスプローラを表示するため、メニューバーから、「チーム」をクリックして、「接続の管理」をクリックします。

すると、

チームエクスプローラの下部の「ローカルGitリポジトリ」に、さきほどソース管理に追加したソリューション(example_sln)が作られていることが判ります。

次に、リモートリポジトリの設定を行います。

設定画面に行くには、まず、GitHub for Visual Studioの「ホーム」に行きます。

表示するため、上図チームエクスプローラに表示された「ホーム」のアイコンをクリックしてください。

リモートリポジトリの設定

以下のように、GitHub for Visual Studioの「ホーム」が表示されたら、「設定」をクリックします。

続いて、「リポジトリ」をクリックします。

次に、「リモート」の「追加」をクリックします。

すると、以下のようなダイアログが出ます。

ここで、さきほど、サーバに作った共有リポジトリの設定を、「リモートリポジトリ」として入れます。

名前には、「origin」と入れてください。

フェッチには、以下の情報をURL形式で入れます。

たとえば、上記図の例は

ssh://yourname@example.com/export/git/example_sln.git

とありますが、これは、

■プロトコルは、ssh

■アカウントは、yourename

■サーバのFQDNは、example.com

■サーバ内の共有リポジトリのパスは、/export/git/example_sln.git

の場合の設定です。適宜変更して入れてください。

この設定で、先ほど行った証明書を使ったSSH自動ログインを利用します。

リモートリポジトリへ同期

リモートリポジトリの設定ができたら、再び「ホーム」アイコンをクリックして、GitHub for Visual Studioの「ホーム」に移動します。

今度は、「同期」ボタンを押します。

すると、

と出て、プロジェクトファイルをプッシュできるようになっています。

「出力方向のコミット」から、「プッシュ」をクリックすると、サーバの共有リポジトリと同期します。

この操作は、コマンドラインでいうところの

 $ git push origin master

に相当します。

サーバ上でcloneしてみる。

さて、本当にVisual Studioのソリューションが、リモートリポジトリに上がったのか、サーバ上で、cloneを作ってみて確かめます。

yournameユーザの権限でサーバにログインします。

そして、以下のようにgit cloneを実行します。この例では、ホームディレクトリ直下にクローンができます。

$ cd ~
$ git clone /export/git/example_sln.git
Cloning into 'example_sln...
done.

ここで、以下のようにlsコマンドを打って、

$ ls example_sln
example_sln    example_sln.sln	

のように出ていれば、cloneに成功しています。

Visual Studioからpushしてみる。

今度は、pushしてみます。

まずは、チームエクスプローラのホームから「変更」をクリックします。

ここで変更した箇所について、わかりやすいコメントを入れます。(上図のFix forの部分です。)

コメントを入れると、「すべてをコミット」のボタンを押すことができるようになりますので、コメントを書き終わったら、「すべてをコミット」のボタンを押します。

この操作は、コマンドラインでいうところの

 $ git commit -a -m "Fix for ..."

に相当します。

上図の「同期」をクリックして、チームエクスプローラの「同期」に進みます。

上図の「プッシュ」をクリックします。これで、サーバにソースコードが送信されます。

この操作は、コマンドラインでいうところの

 $ git push origin master

に相当します。

Visual Studioからpullしてみる。

もはや、説明するまでもないのですが、Pullの方法も説明しておきます。

上図のチームエクスプローラのホームにある「同期」をクリックします。

そして、チームエクスプローラの「同期」で、「プル」をクリックすると、サーバのソースコードを取得します。

これは、コマンドラインでいうところの

 $ git pull origin master

に相当します。

NEXT >> Comming soon !

©Copyrights 2015-2019, non-standard programmer

このサイトは、あくまでも私の個人的体験を、綴ったものです。 軽く参考程度にご利用ください。