ฉันพบสิ่งนี้หลังจากทำงาน locate git-shell-commands
cat /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands/README
โปรแกรมตัวอย่างสามารถเรียกใช้ได้ผ่าน git-shell วางไดเร็กทอรีชื่อ 'git-shell-command' ในโฮมไดเร็กทอรีของผู้ใช้ที่เชลล์คือ git-shell จากนั้นทุกคนที่เข้าสู่ระบบในฐานะผู้ใช้นั้นจะสามารถเรียกใช้ไฟล์ปฏิบัติการได้ในไดเรกทอรี 'git-shell-command'
คำสั่งที่ให้ไว้:
ช่วย: พิมพ์ชื่อของคำสั่งที่มีอยู่ เมื่อทำงานแบบโต้ตอบ git-shell จะเรียกใช้ 'ความช่วยเหลือ' โดยอัตโนมัติเมื่อเริ่มต้นหากมีอยู่
รายการ: แสดงที่เก็บเปลือยใด ๆ ที่มีชื่อลงท้ายด้วย ".git" ภายใต้ไดเรกทอรีบ้านของผู้ใช้ ไม่มีที่เก็บ git อื่นที่มองเห็นได้แม้ว่าจะสามารถทำการโคลนผ่าน git-shell ได้ 'รายการ' ถูกออกแบบมาเพื่อลดจำนวนการเรียกไปยังคอมไพล์ที่ต้องทำในการค้นหาที่เก็บข้อมูลที่มีอยู่ หากการตั้งค่าของคุณมีที่เก็บข้อมูลเพิ่มเติมที่ผู้ใช้สามารถค้นพบได้คุณอาจต้องการแก้ไข 'รายการ' ตามนั้น
ดังนั้นฉันจึงรันคำสั่งต่อไปนี้เป็น root:
cp /usr/share/doc/git-1.7.4.4/contrib/git-shell-commands /home/git -R
chown git:developers /home/git/git-shell-commands/ -R
chmod +x /home/git/git-shell-commands/help
chmod +x /home/git/git-shell-commands/list
exit
ฉันสามารถเรียกใช้สิ่งต่อไปนี้ในฐานะgit
ผู้ใช้:
[me@svn ~]$ su git
Password:
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> help
Run 'help' for help, or 'exit' to leave. Available commands:
list
git> list
git> exit
ตอนนี้ฉันไม่เห็นความช่วยเหลือและรายการที่ดี แต่การเข้าสู่ระบบใช้งานได้ :)
git-shell
เป็นเปลือก จำกัด เพื่อนำไปใช้สำหรับการทำงานผลัก / ดึงเท่านั้น (เช่นgit push
,git fetch
และgit pull
) มันไม่ได้เป็นแบบอินเทอร์แอคทีฟดังนั้นคุณไม่ควรลงชื่อเข้าใช้ในเชลล์แบบโต้ตอบ คุณสามารถทำให้มันค่อนข้างโต้ตอบโดยการเพิ่มgit-shell-commands
ไดเรกทอรีในบ้านของผู้ใช้และเชื่อมโยงไบนารีบางอย่างภายใน แต่มันมีข้อ จำกัด มาก (cd
ยกตัวอย่างเช่นไม่มีไบนารี) ดังนั้นทางเลือกที่ดีกว่าคือการเข้าสู่ระบบในฐานะผู้ใช้ที่root
มีความsudo
สามารถและทำได้sudo -u git -s
เพื่อรับbash
เชลล์เต็มใต้git
ผู้ใช้