Windows에서 Git 리포지토리 호스팅


108

현재 Windows에서 공유 Git 저장소를 호스팅하는 방법이 있습니까? Linux에서 다음을 사용하여 Git 서비스를 구성 할 수 있음을 이해합니다.

git daemon

Git 서비스를 호스팅하기위한 공유 폴더가 부족한 기본 Windows 옵션이 있습니까?

편집 : 현재 Windows에서 git 저장소를 저장하고 작업하기 위해 git의 cygwin 설치를 사용하고 있지만 다른 사람에게 액세스를 제공 할 수있는 서비스로 저장소를 호스팅하는 다음 단계를 수행하고 싶습니다.


35
현재 직장에는 Unix 나 Linux 머신이 없습니다. 새로운 소스 제어 공급자와 운영 체제를 동시에 도입하는 것은 약간 ... 충격적 일 수 있습니다.
Jeff Fritz

1
git-daemon의 문제점은 무엇입니까? AFAIK는 Windows에서 잘 작동합니다.
Aristotle Pagaltzis

10
Windows 용 표준 msysgit 설치 프로그램을 사용하여 Git을 설치하면 git daemon. : \
Tim Visher

1
보고 싶은 번들 CopSSH 및 msysgit 설치 프로그램 이 있습니다. 공개 키 인증을 사용하고 쉽게 만듭니다. 면책 조항 : 저는 웹 마스터입니다- 보안 git 서버 설정에 대한 Tim Davis의 튜토리얼을
Lilith River

3
기록을 위해 : Windows 용 Git에는 버전 1.7.4 (2011 년 2 월 출시)부터 작동중인 git 데몬 버전이 포함되어 있습니다. 따라서 cygwin은 더 이상 필요하지 않습니다. 참조 stackoverflow.com/q/5186070/291641
patthoyts

답변:


75

다음은 Windows에서 실행되는 git 데몬을 얻기 위해 수행 할 수있는 몇 가지 단계입니다.

(전제 조건 : 기본 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 명령을 실행하여 스크립트를 서비스로 설치합니다 (참고 : 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-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

2
이 게시물을 편집 할 수 있다면 다음을 추가합니다. 전제 조건 : git 및 cygrunsrv 패키지가 설치된 cygwin.
Mario

2
또 다른 참고 사항 : gitd 셸 스크립트 내에서 git 경로를 완전히 한정하십시오. 내 컴퓨터 중 하나에서 Windows 프로세스로 실행할 때 cygwin-git 대신 MSYSGit이 시작되었습니다. MSYSGit은 데몬 모드를 지원하지 않으므로 서비스 시작에 실패했습니다.
Mario

26
Cygwin 솔루션을 "Windows에서 작동"하는 것으로 간주 한 적이 없습니다. "VM에서 Linux를 실행하는 것은 Windows에서 작동합니다"라고 말하는 것과 같습니다. 하지만 그건 내 순수한 의견 일뿐입니다.)
Rook

3
빠른 메모 : / usr / bin은 저에게는 작동하지 않았지만 / bin에 배치하면 작동했습니다 (cygrunsrv에서 c : / cygwin / bin / gitd 사용). 확실하지 얼마나 오래된 내 Cygwin에서 설치하지만 외모는 / usr / bin에 같은 창에 대해 ... 좀 분명 또한 알고 있지만, 폴더를 만들 기억 습관에서 / 빈 뭐죠에 대한 링크는 / 자식의 C : / Cygwin에서 /
armyofda12mnkeys

3
@Rook-반대로 Cygwin 도구 모음은 설치할 수있는 다른 타사 응용 프로그램과 다르지 않습니다. Cygwin은 가상 머신이 아니라 미리 포장 된 도구 모음입니다. 컴퓨터의 다른 모든 것과 마찬가지로 Windows 실행 파일 및 dll의 집합입니다.
Derek Greer

16

GitStack 이 최선의 선택 일 수 있습니다. 현재 무료 (최대 2 명의 사용자) 이며 작성 시점에 오픈 소스 입니다.


2
오픈 소스 또는 학생 프로젝트로 제한되어있는 것 같습니다. "GitStack은 오픈 소스 및 학생 프로젝트에 대해 무료입니다!"
ccellar

12

다음은 Windows 전용 git 서버입니다. https://github.com/jakubgarfield/Bonobo-Git-Server/wiki


Bonobo 서버의 상태는 어떻습니까? 완벽하게 작동합니까? 문서로는 알 수 없지만 매우 매력적으로 보입니다.
Jeff Fritz 2011 년

1
@JeffFritz : 방금 사용을 중단했습니다. git update-server-infoHTTP 푸시 후 저장소 상태 ( )를 업데이트하지 않으며이 논리는 Git 라이브러리 (GitSharp)에 의해 구현되지 않습니다. 조만간 실제 작동 상태에 도달 할 것 같지 않습니다.
André Caron

또한 Teamcity와 함께 작동하지 않습니다 (내가 사용하지 않는 주된 이유입니다). github.com/jakubgarfield/Bonobo-Git-Server/issues/11
Piers Karsenbarg 2013

3
행복한 보노보 사용자입니다. 저는 Andre와 Piers의 우려가 지금 해결되어야한다고 믿습니다. 그 TeamCity 문제는 종결 된 것으로 표시되었으며 중앙 집중식 저장소를 사용하는 데 문제가 발생하지 않았습니다.
Quinn Bailey

9

Windows 환경에서 작업하는 경우 Mercurial 을 고려해 보셨습니까 ? Git과 같은 분산 버전 제어 시스템이지만 Windows와 훨씬 더 깔끔하고 쉽게 통합됩니다.


9
적어도 리포지토리를 동기화 할 수있는 한 Windows 시스템에서 Mercurial을 사용하는 것이 훨씬 더 쉽다는 것은 사실입니다. 실제로 Git을 사용해야하는 경우별로 유용한 답변은 아닙니다!
Frank Shearar 2010 년

또한 Bazaar는 기본적으로 창에서 작동합니다. 상업적인 지원도 제공합니다.
hasen


7

cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.명령을 실행 한 후 오류가 발생 하는 경우 :

cygrunsrv --start gitd

이는 'base-path'폴더를 만들지 않았 음을 의미합니다.

'/ git'폴더를 만들고 명령을 다시 실행하면이 문제가 해결됩니다.


/gitNTFS 권한이 서비스 계정 (SYSTEM) 읽기 / 쓰기 액세스를 허용하지 않는 경우 에도이 오류가 발생할 수 있습니다.
spoulson

5

현재 Windows 에서 cygwin의 ssh 데몬을 사용하여 내 저장소에 대한 원격 액세스를 제공하고 허용하고 있습니다. 그것은 꽤 잘 작동하며, ssh 인증서로 내 저장소에 액세스하는 사람을 완벽하게 제어 할 수 있으며 원격 WAN 및 VPN 링크를 통해서도 성능이 저하됩니다.

또 다른 해결책은 Gitosis를 사용하는 것 입니다. 리포지토리를 훨씬 쉽게 호스팅 할 수있는 도구입니다.


cygwin과 함께 작동하는 git 데몬을 어떻게 얻었습니까? ssh 데몬 설정이 있고 ssh를 통해 내 컴퓨터에 로그인하는 것을 테스트했지만 git 데몬을 실행하려고 할 때마다 중단됩니다.
Thiru

: 버그가있는 한 당신은 어떻게 윈도우 작업 gitosis셨어요 github.com/res0nat0r/gitosis/issues#issue/1
dalore

4

서비스를 호스팅 할 필요가 없으며 공유 드라이브에 공유 저장소를 만들 수도 있습니다. 베어 저장소를 만드십시오. "git clone --bare --shared [source] [dest]"를 사용하여 기존 저장소를 공유 저장소에 복제 할 수 있습니다. "git init --bare --shared = all"을 사용하여 새 저장소를 초기화 할 수도 있습니다.

Henk


3
예, 드라이브에 공유 저장소를 만들 수 있지만 저장소와 동일한 네트워크에 있지 않으면 해당 저장소에 액세스 할 수 없습니다. 질문의 목표는 외부에서 작업하는 동료의 저장소에 대한 원격 액세스를 허용하는 것입니다.
Jeff Fritz

3
이것은 실제로 질문에 대한 해결책이 아니며 어쨌든 수행하기에 매우 의심스러운 일처럼 보입니다.
Pat O


4

이제 msysGit은 git daemon을 지원합니다! (적어도 나를 위해) 잘 작동합니다. 나는 그것을 서비스로 실행하려고 노력할 것입니다 ...


밀기와 당기기를 모두 지원합니까? 푸시를 할 때 code.google.com/p/msysgit/issues/detail?id=457 문제가 있기 때문입니다 .
Vadim

그래서 이것을 서비스로 실행하고 있습니까? "시작하기"안내서를 알고 있습니까?
Craig McQueen 2012 년

4

SCM 관리자

  • 힘내, 의욕 경량 HTTP 서버, 서브 버전의 repos 상자에서 (단지 자바 필요)
  • 사용자, ACL, 저장소 관리를위한 웹 인터페이스

2

Windows에서는 DAV 확장을 사용하여 HTTP 또는 HTTPS를 통해 Apache로 Git 리포지토리를 제공 할 수도 있습니다 .

그런 다음 Git 저장소 경로는 특정 IP 주소 또는 htpasswd / htdigest 유형 인증으로 제한하는 것과 같은 Apache 인증 검사로 보호 할 수 있습니다.

htpasswd / htdigest 인증 사용의 제한은 사용자 이름 : 암호가 요청 된 Git URL에 전달된다는 것이므로 Git URL에 대한 액세스를 특정 IP 주소로 제한하는 것이 더 좋습니다.

편집 : 참고, Git URL에서 비밀번호를 남겨두면 Git이 대신 푸시 및 가져 오기 / 풀시 비밀번호를 입력하라는 메시지를 표시합니다.

HTTPS를 사용하면 전송시 모든 데이터가 암호화됩니다.

설정하기 쉽고 작동합니다.

다음 예제는 표준 HTTP를 통한 IP 주소 및 사용자 : 암호 별 액세스 제어 조합을 보여줍니다.

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:password@git.example.com/codebase.git
[branch "master"]
    remote = origin
    merge = refs/heads/master

2

직장에서 저는 Windows Server에 설치된 GitBlit GO를 사용하고 있습니다. 사용자 인증 및 권한 부여를 위해 완벽하게 작업하고 ActiveDirectory와 잘 통합됩니다. 또한 무료이며 오픈 소스입니다 (Apache 라이센스).

GitBlit 홈페이지

HTTP (S) 액세스 만 지원되고 SSH는 지원되지 않지만 Windows에서는 더 이상 필요하지 않습니다.


사이트의 설정 문서에 기반한 SSL (HTTPS) 지원이 있습니다.
Dandré 2013

예, HTTP 및 HTTPS는 지원되지만 (HTTPS 만 사용하고 있습니다) SSH는 없습니다. 응답이 업데이트되었습니다.
Gian Marco

2

이것은 7 년이 넘은 질문에 대한 2015 년 답변입니다.

https://bitbucket.org/product/server 에서 $ 10 일회성 결제 로 최대 10 명의 사용자를 위한 64 비트 Windows 라이선스를 구입할 수 있습니다. .

분명히 32 비트 버전은 아카이브를 통해서만 사용할 수 있습니다.

Bitbucket Server 는 이전에 Stash로 알려졌습니다 .

이 버전을 사용 해본 적은 없지만 $ 10이 좋은 거래 인 것 같습니다. 여기서 나는 Atlassian이 자선 단체에 10 달러를 기부한다는 것을 읽었습니다. FWIW


0

Henk가 말하는 것은 드라이브에 공유 저장소를 만든 다음 두 사람이 액세스 할 수있는 공통 위치에 복사 할 수 있다는 것입니다. 회사 서버 또는 둘 다 ssh 액세스 권한이있는 항목이있는 경우 저장소를 SCP로 다시 자신의 컴퓨터에 저장할 수있는 위치에 배치 한 다음 해당 저장소에서 가져올 수 있습니다. 나는 두 대의 컴퓨터를 가지고 있기 때문에 잠시 동안 내 자신을 위해 이것을했습니다. 번거롭지 만 작동합니다.


2
"폴더 공유 부족"은 원래 질문을 말합니다.
궤도

0

Windows 7 x64 및 Cygwin 1.7.9의 경우 cygrunsrv의 args 인수로 / usr / bin / gitd를 사용해야했습니다.

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

또한 서비스를 설치하려면 관리자 권한으로 bash를 실행해야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.