2016-11-12 9 views
3

GitHubにいくつかの公開リポジトリをホストしています。トラフィックグラフに応じてクローンを受信することがあります。多くの人が自分のコードを探してダウンロードしていると思っていますが、そのコードの性質によって、これらのクローンのほとんどがボットや検索エンジンのクローラ/スパイダーから来ていると思われます。検索エンジンを使ってgitリポジトリを見つけたら、私は通常ブラウザでコードを見て、クローンを作成する前にそれが有用かどうかを判断するということを知っています。ボット/スパイダーはパブリックgitリポジトリをクローンしますか?

gitリポジトリのクローニングが検索エンジンクローラの標準的な手法であると知っている人はいますか?

答えて

1

リポジトリのGithubページにある[Clone or download]ボタンは、リポジトリのURLを提供します。そのURLをWebブラウザで使用すると、ブラウザに表示されるHTMLページが表示されます。同じページがウェブスパイダーによっても受信されます。

ただし、GitクライアントにURLを提供すると、リポジトリファイル(リポジトリをクローン、プル、プッシュ)で操作できます。これはGitクライアントがHTTP上に構築されたGit's own protocolsのうちの1つを使用するためです。

このプロトコルを使用するために、Gitクライアントは、リポジトリのベースURLに基​​づいてURLを作成し、このURLでHTTPリクエストを送信します。 GitのURLがhttps://github.com/axiac/code-golf.git、Gitのクライアントがリポジトリの内部構造についての詳細な情報を見つけるために、以下の2つの要求のいずれかをしようとしている場合

は、たとえば、:

GET https://github.com/axiac/code-golf.git/info/refs HTTP/1.0 

GET https://github.com/axiac/code-golf.git/info/refs?service=git-upload-pack HTTP/1.0 

最初のものが呼び出されます"ダム"プロトコル(これはGithubではもうサポートされていません)、もう1つは "スマート"プロトコルと呼ばれます。 "ダム"はテキストメッセージで動作し、 "スマート"はバイナリ文字列ブロックとカスタムHTTPヘッダーで動作します。

Gitリポジトリを操作するには、Gitクライアントはサーバから受信した応答を解析し、その情報を使用して、意図した動作の正しい要求を作成して送信する必要があります。

ブラウザはGitリポジトリでプロトコルを認識できないため動作できません。万能ウェブクローラーは、ブラウザのように多かれ少なかれ機能します。通常、スタイルやスクリプト、HTMLの正しさはあまり気にしませんが、HTTPに関してはブラウザとよく似ています。

レポをクローンするには、Gitトランスポートプロトコルを理解するためにWebクローラーを特別にプログラミングする必要があります。あるいは、(より良い)GitリポジトリのURLだと思うURLを見つけたら、外部のgit cloneコマンドを実行することができます。どちらの場合でも、クローラはGitリポジトリをクローンするというこの目的を念頭に置いてプログラムする必要があります。

まるで、Webクローラー(またはWebブラウザーを使用しているユーザー)が間違ってGitリポジトリーをクローンにすることはできません。

Webクローラーは、GitリポジトリをGitリポジトリから、またはGitリポジトリを提供する他のWebサーバーから複製する必要さえありません。リポジトリに含まれるすべてのファイルのすべてのバージョンを取得するには、(Githubまたは他の)Webサーバーが提供するリンクを使用します。

+0

ありがとうございました。私はあなたの議論が理にかなっていると思うので、おそらくGitHubのクローン統計は誤解を招くかもしれません。おそらく、彼らは単に "クローン"を数え、リンクをたどってマスターブランチのジップをダウンロードするだけです。これは実際にはクローラによって何かが行われる可能性があります。 – Sean

関連する問題