[メモ] git-svnで、社のSvnと手元のGitをやり取りできるようにする

SVNとのやり取りにgit-svnを導入してみた

git-svnを使うと、Subversion(SVN)リポジトリとGitリポジトリを同期させられます。より具体的には、手元ではGitを使って開発しつつ、SVNともちゃっかりCommit, Update等のやり取りができる感じですね。

詳しいイメージは、Subversionリポジトリと連携できるgit-svn - SourceForge.JP の図が分かりやすかったです。

現在、製品開発はSVN上で行われているのですが、個人制作ブツの管理にGitHubを使い始めたことで、ローカルリポジトリを製品開発でも使いたいと思い、git-svnの導入をした次第。以下、今回は主要なトコと参考リンクのメモってことで。

ごくごく基本的な動作のメモ

今回導入にあたって初期に試してみた基本的なコマンド・動作をメモ。

SVNをGit内に取り込み

社内サーバーのSVNリポジトリから、cloneする。( trunk / branches / tags )
% git svn clone -s https://example@dav.www/svn/Production/CMS ./

gitにSVNのリポジトリが、ブランチごと取り込まれていることを確認する。
% git branch -r
  14a
  CMS-548
  ...
  ...
  ...
  trunk

あっさりといけます。

取り込んだSVNから、Gitのブランチをチェックアウト

SVNの14aから、local-14aをGitのローカルブランチとして作成
% git branch local-14a 14a

local-14aをチェックアウト
% git checkout local-14a

かんたん。

GitにSVNからのUpdate相当の処理をかける

SVNで更新のあった分をGitに取り込む
% git svn fetch

現在の作業用ブランチに、更新された14a(SVNの最新)をマージする
% git status
  On branch local-14a
% git merge 14a

git rebaseでいいらしいが、まだ試していない。

SVNにGitのローカルリポジトリのCommitを反映

変更のあったファイルをローカルのgitにコミット
% git add 'ablogcms/php/ACMS/POST/Publish/Apply.php'
% git commit -m 'コミットメッセージ'
[local-14a d03d475] コミットメッセージ
 1 files changed, 1 insertions(+), 1 deletions(-)

SVNの元の14aブランチにもコミットを反映
% git svn dcommit
Committing to https://example@dav.www/svn/Production/CMS/branches/14a ...
     M     ablogcms/php/ACMS/POST/Publish/Apply.php
Committed r398
     M     ablogcms/php/ACMS/POST/Publish/Apply.php
r398 = c0f26b19142db0f099a8d2100f52c9ac9f4935b9 (refs/remotes/14a)
No changes between current HEAD and refs/remotes/14a
Resetting to the latest refs/remotes/14a

SVNにgit pushしてるような感じですね。

参考サイト

ブランチの使いこなしをもっと知りたいっす。