Git serve: Мені б хотілося так просто


139

Я хочу знати, як просто публікувати через http = так, як слугує Hg Mercurial ! У вікні Windows / робоче поле зробіть це:

git serve 

а потім у вікні Linux ПРОСТО перейдіть:

git clone http://project project 

закінчив.


Чи знаєте ви, що клонування git-svn-клона svn repo є складним? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
Бендін

Чому б просто не встановити svn на ваш ноутбук, використовуючи ноутбук, вийти безпосередньо з сховища проектів? Git може бути новою гарячкою, але насправді здається, що ти ускладнюєш життя в цьому конкретному випадку.
бендін

Бендін, ні, я не знав, що це складно, тому що я
буду

1
По-перше: мій ноутбук не дозволений до цього vpn, тому я не можу отримати доступ до svn безпосередньо. по-друге: я хочу взяти на себе власне сховище, вся суть у використанні git полягає в тому, щоб я міг робити локальні коміти, гілка і безболісно зливатися. Я вважаю, що використання svn зараз є досить судомим.
Сеторі

Якщо у вас встановлений 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надає.
Роб Кеннеді,

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
Крістоф Мюллер

14

Замість того, щоб написати власний пакетний сценарій, використовуйте gitjour . Він знає, як правильно запустити git daemon, і буде транслювати URL-код клонування через mDNS, щоб ви могли зробити це gitjour showу вікні linux та скопіювати та вставити.

Також хороша стаття з оглядом gitjour та рядом інших подібних інструментів від Dr. Nic, що таке * jour і чому вони є вбивчими програмами для RailsCamp08 .


13

В даний час використовується два псевдоніми - serve і hub. Обслуговувати лише для доступу лише для читання та концентратора для спільного доступу до читання:

[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

Також є більш детальний посібник щодо спільного використання через git daemon: 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.
Ракіб

4
@syedrakib Вам потрібно буде встановити lighttpd, або apache2, або щось інше. Особисто я використовую git instaweb -d webrickOS X, тому що webrick поставляється з Ruby, який попередньо встановлений на OS X.
Martijn Heemels

6
Здається, цей інструмент не сумісний із Windows. Оскільки плакат запитував інструмент Windows, це важливий фактор для цієї відповіді.
Роберт Маклін

9

Ось альтернативний спосіб. Вам знадобиться встановлений python.

  • бігати git update-server-info
  • перейти до .gitкаталогу
  • бігати python -mSimpleHTTPServer

(просто створіть псевдонім у своїй gitconfig)

Тепер ви можете витягнути репо git pull http://HOST_NAME:8000/

PS: при використанні рішення git daemon ви можете встановити --base-path=.gitтаким чином URLgit://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/

Я просто спробував це сліпо. Я вмію git клонувати, але не можу отримати доступ до webgui. Схоже, браузер чекає відповіді від вашого сервера.
sree

0

Додайте наступні рядки в .git / config

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

потім виконати

git instaweb

0

Git 2.21 (лютий 2019) дозволяє комбінувати python та git instaweb:

Див. Команду 2eb14bb (28 січня 2019) від Arti Zirk ( artizirk) .
(Об’єднав Хуніо С Хамано - gitster- у фільмі abf39e3 , 05 лютого 2019 р.)

git-instaweb: додати http.serverпідтримку вбудованого Python

За допомогою цього виправлення можна запустити git-instawebза допомогою http.serverобробника Python CGI через -d pythonопцію.

git-instawebстворює невелику обгортку навколо http.server(in GIT_DIR/gitweb/), яка стосується обмеження обробника CGI, де сценарії CGI повинні бути в cgi-binпідкаталозі, а індекс каталогу не може бути легко змінений. Щоб виконання було невеликим, gitwebпрацює за URL-адресою /cgi-bin/gitweb.cgiі автоматично відкривається перенаправлення при відкритті /.

Створена обгортка сумісна як з Python 2, так і з 3.

Python за замовчуванням встановлений у більшості сучасних дистрибутивів Linux, що дозволяє працювати, git instaweb -d pythonне потребуючи нічого іншого.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.