Help us understand the problem. What is going on with this article?

Git to svn のまとめ

More than 3 years have passed since last update.

はじめに

GitLabを使っているけど、いろんなしがらみでsvnにも履歴を送らないといけないのでやったこと。

環境

使うのはsubgit。
イメージはこんな感じ。

GitLab --(pull)--> work.git --(push)--> subgit ===> svn

subgitのリポジトリにpushすればsvnに同期する。
ただしsubgitはbareリポジトリなので、subgit側からpullできない。
なので、GitLabからpullしてsubgitにpushするためのworkリポジトリを作る。
もっといいやり方がありそうな気がするけど。

subgit

subgitリポジトリを作る。

# subgit configure --svn-url https://your.svn.server/repos svn-sync-repos
# (config設定)
# subgit install svn-repos.git
# git clone svn-sync-repos work.git

work.gitにGitLabを紐づけて、イニシャルセット。

# git remote add gitlab git@your.gitlab.server:yourname/repos.git
# git pull gitlab master
# git push -u origin master

これでsvnにデータが流れるはず。

jenkinsで自動化

手作業なんてやってられないので、当然自動化する。
まずはjenkinsでGitLabからデータを取得する準備。
つっても、普通に使う場合と同じで、jenkinsの実行ユーザーのsshキーを登録する。

# sudo su - jenkins
# ssh-keygen
# (簡単のため、パスワードは空にする)

これでOK。

jenkinsジョブ

定期実行ジョブにする。リアルタイムである必要は全くないので。

イニシャルで登録した時のpush/pullをシェルまたはバッチに記述するだけ。

# git pull gitlab master
# git push -u origin master

これでうまく行ってるはず。

リアルタイムに同期したければ、ビルドトリガをそのように。

tkeydll
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away