[メモ] 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 のブランチ機能 ブランチでの作業の流れ
ブランチの使いこなしをもっと知りたいっす。