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プロトコルが使えるよ
『おおっ?』と思ったところ、直にSVNプロトコルでお話できるらしいではありませんか!
早速コマンドラインで試すと、問題なく svn coできます。Git上のmasterはtrunkに相当する感じです。逆に、ローカルのsvnのリポジトリを、GitHubの空っぽのリポジトリにpushすると、trunk -> master に割り振りとなりました。
そうこうしているうちに、『もしかして、RedmineからSubversionリポジトリとして参照できちゃう?』と考えました(^^;
RedmineからSubversionとしてアクセスさせてみた
で、やってみました。
....問題ございません、できました....。
上記はgitでコツコツいじっているリポジトリですが、Subversionとしてアクセスすると、trunk, branches, tags というブランチに変換されて連携しています。タグ、ブランチも、それぞれ tags, branches以下で表示されます。
また、リビジョン番号に至っては、律儀にハッシュでなく番号に変化されて表示されますので、『何回コミットしてんの?』というのは意外に分かりやすい!
一方、まっとうな感じでGitリポジトリとして参照させた場合は、下記のような感じです。
コマンドラインからも確認しよう!
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も見つけたのですが、コメントの最後のほうにある通り、試しても現在は失敗しちゃうみたいです。
コメント
コメントを投稿