有没有办法使用git列出所有现有的存储库?


22

为了克隆一个git仓库,必须有一个名字。当使用许多存储库时,可能很难记住所有不同的名称,所以现在我想知道是否可以使用某些git命令列出远程服务器上的所有现有存储库。


您可以将答案作为单独的答案发布,而不是对问题进行编辑吗?
Mateusz Konieczny

Answers:


8

您可能需要Shell访问托管git-daemon的计算机并查看用于调用git-daemon的参数,或者使用称为GitWeb的Git Web前端(资源库浏览器)。

另请参阅此现有问题

还有另一种方法,但是需要公司服务器管理员的帮助。Git具有一个可浏览的Web前端,称为“ GitWeb”,可以将其配置为显示git服务的所有项目。

详细信息在GitWeb自述文件中进行了说明-感兴趣的配置键称为“ 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

这在很大程度上取决于如何访问这些存储库,因此实际上并没有一个简单的“一刀切”的答案:

  • 如果repos由git-daemon和/或提供gitweb,您可以查看配置以查看保留其repos的位置并列出该目录的内容。
  • 如果通过ssh访问该回购协议,则它们可以位于文件系统中的任何位置。您应该能够通过在系统上查找包含名为HEAD(例如locate HEAD | grep \/HEAD$)的文件的所有目录来找到它们,但这可能会产生误报,并且还会显示所有仅为本地工作目录且未共享或从其克隆的存储库另一个来源。
  • 如果回购协议由gitlab管理,则它们根本不在文件系统中,因此您需要使用gitlab Web界面列出它们。请注意,如果您没有访问权限,则某些仓库可能会从此列表中隐藏。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.