24

現在、バージョン管理には VSS を使用しています。分散モデルに興味を持っている (そして VSS を取り除きたい) 開発者はほとんどいません。私たちのネットワークは Windows マシンでいっぱいで、IT 部門は Linux マシンをメンテナンスした経験がありますが、彼らはそうしたくないと考えています。

どの DVCS システムが提供しながら、Windows で中央リポジトリをホストできますか..

  1. リポジトリへのプッシュ アクセス。
  2. 基本認証。ほとんどの場合、リポジトリ全体へのアクセスを許可または拒否する方法です。きめ細かなアクセスは必要ありません。
  3. サーバープロセスにより、ユーザーはリポジトリへの書き込み権を必要とせず、誤ってリポジトリをいじるリスクを軽減します。

クライアント側では、Tortoise などの GUI が多かれ少なかれ必要になります (申し訳ありませんが、Windows シェルは最悪です:|)。当社の IT 部門はすでにリソースがかなり不足しているため、インストールが簡単であることは大きな利点です。また、認証に Windows 資格情報を使用することは利点ですが、クライアントが資格情報を保存できる限り必須ではありません。

Git、Mercurial、Bazaar について (本当に) ざっと見てきました。

  • Gitはリポジトリへのアクセスに ssh または単純な WebDAV を使用しているようで、ユーザーには書き込み権限が必要でした。
  • Mercurialには http サーバーが組み込まれていましたが、これはプル目的のみのようでした。更新: Mercurial はプッシュもサポートしています。
  • Bazaarリポジトリへのアクセスに sftp を使用しているようで、ここでもユーザーに書き込み権限が必要です。

DVCS システム用の Windows サーバー プロセスはありますか? また、Windows ランドでセットアップできた人はいますか?

これが重複した質問である場合はお詫び申し上げます。見つかりませんでした。

アップデート

Mercurial がプッシュ目的で動作するようになりました! 必要なものの詳細なリストは、以下の回答として見つけることができます。

4

7 に答える 7

17

Mercurial は、ほぼ間違いなく Windows で最も簡単なオプションです。

認証を気にしない場合は、実際には簡単にhg serveプッシュを許可できます。これを行うには、.hg/hgrc提供するリポジトリ内のファイルに次を追加するだけです。

[web]
allow_push = *
push_ssl = false

最初の行は、誰でもこのリポジトリにプッシュできることを示しています。2 番目は、Mercurial がhg serve現在ネイティブで HTTPS をサポートしていないため、SSL なしでのプッシュを許可するように指示します。この時点で、ユーザーはどこにもアカウントを持っていなくても、リポジトリにプッシュできます。あなたが単に小規模なショップであれば、おそらく問題ありません。特に、変更セットに署名する Mercurial の機能を使用して、HTTP Basic が提供するよりもはるかに高いレベルの検証可能性を保証できるからです。

ただし、大規模なショップの場合は、コミットするための少なくとも単純な障壁が必要です。そのためには、2 つの変更を行う必要があります。まず、リバース プロキシまたは CGI をサポートする Web サーバーの背後に Mercurial を配置する必要があります。ありがたいことに、最近のバージョンの IIS は両方をサポートしています。Mercurial 固有の手順については Mercurial Redbook の CGI の指示を参照し、IIS 側のヘルプについてはIIS 6 で CGI アプリケーションをセットアップするための Microsoft のガイドを参照してください。

次に、基本認証を設定する必要があります。IIS は、すぐに使用できる HTTP Basic を提供します。これは、おまけとして、ドメインに対して直接認証できるため、管理オーバーヘッドを最小限に抑えることができます。

最後に、allow_pushユーザー名のコンマ区切りリストを指定して、特定のユーザーのみをサポートするように行を変更します。例えば:

allow_push = benjamin, ted, the_cow

それでおしまい。Mercurial は、HTTP 基本認証を介して認証できるユーザーからのプッシュを許可し、それ以外のユーザーからのプルを許可するようになりました。

于 2009-04-28T19:10:52.167 に答える
12

BenjaminがHTTPサービングCGIスクリプトを指摘した後、私はそれらを試してみることにし、HTTPを介してホストされるリポジトリを取得することに成功しました。BenjaminがリンクしたRedbookは、2つのMercurialwiki記事と同様に非常に役立ちました。1つは一般的なMercurialパブリッシングについて説明し、もう1つはHgWebDirCGIスクリプトを設定するためのステップバイステップの説明を含みます。

これらの指示は完全に絶対確実ではなかったので、私は少しいじくり回さなければなりませんでした。64ビットVistaを実行している可能性があります。以下の手順は、私が行ったことを文書化したものです。一度やったので、おそらく別の順序で物事を行うので、これらのステップバイステップの説明を考慮しないでください。

Mercurial

まず、にインストールされたhttp://mercurial.berkwood.com/d:\dev\MercurialからMercurialバイナリを取得しました。d:\dev\testRepoを使用して、リポジトリの下にテストするためのリポジトリを作成しましたhg init。にはd:\dev\Mercurial\library.zip、CGIスクリプトに必要なMercurialライブラリファイルが含まれているため、に抽出されましたd:\dev\Mercurial\library。最初に私を混乱させたのは、zipファイルを開いたときにエラーメッセージが表示され、内容が表示されなかったことです。ただし、ファイルをディレクトリに抽出するだけで機能しました。

Webスクリプトの場合、移動されて名前がに変更されたhgwebdir.cgiを含むMercurialソースd:\dev\Mercurial\webroot\hgwebdir.pyをダウンロードしました。ステップバイステップの記事には、Windows用のhgwebdirスクリプトを変更するための優れた手順が含まれています。また、hgweb.configの説明も含まれており、私の場合は次のようになります。

[paths]
/hg/hgwebdir.py/test = D:\dev\Mercurial\testRepo

また、リポジトリは次の構成を必要としていたため、SSLなしでそこにプッシュできました。注現在、基本認証を使用してユーザーを認証しています。で構成を作成しD:\dev\Mercurial\testRepo\.hg\hgrc、それに次の行を追加する必要がありました。

[web]
allow_push = *
push_ssl = false

Python

CGIスクリプトはPythonスクリプトであるため、Pythonが必要です。どのPythonバージョンがそれを実行するかはかなりうるさいようです。記事の1つは、それを実行するにはMercurialのビルドに使用されたのと同じバージョンが必要であると述べています。結局、Python 2.6 x64、Python 2.4、Python 2.5 x64を試した後、Python2.5x86で動作するようになりました。

IIS

私が見逃してインストールしなければならなかった2つのことは、CGIサポートと基本認証でした。これらは両方とも、コントロールパネル、プログラム、および機能を介してインストールされました。インストールが完了したら、IISでを指す仮想ディレクトリ(後でアプリケーションに変更しました)を作成しましたD:\dev\Mercurial\webroot。仮想ディレクトリには、ハンドラーマッピングから追加できる*.pyファイル用のCGIハンドラーが必要でした。実行可能ファイルはでしたD:\dev\SDKs\Python25_x86\Python.exe %s。IISがwebrootディレクトリへのアクセス許可を取得したら、http://localhost/hg/hgwebdir.py/testに移動してリポジトリを確認できます。

これで、読み取りアクセスが機能しました。リポジトリにプッシュしようとすると、実際のリポジトリではないという奇妙なエラーメッセージが表示されました。

1時間のデバッグの後、D:\dev\Mercurial\library\mercurialPythonがを見つけることができるように、ツリー全体をwebrootの下にコピーすることになりD:\dev\Mercurial\webroot\mercurial\hgweb\hgwebdir_mod.pycました。この後、Wiresharkはスタックトレースでアクセス拒否エラーを報告していました。これの本当の理由はわかりませんが、仮想ディレクトリをIISのアプリケーションに変更し、ローカルシステムアカウントを使用して実行されたアプリケーションプールの上に移動すると、アクセス拒否エラーがなくなりました。

また、ある時点でHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters、IISがレジストリキーにアクセスできるように、レジストリキーにさらに多くのアクセス許可を与えました。ローカルシステムアカウントを使用した後、これらが必要になることは間違いありません。

これらが完了すると、を使用してリポジトリにものをプッシュすることが機能しhg push http://localhost/hg/hgwebdir.cgi/testていました!

問題と解決策

  • ライブラリファイルの場所。
    • それらは、Mercurialインストールフォルダの下のlibrary.dllにありました。解凍プログラムが内容の表示を拒否した場合でも、それらを抽出する必要がありました。
  • Pythonスクリプトを実行する方法
    • スクリプトはいくつかのx86ライブラリを使用するため、x86アーキテクチャ用の正しいPythonバージョンをダウンロードしてください。正しいPythonバージョンは、Mercurialのバージョンによって異なります。1.2.1の場合はPython2.5x86でした。
    • または、必要なPythonバージョンを使用してソースからMercurialをビルドしてみることができますが、私の場合、拡張機能をビルドするときに失敗しました。
  • IISでCGIを設定する方法
    • まず、CGIがIISにインストールされていることを確認します。これは、Benjaminが投稿したIISの指示では当てはまらないと想定されていました。
    • IISハンドラーマッピングで*.pyの新しいモジュールマッピングを作成します。正しいモジュールはCgiModuleであり、実行可能ファイルはPython実行可能ファイル+%sです
  • CGIスクリプトがリポジトリに書き込めるようにする方法
    • スクリプトに必要なものがすべて含まれていることを確認してください。library\mercurial\hgweb\hgwebdir_mod.pyc私は別の場所に移動しなければなりませんでした。
    • スクリプトに、必要なすべての場所へのアクセス許可があることを確認してください。これを解決するには、ローカルシステムアカウントを使用するCGIスクリプト用の新しいアプリケーションプールを作成し、仮想ディレクトリをIISでアプリケーションに変換し、新しいアプリケーションプールを選択します。
于 2009-04-28T22:12:41.183 に答える
7

ほとんどうまくいった Mikko's Answer を読んだ後、インストールのための独自のメモを思いつきました。私のセットアップは、チームのメンバーが Windows 2008 Server にインストールして使用できる「保護されていないオープンな」リポジトリになるように設計されています。

1. Python をインストールします。

私が使用した Python のバージョンはPython 2.6.2で、Windows x86 MSI インストーラーを使用しました。

  • すべてのユーザーにインストールします。
  • C:\Mercurial\Python にインストール
  • デフォルトの機能オプションを使用します。

2. MinGW をインストールします。
私が使用した Minimalist GNU for Windows のバージョンはMinGW 5.1.4でした。

  • MinGW-5.1.4.exe をインストールします。
  • ダウンロードとインストールのオプションを選択します。
  • インストールする現在のパッケージ オプションを選択します。
  • インストールするコンポーネントについては、「最小」オプションを選択します。
  • C:\Mercurial\MinGW にインストール

3. パスを変更します。

この時点で、環境パスに場所を追加する必要があります。

  • ' C:\Mercurial\Python26;C:\Mercurial\MinGW\bin ' をパスに追加します (順序が重要です)。

4. Mercurial をインストールします。

私が使用した mercurial のバージョンは安定版ブランチの最新リリースで、バイナリは使用せず、ソース コードを使用しました。インストールした Python のどのバージョンでも動作するように自分で mercurial をコンパイルしたかったので、他のインストール方法で最大の課題であることがわかった互換性の問題について心配する必要はありませんでした。ソースを入手する最も簡単な方法は、「zip」ファイルをダウンロードすることです。 Mercurial 安定版リリース

  • Zip ファイルを C:\Mercurial\Source に解凍します。
  • コマンド プロンプトでソースをビルドします。
python setup.py ビルド --force -c mingw32
python setup.py インストール --force --skip-build

5. パスを変更します。

環境パスに「hg」コマンド用の別の場所を挿入する必要があります。

  • ' C:\Mercurial\Python26\Scripts;C:\Mercurial\Python26;C:\Mercurial\MinGW\bin ' をパスに追加します (順序が重要です)。

6. 構成ファイルを作成します。

このサーバーでローカルにコミットを行う場合は、デフォルトのユーザー名を設定する必要があります。

  • ファイル ' "C:\Documents and Settings{username}.hgrc" 'を作成します
[うい]  
エディター = メモ帳  
ユーザー名 = あなたの名前

6. インストールをテストします。

新しいコマンド ウィンドウを開き、' hg debuginstall ' でテストして検証します。次のようなものが表示されます。

エンコーディングをチェックしています (cp1252)...  
拡張子を確認しています...  
テンプレートをチェックしています...  
パッチをチェックしています...  
コミット エディタをチェックしています...  
ユーザー名を確認しています...  
問題は検出されませんでした  

7. Web ディレクトリをセットアップします。

  • ディレクトリ ' C:\Mercurial\Web ' を作成します
  • hgwebdir.cgi ファイルを「C:\Mercurial\Source」から「C:\Mercurial\Web」にコピーします。

8. 集中リポジトリ用に IIS7 を構成します。

.Net 2.0、Pipeline = Integrated、Identity = ApplicationPoolIdentity を使用している DefaultAppPool を使用しました。

  • CGI 機能が IIS7 で使用できることを確認します。
  • コントロール パネル/プログラム/Windows の機能/IIS/アプリ開発機能/CGI
  • 希望する Web サイトの IIS にアプリを追加します。
  • Alias=Mercurial -- 物理パス=C:\Mercurial\Web
  • アプリで [HTTP モジュール] を選択し、新しいモジュール マッピングを追加します。
    • リクエスト パス=*.cgi、モジュール=CgiModule、実行可能ファイル=C:\Mercurial\Python26\python.exe %s、名前=Mercurial.
    • ISAPI および CGI 制限リストにエントリを追加するように求められたら、はいと言います。

9. Web セットアップをテストします。

これで、 http://localhost/Mercurial/hgwebdir.cgiをブラウズして、リポジトリ リストを表示し、空にすることができるはずです。

10. フレンドリ URL 用に IIS7 を構成する

わかりにくい URL は気に入らなかったので、この手順により、URL をよりわかりやすい URL に再マッピングできます。IIS 用のURL 書き換えモジュール 1.1拡張機能をインストールします。

  • IIS マネージャー機能ビューの Mercurial IIS アプリケーションで、[URL 書き換えコンポーネント] を選択し、新しいルールをインストールします。
  • [ルールの追加] を選択してから、[書き換えマップを含むルール] テンプレートを選択します。ルール アクション = 書き換え、書き換えマップを指定 = Mercurial
  • マッピング エントリを追加します。OriginalValue='/Mercurial/Repo'、新しい値='/Mercurial/hgwebdir.cgi'

11. Mercurial リポジトリの作成

これで、テスト リポジトリを作成できます。

  • ディレクトリ C:\Mercurial\Repository を作成し、IUSR アカウントにディレクトリへの書き込み権限があることを確認します。(ドメイン アカウントが IUSR_{ComputerName} に似ている場合。
  • ファイル C:\Mercurial\Web\hgweb.config を作成して、リポジトリを一覧表示します。
[パス]
/ = C:\Mercurial\リポジトリ\**
  • ディレクトリ C:\Mercurial\Repository\Test を追加し、'hg init' でリポジトリを初期化します。

** ssl なしでプッシュできるようにしたい場合は、リポジトリの .hg ディレクトリに次の行の hgrc ファイルを作成します。

[ウェブ]
allow_push = *
push_ssl = false

参考文献:

Mercurial Wiki Windows
HG Book のインストール
ステップ バイ ステップ
Mercurial リポジトリの公開

于 2009-05-27T18:13:56.677 に答える
2

VSS から最初の一歩を踏み出すチームには、ソース管理にSubVersionを使用し、クライアントにTortoiseSVNまたはVisualSVNのいずれかを使用することをお勧めします。

しかし、チームが DVCS に切り替えることを決定した場合は、TortoiseHg を介した HTTP とクライアント上のウィンドウのサポートが優れているため、Mercurial をお勧めします。

于 2009-04-28T18:27:38.697 に答える
0

私のネクロポストと恥知らずな自己宣伝で申し訳ありませんが、完全なプル/プッシュ サポートと Active Directory 統合を備えた Windows 用の Mercurial サーバーであるHgLabのアルファ版をリリースしました。

于 2012-12-06T11:37:06.497 に答える
0

あなたが探しているなら:

  1. 分散開発サポート
  2. Windows サーバーをシームレスに実行
  3. そして素晴らしいGUI

あなたはまさにプラスチックSCMを説明しています

于 2009-04-29T07:19:36.580 に答える
0

SCM にとらわれない (ある程度) リポジトリのフロントエンドと管理を備えた Windows ソリューションは、今日ではSCM マネージャー(Git、Mercurial、JVM の単一の要件を持つ SVN リポジトリ) である可能性があります。

于 2012-12-06T13:58:28.030 に答える