ในการโคลนที่เก็บ git ต้องมีชื่อของที่เก็บ เมื่อทำงานกับที่เก็บหลายแห่งอาจจำชื่อต่าง ๆ ได้ยากดังนั้นตอนนี้ฉันสงสัยว่ามีความเป็นไปได้ไหมที่จะแสดงรายการที่เก็บข้อมูลที่มีอยู่ทั้งหมดบนเซิร์ฟเวอร์ระยะไกลโดยใช้คำสั่ง git
ในการโคลนที่เก็บ git ต้องมีชื่อของที่เก็บ เมื่อทำงานกับที่เก็บหลายแห่งอาจจำชื่อต่าง ๆ ได้ยากดังนั้นตอนนี้ฉันสงสัยว่ามีความเป็นไปได้ไหมที่จะแสดงรายการที่เก็บข้อมูลที่มีอยู่ทั้งหมดบนเซิร์ฟเวอร์ระยะไกลโดยใช้คำสั่ง git
คำตอบ:
คุณจะต้องทั้งการเข้าถึงเชลล์กับเครื่องโฮสติ้งคอมไพล์-ภูตและดู params ที่ใช้ในการเรียกใช้ Git-ภูตหรือใช้ Git เว็บส่วนหน้า (เบราว์เซอร์ Repository) เรียกว่าGitWeb
โปรดอ้างถึงคำถามที่มีอยู่นี้
มีวิธีอื่น แต่ต้องการความช่วยเหลือจากผู้ดูแลระบบเซิร์ฟเวอร์ของ บริษัท คุณ Git มีส่วนหน้าเว็บที่เรียกดูได้ซึ่งเรียกว่า 'GitWeb' ซึ่งสามารถกำหนดค่าให้แสดงโครงการทั้งหมดที่ให้บริการโดย 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
เนื่องจากฉันมีสิทธิ์เข้าถึงเชลล์ไปยังเครื่องรีโมตฉันจึงสิ้นสุดการเขียน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')
ตอนนี้ฉันสามารถแสดงรายชื่อ repositores ระยะไกลทั้งหมดโดยออกคำสั่งต่อไปนี้จาก terminal:
fab lr
/var/git
หมายเหตุว่าสคริปต์นี้จะถือว่าที่เก็บคอมไพล์ตั้งอยู่ใน แม้ว่าจะเป็นกรณีปกติ แต่ก็ไม่เป็นความจริงเสมอไป
สิ่งนี้ขึ้นอยู่กับการเข้าถึงที่เก็บข้อมูลเหล่านั้นเป็นอย่างมากดังนั้นจึงไม่มีคำตอบขนาดเดียวที่เหมาะกับทุกคน:
git-daemon
และ / หรือgitweb
คุณสามารถดูการกำหนดค่าเพื่อดูว่ามันเก็บ repos และรายการเนื้อหาของไดเรกทอรีที่HEAD
(เช่นlocate HEAD | grep \/HEAD$
) แต่สิ่งนี้อาจสร้างผลบวกปลอมและมันจะแสดง repos ใด ๆ ที่เป็นไดเรกทอรีการทำงานในท้องถิ่นเพียงอย่างเดียวและไม่ถูกแชร์หรือถูกโคลนจาก แหล่งอื่น