WindowsでのGitリポジトリのホスティング


108

現在、Windowsで共有Gitリポジトリをホストする方法はありますか?LinuxでGitサービスを次のように設定できることを理解しています。

git daemon

GitサービスをホストするためのネイティブのWindowsオプションはありませんか?

編集:私は現在、gitのcygwinインストールを使用して、Windowsでgitリポジトリを保存および操作していますが、他のユーザーへのアクセスを提供できるサービスでリポジトリをホストする次のステップを実行したいと考えています。


35
私の現在の雇用主はUnixまたはLinuxマシンを持っていません...新しいソース管理プロバイダーとオペレーティングシステムを同時に導入することは少し外傷的かもしれません。
Jeff Fritz、

1
git-daemonの何が問題になっていますか?私の知る限り、それはWindows上でうまく動作します。
アリストテレスPagaltzis 2008年

10
Windowsの標準のmsysgitインストーラーを使用してGitをインストールすると、がインストールされていないように見えgit daemonます。:\
Tim Visher 2009年

1
バンドルしたCopSSHとmsysgitインストーラーがあり、これらを確認する必要があります。公開鍵認証を使用し、それを簡単にします。免責事項:私はウェブマスターです- 安全なgitサーバーのセットアップに関するTim Davisのチュートリアルを
リリスリバー、

3
参考までに:Git for Windowsには、バージョン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
もう1つの注意:gitdシェルスクリプト内でgitへのパスを完全修飾します。私のマシンの1つで、Windowsプロセスとして実行すると、cygwin-gitではなくMSYSGitが開始されていました。MSYSGitはデーモンモードをサポートしていないため、サービスを開始できませんでした。
Mario

26
Cygwinソリューションを「Windowsで動作する」ものと見なしたことはありません。「VMでLinuxを実行することはWindowsで機能する」と言っているようなものです。しかし、それは私の純粋主義的な意見です;)
ルーク

3
クイックノート:/ usr / binは私にとっては機能しませんでしたが、/ binに配置することは機能しました(そしてcygrunsrvでc:/ cygwin / bin / gitdを使用しています)わからない何歳私のcygwinのインストールですが、ルックスは/ usr / binに似窓は約...ちょっと明白また知っているが、フォルダを作成することを忘れないで文句を言わないで/ binにいただきました!へのリンクがある/ gitのではc:/ cygwinの/
armyofda12mnkeys

3
@Rook-それどころか、Cygwinスイートのツールは、インストールする可能性のある他のサードパーティアプリケーションと何の違いもありません。Cygwinは仮想マシンではなく、事前にパックされた一連のツールです。これは、マシン上の他のすべてと同様に、Windows実行可能ファイルとdllのセットにすぎません。
Derek Greer 2015年

16

GitStackが最良の選択かもしれません。これは現在、無料(最大2ユーザー)で、執筆時点ではオープンソースです。


2
それはオープンソースプロジェクトまたは学生プロジェクトに制限されていたようです:「GitStackはオープンソースプロジェクトと学生プロジェクトに無料です!」
ccellar 2012年

12

これがWindows専用のgitサーバーです:https : //github.com/jakubgarfield/Bonobo-Git-Server/wiki


Bonoboサーバーの状態はどうですか?それは完全に機能していますか?ドキュメントからはわかりませんが、非常に説得力があります。
ジェフフリッツ

1
@JeffFritz:使用をやめた。git update-server-infoちなみに、HTTPプッシュ後のリポジトリ状態()は更新されません。このロジックは、Gitライブラリ(GitSharp)によって実装されていません。近いうちに実際の作業状態になるとは思えません。
アンドレ・キャノン

また、Teamcityでは動作しません(これが私がそれを使用しない主な理由です)github.com/jakubgarfield/Bonobo-Git-Server/issues/11
Piers Karsenbarg

3
ここにボノボユーザーが幸せです。アンドレとピアスの両方の懸念は今すぐに解決されるべきだと思います。そのTeamCityの問題はクローズドとマークされており、中央集中型リポジトリの使用に関する問題は経験していません。
Quinn Bailey

9

Windows環境で作業している場合、Mercurialを検討しましたか?これは、Gitのような分散バージョン管理システムですが、Windowsとはるかにきれいに、簡単に統合できます。


9
WindowsマシンでMercurialを使用する方が、少なくともリポジトリを同期できる限りははるかに簡単です。実際にGitを使用する必要がある場合は、それほど有用な答えではありません。
フランクShearar

また、Bazaarはウィンドウでネイティブに動作します。商業的なサポートも受けています。
Hasen

7

CygWinのインストールはやり過ぎです。このチュートリアルをより速くネイティブに行う方法について読んでください。

http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP


私はパーティーに遅れましたが、このリンクはクライアントについてすべて話すtortoisegit.orgにリダイレクトします。そこでサーバーを実行することについて何も見つかりません。
リチャードA

7

cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.コマンドの実行後にエラーが発生した場合:

cygrunsrv --start gitd

これは、「base-path」フォルダを作成しなかったことを意味します。

「/ git」フォルダを作成してコマンドを再実行すると、これが修正されます。


/gitNTFSアクセス許可でサービスアカウント(SYSTEM)の読み取り/書き込みアクセスが許可されていない場合にも、このエラーが発生する可能性があります。
スポールソン

5

私は現在、Windows上でcygwinのsshデーモンを使用してサービスを提供し、リポジトリへのリモートアクセスを許可しています。それは非常にうまく機能し、リモートWANおよびVPNリンク上でも、ssh証明書を使用して誰が私のリポジトリにアクセスするか、およびパフォーマンスを大幅に制御できます。

もう1つの解決策は、Gitosisを使用することです。これは、レポのホスティングをはるかに簡単にするツールです。


どのようにしてgitデーモンをcygwinで動作させましたか?私はsshデーモンをセットアップしていて、sshを介して自分のマシンへのログインをテストしていますが、gitデーモンを実行しようとすると、ハングします。
ティル

バグがあるため、どのようにしてgitosisをWindowsで動作させましたか:github.com/res0nat0r/gitosis/issues#issue/1
dalore

4

サービスをホストする必要はありません。共有ドライブに共有リポジトリを作成することもできます。ベアリポジトリを作成するだけです。「git clone --bare --shared [source] [dest]」を使用して、既存のリポジトリを共有リポジトリに複製できます。「git init --bare --shared = all」を使用して新しいリポジトリを初期化することもできます。

ヘンク


3
はい、ドライブ上に共有リポジトリを作成できますが、リポジトリと同じネットワーク上にない限り、そのリポジトリにアクセスできません。質問の目的は、オフサイトで作業している同僚にリポジトリへのリモートアクセスを許可することです
ジェフフリッツ

3
これは実際には問題の解決策ではなく、とにかくやるべきことはかなり疑わしいもののようです。
Pat O


4

msysGitはgitデーモンをサポートします!それは(少なくとも私にとっては)うまくいきます。サービスとして実行するようにします...


プッシュとプルの両方をサポートしていますか?プッシュを行うときにcode.google.com/p/msysgit/issues/detail?id=457の問題があるためです。
Vadim

これをサービスとして実行していますか?「入門」ガイドをご存知ですか?
クレイグマックイーン

4

SCMマネージャー

  • ボックスからの Git、Mercurial、Subversionリポジトリ用の軽量httpサーバー(Javaのみが必要です)
  • ユーザー、ACL、リポジトリを管理するためのWebインターフェイス

2

Windowsでは、DAV拡張を使用して、Apache over HTTPまたはHTTPSでGitリポジトリを提供することもできます。

その後、Gitリポジトリパスは、特定のIPアドレスへの制限やhtpasswd / htdigestタイプの認証などのApache認証チェックで保護できます。

htpasswd / htdigest認証を使用する際の制限は、要求されたGit URLでusername:passwordが渡されるため、Git URLへのアクセスを特定のIPアドレスに制限することをお勧めします。

編集: Git URLにパスワードを含めないでください。代わりに、Gitがプッシュとフェッチ/プル時にパスワードの入力を求めます。

HTTPSを使用すると、すべてのデータが転送時に暗号化されます。

設定は簡単で、機能します。

次の例は、標準HTTPを介したIPアドレスとuser:passwordによるアクセス制御の組み合わせを示しています。

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サーバーにインストールされているGitBlit GOを使用しています。ユーザーの認証と承認のために、完璧に機能し、ActiveDirectoryとうまく統合します。また、無料でオープンソースです(Apacheライセンス)。

GitBlitホームページ

サポートされているのはHTTP(S)アクセスのみで、SSHはサポートされていませんが、Windowsではこれ以上何も必要ありません。


サイトのセットアップドキュメントに基づいてSSL(HTTPS)をサポートしています。
Dandré

はい、HTTPとHTTPSはサポートされていますが(HTTPSのみを使用しています)、SSHはサポートされていません。回答を更新しました。
Gian Marco

2

これは、7年以上前の質問に対する2015年の回答です。

$ 10の一括払いでhttps://bitbucket.org/product/serverから、最大10ユーザーの 64ビットWindowsライセンスを購入できます

どうやら32ビットバージョンは、アーカイブ経由でのみ利用できます。

Bitbucket Serverは、以前はStashと呼ばれていました。

このバージョンを試したことはありませんが、$ 10はかなりお得のようです。ここで私はアトラシアンがチャリティーに10ドルを寄付すると読んだ。FWIW


0

Henkが言っていることは、ドライブ上に共有リポジトリを作成し、それを両方のユーザーがアクセスできる共通の場所にコピーできることだと思います。sshでアクセスできる会社のサーバーまたは何かがある場合は、リポジトリをどこかに配置して、SCPを自分のコンピューターにSCPで戻し、そこからプルすることができます。2台のコンピューターを持っているので、少しの間、これを自分のために行いました。面倒ですが、機能します。


2
「共有フォルダが不足しています」と、元の質問は述べています。
オービットでの軽さのレース'26年

0

Windows 7 x64およびCygwin 1.7.9の場合、/ usr / bin / gitdをcygrunsrvのargs引数として使用する必要がありました。

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.