&tag(git-svn);
*目次 [#vadb0409]
#contents
*関連ページ [#sbf13a3f]
-[[git]]
*参考情報 [#rc396c37]
-[[備忘録:git-svn運用 | コインいっこいれる:http://www.kurokuru.com/wordpress/?p=147]]
*基本 [#l1b8208c]
**開始 [#y16299ab]
-trunkだけ扱えればよいのであれば以下のコマンドでOK。
git svn clone {SVNで使っているプロジェクトのURL}
-過去のリビジョンが不用な場合はHEADを指定する。
git svn clone -r HEAD {SVNで使っているプロジェクトのURL}
-ブランチやタグを扱いたい場合、-sオプションを使う。
-認証情報は、Windowsの場合c:\Users\ユーザー名\.subversion\auth\svn.simple以下に保存される。保存しないこともできる。
***.svnignoreの反映 [#v49ed373]
- git svnで使い続けたい場合、以下のコマンドを実行。
git svn show-ignore >> .git/info/exclude
- gitに完全移行する場合(これがおすすめ)
git svn show-ignore > .gitignore
-または(ただし.gitignoreがたくさん作られる)。
git svn create-ignore
*** プロジェクト設定の変更 [#nb4b152b]
-Eclipseの場合、「チーム>切断」でsvnから切断。「チーム>プロジェクトの共用」でGitを選択する。
**pull [#lf1d7d98]
git svn rebase
**push [#u60080fb]
git svn dcommit
**svnリポジトリを確認 [#j56ce4ab]
git svn info
*Tips [#udeebb67]
**Authorの問題 [#y78c3c02]
-Authorなどの情報はどうなる、[[svn から git に author 情報を引き継ぎ移行するメモ - masakiのはてなダイアリー:http://d.hatena.ne.jp/ikasam_a/20090206/1233938876]]。
-Author.txtにマッピングファイルを準備しておくとよいらしい。さらにsvn.authorsfileというものgit config --globalで設定できるらしい。
**トピックブランチのコミットログの問題 [#bb9e58b3]
-[[git-svn 利用時にトピックブランチを master へマージするときどの方法が一番良いのか - 刺身☆ブーメランのはてなダイアリー:http://d.hatena.ne.jp/a666666/20110825/1314290880]]にまとめられている。
-トピックブランチ(git local)をmasterにマージするとき、
--単なるmerge: オプションをつけない場合、それぞれのcommitがsvnのログにも反映される。
--"--no-ff": 単一のマージコミットにまとめられる。ログも自動的に付けられてしまうので、--no-ff --no-commitにしてマージするけどコミットしない状態にするのが良いかもしれない。
--"--squash"だとgitのログ上もマージ履歴がのこらない。
-"--no-ff --no-commit"としてgitの履歴にマージ履歴を残しつつ、マージコメントを編集して、その単位でsvnに反映するのが一番よいかも。
**Subversionからgitに完全に以降したい場合 [#r80a2893]
-git svn cloneし、git ignoreを準備し、適当なurlにpushする。[[Subversionのリポジトリからgitリポジトリに移行する - 作業ノート:http://te2u.hatenablog.jp/entry/2014/09/16/173732]]
***svn remote関連を削除 [#ra592403]
-SourceTreeでそのままだと"Subversion"がリモートに残ってうっとうしい。
--[[git-svn のレポジトリからsvnを抜く - Qiita:http://qiita.com/toshikiw/items/56c57d12566cffa9e3fe]]
--[[git svn - How to remove subversion remote in git? - Stack Overflow:http://stackoverflow.com/questions/12013788/how-to-remove-subversion-remote-in-git]]
-以下の手順を実行。
--.git/configを編集して以下の部分を削除。
#pre{{
[svn-remote "svn"]
url = url-of-svn-repository/trunk
fetch = :refs/remotes/git-svn
}}
--.git/svnを削除。
*トラブルシューティング [#w726d1cd]
**過去のリビジョンが取得できない [#j5c4e18d]
-[[git svn - Getting complete history of an SVN repo that's been renamed using git-svn - Stack Overflow:http://stackoverflow.com/questions/6514611/getting-complete-history-of-an-svn-repo-thats-been-renamed-using-git-svn]]にあるように、Subversionでリネームしたディレクトリは追随できない。諦めるのが簡単。