2023年10月に『生成AIを使ってC#プログラムを作成しました』の投稿をしました。あれ以来、プログラミングに目覚めてしまいました。(笑)
自作プログラムは、DIYのひとつと自己肯定して沼っています。
小さなプログラムを作成して遊んでいますが、デスクトップPCでプログラミングしたり、リビングでテレビを見ながらノートPCでプログラミングしたりしています。プログラムは複数のファイルから構成されています。それらファイルのまとまりをプロジェクトと呼んだりソリューションと呼んだりします。
普段、デスクトップPCで作成しているプログラムの続きをノートPCで作成しようと思うと、プログラム一式、つまりプロジェクトやソリューションをノートPCに持っていく必要があります。どちらのPCもインターネットに繋がっているので、デスクトップPCからソリューションをGoogleドライブにアップロード(保存)しておき、ノートPCにダウンロード(取得)します。ノートPCでプログラムの続きを作成して、またGoogleドライブにアップロード(保存)して、デスクトップPCにダウンロード(取得)するのを繰り返すことになります。ちょっと手間です。
また、プログラミングのスキルはそんなにないので、やりたいことは試行錯誤しながら作成します。ところが、ある部分まではうまく動いていて、さらに別のことを試行錯誤しながら作りこんでいったときに、うまくいかずにうまく動いていたところまで元に戻せなくなるときがあります。そんな時、ハァ~とため息が出ます。
まとめると今のプログラミングには、以下の課題があります。
ちょっと、ChatGPTに課題の解決案を考えてもらいました。その結果が以下です。
この回答を考察すると、No.4はすでにVisual Studio Communityという統合開発環境(IDE)を使っています。No.3は、自動化はしていませんがバックアップはすでに以下の投稿時に導入しています。
No.1は、今回の課題の直接的な改善には繋がらないですね。No.5は、趣味の域なので品質やCI/COは大げさだし、やはり直接的な改善にはならないですね。No.2は少なくとも課題の2と3が解決できそうです。
バージョン管理システムとは
ChatGPTの回答に、「バージョン管理システム」という用語が出てきました。バージョン管理システム(Version Control System)とは、プログラムやファイルを保存し、過去の状態に戻ったり、チームで一緒に作業するのに役立つツールです。例えば、プロジェクトを作り始めたときのプログラムと、数日後に追加した新しい機能のプログラムを保存することができます。何か問題が生じたら、以前の状態に戻すこともできます。また、複数人でプログラムを作るときも、お互いの変更を簡単に共有できて、作業がスムーズに進みます。簡単な操作で、プログラムの履歴を管理できるので、大規模なプロジェクトにも取り組めます。
やっぱり、課題の「ときどきプログラムを元にもどせなくなる」は、バージョン管理システムでプログラムを管理すると、過去の状態に戻せるとあるので、改善できそうです。
課題の「動いていたプログラムを保存しておくのに手間がかかる」も同じプログラム名だけど、異なるバージョンで保存できるということですね。とにかく保存しておけばいつでも必要なバージョンを取り出せるということです。
また、バージョン管理システムは複数人で利用されることを前提としているということは、複数のパソコンで利用できることを意味しているので、課題1の「複数の場所で同じプログラムの作成に手間がかかる」も改善できそうです。
GitとSVNとは
ChatGPTではバージョン管理システムには、GitとSVNがあるといっています。このGitとSVNを調べてみると違いがありました。
項目 | Git | SVN |
---|---|---|
分散型と集中型 | 分散型:各開発者はローカルPCで完全なリポジトリのコピーを持ち、変更はローカルPCでコミットされます。リモートリポジトリとの同期は必要に応じて行います。 | 集中型:集中型バージョン管理システムで、リモートリポジトリが唯一の中央リポジトリであり、開発者は中央リポジトリから直接コミットします。 |
ブランチの扱い | ブランチが非常に軽量で、柔軟に扱えます。新しいブランチの作成やマージが容易で、開発者は自由にブランチを切り替えて作業できます。 | ブランチが比較的重い操作であり、リポジトリ全体のコピーが必要な場合があります。ブランチの作成やマージがGitよりも制約があります。 |
コミットと履歴 | 各開発者のローカルリポジトリでコミットが行われ、変更履歴はローカルPCで管理されます。リモートリポジトリへのプッシュが行われると、変更がリモートリポジトリに反映されます。 | コミットはリモートリポジトリに直接行われ、変更履歴は中央で管理されます。 |
特徴 | 分散した場所で多人数で大規模なプロジェクトを開発する場合に適する。 オープンソースソフトウェアの開発に多く適用されている。 | 1か所でのシンプルなバージョン管理に適してる。 企業内の閉じたネットワーク環境での開発に適用しやすい。 |
用語 | 説明 |
---|---|
リポジトリ | バージョン管理システムにおいて、プロジェクトやコードの変更履歴やファイルを保存・管理するデータベースのような場所。 ローカルリポジトリ: 開発者の個々のコンピュータ上に存在し、プロジェクトの変更履歴を保存します。 リモートリポジトリ: プロジェクト全体の中央データベースで、通常はクラウド上にあります(GitHubやBitbucketなど)。 |
ブランチ | ブランチ(Branch)は、バージョン管理システム(例: GitやSubversion)において、プロジェクトのコードベースを分岐させ、異なる方向で作業を進めるための独立したラインを指します。 |
コミット | コミット(Commit)は、バージョン管理システム(例: GitやSubversion)で行われる重要なアクションの一つで、変更内容をリポジトリに記録する操作を指します。 |
GitとGitHubは違うもの
ちなみにの話、インターネットでよく聞かれる言葉に「GitHub」があります。どちらもGitがついていますが異なるものです。Gitは上述したとおりバージョン管理システムです。なのでパソコン1台でもGit(公式サイト)をインストールすれば使うことができます。GitHubというのは、ソフトウェア開発のプラットフォームとしてのサービスの1つです。2008年にGitHub社が提供開始したサービスで、2018年10月にマイクロソフトに買収されましたがGitHub社(日本の公式サイト)としてサービスは提供されています。GitHubのバージョン管理システムにGitが使われており、そのシステムはクラウド上に構築されています。
GitHubのサービスは有料ですが無料で使える範囲があります。GitHubでソフトウェアを作成した際にプロジェクトを公開したり、ソフトウェアを公開することができます。
SVN(Subversion)の採用
ひとりで趣味的にプログラミングを楽しんでいる段階なので、シンプルなバージョン管理システムで十分そうです。そこで、SVN(Subversion)を採用することにしました。
SVNは、バージョンを管理するためのサーバーソフトとバージョン管理を操作しやすいようにUI(ユーザーインターフェース)を備えたクライアントソフトがあります。
主なSVNサーバーソフトウェア
主なSVNサーバーソフトには、以下があります。現時点2択のようです。
ソフトウェア名 | 説明 |
---|---|
Apache HTTP Server | Apacheは最も一般的に使用されるSVNサーバーソフトウェアの一つです。mod_dav_svn モジュールを使用して、ApacheサーバーがSVNプロトコルをサポートします。無料。 |
VisualSVN Server | VisualSVN Serverは、Windows環境向けのSVNサーバーソフトウェアで、簡単にセットアップできます。Active Directoryとの統合もサポートしています。コミュニティ版は無料。 |
Apache HTTP Serverは、Webサーバーで最も有名なソフトウェアです。そのソフトにSVNサーバーモジュールを追加することでSVNサーバーとして使えるようになるというものです。VisualSVN ServerはWindows向けのSVNサーバーでSVN専用のサーバーです。
VisualSVN Serverの採用
Apache HTTP Serverは以前、WordPressの勉強のためにXAMPPを使ったことがあります。XAMPPにはWordPressに必要なApache HTTP Serverなど必要なソフトウェアが組み込まれていました。その時に使ったことがありますが単独で構築したことはありません。Apache HTTP Serverの構築にはconfファイルなどの設定が必要でそれなりの知識が必要です。
VisualSVN ServerはSVNサーバー特化でインストールするだけ使えそうです。また、Windows環境向けというのも扱いやすそうです。こちらも使ったことはありませんが、扱いやすそうということでVisualSVN Server(コミュニティ版)を採用することにしました。
主なSVNクライアントソフトウェア
Windows環境で使える主なSVNクライアントソフトウェアは以下です。
ソフトウェア名 | 説明 |
---|---|
TortoiseSVN | Windows向けのシンプルで使いやすいSVNクライアント。Windows Explorerのシェル拡張として統合され、直感的な操作が可能です。無料。 |
SmartSVN | クロスプラットフォーム(Windows、macOS、Linux)で利用可能なSVNクライアント。直感的なユーザーインターフェースと高度な機能を提供します。 以下の場合は無料で使用可能。 ・アクティブなオープンソース開発者 ・学術機関の学生および職員 ・特定の慈善団体 |
AnkhSVN | Visual Studio用のSVNプラグイン。Visual Studio内で直接SVNリポジトリとやり取りできます。無料。Visual Studio2019までサポート。2022はGitHubからダウンロード。 |
TortoiseSVNの採用
なんか、結果が見えていますね。無料で使えるのはTortoiseSVNとAnkhSVNですが、AnkhSVNのサポートが不安定です。今、使用しているVisual Studio2019 Communityはサポートしていますが、それ以降の正式サポートはなく、GitHubに上がっているパッケージを使用することになっています。
TortoiseSVNは、Windows向けSVNクライアントでエクスプローラーのメニューに組み込まれて統合されています。使い慣れているエクスプローラーから使えるので、SVNクライアントはTortoiseSVNを採用することにしました。
SVNの構築(サーバー編)
バージョン管理システムは、以下のソフトウェアで構築することに決めました。クライアント・サーバー形態のソフトウェアでは、通常、サーバー用パソコンと複数のクライアント用パソコンから構成した環境で使いますが、サーバー用パソコンとクライアント用パソコンを1台のパソコンで構成することも可能です。
今回は、こんな環境でデスクトップPCでもノートPCでもプログラミングができるようにします。デスクトップPCにVisualSVN ServerとTortoiseSVNをインストールします。また、ノートPCにTortoiseSVNをインストールします。
VisualSVN Serverのインストール
早速、バージョン管理システムのサーバー側ソフトウェアとして、VisualSVN Serverをインストールします。
1.インストーラをVisualSVN Serverの公式サイトからダウンロードする
デスクトップPCのWindows11は64ビット版なので「VisualSVN Server 5.3.2(64-bit)」をクリックします。ダウンロードフォルダに「VisualSVN-Server-5.3.2-x64.msi」というファイルが保存されます。
※ファイル名にはこの時点のバージョン番号が含まれています。
2.「VisualSVN-Server-5.3.2-x64.msi」をダブルクリックしてインストールする
インストーラ画面が表示されます。[Next]ボタンをクリックします。
ソフトウェアのライセンス契約書が表示されます。内容を確認して、同意のチェックボックスをチェックして[Next]ボタンをクリックします。
このままで[Next]ボタンをクリックします。内容は、インストールするコンポーネント(構成)を選択します。チェックが付いている項目は、VisualSVN Serverと管理者ツールをインストールするという意味です。もう一つは、管理者ツールのみインストールする意味です。ここではVisualSVN Serverを入れるので、このままで問題なしです。
チェックボックスのチェックは大切なので、このままです。これは、VisualSVN ServerへのPATH(パス)をWindowsの環境に追加するという意味です。追加しておくとWindowsのどのフォルダにいてもVisualSVN Serverの場所がわかるというおまじないです。
VisualSVN Serverの初期の設定内容を示しています。下線①は本ソフトウェアのインストールフォルダを示しています。下線②は、リポジトリを作成するフォルダを示します。これが一番大事です。このリポジトリのフォルダにバージョン管理したデータをどんどん格納していきます。したがって、このフォルダの空き容量を確保しておく必要があります。私の場合は、このリポジトリ用に空の500GBのSSDを割り当てました。下線③は、バックアップ先のフォルダを指定します。私の場合は、下線②と同様に500GBのSSDにBackupフォルダを作成して割り当てました。つまり、500GBのSSDをすべてバージョン管理用に割り当てたということです。
あと、Server Port:443というのは、VisualSVN ServerとSVNクライアントとの間を通信ポート443を使うという意味です。通常はこのままでよいですが、Apache HTTP Server(Webサーバー)も別途構築したい場合は注意が必要です。ApacheHTTP Serverも通信ポート443を使うからです。ポートを競合してしまいますので、そのときはどちらかのポート番号を変更してあげる必要があります。もし、あらかじめApache HTTP Severも使う予定があるならVisualSVN ServerをやめてApache HTTP Serverのsubversionを使うことをお勧めします。
設定が終わったら[Next]ボタンをクリックします。
これはチェックしたいところですが、チェックするにはおそらく有料版のライセンスが必要と思います。そのようなことが下段のコメントに記載があります。チェックするとリポジトリに対して検索を可能になるオプションです。残念ながらこのまま[Next]ボタンをクリックします。
これはVisualSVN Serverに対する認証方法を設定する項目です。チェックされている項目は、Subversionの認証を使うことを意味します。チェックのない方の項目は、Windows認証を使用することを意味します。こちらもWindows認証を使うには有料版ライセンスが必要なようです。企業内で使用するならWindows認証が使えるとユーザー管理が楽だと思います。ひとりで使うだけなのでこのままで問題ないので、[Next]をクリックします。
これですべての設定が終わりインストールが始まりました。簡単でしたね。
インストールが終わりました。1つの目のチェックボックスはお知らせなどをメールかRSSで受取りますかの確認です。チェックするとメールアドレスの登録が必要です。特に必要ないのでチェックなしです。
2つ目のチェックボックスは、[Finish]ボタンをクリックしたらVisualSVN Server マネージャーを起動するかを聞いてしますので、チェックして開始します。
[Finish]ボタンをクリックします。
VisualSVN Server マネージャーが起動しました。右側画面の上に「VISUALSVNSEVER Community license」と表示されています。これで、無料のコミュニティ版ということがわかります。
まず、最初にすることは、ユーザー登録です。ツリービューの[Users]を右クリックで表示されるメニューで[Create User…]をクリックします。または、メニュー[操作]-[Create User]をクリックします。
ユーザー登録画面が表示されるのでユーザー名とパスワード、確認用パスワードを入力して[OK]ボタンをクリックします。パスワードが短すぎると警告画面が出るので注意します。
VisualSVN Serverマネージャー画面のユーザー一覧画面に登録されたことがわかります。これでSVNクライアントのソフトウェアからこのユーザー名とパスワードでアクセスできるようになります。
この説明では、長いように見えますが、変更しなくてよいなら[Next]ボタンを6回クリックと[Finish]ボタンを1回クリックするだけでインストールできてしまいます。
超~簡単ですね! 選んで正解です。
SVNの構築(クライアント編)
SVNサーバーのインストールと設定ができましたので、続いてSVNクライアントのインストールです。
TortoiseSVNのインストール
次に、バージョン管理システムのクライアント側ソフトウェアとして、TortoiseSVNをインストールします。
1.インストーラをTortoiseSVNの公式サイトからダウンロードする
トータスSVNのトータスは亀という意味ですね。アイコンも亀のイラストです。
少し下にスクロールするとダウンロードボタンが見えてきました。64ビットOS用の「TortoiseSVN 1.14.6-64-bit」をクリックします。ダウンロードフォルダに「TortoiseSVN-1.14.6.29673-x64-svn-1.14.3.msi」が保存されます。
※ファイル名にはこの時点のバージョン番号が含まれています。
この他に日本語版ランゲージパックもダウンロードします。さらに画面をスクロールするとランゲージパック一覧が見えてきます。
ここでJapaneseを探して、同じく64 Bitの列の[Setup]をクリックします。ダウンロードフォルダに「LanguagePack_1.14.6.29673-x64-ja.msi」が保存されます。
※ファイル名にはこの時点のバージョン番号が含まれています。
2.TortoiseSVNをインストールする
「TortoiseSVN-1.14.6.29673-x64-svn-1.14.3.msi」をダブルクリックしてインストールを開始します。
インストーラ画面が表示されます。[Next>]ボタンをクリックします。
ライセンス契約を確認して[Next>]ボタンをクリックします。
ここも[Next>]ボタンをクリックします。もし、コマンドラインのクライアントツールが必要であれば、×になっているところをチェックしてインストールします。ユーザーインターフェースで操作したいので、特に不要です。[Next>]をクリックします。
設定が終わったのでインストールを開始します。
必要なファイルがインストールされています。
インストールが完了しました。アッという間ですね。変更ログを確認したい場合はチェックボックスをチェックして、[Finish]ボタンをクリックします。クリックすると画面が消えて終了です。
日本語ランゲージパックのインストール
続いて、日本語ランゲージパックをインストールします。
1.「LanguagePack_1.14.6.29673-x64-ja.msi」をダブルクリックしてインストールする
インストーラ画面の[次へ]ボタンをクリックします。
アッと言う間にインストールは完了します。画面の[Configure TortoiseSVN to use this language]のチェックボックスをチェックして、[完了]ボタンをクリックします。チェックをすることで日本語が使用できるように設定も一緒に行われます。
以上でTortoiseSVNのインストールが完了しました。
リポジトリの作成
これでサーバーとクライアントのソフトウェアをインストールできました。これから使えるようにサーバー側のVisualSVN Serverにリポジトリを作成します。リポジトリは、簡単にいうと対象のプロジェクトやファイルをバージョン管理するための入れ物を作るイメージです。以下に手順を示します。
1.VisualSVN Server Managerを開く
Windowsの検索から「visualsvn server manager」と入力するとインストールしたVisualSVN Server Managerが検索されます。検索されたVisualSVN Server Managerをクリックして開きます。
2.リポジトリを新規作成する
左側のツリービューの「Repositories」をクリックして、右側画面でマウスの右クリックメニュー(コンテキストメニュー)の[新規作成]-[Repository…]をクリックします。
Create New Repository画面で「Regular FSFS repository」が選択されていることを確認して[Next>]ボタンをクリックします。
リポジトリの名前を入力します。ここはポイントです。初めて使う側の意思が反映されるところです。
文書ファイルとプログラムを分けて管理しようと思うので以下で行います。
01.Doc … 文書ということでDocumentsの3文字を取りました。
02.Src … プログラムのソースコードということでSourceのSrcの3文字を取りました。
01.Docの配下には分類した文書ファイルのリポジトリを作っていきます。また、02.Srcの配下には分類したプロジェクトのリポジトリを作っていきます。
リポジトリの名前として「01.Doc」を入力して、[Next>]ボタンをクリックします。
Repository Structure画面では、「Empty repository」が選択されていることを確認して、[Next>]ボタンをクリックします。
Repository Access Permissions画面で、「All Subversion users have Read/Write access」が選択されていることを確認して[Next>]ボタンをクリックします。これは、作成したリポジトリに対して、登録したユーザーすべてがアクセスできることを意味します。自分しか登録していないので当然ですね。
ちなみにの話、自分が把握できない多人数でバージョン管理システムを使用する場合は、「Nobody has access」を選択して、後でアクセスできる人を個別に設定していくのがセキュリティ上安全です。
Repository Search Indexing画面で、リポジトリ内を検索するためのインデックスを登録することを許可するかどうかというチェックボックスです。コミュニティ版をインストールしているので、現時点では検索はできないです。だからチェックを外すのが普通と思いますが、今後、有料版にアップグレードすると検索が可能になります。その時に検索用のインデックスがないと検索できないので、ここでは念のためチェックしておき、[Create]ボタンをクリックします。
Repository Created Successfully画面が表示され、リポジトリが作成されました。ここで、Repository URLの赤枠部分をメモしておきます。このRepository URLを使ってクライアント(TortoiseSVN)からサーバーのリポジトリにアクセスします。
[Finish]ボタンをクリックして画面を閉じます。
ツリービューのRepositoryの下に「01.Doc」ができました。
同様に「2.リポジトリを新規作成する」手順で「02.Src」を作ります。
リポジトリURLの確認
メモしたリポジトリのURLを忘れてしまった場合、VisualSVN Serverのプロパティで確認することができます。
VisualSVN Server Manager画面で、ツリービューの[VisualSVN Server(Local)]の右クリックメニュー(コンテキストメニュー)の[Properties]またはツールバー「」ボタンをクリックします。
VisualSVN Server Properties画面で、リストビュー[Network]をクリックすると赤枠部分でリポジトリURLを確認することができます。また、URLを変更することもできます。
TortoiseSVNからサーバーに接続
あと、もう少しです。クライアントのTortoiseSVNからVisualSVN Serverに接続して、クライアントから使えるようにします。
Windowsの検索から「tortoiseSVN repository browser」を入力して検索された「TortoiseSVN Repository Browser」をクリックします。
URL画面が表示されたら、URLにメモしておいたリポジトリURL「https://DESKTOP-9LRRO5l/svn/」を入力して[OK]ボタンをクリックします。
認証画面が表示されるので、VisualSVN Serverで登録したユーザー名とパスワードを入力して[OK]ボタンをクリックします。再度、同じような認証画面が表示された場合は同じユーザー名とパスワードを入力します。
VisualSVN Serverに接続されて、TortoiseSVN Repository Browserが開きます。
どうです?先ほど作成したリポジトリ「01.Doc」と「02.Src」が見えるようになりました。
これでバージョン管理が使えるようになりました。
はじめよう! バージョン管理
SVNを使ったバージョン管理システムができました。早速、使ってみたいと思います。バージョン管理システムではプログラムを管理するだけでなく、ワードの文書ファイル、エクセルファイル、PDFファイル、テキストファイルなどファイルというファイルを管理することができます。
例えば、ワードで文書を作成した場合、完成したと思っていても、見直す必要がでてきます。あるいは作成した文書を流用して新たな文書を作成することもあります。普段は、フォルダ名に日付をつけたり、変更内容をつけたりと工夫すると思います。しかし、だんだんフォルダが多くなってくると訳がわからなくなることも多々あります。
こういったときにもバージョン管理システムで管理することができます。
テキストファイルをバージョン管理する
ここでは、バージョン管理システムを理解しやすいようにテキストファイルを使ってバージョン管理してみます。
1.テキストファイルをSVNに登録する
ここではバージョン管理システムを単にSVNと呼ぶことにします。テキストファイルを作成します。
これは、この投稿記事の一部分をテキストファイルにしてみました。これを「SVN構築方法.txt」という名前で保存します。
どこでも構いませんが、ドキュメントフォルダに「SVN構築方法.txt」を保存します。ついでに、この後の手順のために「SVN」フォルダを作成しておきました。
TortoiseSVN Repository Browserを開きます。以後、リポジトリブラウザーと呼びます。
「01.Doc」を選択してコンテキストメニューの[フォルダーを作成]をクリックします。
[フォルダーを作成]の画面が開いたら、フォルダー名として「01.Sample」と入力し[OK]ボタンをクリックします。
[ログメッセージを入力]画面が開いたら、がメッセージ欄に「新規作成」と入力します。メッセージはなんでもよいですが、後にこのメッセージを見たときに何をしたかがわかるようにコメントを入力するとよいですね。
「01.Doc」フォルダーの下に「01.Sample」フォルダーが作成されます。このフォルダーに先ほど作成したテキストファイルを登録します。
エクスプローラーの「SVN構築方法.txt」をリポジトリブラウザーにドラッグ&ドロップしてインポート(登録)します。
同様に[ログメッセージを入力]画面が開くので、メッセージ欄に「新規登録」と入力して[OK]ボタンをクリックします。
リポジトリブラウザに「SVN構築方法.txt」ファイルが表示されます。これでリポジトリに登録したことになります。
ここがポイント。エクスプローラー上にあった「SVN構築方法.txt」はもう不要になります。リポジトリに登録したものが、今後は正となります。
2.テキストファイルをチェックアウトして編集する
登録したテキストファイルをチェックアウトして編集してみます。「チェックアウト」とは、リポジトリから、SVNに登録されている内容を、自分のローカルへ作業コピーとして情報(ここではテキストファイル)を持ってくることをチェックアウトといいます。
リポジトリブラウザの「01.Doc」を選択してコンテキストメニューの[チェックアウト]をクリックします。
[チェックアウト]画面が開いたら、[チェックアウト先のディレクトリ]欄に「C:¥Windows¥System32¥01.Doc」と表示されています。この例では、作業コピー先は事前に作成した「SVN」フォルダーに変更して、[OK]ボタンをクリックします。
作業コピー先フォルダー:C:¥Users\<ユーザー名>\Documents\SVN
※赤枠内のパス区切り文字が「 \(バックスラッシュ)」で表示されていますが、「¥」に読み替えてください。同じ意味です。
[チェックアウト終了]画面が表示されて、処理された内容が表示されています。内容を確認して[OK]ボタンをクリックします。
エクスプローラーの「SVN」フォルダー配下に「01.Doc」フォルダが作成されました。「」のマークはリポジトリと同一内容(変更されていない)という意味です。TortoiseSVNでは「通常」状態といいます。
フォルダーを掘り下げていき「SVN構築方法.txt」にたどりつきます。「01.Doc」フォルダーからチェックアウトしたので、そのサブフォルダーも再帰的にチェックアウトされます。テキストファイルも通常状態です。
「SVN構築方法.txt」をダブルクリックして開きます。メモ帳で文章を編集して上書き保存します。
どこを編集したかわかりますか?
編集したものを保存すると「」のアイコンに変わりました。TortoiseSVNでは「変更」状態といいます。リポジトリの内容から変更されていることを意味します。
ここで、リポジトリからどこがどのように変更になっているかを確認することができます。
エクスプローラー上の「SVN構築方法.txt」を選択してコンテキストメニューの[TortoiseSVN>]をクリックして[差分を表示]をクリックします。
これは、TortoiseSVNに備わっているTortoiseMerge(トータスマージ)画面です。左側(橙色)がリポジトリのテキストファイルの内容です。右側(黄色)がエクスプローラー側のテキストファイルの内容です。これら2つのファイルを比較して表示してくれます。右側において、黄色マスク部分の文章を追加し、「(保存)」と「(取得)」という言葉4か所を削除しています。ひと目でわかりますね?
このようにどこをどのように変更したかを確認しながら編集作業を進めることができます。
3.編集したテキストファイルをコミットする
最後に編集したテキストファイルをリポジトリに反映します。反映することを「コミット」といいます。
エクスプローラー上の編集したテキストファイルを選択してコンテキストメニューの[SVN コミット]をクリックします。
[コミット]画面が表示されるので、[メッセージ]欄に変更内容を記入して、[OK]ボタンをクリックします。
[コミット 終了]画面にコミット処理された内容が表示されます。内容を確認して[OK]ボタンをクリックします。
エクスプローラー上のテキストファイルは「通常」状態に変わり、リポジトリと同一の内容になったことがわかります。
通常状態のテキストファイルを選択してコンテキストメニューの[TortoiseSVN>]をクリックして[ログを表示]をクリックします。
[ログメッセージ]画面が表示されます。リビジョン「3」でコミットしたことがわかります。また、ログにより誰が、いつ変更したかもわかります。
「リビジョン」とは、ファイルに対して変更を加え,その変更を確定(コミット)するごと に上がっていく管理番号です。コミットの単位で番号が上がっていきます。したがって、複数のファイルをまとめてコミットした場合は各ファイルに同じ番号が付与されます。
ここがポイント。SVNでは、コミットはリポジトリに反映する操作のことですが、もっと重い意味があります。上述した通り、リポジトリにある情報が「正」になります。チームのように複数人で作業する場合は、編集したものを単に反映するだけでなく、編集した内容について責任をもって反映する必要があります。
ログを確認したりリビジョン間で変更点を確認したりすると、いつ、どこで、だれが、どんな不具合を入れたかが一目瞭然です。それがコミットです。
プロパティでチェックアウト先を設定する
毎度、チェックアウト先フォルダーを作業コピー先フォルダーに修正するのは、手間やミスが発生します。TortoiseSVNの設定で変更しておくことができます。
エクスプローラー上の「SVN構築方法.txt」を選択してコンテキストメニューの[TortoiseSVN>]をクリックして[設定]をクリックします。
[設定]画面のツリービュー[Dialogs1]をクリックすると、[Dialogs1]画面のチェックアウトの[デフォルトパス]に作業コピー先のドライブやフォルダーを指定しておくと便利です。
まとめ
今回は、プログラミングを2台のパソコンで同じプログラム(プロジェクト)を編集できるようにするために、バージョン管理システムを導入しました。バージョン管理には無料で使用できるVisualSVN ServerとTortoiseSVNを採用しました。大げさそうに見えますが、簡単にインストールや設定ができました。使い方もチェックアウトとコミットが理解できれば使えることがわかりました。
ひとつ手間があるとすれば、デスクトップPCがバージョン管理のサーバーになっているため、ノートPCから最新のプログラムを取得するには、デスクトップPCを起動しておく必要があるということです。これが不便と感じるようになったら、GitHubのようなクラウドサービスも考えたいと思います。