VSSからの卒業…そしてGitへ…!
Visual Studio 2013がGitに対応したのを受けて、さらにGitHubでの公開も視野に入れてたのもあり、自宅のソース管理をこれまでのVSSからGitへ移行しました。(`・ω・´)
本当は履歴情報も一緒に持っていければと思ったものの、VSSのリポジトリデータベースを消さないでおけばよいのと、VM上に古いVisual Studioの開発環境を構築したので、そっちに持っていけばいいやというワケで、ソースだけ移行して心機一転まっさらな履歴情報にするコトにしました(笑)(^-^;
GitHubを使うという目的はあるものの、自宅にPush先が無いのもイヤだったので、自宅サーバ上でgit-daemonを動かすコトにしました。Windows上でのGitリポジトリ操作用には“SourceTree”を使うことにしました。(`・ω・´)
SourceTree : https://www.atlassian.com/ja/software/sourcetree/overview
加えて疑問点などを職場の同僚なGitエキスパートな方にいろいろ質問して解決した後に移行作業を始めましたが…意外と茨の道でした…(;´∀`)
そんなワケで、自分への備忘録と同じ道を歩もうとする方への道しるべがてら、手順などまとめておきます。(・∀・)
Gitサーバ構築編
認証機能が必要だと思ったのでHTTPベースにしました。HTTPSにしたい場合もGit側的には同じで、Virtual Hostの設定でSSLにするだけです。OSはCentOS6系を使っていますが、CentOS7系でも同じにできる事を確認しています。(・∀・)
git-daemon パッケージインストール
# yum install git-daemon httpd
gitサービス有効化
当初動作確認にgitプロトコル使ってたので入れてましたが、HTTPだけ使うなら不要です。
# chkconfig git on # chkconfig xinetd on # chkconfig xinetd restart
リポジトリ作成
# cd /var/lib/git/ # mkdir public_git
ついでなのでVisual Studioのプロジェクト用にリポジトリを作っておきます。プロジェクト名は“SimpleMP3Player”です。
なお、Gitリポジトリのディレクトリはプレフィックスとして“.git”を付けるケースが多いですが、Gitエキスパートな同僚の方によると、Gitリポジトリだとわかりやすくするためで必須ではない、とのコトでしたのでVisual Studioに合わせておきます(もちろん付けてもOK)。
# cd public_git # mkdir SimpleMP3Player # cd SimpleMP3Player # git --bare init --shared
Apacheから読み書きできないと不幸な結果になりますので、ここでパーミッション変えておきます。あとApacheから見えるようシンボリックリンクを作成しておきます。
# chown apache:apache -R . # ln -s /var/lib/git/public_git /var/www/html/git
Apache設定
最初にVirtual Hostの設定を入れます。ここでは8081番ポートをGitアクセス専用にしています。
/etc/httpd/conf.d/git.conf作成
<VirtualHost *:8081> ServerAdmin root@localhost ErrorLog logs/git.host-error_log CustomLog logs/git.host-access_log combined SetENV GIT_PROJECT_ROOT /var/lib/git/public_git/ SetENV GIT_HTTP_EXPORT_ALL ScriptAlias /git "/usr/libexec/git-core/git-http-backend/" <Location /git> DAV on AuthType basic AuthName "Authorization Realm" AuthUserFile /etc/httpd/conf/.htpasswd Require valid-user Order allow,deny Allow from all </Location> </VirtualHost>`
パスワードファイル生成
# htpasswd -c /etc/httpd/conf/.htpasswd denka
-
# # Listen: Allows you to bind Apache to specific IP addresses and/or # ports, in addition to the default. See also the <VirtualHost> # directive. # # Change this to Listen on specific IP addresses as shown below to # prevent Apache from glomming onto all bound IP addresses (0.0.0.0) # #Listen 12.34.56.78:80 Listen 80 Listen 8081 ←追加
Gitサーバ側はこれで完了です!(^o^)/
VSSプロジェクト移行編
前提条件としてVSSのリポジトリデータベースは残して、履歴が必要ならそこで閲覧するコトにしたので、履歴情報の移行はしないものとしています。またチェックアウト中のファイルは全てチェックインしておいた方が無難です。(´・ω・`)
ソリューションのコピー
Visual Studio 2013のProjectsフォルダに対象のソリューションをフォルダごとコピーします。
読み取り専用解除
VSS管理されていると読み取り専用になっているので、サブフォルダもまとめて読み書き可能にします。
VSSのファイル削除
隠しファイルも表示されるようにしておきます。
VSS管理すると生成されるファイルをすべて削除します。“vssver2.scc”“.scc”というファイルを検索して、全て削除します。
ソリューションファイルの修正
“プロジェクト名”.slnなファイル名のファイルをテキストエディッタで開き、以下のようなブロックを削除します。
GlobalSection(SourceCodeControl) = preSolution SccNumberOfProjects = 2 SccLocalPath0 = . SccProjectUniqueName1 = SimpleMP3Player\\SimpleMP3Player.vcxproj SccLocalPath1 = . SccProjectFilePathRelativizedFromConnection1 = SimpleMP3Player\\ EndGlobalSection
プロジェクトファイルの修正
拡張子“.vcxproj”なファイルを検索し、テキストエディッタで開いて以下のような“Scc”の付く行を全て削除します。
<SccProjectName>"$/SimpleMP3Player/SimpleMP3Player", HSAAAAAA</SccProjectName> <SccLocalPath>..</SccLocalPath> <SccProvider>MSSCCI:Microsoft Visual SourceSafe</SccProvider>
Visual Studioのソース管理プラグイン変更
“Microsoft Git Provider”に変更します。
ソリューションを開いてソース管理へ追加
先ほどもろもろを修正したソリューションを開いて、以下のようにソース管理へ追加します。
以下のようなダイアログが出た場合はOKを押下します。
ファイルをコミット
ソリューションエクスプローラのソリューションで右クリックして[コミット]します。
チームエクスプローラの画面に変わったら、図中の赤印のところにコメントを記入し、その下にある[コミット]をクリックします。
リモートリポジトリへPush
先ほど構築したGitサーバのリポジトリへPushするには、“同期されていないコミット”で“リモートリポジトリに発行”します。“分岐”メニューから“発行されていない同期”で右クリックでも発行の画面に飛びます。
SourceTreeから確認
“リポジトリをクローン”から元のパス/URLに、先ほどのGitサーバのURLを記入して“これはGitリポジトリです”と表示されたらPushできています。
この画面を一度閉じて、[開く]メニューからソリューションのフォルダを開くと、SourceTreeからもリポジトリを参照できるようになります。