Git serve: я бы хотел, чтобы это было так просто


139

Я хочу знать, как просто публиковать через http = так же, как Mercurial hg serve! В окне Windows / work сделайте следующее:

git serve 

а затем на коробке Linux ПРОСТО идите:

git clone http://project project 

законченный.


Знаете ли вы, что клонирование git-svn-клона репозитория svn сложно? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Почему бы просто не установить svn на свой Linux-ноутбук и использовать извлечение напрямую из репозитория проекта? Git может быть новой популярностью, но на самом деле кажется, что в этом конкретном случае вы излишне усложняете свою жизнь.
bendin

bendin no, я не знал, что это сложно, так как я настраиваю среду, теперь я рад, что вы высказались ...
Сетори

1
Во-первых: мой ноутбук не разрешен к этому vpn, поэтому я не могу получить доступ к svn напрямую. во-вторых: я хочу зафиксировать в своем собственном репозитории, весь смысл использования git в том, чтобы я мог выполнять локальные коммиты, ветвление и безболезненное слияние. Мне сейчас довольно сложно пользоваться 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 07


8
Я думаю, важно отметить, что, хотя он git daemonпозволяет удаленный доступ другим клиентам git, ему не хватает веб-интерфейса, который hg serveпредоставляет.
Роб Кеннеди

4
сделайте serve псевдоним в вашем .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, What is * 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=.gitURL-адрес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/

Я просто пробовал вслепую. Я могу клонировать git, но не могу получить доступ к веб-интерфейсу. Похоже, браузер ждет ответа от вашего сервера.
sree 03

0

Добавьте следующие строки в .git / config

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

затем выполнить

git instaweb

0

Git 2.21 (февраль 2019 г.) позволяет комбинировать python и git instaweb:

См. Commit 2eb14bb (28 января 2019 г.) Арти Зирк ( artizirk) .
(Объединено Junio ​​C Hamano - gitster- в фиксации abf39e3 , 5 февраля 2019 г.)

git-instaweb: добавить встроенную http.serverподдержку Python

С этим патчем можно запускать git-instawebс помощью http.serverобработчика Python CGI через -d pythonoption.

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

Созданная оболочка совместима как с Python 2, так и с Python 3.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.