git을 사용하여 기존의 모든 리포지토리를 나열하는 방법이 있습니까?


22

자식 저장소를 복제하려면 저장소 이름이 있어야합니다. 많은 저장소로 작업 할 때 다른 이름을 모두 기억하기가 어려울 수 있으므로 이제 git 명령을 사용하여 원격 서버의 기존 저장소를 모두 나열 할 수 있는지 궁금합니다.


질문을 편집하지 않고 별도의 답변으로 답변을 게시 할 수 있습니까?
Mateusz Konieczny

답변:


8

git-daemon을 호스팅하는 컴퓨터에 쉘 액세스가 필요하고 git-daemon을 호출하는 데 사용되는 매개 변수를 보거나 GitWeb 이라는 Git 웹 프론트 엔드 (리포지토리 브라우저)를 사용해야 합니다.

이 기존 질문 도 참조하십시오

다른 방법이 있지만 회사 서버 관리자의 도움이 필요합니다. Git은 git이 제공하는 모든 프로젝트를 표시하도록 구성 할 수있는 'GitWeb'이라는 검색 가능한 웹 프론트 엔드를 제공합니다.

자세한 내용은 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. 이것은 일반적으로 그렇지만 항상 사실은 아닙니다.
Dave Sherohman

0

이것은 해당 리포지토리에 액세스하는 방법에 크게 의존하므로 실제로 단일 크기에 맞는 대답은 없습니다.

  • repos가 git-daemonand / or에 의해 제공되는 경우, gitweb구성을보고 repos를 보관할 위치를보고 해당 디렉토리의 내용을 나열 할 수 있습니다.
  • 저장소가 ssh를 통해 액세스되면 파일 시스템의 어느 위치 에나 위치 할 수 있습니다. HEAD(예 :) 라는 파일을 포함하는 시스템의 모든 디렉토리를 찾아서 찾을 수 있어야 locate HEAD | grep \/HEAD$하지만, 이것은 오 탐지 (false positive)를 생성 할 수 있으며 로컬 작업 디렉토리 일 뿐이며 공유되지 않았거나 복제 된 모든 저장소를 표시합니다. 다른 출처.
  • 리포지토리가 gitlab 에 의해 관리 된다면 , 그것들은 전혀 파일 시스템에 있지 않으므로 gitlab 웹 인터페이스를 사용하여 그것들을 나열해야합니다. 액세스 권한이 없으면 일부 리포지토리가이 목록에서 숨겨 질 수 있습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.