Хостинг Git Репозиторий в Windows

В настоящее время существует способ размещения общего хранилища Git в Windows? Я понимаю, что вы можете настроить службу Git в Linux с помощью:

git daemon

Есть ли встроенная опция Windows, не имеющая общих папок, для размещения службы Git?

EDIT: В настоящее время я использую установку cygwin для Git для хранения и работы с репозиториями Git в Windows, но я хотел бы сделать следующий шаг размещения репозитория со службой, которая может обеспечить доступ к другим.

Ответ 1

Ниже приведены некоторые шаги, которые можно выполнить, чтобы запустить демон git под Windows:

(Предварительные требования: установка Cygwin по умолчанию и клиент git, поддерживающий демон git)

Шаг 1. Откройте оболочку bash

Шаг 2. В каталоге/cygdrive/c/cygwin64/usr/local/bin/создайте файл с именем "gitd" со следующим содержимым:

#!/bin/bash

/usr/bin/git daemon --reuseaddr --base-path=/git --export-all --verbose --enable=receive-pack

Шаг 3. Запустите следующую команду cygrunsrv из приглашения с повышенными правами (то есть, как admin), чтобы установить script в качестве службы (Примечание: предполагается, что Cygwin установлен в C:\cygwin64):

cygrunsrv   --install gitd                          \
            --path c:/cygwin64/bin/bash.exe         \
            --args c:/cygwin64/usr/local/bin/gitd   \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

Шаг 4. Для запуска службы выполните следующую команду:

cygrunsrv --start gitd

Вы закончили. Если вы хотите протестировать его, вот быстрый и грязный script, который показывает, что вы можете нажимать на git протокол на свой локальный компьютер:

#!/bin/bash

echo "Creating main git repo ..."
mkdir -p /git/testapp.git
cd /git/testapp.git
git init --bare
touch git-daemon-export-ok
echo "Creating local repo ..."
cd
mkdir testapp
cd testapp
git init
echo "Creating test file ..."
touch testfile
git add -A
git commit -m 'Test message'
echo "Pushing master to main repo ..."
git push git://localhost/testapp.git master

Ответ 2

GitStack может быть вашим лучшим выбором. В настоящее время он свободен (до 2 пользователей) и с открытым исходным кодом на момент написания.

Ответ 4

Если вы работаете в среде Windows, считаете ли вы Mercurial? Это распределенная система управления версиями, такая как Git, но интегрируется гораздо более аккуратно и легко с Windows.

Ответ 5

Если после выполнения команды вы получите сообщение об ошибке cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.:

cygrunsrv --start gitd

это означает, что вы не создали папку "базовый путь".

Создание папки '/ git' и повторная команда будут исправлены.

Ответ 7

Считаете ли вы использование слоя cygwin? См. эту ссылку.

Ответ 8

В настоящее время я использую демон cygwin ssh в Windows для обслуживания и разрешения удаленного доступа к моему репо. Он работает достаточно хорошо, у меня есть полный контроль над тем, кто обращается к моему репо с помощью своих сертификатов ssh, а производительность прорывается даже по удаленным WAN и VPN-ссылкам.

Другое решение - использовать Gitosis. Это инструмент, облегчающий репозиционирование хостинга.

Ответ 9

Вам не нужно размещать службу, вы также можете создать общий репозиторий на общем диске. Просто создайте голый репозиторий. Вы можете клонировать существующее репо в общий, используя: "git clone --bare --shared [source] [dest]". Вы также можете создать новый репозиторий, используя "git init --bare --shared = all".

Хенка

Ответ 10

Теперь msysGit поддерживает демона git! Он отлично работает (по крайней мере для меня). Я попытаюсь запустить его как сервис...

Ответ 11

Диспетчер SCM

  • Легкий http-сервер для Git, Mercurial, Subversion repos из окна (требуется только Java)
  • Веб-интерфейс для управления пользователями, ACL, репозиториями

Ответ 12

В Windows вы также можете обслуживать репозитории Git с Apache через HTTP или HTTPS, используя расширение DAV.

После этого путь к хранилищу Git может быть защищен проверками подлинности Apache, такими как ограничение определенных IP-адресов или проверка подлинности типа htpasswd/htdigest.

Ограничение использования htpasswd/htdigest аутентификации заключается в том, что имя пользователя: пароль передается в запрошенном URL Git, поэтому лучше ограничивать доступ к URL-адресу Git к определенным IP-адресам.

Изменить: обратите внимание, вы можете оставить пароль из URL Git, а Git предложит вам пароль вместо push и fetch/pull.

Использование HTTPS означает, что все данные зашифрованы при передаче.

Это достаточно легко настроить и работает.

В следующем примере показана комбинация контроля доступа по IP-адресу и пользователю: пароль по стандарту HTTP.

Пример Apache Virtualhost

## GIT HTTP DAV ##
<VirtualHost *:80>

  ServerName git.example.com
  DocumentRoot C:\webroot\htdocs\restricted\git
  ErrorLog C:\webroot\apache\logs\error-git-webdav.log

    <Location />
      DAV on
      # Restrict Access
      AuthType Basic
      AuthName "Restricted Area"
      AuthUserFile "C:\webroot\apache\conf\git-htpasswd"
      # To valid user
      Require valid-user
      # AND valid IP address
      Order Deny,Allow
      Deny from all
      # Example IP 1
      Allow from 203.22.56.67 
      # Example IP 2
      Allow from 202.12.33.44 
      # Require both authentication checks to be satisfied
      Satisfy all
    </Location>

</VirtualHost>

Пример .git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    fetch = +refs/heads/*:refs/remotes/origin/*
    url = http://username:[email protected]/codebase.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

Ответ 13

На работе я использую GitBlit GO, установленный на Windows Server. Работайте безупречно и хорошо интегрируйтесь с ActiveDirectory для аутентификации и авторизации пользователей. Он также бесплатный и с открытым исходным кодом (с лицензией Apache)

Домашняя страница GitBlit

Поддерживается только доступ HTTP (S), нет SSH, но под Windows вам больше ничего не нужно.

Ответ 14

это ответ 2015 года на вопрос, которому больше 7 лет.

За одноразовый платеж за 10 долларов, от https://bitbucket.org/product/server, можно приобрести 64-разрядную лицензию Windows для 10 пользователей.

По-видимому, 32-разрядные версии доступны только через их архив.

Сервер Bitbucket ранее был известен как Stash.

Обратите внимание, что я не пробовал эту версию, но 10 долларов США, похоже, очень хорошо; здесь я читаю, что Atlassian дает 10 долларов на благотворительность. FWIW

Ответ 15

Я думаю, что Хенк говорит, что вы можете создать общий репозиторий на диске, а затем скопировать его в какое-то общее место, к которому у вас есть доступ. Если есть какой-то сервер компании или что-то, к чему у вас обоих есть доступ к ssh, вы можете поместить репозиторий где-нибудь, где вы можете отправить его на свой компьютер, а затем извлечь из него. Я сделал это для себя, потому что у меня два компьютера. Это хлопот, но он работает.

Ответ 16

Для Windows 7 x64 и Cygwin 1.7.9 мне нужно было использовать /usr/bin/gitd в качестве аргумента args cygrunsrv

cygrunsrv   --install gitd                          \
            --path c:/cygwin/bin/bash.exe           \
            --args /usr/bin/gitd                    \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

Кроме того, мне нужно было запустить bash в качестве администратора для установки службы.