自分の開発はgitで行っているけど、お客様のレポジトリがsvnというケースが少なからずあります(私の場合)
gitからcloneしてsvnにimportするまでの手順は、実行頻度が少なくていつもてこずるのでここにメモします。
以下の例はCakePHP3での例ですが、ignore周り以外は流用できます:
まず、gitからcloneする
cd /var/www/html git clone https://xxxx ./app
次にsvnに登録したくないファイルを削除する
git clone
した直後なのでリポジトリ管理したくないファイルは存在しないと思ったのですが.git
の中とかは管理対象外にしたいですよね。よってこのステップを実施します。なぜ先に削除するかというと、svnに登録したファイルを後からsvn管理外にするのは面倒だからです。
cd /var/www/html/app rm -f tmp/* rm -f tmp/cache/models/* rm -f tmp/cache/persistent/* rm -f tmp/cache/views/* rm -f tmp/sessions/* rm -f tmp/tests/* rm -f logs/* rm -rf vendor/* rm -rf ./.git rm -rf ./.github
ローカルのソースをsvnにimportする
cd /var/www/html/app svn import . svn://リポジトリのURL -m "initial import"
次に、ローカルのソースを退避する
不便なんですが、importしただけでは手元のソースがワーキングコピーになりません。
cd /var/www/html mv app app_bak
リポジトリからワーキングコピーを作る
cd /var/www/html svn co svn://リポジトリのURL ./app
ignoreを行う
gitは.gitignoreがあり、便利ですが、svnの場合はプロパティの設定でignoreします:
cd /var/www/html/app svn propset svn:ignore "*" tmp svn propset svn:ignore "*" tmp/cache/models svn propset svn:ignore "*" tmp/cache/persistent svn propset svn:ignore "*" tmp/cache/views svn propset svn:ignore "*" logs svn propset svn:ignore "*" vendor svn status
ignoreした結果をコミットする
svn commit -m "apply ignore properties"
以上です