GitHub EnterpriseのリポジトリをSVNプロトコルでRedmineから直に参照....。

長いタイトルですみません…。
どなたかすでに試していらっしゃるかと思うのですが、実際やってみて「へぇ~」という思いでしたので、久しぶりにPOSTしてみます。

はじめに:Redmineで分散SCMが面倒くさい

RedmineとGitリポジトリの連携の場合は、Redmineが参照できるローカルなファイルシステム上に、Bare(もしくはmirror)リポジトリをCloneしておいて、そこを示すようにしないといけません。(Subversionの場合は、httpでアクセス可能であれば、ローカルにリポジトリを持つ必要はありません)

せっかくhttp的には参照可能なところにGitのリポジトリがあっても、なんだか面倒...。

いろいろ試し、Gitに変更が入ったら、ミラーのリポジトリにpushするようServiceHookを使うことで、若干のタイムラグはあるもののRedmine側のリポジトリブラウザに反映させることはできました。

その上で...。

たまたま誰かがRetweetして下さった、下記のTweetを発見。

GitHubならSVNプロトコルが使えるよ

github-tweet

『おおっ?』と思ったところ、直にSVNプロトコルでお話できるらしいではありませんか!

早速コマンドラインで試すと、問題なく svn coできます。Git上のmasterはtrunkに相当する感じです。逆に、ローカルのsvnのリポジトリを、GitHubの空っぽのリポジトリにpushすると、trunk -> master に割り振りとなりました。

そうこうしているうちに、『もしかして、RedmineからSubversionリポジトリとして参照できちゃう?』と考えました(^^;

RedmineからSubversionとしてアクセスさせてみた

で、やってみました。

github-svn

....問題ございません、できました....。

上記はgitでコツコツいじっているリポジトリですが、Subversionとしてアクセスすると、trunk, branches, tags というブランチに変換されて連携しています。タグ、ブランチも、それぞれ tags, branches以下で表示されます。

また、リビジョン番号に至っては、律儀にハッシュでなく番号に変化されて表示されますので、『何回コミットしてんの?』というのは意外に分かりやすい!

一方、まっとうな感じでGitリポジトリとして参照させた場合は、下記のような感じです。

github-svn-2

コマンドラインからも確認しよう!

RedmineはSubversionリポジトリのデータを、 svn list --xml というコマンドで取得しています。(subverson_adapter.rb を参照)

コマンドラインで対象のリポジトリを叩くと、XMLでデータが返ってくればバッチリです。

 

$ svn list --xml https://githubのどこかのリポジトリのURL/
 
<?xml version="1.0"?><lists>
<list   path="https://githubのどこかのリポジトリのURL">
<entry   kind="dir">
.............................
</entry>
</list>
</lists>



もしかすると証明書の関係で、下記のようなダイアログが出てくるかもしれませんが、

Error validating server certificate for 'https://github.com:443'

acceptすれば、ちゃんとXMLでデータが取れるようになりました。Redmine からうまく見えてくれないなーという場合も、このエラーで引っかかっている可能性があります。

ぶっちゃけ、ソースの確認だけな らSubversionとして連携させてしまうのもありかも...と思いました。

補足:Bitbucketは?


ちなみに、Bitbucketはどうなんだろう思い、下記のURLも見つけたのですが、コメントの最後のほうにある通り、試しても現在は失敗しちゃうみたいです。


コメント

人気の投稿