LoginSignup
2
2

More than 5 years have passed since last update.

svnリポジトリをgit-new-workdirをつかって複数のbranchで運用したい

Last updated at Posted at 2013-08-30

目標:

SVNリポジトリをgitでチェックアウトして、trunk/branchそれぞれで作業したい。
あわよくば、git-new-workdirで別個の作業ディレクトリを確保したい。
おそらく、だけど、これをやるとbranchをまたがった git cherry-pick が非常にやりやすそう。

で、gglってもこんな記事しか出てこない。直接ひょっとするとあんまりお勧めできないうんようなのだろうか?? まあでも以下のように作業したら、なんとなく出来た様なので、とりあえずめでたい記念にメモ。

0.前提

svnのリポジトリは、http://somewhere/svn-repositoriesこのリポジトリには{trunk,branches,tags}と標準レイアウトである。またsvnのリポジトリにはすでにbranchがある事を前提とする(無ければ自分で作ってね ;)。

somewhere/working_dirをメインの作業ディレクトリとする。gitでいうところのmaster, svnでいうところのtrunk。

作業結果の確認にはsvnリポジトリを直接ブラウズ出来る様な仕組み(今回はUSVN)で確認しました。

1.標準レイアウト{trunk,branches,tags}のSVNリポジトリをgit svnでチェックアウト

参考: http://transitive.info/article/git/command/svn/

$ cd somewhere/working_dir
$ git svn clone -s http://somewhere/svn-repositories

( -sが標準レイアウトをそのままgitに適用してくれる )

2. svnのbranchで作業できるかを確認

参考: http://sessan.hatenablog.com/entry/2012/11/04/132746

branchの確認

$ git branch -a
* master
  remotes/origin/master
  remotes/origin/other_branch

svnのbranchを git のbranch 'my_branch'としてチェックアウト

$ git co -b my_branch remotes/other_branch
:
do something
:
$ git commit -a -m "done something"
$ git svn dcommit

するとsvnのother_branchのみ"do somethingな"変更を確認できた。

3. git-new-workdirでbranchのコピーを別ディレクトリにつくる

2の手順でローカルにremotes/other_dirのbranch,"my_branch"ができたので、これを利用する事が出来そうだ。my_branch用のディレクトリをother_dirとしようか。

$ git-new-workdir . ../other_dir my_branch
$ cd ../other_dir
:
do something
:
$ git commit -a -m "done something part2"
$ git svn dcommit

するとsvnのother_branchのみ"do somethingな"変更を確認できた!

元のディレクトリに戻って、master (trunk) で作業してみる

$cd ../working_dir
$ git co master
:
do something on master
:
$ git commit -a -m "done something on working_dir"
$ git svn dcommit

するとsvnのtrunkのみ"do something on working_dir"な変更を確認できた!

これでなんとか楽に運用できそう!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2