今回は開発者向けの記事です。バージョン管理システムのGitのサーバーを自前でRaspberry Pi上に構築してソースコードを複数のPCで管理・共有しようと思います。出来るだけ単純化してシンプルにセットアップしますので「秘密鍵?公開鍵?意味わからんわ」と挫折した人でもこの通りやればできます。ちなみに今回はRaspberry PiにGitサーバーを構築していますが、一般的なLinuxサーバーでもほぼ同じです。
Gitとはなにか?どのような仕組みになっているか?はググればいくらでも出てきますので本記事では詳しくは説明しません。
1. | リポジトリ(直訳で倉庫)とは管理するソースコードそのものや履歴情報などを管理するデータベースのようなもの |
2. | ベアリポジトリはソースツリー(ソースコードが置かれている作業ディレクトリ)を含まないリポジトリ(でもソースコードは圧縮されて見えない形で保持されている) |
3. | リポジトリはクライアントにもサーバーにもある(クライアントのリポジトリで管理して任意のタイミングでサーバーとリポジトリを同期(プッシュ・プル)させることができる |
くらいが理解できていることを前提に記事を書いています。
Gitよくわからん
初めてGitを使おうとしてネットを調べたりすると、どうにも「よくわからんけど難しそう」という印象しか抱かないと思います。それはGitを開発したのがLinuxの生みの親であるリーナス・トーバルズであることから、Linux系の開発者がGitに関する記事を書いていることが多いため、Linuxユーザー視点で解説されているのが大きな理由だと思います。
特に多くの人が挫折するのがSSHの設定でしょう。これは公開鍵・秘密鍵による暗号化のためなのですが、実際にはLANの中で使うので暗号化など必要ないよというケースがほとんどではないでしょうか?Gitの解説記事ではこのSSHの設定がまるで必須かのように書かれています。しかし、実はこのSSHの設定は必須ではありません。
また、Gitサーバーを構築する際にGit用のユーザーをLinuxに追加することも同様に必須のように書かれていますが、これも必須ではありません。デフォルトのユーザーで大丈夫です。本記事ではRaspberry Piのデフォルトユーザーであるpiを前提としていますので、他のディストリビューションの場合は適時読み替えてください。
恐らくGitの公式HPのセットアップ手順にそのように記述されているので、そのまま記事にしているのでしょう。今回はこれらの必須ではない手順は省略しています。特にSSHの設定を省略すればセットアップの難易度は非常に低くなります。
Gitサーバーを超かんたん手順でインストールする方法
今回はWindowsからRaspberry Piに接続してGitサーバーをインストールします。大抵Linuxディストリビューションの場合はGitはデフォルトでインストールされていますが、インストール済の場合は最新にアップデートされます。
まずはインストール前のおまじない。
sudo apt-get update
を入力してください。
コマンドが終了したら次はGitのインストールコマンドです。
sudo apt-get install git
初回インストールの場合は途中で続行しますか?と聞かれるのでyを入力してください。
次に、Gitで共有するファイルを管理するリポジトリを配置するディレクトリを作ります。どこでも良いのですが、とりあえずpiユーザーのhomeディレクトリにgitディレクトリを作ります。「test」は任意の文字列です。「.git」をつけるのが作法らしいのでつけておきましょう。
mkdir –p /home/pi/git/test.git
作ったディレクトに移動して、そのディレクトリをGitの管理下に指定します。
cd /home/pi/git/test.git
git init –-bare
サーバー側のリポジトリはbareを指定してベアリポジトリにするのが一般的です。ベアリポジトリをネットで検索すると「管理されるデータの実体を持たない」「更新を管理する情報のみを持つ」というような解説が出てきますが、そんなことはありません。このディレクトリ内にデータも圧縮されて保持されます。でないとファイルを複数のクライントで共有できませんので当然です。
ディレクトリ内を確認してみます。
ls –al
作ったばかりで空だった「test.git」ディレクトリ内に色々とファイルやディレクトリが出来ていますね。これがこのディレクトリ内のファイルを管理するリポジトリです。先程書いたようにクライアントからプッシュされてきたファイルの実体もこのtest.gitディレクトリ内にアーカイブされて保持されます。
Gitのサーバーのセットアップはたったのこれだけです。どうです?簡単でしょ?
ちなみに、クライアントで指定するリポジトリのURIは今回の場合ですと
ssh://192.168.1.100/home/pi/git/test.git
になります。もちろんIPアドレスはご自分の環境に読み替えてくださいね。
Gitか?Subversionか?
私はWindowsでの仕事が多いので職場ではSubversionが使われています。私が選定した訳ではありませんが、最初に書いたようにGitは使ったことがない人から見ると「なにか難しそう」という印象もあるからでしょう。実際にはGitサーバーのセットアップも簡単なんですけどね。
Windowsのみの環境で言えばソースコードを共有することに関してはSubversionで特に不便もない(Macが混じるとクライアントソフトの関係でGitが多いでしょう)のですが、GitにはGit Hubがあったり、ローカルにもリポジトリがあるためにサーバーにプッシュする前の段階で、自分の変更履歴を管理することもできます。世界的にもGitがデファクトスタンダードとなっていますし、なんとなくGitを使っている方が偉い的な風潮もあります。技術者であればGitに慣れておいて損はないでしょう。
Raspberry Piに構築する場合は、私はSambaでNASを構築していますので、そこにソースコードを保存するようにしていますが、極端に大きなソースコードでないのであれば、今回の記事のようにRaspbianがインストールされているSDカードのhomeディレクトリでも十分でしょう。
ではまた!
WindowsとMacで使えるGitクライアント「Sourcetree」のインストールと最初の一歩 | |
この通りやれば出来る!Raspberry Piをセットアップ | |
Raspberry PiをDLNAサーバーにしてテレビで動画を見よう! |