現在開発でSVNを使っています。
でも色々と不満が。
- 集中型バージョン管理システムのため、気軽にコミットできない。
- コーディング途中に作った部分を戻したいと思っても、前回コミットしたタイミングまでしか戻せない。
- Gitを導入することを提案したが、大人の事情で不可能…
それでもGit使いたい…
ということで、git-svnを使いローカル環境でGitを使えるようにしてみます。
現在のSVNの状況
社内のSVNの運用について纏めてみます。
-
リポジトリ周り
- 社内のファイルサーバー内のリポジトリ置き場に置いてあるリポジトリからソースを取得。
- そのためSVNサーバー構築していないので、アクセスは file:// のみ。
-
運用周り
- trunkすらない…
この状態を前提として進めていきます。
環境イメージ
今回は以下のような環境を作成します。
- リモートリポジトリ:既存のSVN
- ローカルリポジトリ:Git ←New!
構築手順
0.参考資料
主に以下を参考にして構築しました。
現場がSubversionでつらい貴方へ…自分だけこっそりGitで開発する方法
Git for Windows インストール&設定
1.ツール準備
そもそもPCにGitが入っていなかったので、Git環境の構築から進めます。
準備したのは以下。
- Git for Windows
- 後にSouceTreeを上げていますが、内蔵のGitではなくシステムの物を使いたいため。
- SourceTree
- おなじみのGUIクライアントツール。まだGit初心者のため、コマンド操作に不安があるので…
システムのSubversionは既に導入済みのため今回は用意しませんでしたが、svnserveを使えるようにしておく必要があります。
準備したツールの初期設定は割愛します。
2.svnserveの設定
過去にも構築にチャレンジしたことがあるのですが、
ネットワークドライブにアクセスする必要があるからか、 file://
では git svn clone
できませんでした。
svn://
であればアクセスが可能になるという情報をここで見つけたので、これを参考にしてみます。
自分のPC内で完結させたいため、svnserveをローカルで立ち上げます。
svnserve.exe -d --root [リポジトリのパス]
会社のリポジトリ置き場の構成がフォルダ入れ子が酷く複雑なため、大元のリポジトリ置き場に設定しようとした場合、cloneできませんでした。
そのためリポジトリを直接指定し、svnserveの呼び出しをバッチファイル化してあります。
裏でコマンドプロンプトが立ち上がりっぱなしになるけど我慢…
根本的な解決をしたいところ。
3.既存のSVNからローカルリポジトリを取得
上記のSVN環境を考え、以下のとおりコマンドを入力。
git svn --prefix svn/ svn://localhost [ローカルリポジトリ名]
trunkが存在しない上、trunkに相当するディレクトリが存在しないという欠陥SVNのため
特にオプションを指定していません。
強いて言うなら --prefix
オプションとローカルリポジトリ名を指定したくらい。
これでローカルリポジトリでソースをコミットできるようになりました。やったね!
SourceTreeの設定についても特別なことはしていないため、割愛します。
現環境の問題点
ローカルコミットはできますが、SouceTreeからSVNにプッシュできない状態に…
ローカルでsvnserveを動かしているのが原因なのかどうなのかをちょくちょく調べています。
早いところ解決しなければ…
まとめ
まだ全ての問題が解決した訳ではありませんが、現時点で開発自体は大分効率化したと思います。
ローカルリポジトリ内ならブランチも切り放題だし、これまで不自由してた部分は大分解決しそうです。