LoginSignup
1
7

More than 5 years have passed since last update.

subversion->gitlabへのリポジトリの移行

Last updated at Posted at 2017-07-07

注意事項

  • 実験の記録なので細かいことは無視してください
  • subversionのtrunkの使い方が独自
  • gitlabって書いてるけどたぶんgitでもOK
  • たぶんsubvsersionの環境は関係ない

対象読者

- とにかくsvbversion->gitlabにしたい

前提条件

  • gitlabがどこかのLinuxサーバにインストールされてる。
  • ローカルのwindowsにgitが入っている。

再現環境

-サーバー
OS:rhel6
GitLab:Community Edition 9.3.0
git:2.11
subversion:1.6.11

-ローカル
OS:windows7
git:2.10

subversionの状態

trunkの下に各プロジェクトのソースを置いてしまった
-trunk
├ projectA
├ projectB <- 対象はこれ
├ projectC


1.Subversionのサーバにログインしてauthorのリストを作成する。

command
svn log http://(reposryサーバのURL)/trunk/projectB --xml | grep -P "^<author" | sort -u | \perl -pe 's/<author>(.*?)<\/author>/$1 = $1 <$1\@XXXXXX.co.jp> /' > (リストの掃出し先)

とやると

list
fujico = fujico <fujico@XXXXXX.co.jp> 
fujigo = fujigo <fujigo@XXXXXX.co.jp> 

というような工程6で使うgitlabに移植されるユーザの改訂履歴のマッピングデータができる。

2.GitlabにAuthorのリストに対応したユーザを作る

(1と2の作業いらない?未検証)

3.Gitlabでリポジトリを作る
 readme.md以外は空のリポジトリを作る
 移行先の名称は任意です。このタイミングで変えたい場合はかえる。
(今回サンプルで使うリポジトリの例)
http://(gitサーバのURL):8080/xxxx/projectB.git

4.ローカルのPCにgitの作業用ディレクトリを作成
 (例)c:\src_dir\test

5.DOCプロンプト作業ディレクトリに移動

msdosコマンド
 cd c:\src_dir\test

6.次のコマンドを実行する
 次のコマンドを実行するとsubversionの形式からgitの形式に移行されたローカルリポジトリがc:\src_dir\testにできます。
 サーバにpushまでされません。
msdos:msdosコマンド
git svn clone -A c:\(保存先)\工程1で作ったリスト --trunk=http://(reposryサーバのURL)/trunk/projectB http://(gitサーバのURL):8080/xxxx/projectB.git

 この後、移行スクリプトが流れます。

7.ローカルリポジトリのprojectB.gitを確認
 完了したc:\src_dir\testにprojectB.gitができていることを確認

8.リモートリポジトリの内容をマージ
 出来上がったローカルリポジトリをリモートにpushする前に
 工程3でsubversionになかったreadmeファイルの差分ができています。
 なのでマージする必要があります。単純にマージするとエラーを吐きます。
msdos:msdosコマンド
cd c:\src_dir\test\projectB.git

msdosコマンド
> git merge
(エラーメッセージ)
fatal: refusing to merge unrelated histories

 
9.なので無視するコマンドを実行する。

msdosコマンド
> git merge --allow-unrelated-histories origin/master

10.移行内容をローカル->リモート
 移行内容をgitに内容をpushして完了

1
7
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
1
7