前回の記事でRedmineが使用できるようになりました。今回はGitのサーバー設定を行い、Redmineからリポジトリを参照できるようにしましょう。
目次
Gitの設定
Gitのパスを通す
ここまでの手順通りにインストールを行えば、Gitは「/opt/redmine/git/bin」にインストールされています。このままではGitコマンドを入力しても「コマンドが見つかりません」と表示され実行できないので、Gitのインストールディレクトリにパスを通します。
まずは現在のパスを確認します。
# echo $PATH
表示される結果に「/opt/redmine/git/bin」がなければパスが通っていません。次のコマンドでパスを追加します。
# export PATH=$PATH:/opt/redmine/git/bin
上記のパスの追加は一時的なもので、OSを再起動するとパスが外れてしまいます。OS起動時に自動でパスが追加されるように設定します。
テキストエディタで /etc/profile を開きます。
※テキストエディタは好きなものを使用してください。
# nano /etc/profile
開いたファイルの最終行に下記を追加します。
export PATH=$PATH:/opt/redmine/git/bin
シンボリックリンクの作成
このままの設定では、Gitクライアントからリモートリポジトリへpushした際に、「bash: git-receive-pack: コマンドが見つかりません」と表示されてしまいます。これはGitクライアントがSSH接続した際に、上記の「export」コマンドが実行されずに、pushやcloneに必要な「git-receive-pack」と「git-upload-pack」を見つけられないためです。
これらのファイルへのシンボリックリンクを作成しておきます。
# ln -s /opt/redmine/git/bin/git-receive-pack /usr/local/bin/git-receive-pack # ln -s /opt/redmine/git/bin/git-upload-pack /usr/local/bin/git-upload-pack
ユーザーの作成
GitのリモートリポジトリへはSSHを使用して接続するので、そのためのグループとユーザーを作成します。グループ名、ユーザー名は適宜置き換えてください。
まずはグループを作成します。
# groupadd gitgroup
続いてユーザーを作成し、先ほど作成したグループへ追加します。
# useradd -g gitgroup gituser
作成したユーザーのパスワードを設定します。
# passwd gituser
リモートリポジトリの作成
リポジトリ用のディレクトリを作成します。このリポジトリはプロジェクトチームの皆が使うので、直接コミットなどができないように「ベアリポジトリ」として運用します。Gitではベアリポジトリ用のディレクトリ名には「.git」を付けるのが慣例です。
中間ディレクトリも含めて、作成するディレクトリ名は適宜置き換えてください。
# mkdir -p /var/git-repos/test.git
ディレクトリの所有者を、先ほど作成したユーザーに変更します。
# cd /var/git-repos # chown gituser test.git
リポジトリの作成はGit用のユーザーで行うため、ユーザーを切り替えます。
# su gituser
ベアリポジトリを作成します。
$ cd test.git $ git init --bare --shared=true
クライアントからリモートリポジトリにpushする
これ以降の手順はWindowsのクライアントPCで行います。Gitアプリケーションをインストールしていない場合はGit for Windowsからインストールを行ってください。
バージョン管理は「誰が何のアクションを行ったか」を追跡するので、Gitクライアントには少なくともユーザー名とメールアドレスを設定する必要があります。設定していない場合はここで設定しておきましょう。まずは現在の設定を確認します。
スタートメニューから「Git Bash」を起動してコマンドを入力してください。
$ git config --list
表示されるConfigのリストに「user.name」と「user.email」の項目がない場合は、次のコマンドで追加します。
$ git config --global user.name "任意のユーザー名" $ git config --global user.email "任意のメールアドレス"
これでクライアントの準備が整いました。さっそくローカルリポジトリを作成してリモートリポジトリへpushしてみましょう。
まずはクライアントPCの任意の場所にフォルダを作成します。
※説明では「Git Bash」を使用してフォルダやファイルの作成を行いますが、Windowsのエクスプローラーを使用しても問題ありません。
$ mkdir test
作成したディレクトリへ移動します。
& cd test
リポジトリを作成します。
$ git init
作成したローカルリポジトリに、リモートリポジトリの設定を追加します。
「gituser」の部分は上記の「Gitの設定」で作成したSSH接続用のユーザーを指定します。
$ git remote add origin ssh://gituser@<サーバーのIPアドレス>/var/git-repos/test.git
テスト用のファイルを作成します。
$ touch sample
ローカルリポジトリへ追加しコミットします。
$ git add sample $ git commit -m "add sample file"
リモートリポジトリへpushします。
途中にSSHの警告「Are you sure you want to continue connecting (yes/no)?」が表示されるので「yes」と入力してください。
$ git push origin master
パスワードを聞かれるので、SSH接続用ユーザーのパスワードを入力します。
gituser@<サーバーのIPアドレス>'s password:
ここで「bash: git-receive-pack: コマンドが見つかりません」が表示される場合は、上記のシンボリックリンクの作成を行ってください。
RedmineにGitの設定を行う
Redmineにブラウザでアクセスし「管理」メニューの「設定」から「リポジトリ」タブを選択します。
「使用するバージョン管理システム」で「Git」を選択し、「リポジトリ管理用のWebサービスを有効にする」にチェックを付け、「キーの生成」をクリックしAPIキーを作成します。
新しいプロジェクトを作成します。
プロジェクトの「設定」から「リポジトリ」タブを選択し「新しいリポジトリ」をクリックします。
「識別子」に任意の文字列を入力、「リポジトリのパス」にリモートリポジトリのパス(この例では/var/git-repos/test.git)を入力し、「ファイルとディレクトリの最新コミットを表示する」にチェックを付けます。
プロジェクトの「リポジトリ」を表示して、Gitクライアントからpushしたファイルが表示されることを確認します。
以上でRedmineとGitを連携させることができました。各種開発ツールにGitの設定を行うことで、チケットとソースのバージョン管理を行うことができます。
コメント
同じことしようとしてたので、参考にさせていただきました!
次の記事も楽しみにしています(^^♪
「長い旅行に必要なのは大きなカバンじゃなく、口ずさめる一つの歌さ」