2008-10-24 3 views
103

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

git daemon 

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

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

+34

У моего нынешнего работодателя нет машин Unix или Linux ... одновременное привлечение нового поставщика и операционной системы Source Control может быть немного ... травматичным. – 2008-10-24 16:01:25

+1

Что случилось с git-daemon? AFAIK работает отлично в Windows. – 2008-10-24 17:05:49

+10

Установка Git с помощью стандартного установщика MSysgit для Windows не появляется, чтобы установить `git daemon`. : \ – 2009-01-26 16:22:08

ответ

73

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

(Необходимые условия: установка по умолчанию Cygwin и клиент GIT, который поддерживает GIT демон)

Шаг 1 Откройте Баш оболочку

Шаг 2: В каталоге/cygdrive/с/cygwin64/USR/местные/бен /, создать файл с именем "gitd" со следующим содержанием:

#!/bin/bash 

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

Шаг 3: Выполните следующую команду cygrunsrv от повышенной строки (т.е.как администратор), чтобы установить скрипт в качестве службы (Примечание: предполагается, установлен 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

Все готово. Если вы хотите проверить это, вот быстрый и грязный сценарий, который показывает, что вы можете нажать по протоколу 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 
10

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

+9

Это правда, что гораздо проще использовать Mercurial на компьютерах Windows, по крайней мере, насколько это возможно для синхронизации репозиториев. Не очень полезный ответ, если вам действительно нужно использовать Git! – 2010-03-10 09:10:57

+0

Также базар работает на окнах; он даже имеет коммерческую поддержку. – hasen 2010-03-12 23:21:30

4

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

Хенк

+3

Да, вы можете создать общий репозиторий на диске, но я НЕ смогу получить доступ к этому репозиторию, если я не в той же сети, что и репозиторий. Цель вопроса заключается в том, чтобы разрешить удаленный доступ к хранилищу для сотрудника, который работает за пределами участка. – 2009-04-16 15:32:05

+3

. На самом деле это не решение вопроса, и это похоже на довольно сомнительную вещь. – 2010-11-22 14:17:05

5

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

Another solution is to use Gitosis. Это инструмент, облегчающий репозиционирование хостинга.

+0

Как вы получили демона git, работающего с cygwin? У меня есть настройка ssh daemon, и я тестирую вход в мою машину через ssh, но всякий раз, когда я пытаюсь запустить демон git, он просто зависает. – Thiru 2009-03-31 00:29:53

+0

Как вы получили gitosis, работающий над окнами, так как есть ошибка: http://github.com/res0nat0r/gitosis/issues#issue/1 – dalore 2010-06-16 14:53:20

0

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

8

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

cygrunsrv --start gitd 

Это означает, что вы не создали папку «base-path».

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

4

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

0

для 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 в качестве администратора для установки службы.

2

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

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

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

Редактировать: Обратите внимание: вы можете оставить пароль из Git URL, и 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/конфигурации

[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 
16

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

4

SCM Manager

  • Легкий HTTP-сервер для Git, Mercurial, Subversion РЕПО из коробки (только требуется Java)
  • Web-интерфейс для управления пользователями, списки управления доступом, операции РЕПО
2

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

GitBlit homepage

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

2

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

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

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

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

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

Смежные вопросы