Частный git-репозиторий через http - PullRequest
15 голосов
/ 17 февраля 2010

Можете ли вы порекомендовать любое простое решение для настройки git-репозитория, доступного через http (s, предложил cleutus)? У меня есть собственный http-сервер, и я хотел бы использовать его для размещения небольшого частного проекта. Дома я могу это сделать, но на работе брандмауэры не дают мне этого сделать.

Есть ли какой-нибудь бесплатный способ создать небольшой частный репозиторий git, в который я могу отправлять / получать по http, чтобы я мог делиться проектами между домом и работой? Заранее спасибо!

Ответы [ 2 ]

22 голосов
/ 17 февраля 2010

Git поддерживает это изначально. Конечно, вам понадобится HTTP-сервер.

Поместите свой (пустой) репозиторий в папку, к которой может получить доступ ваш веб-сервер. В этом каталоге выполните следующие команды:

$ git --bare update-server-info
$ mv hooks/post-update.sample hooks/post-update

Первая команда предоставляет дополнительную информацию, чтобы веб-сервер знал, что делать с хранилищем. Вторая команда гарантирует, что информация обновляется каждый раз, когда кто-то отправляет в хранилище.

Вы можете найти эту информацию здесь: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#setting-up-a-public-repository

1 голос
/ 24 августа 2011

webDAV не требуется

Более того, DAV значительно медленнее, чем новая поддержка "smart-http", начиная с git 1.6.6.Новый метод позволяет передавать весь пакет сразу, а не в виде отдельных файлов.


Вы также можете использовать gitweb для предоставления просматриваемых URL-адресов в том же месте.

Примечание:Поскольку доступ контролируется Apache, вы можете добавить любые требования к Auth (htaccess или ldap и т. Д.) В настройку для каждого репозитория.


Просто создайте новый файл git_support.conf и включите его в apache (добавить оператор включения в httpd.conf)

#
#  Basic setup for git-http-backend
#

SetEnv GIT_PROJECT_ROOT /opt/git_repos
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER  #IMportant !!! This could be your problem if missing

<Directory /opt/git>  # both http_backend and gitweb should be somewhere under here
        AllowOverride None
        Options +ExecCGI -Includes  #Important! Lets apache execute the script!
        Order allow,deny
        Allow from all
</Directory>

# This pattern matches git operations and passes them to http-backend
ScriptAliasMatch \
        "(?x)^/git/(.*/(HEAD | \
                        info/refs | \
                        objects/(info/[^/]+ | \
                                 [0-9a-f]{2}/[0-9a-f]{38} | \
                                 pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
                        git-(upload|receive)-pack))$" \
        /opt/git/libexec/git-core/git-http-backend/$1

# Anything not matched above goes to displayable gitweb interface
ScriptAlias /git /opt/git/cgi-bin/gitweb.cgi/

Результатом является возможность push / pull:

me@machine /tmp/eddies $ git pull
Already up-to-date.

me@machine /tmp/eddies $ touch changedFile

me@machine /tmp/eddies $ git add .

me@machine /tmp/eddies $ git commit -am"commiting change"
[master ca7f6ed] commiting change
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 changedFile

me@machine /tmp/eddies $ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 239 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
To http://mysecretdomain.com/git/eddies
   0f626a9..ca7f6ed  master -> master

И вы можете просматривать эти изменения онлайн .. gitweb provides a browsable interface

Источник: http://repo.or.cz/w/alt-git.git?a=blob_plain;f=gitweb/README

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...