[メモ] git-svnで、社のSvnと手元のGitをやり取りできるようにする
Posted: Updated:
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してるような感じですね。
参考サイト
- Subversionリポジトリと連携できるgit-svn - SourceForge.JP Magazine : オープンソースの話題満載
- git-svnの使い方を覚えた - idesaku blog
- git rebaseって超便利じゃね? - Seasons.NET
- Rebaseとトピックブランチ: プログラマの思索
- git-svn で branch を扱う - cooldaemonの備忘録
- git-svnでSVN上の複数のブランチやtrunkを扱う方法 - Hello, world! - s21g
- git svn clone - maeshimaの日記
- Pro Git - Pro Git 3.4 Git のブランチ機能 ブランチでの作業の流れ
ブランチの使いこなしをもっと知りたいっす。