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


22

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


質問の編集としてではなく、個別の回答として回答を投稿できますか?
マテウスコニエチュニー

回答:


8

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を確認する必要があります


0

リモートマシンへのシェルアクセスがあったため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

このスクリプトは、gitリポジトリがにあることを前提としていることに注意してください/var/git。これは一般的なケースですが、常にそうであるとは限りません。
デイブシェロマン

0

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

  • リポジトリがgit-daemonおよび/またはによって提供されている場合、構成gitwebを見て、リポジトリの保存場所を確認し、そのディレクトリの内容を一覧表示できます。
  • リポジトリにssh経由でアクセスする場合、ファイルシステム内のどこにでも配置できます。HEAD(たとえばlocate HEAD | grep \/HEAD$)という名前のファイルを含むシステム上のすべてのディレクトリを検索することでそれらを見つけることができるはずですが、これは誤検知を引き起こす可能性があり、ローカル作業ディレクトリのみで共有されていない、またはクローンされたリポジトリも表示されます別のソース。
  • リポジトリがgitlabによって管理されている場合、それらはファイルシステムにまったく存在しないため、gitlab Webインターフェースを使用してリストする必要があります。リポジトリにアクセスする権限がない場合、一部のリポジトリがこのリストに表示されない場合があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.