web-dev-qa-db-ja.com

gitを使用してすべての既存のリポジトリを一覧表示する方法はありますか?

Gitリポジトリのクローンを作成するには、リポジトリの名前が必要です。多くのリポジトリで作業している場合、すべての異なる名前を覚えるのは難しいため、いくつかのgitコマンドを使用してリモートサーバー上のすべての既存のリポジトリを一覧表示できるかどうか疑問に思っています。

24
Cyclonecode

Git-daemonをホストしているマシンへのシェルアクセスが必要で、git-daemonの呼び出しに使用されるパラメーターを確認するか、または GitWeb と呼ばれるGit Webフロントエンド(リポジトリブラウザー)を使用します。

この既存の 質問 も参照してください

他の方法が1つありますが、会社のサーバー管理者の支援が必要です。 Gitには、GitWebと呼ばれる閲覧可能なWebフロントエンドがあり、gitが提供するすべてのプロジェクトを表示するように構成できます。

詳細はGitWebで説明されていますREADME-対象の設定キーは「GITWEB_PROJECTROOT」と呼ばれます:

GITWEB_PROJECTROOT The root directory for all projects shown by gitweb. Must be set correctly for gitweb to find repositories to display. See also "Gitweb repositories" in the INSTALL file for gitweb.

多分あなたはあなたとあなたの管理者と話し合うことができます-gitwebはすべての開発者にとって大きな利益になることができます。

私の知る限り、これはgit-daemonを実行しているマシンで行う必要があります。 git-daemonが呼び出された場所の引数を確認するか、/ etc/inetd.confを確認する必要があります

8
IUnknown

リモートマシンへのシェルアクセスがあったため、ターミナルから実行してすべてのリモートリポジトリを一覧表示できる小さなfabricスクリプトを作成しました。

#!/bin/python

from fabric.api import run, env
from fabric.colors import green 

env.hosts = ['<hostname>'];
env.user = '<user>';
env.password = '<password>';

def lr():
  "Lists all remote repositories"
  print(green("listing remote repos"))
  run('cd /var/git; ls -al')

端末から次のコマンドを発行して、すべてのリモートリポジトリを一覧表示できます。

fab lr
0
Cyclonecode

これは、これらのリポジトリへのアクセス方法に大きく依存しているため、実際には単純な万能の答えはありません。

  • リポジトリがgit-daemongitwebによって提供されている場合は、configを調べて、リポジトリが保持されている場所を確認し、そのディレクトリの内容を一覧表示できます。
  • リポジトリがssh経由でアクセスされる場合、ファイルシステムのどこにでも配置できます。 HEAD(例:locate HEAD | grep \/HEAD$)という名前のファイルを含むシステム上のすべてのディレクトリを検索することでそれらを見つけることができるはずですが、これにより誤検知が発生する可能性があり、ローカルの作業ディレクトリであり、共有されていないか、別のソースから複製されました。
  • リポジトリが gitlab で管理されている場合、それらはファイルシステムにまったくないため、gitlab Webインターフェイスを使用してそれらを一覧表示する必要があります。それらにアクセスする権限がない場合、一部のリポジトリはこのリストから非表示になる可能性があることに注意してください。
0
Dave Sherohman