web-dev-qa-db-ja.com

git URLからWebベースのバージョン管理アプリケーションのタイプを知る方法はありますか?

バックグラウンド

私はいくつかのサービスをgitWebホスト(つまり、github、gitlab、bitbucketなど)の上に追加する機能を研究しています。それらが何と呼ばれているのかさえわかりません。その用語を github wiki )。

私がやろうとしていることの例は、スプレッドシートをそのようなgit web Hostの1つと統合して、ユーザーがスプレッドシートに新しい行を追加するたびに、その行の内容に関する問題が自動的に作成されるようにすることです。

当然、これらのWebホストには、これらのことを実行するさまざまなAPIがあります。私はそれらをファサードか何かで包むことができますが、それでもウェブホストの種類を知る必要があります。

問題

Gitリポジトリがクラウドバージョンのウェブホスト(つまり、Gitlabクラウドまたはgithub)でホストされている場合、ウェブホストの種類を知ることは、リポジトリ自体から直接簡単です。たとえば、次のリポジトリです。

https://github.com/facebook/buck.git 

明らかにgithubからです。ただし、これらのプロバイダーの中には、ユーザーが自分のマシンにgihtubホスティングサービスをインストールする機能を提供しているものもあります。たとえば、awsマシンにgitlabをインストールできるため、上記のバージョン管理は次のようになります。

https://mydomain.com/facebook/buck.git 

質問

プロバイダーのクラウドではなく、ユーザーサーバーにインストールされているリポジトリに関連付けられているgit webhostの種類を知るにはどうすればよいですか?

2
abbood

適切に設計されたWebAPIには通常、現在サポートされているエンドポイントのバージョンを検出する方法があります。たとえば、curl https://api.github.comの場合、APIがサポートするすべてのエンドポイントカテゴリのリストが表示されます。これにより、個々のコンポーネントのカスタマイズとスムーズなアップグレードが可能になります。

ユースケースでは、issues_urlのエントリがあるかどうかを確認し、そのエンドポイントがgithubのように応答するかどうかを確認すると、それがgithubサーバーであることがわかります。そうでない場合は、他の種類のサーバーに対してこのプロセスを繰り返すことができます。サーバーの種類がわかれば、後で使用できるように保存して、推測を避けることができます。いくつか間違った推測をした場合、最悪の事態はログ内の奇妙な404です。

2
Karl Bielefeldt

少なくとも一般的にはできません(とにかく、自動検出可能なAPIが実際に問題になるまでは)。ただし、いずれの場合も限られたAPIセットをサポートする必要があり、実際にインターフェイスを使用する人間は、そのようなシステムのホストをかなりよく知っていると予想されるため、選択する簡単なリストを提供するのはどうでしょうか。からのウェブホストのタイプ?

0
l0b0