Có cách nào để liệt kê tất cả các kho lưu trữ hiện có bằng git không?


22

Để sao chép kho git, người ta phải có tên của kho lưu trữ. Khi làm việc với nhiều kho lưu trữ, thật khó để nhớ tất cả các tên khác nhau, vì vậy bây giờ tôi tự hỏi liệu có thể liệt kê tất cả các kho lưu trữ hiện có trên máy chủ từ xa bằng cách sử dụng một số lệnh git.


Bạn có thể đăng câu trả lời của bạn dưới dạng một câu trả lời riêng thay vì chỉnh sửa câu hỏi của bạn không?
Mateusz Konieczny

Câu trả lời:


8

Bạn sẽ cần truy cập Shell vào máy lưu trữ git-daemon và xem các thông số được sử dụng để gọi git-daemon hoặc sử dụng giao diện Git Web (trình duyệt Kho lưu trữ) được gọi là GitWeb .

Cũng tham khảo câu hỏi hiện có này

Có một cách khác nhưng nó cần một số trợ giúp của quản trị viên công ty bạn. Git có một giao diện web có thể duyệt được gọi là 'GitWeb', có thể được cấu hình để hiển thị tất cả các dự án được cung cấp bởi git.

Chi tiết được giải thích trong GitWeb README - khóa cấu hình quan tâm được gọi là "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.

Có lẽ bạn có thể nói chuyện với quản trị viên - gitweb có thể là một lợi nhuận lớn cho tất cả các nhà phát triển.

Theo như tôi có thể nói, điều này cần phải được thực hiện trên máy đang chạy git-daemon. Bạn cần phải kiểm tra các đối số nơi git-daemon được gọi hoặc có thể kiểm tra /etc/inetd.conf


0

Vì tôi có quyền truy cập shell vào máy từ xa nên cuối cùng tôi đã viết một đoạn fabricscript nhỏ có thể chạy từ thiết bị đầu cuối để liệt kê tất cả các kho lưu trữ từ xa:

#!/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')

Bây giờ tôi có thể liệt kê tất cả các repositor từ xa bằng cách phát lệnh sau từ thiết bị đầu cuối:

fab lr

Lưu ý rằng tập lệnh này giả định các kho git được đặt trong /var/git. Trong khi điều này thường xảy ra, nó không phải lúc nào cũng đúng.
Dave Sherohman

0

Điều này phụ thuộc rất nhiều vào cách các kho lưu trữ được truy cập, vì vậy thực sự không có câu trả lời một kích cỡ phù hợp cho tất cả:

  • Nếu các repos đang được phục vụ bởi git-daemonvà / hoặc gitweb, bạn có thể nhìn vào cấu hình để xem nơi nó giữ các repos của nó và liệt kê nội dung của thư mục đó.
  • Nếu các repos được truy cập thông qua ssh, thì chúng có thể được đặt ở bất cứ đâu trong hệ thống tập tin. Bạn sẽ có thể tìm thấy chúng bằng cách tìm kiếm tất cả các thư mục trên hệ thống có chứa một tệp có tên HEAD(ví dụ locate HEAD | grep \/HEAD$), nhưng điều này có thể tạo ra dương tính giả và nó cũng sẽ hiển thị bất kỳ repos nào chỉ là thư mục làm việc cục bộ và không được chia sẻ hoặc được sao chép từ một nguồn khác.
  • Nếu các repos được quản lý bởi gitlab , thì chúng hoàn toàn không nằm trong hệ thống tập tin, vì vậy bạn cần sử dụng giao diện web của gitlab để liệt kê chúng. Lưu ý rằng một số repos có thể bị ẩn khỏi danh sách này nếu bạn không có quyền truy cập chúng.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.