SubversionからGitへの移行手順

公開日:2017/05/23

この記事は、書かれてから 3 年以上経過しており、内容が古い可能性があります。

弊社のこれまでのプログラム管理方法

弊社ではさまざまな中小企業さまの社内システムを手がけておりますが、
社内システムのプログラムはお客様の重要な資産です。

これを適切に管理するために、プログラムのバージョン管理をする
Subversion を使っていましたが、徐々に Git へ移行しています。

新しく構築するものはGit にしていますが、
ずっと以前に構築したシステムのプログラムは Subversion のままでした。

しかし、以前のシステムも保守、メンテナンスを行います。
ずっと Subversion のままですと、他システムの開発環境と違うことが理由で
いろいろと問題が生じ始めました。

ここでは、そういった以前Subversionで管理していたシステムを
Git の管理下に移行する手順をメモしておきます。

 

Redmine プロジェクトで Git を作成

弊社ではチケット管理にRedmineを使っており、
これとSubversion, Git とを連携しています。

Redmine の管理画面から Git リポジトリを追加できるように
設定されていますので、管理画面から Git リポジトリを追加します。

この方法の設定手順などは省略します。

 

移行用にローカルPCに上記 Git を clone

以下を参考にしました。

 

クローン用のディレクトリを「C:\Projects\Git\testproject」とします。
ここに C:\Projects/Git/authors.txt を、以下の内容で作成します。

[bash title="authors.txt"]
j.doe = John Doe \john.doe@atlassian.com\
m.smith = Mary Smith \mary.smith@atlassian.com\
[/bash]

その後、以下の手順で Subversion から Git に移行します。

[bash]
C:
cd C:\Projects/Git

git svn clone --stdlayout --authors-file=authors.txt \<svn-url>/\<project> \<git-repo-name>
[/bash]

\<git-repo-name>は、今回の例ですと「testproject」です。

この手順は、とくに Subversion の履歴が多いと、少し時間がかかります。
終わったら、サーバーへ push します。これでほとんど終了です。

 

なお、リンク先のページでは、Subversion のブランチとタグも
Git に取り込む手順が記載されています。

手順通り行ってみたのですがうまくGitに取込できなかったので
ここでは手順を省略しています。
とりあえず過去のブランチやタグについては「移行できればいいね」
程度でしたので、弊社では捨てることにしました。

 

リモートブランチを削除できるようにする

弊社の環境では、デフォルトでリモートブランチを削除できないように
設定していますので、この手順で削除できるように変更します。

この作業は Git リポジトリのあるサーバーで行います。

[bash]
# su -
$ su apache -s /bin/bash
bash-4.1$ cd /var/opt/git/\<git-repo-name>
bash-4.1$ git config receive.denydeletes false
bash-4.1$ git config hooks.allowdeletebranch true
[/bash]

 

開発環境のgitデフォルトユーザーを設定する

開発環境は何でもかまわないのですが、
CentOSであれば以下のコマンドで、デフォルトのGitユーザーを設定します。

弊社は、一般的な作業はパソコンで行いますが、
開発は仮想CentOS上で行っていますので、
開発環境にログイン後、以下のコマンドを投入しました。

[bash]
git config --global user.name user1
git config --global user.email user1@example.com
[/bash]

また、パスワードを何度も入力するのが面倒なので、
自動記憶するようにします。

[bash]
git config --global credential.helper store
[/bash]

 

Gitにコミットしたくないものを指定する(.gitignore)

.gitignore では、コミットしたくないものを設定します。

cakephp であれば、たとえば以下のようになるでしょうか。

[bash title=".gitignore"]
app/tmp
app/Config/database.php
[/bash]

 

以上でリポジトリと開発環境のGitへの移行は完了です。

実際には開発環境の vim も、あわせて Git 用に移行しました。
これについては次回にしたいと思います。

このページの著者

イルカシステム(株)は、以下のような業務用ウェブシステムのご提案、受託開発、運用を行っております。

  1. 中小企業さま向けの社内向け営業支援、顧客管理、経営数値管理システム

    経営数値をリアルタイムで見える化し、目標達成度を常に把握することができ、顧客へのフォローもスムースになります

  2. 中小企業さま向けの受発注管理、請求入金管理、在庫管理

    御社特有の受発注業務、出荷処理をシステム化することで業容拡大への大きなお手伝いとなります

  3. 医療業界向けの業務改善システム

    ※医療業界向けに、臨床研究の無作為割付自動化のための自社サービス「 ムジンワリ 」をご提供しております。

  4. IoTシステムの開発

詳しくは ご提供サービス を参照してください。

お読みいただきありがとうございました

パスワードの文字種・文字数制限をやめるべき

スマホ対応はレスポンシブだけではない

こちらもおすすめ

システム化の相談はしてみたけれど...

中小企業のシステム導入に心強い補助金

お客様とのつながりを点数化し分析する

お客様との接点を記録することのメリット

顧客管理システムの目的は名簿作成ではない

顧客との接点を増やし売上をあげるシステム

お客様とのやりとりの記録のススメ

遠くのシステム会社が安い金額の提案をしてきたら?

システム会社に社内システムの保守を依頼するには

社内システムはできたあと、利用期間のほうが長い