Git บริการ: ฉันต้องการมันง่ายที่


139

ฉันต้องการทราบวิธีเผยแพร่ผ่าน http = เหมือนบริการปรอทของMercurial ! ในกล่อง Windows / work ให้ทำสิ่งนี้:

git serve 

และจากนั้นในกล่อง Linux ง่ายไป:

git clone http://project project 

เสร็จ


คุณทราบหรือไม่ว่าการโคลนโคลน git-svn ของ svn repo นั้นยุ่งยาก subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

ทำไมไม่เพียงติดตั้ง svn บนโฆษณาโน้ตบุ๊ก linux ของคุณใช้เช็คเอาท์จากที่เก็บโครงการโดยตรง Git อาจร้อนแรงใหม่ แต่จริง ๆ แล้วดูเหมือนว่าคุณกำลังทำให้ชีวิตของคุณซับซ้อนโดยไม่จำเป็นในกรณีนี้
bendin

ไม่งอฉันไม่รู้ว่ามันเป็นเรื่องยุ่งยากเพราะฉันกำลังตั้งค่าสภาพแวดล้อมในขณะนี้ฉันดีใจที่คุณพูด ...
Setori

1
ประการแรก: สมุดบันทึกของฉันไม่ได้รับอนุญาตให้ใช้กับ VPN นี้ดังนั้นฉันจึงไม่สามารถเข้าถึง svn ได้โดยตรง ประการที่สอง: ฉันต้องการส่งมอบพื้นที่เก็บข้อมูลของตัวเองจุดรวมของการใช้คอมไพล์คือฉันสามารถทำคอมมิชชันสาขาและการผสานอย่างไม่ลำบาก ฉันพบว่าใช้ svn ตอนนี้ค่อนข้างเป็นตะคริว
Setori

หากคุณติดตั้ง Python ไว้git instaweb -d pythonอาจจะง่าย(ด้วย Git 2.21, ก.พ. 2019): ดูคำตอบของฉันด้านล่าง
VonC

คำตอบ:


197

นำทางไปยังโครงการของคุณและเริ่ม git-daemon ด้วยสวิตช์ต่อไปนี้:

cd project
git daemon --reuseaddr --base-path=. --export-all --verbose

สิ่งนี้บอก git-daemon เพื่อให้บริการโครงการทั้งหมดภายในไดเรกทอรีปัจจุบัน (ซึ่งฉันถือว่าเป็นไดเรกทอรีโครงการที่มี. git / โฟลเดอร์) นอกจากนี้ยังบอกให้ใช้ที่อยู่เดิมอีกครั้งหากคุณปิดเครื่องและเริ่มต้นการสำรองข้อมูลเร็วเกินไป

คุณสามารถใส่สิ่งนี้ลงในแบทช์สคริปต์ด้วยชื่อที่จำง่ายเช่น "gitserve" ดังนั้นคุณไม่จำเป็นต้องพิมพ์มันทั้งหมดอีกครั้ง ตามที่แนะนำในความคิดเห็นบางส่วนใน Git เวอร์ชันล่าสุดคุณสามารถเพิ่มนามแฝงในการกำหนดค่า Git :

[alias]
    serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git

เมื่อเสร็จแล้วบนเซิร์ฟเวอร์ (กล่อง Windows ของคุณ) คุณสามารถทำได้:

git serve

git-daemon ใช้โปรโตคอล git: // สำหรับการขนส่งดังนั้นในไคลเอนต์ (กล่อง Linux ของคุณ) คุณจำเป็นต้องทำ:

git clone git://123.456.789.111/ project

3
คุณสามารถเพิ่มคำสั่งเป็นชื่อแทนไฟล์. gitconfig ตามที่อธิบายไว้ที่นี่: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
ฉันคิดว่ามันสำคัญที่จะต้องทราบว่าถึงแม้ว่าจะgit daemonอนุญาตให้เข้าถึงจากระยะไกลโดยไคลเอนต์ git อื่น ๆ แต่มันก็ขาดเว็บอินเตอร์เฟสที่hg serveให้
Rob Kennedy

4
ให้บริการนามแฝงใน. gitrc ของคุณเช่น:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin

1
@Aeon ดูเหมือนว่า URL จะเปลี่ยนไปและตอนนี้ก็คือgit.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller

14

แทนที่จะเขียนสคริปต์ชุดของคุณเองใช้gitjour มันรู้วิธีเริ่มต้น git daemon อย่างถูกต้องและจะออกอากาศ URL ผ่าน mDNS เพื่อให้คุณสามารถทำได้gitjour showบนกล่อง linux และคัดลอกและวาง

นอกจากนี้ยังมีบทความที่ดีกับภาพรวมของ gitjour และจำนวนของเครื่องมืออื่น ๆ ที่คล้ายกันจากดร. นิคที่Jour * คืออะไรและทำไมพวกเขาเป็นนักฆ่าปพลิเคชันสำหรับ RailsCamp08


13

กำลังใช้นามแฝงสองรายการ - บริการและฮับ ใช้สำหรับการแชร์แบบอ่านอย่างเดียวและฮับสำหรับการแชร์แบบอ่าน / เขียน

[alias]
  serve = !git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
  hub = !git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose

นอกจากนี้ยังมีรายละเอียดอื่น ๆ กวดวิชาเกี่ยวกับการแบ่งปันผ่านทางคอมไพล์ภูต: http://l.rw.rw/git-daemon


12

หากคุณต้องการเปิดเผยพื้นที่เก็บข้อมูลด้วยเว็บเบราว์เซอร์

Git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234

มันบอกว่าlighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib

4
@syedrakib คุณจะต้องติดตั้ง lighttpd หรือ apache2 หรืออย่างอื่น ส่วนตัวฉันใช้git instaweb -d webrickบน OS X เนื่องจาก webrick มาพร้อมกับ Ruby ซึ่งติดตั้งไว้ล่วงหน้าใน OS X แล้ว
Martijn Heemels

6
เครื่องมือนี้ดูเหมือนจะใช้งานร่วมกับ Windows ไม่ได้ ในขณะที่ผู้โพสต์ถามเครื่องมือ Windows นั่นเป็นปัจจัยสำคัญสำหรับคำตอบนี้
Robert MacLean

9

นี่คือวิธีทางเลือก คุณจะต้องติดตั้งงูหลาม

  • วิ่ง git update-server-info
  • ไปที่.gitไดเรกทอรี
  • วิ่ง python -mSimpleHTTPServer

(เพียงแค่สร้างชื่อแทนใน gitconfig ของคุณ)

ตอนนี้คุณสามารถดึง repo ด้วย git pull http://HOST_NAME:8000/

PS: เมื่อใช้โซลูชัน git daemon คุณสามารถตั้งค่า--base-path=.gitให้ url นั้นเป็นgit://HOST/


0

git-webui เป็นส่วนขยาย git ที่ให้ส่วนต่อประสานกับผู้ใช้ผ่านเว็บและความสามารถในการโคลน / ดึงจากคอมพิวเตอร์เครื่องอื่น

https://github.com/alberthier/git-webui

$ cd my_git_repo
$ git webui

คนอื่นสามารถ

$ git clone http://<ip-of-your-computer>:8000/ repoclone

หรือ

$ git pull http://<ip-of-your-computer>:8000/

ฉันลองกับมันแบบสุ่ม ๆ ฉันสามารถคอมไพล์โคลน แต่ไม่สามารถเข้าถึง webgui ได้ ดูเหมือนว่าเบราว์เซอร์กำลังรอคำตอบจากเซิร์ฟเวอร์ของคุณ
sree

0

เพิ่มบรรทัดต่อไปนี้ใน. git / config

[instaweb]
               local = true
               httpd = webrick
               port = 4231

จากนั้นดำเนินการ

git instaweb

0

Git 2.21 (ก.พ. 2019) ช่วยให้คุณสามารถรวมงูหลามและgit instaweb:

ดูกระทำ 2eb14bb (28 มกราคม 2019) โดยArti Zirk (artizirk )
(ผสานโดยJunio ​​C Hamano - gitster- in abf39e3 , 05 Feb 2019)

git-instaweb: เพิ่มhttp.serverการสนับสนุนPython ในตัว

ด้วยแพตช์นี้มันเป็นไปได้ที่จะเปิดตัวgit-instawebโดยใช้ Python http.serverCGI handler ผ่าน-d pythonตัวเลือก

git-instawebสร้าง wrapper ขนาดเล็กรอบ ๆhttp.server(ในGIT_DIR/gitweb/) ที่จัดการข้อ จำกัด ของตัวจัดการ CGI ที่สคริปต์ CGI ต้องอยู่ในcgi-binไดเรกทอรีย่อยและดัชนีไดเรกทอรีไม่สามารถเปลี่ยนแปลงได้ง่าย เพื่อให้มีขนาดเล็กดำเนินการgitwebทำงานอยู่ใน URL และเปลี่ยนเส้นทางโดยอัตโนมัติจะทำเมื่อเปิด/cgi-bin/gitweb.cgi/

wrapper ที่สร้างขึ้นเข้ากันได้กับ Python 2 และ 3

Python เป็นค่าเริ่มต้นที่ติดตั้งไว้ในลีนุกซ์รุ่นใหม่ซึ่งช่วยให้สามารถรันได้git instaweb -d pythonโดยไม่ต้องการอะไรอีก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.