私はMercurialを少しの間使用していましたが、主に自分で使用していました。しかし今、私は2人で同じプロジェクトを構築しているプロジェクトに取り組んでいます。おそらく、お互いのファイルを変更するでしょう。
サーバーにMercurialリポジトリをセットアップし、そのリポジトリを「サーバー」にして、私の変更と他の編集者の変更の両方がそのサーバーにプッシュされるようにします(つまり、基本的に Subversion / [〜#〜] cvs [〜#〜] model); Mercurialは好きですが、Subversionのようなものに切り替えたくありません。
私のネットワークでは、すべてがLinux上で行われ、「サーバー」には OpenSSH がインストールされています。したがって、1台のコンピューターからサーバーに私の変更(複数のコンピューターで作業している)をプッシュするのは、「hgプッシュ」の問題です。使用されるプロトコルは、変更を転送するための [〜#〜] ssh [〜#〜] です。
問題は、私がLinuxを使用し、サーバーがWindowsになり(OpenSSHがありませんか?)、他のエディターもWindowsを使用することです。私の知る限り、これらのタイプのセットアップでMercurialで作業する最良の方法は、リポジトリがソースから「サーバー」にプッシュするのではなく、ソースから変更をプルすることです。私はいくつかのファイアウォールの後ろにいます(ネットワーク全体ではありません)。コンピュータはサーバーから見えません。また、他の編集者もファイアウォールの後ろにいると思います(したがって、ローカルMercurialを起動することはできません) HTTPサーバーを取得し、「サーバー」コンピューターから取得します)。
両方の編集者がサーバーリポジトリへの変更を取得する最良の方法は何ですか? (サーバーはインターネット上のサーバーであるため、google.com
。ホストされたWindowsサーバーですが、このために必要な場合はソフトウェアをインストールする権限があります。)
Www.fogbugz.comのKilnをお勧めします。これは商用のソース管理ソリューションであり、基本的には内部のMercurialを備えたWindowsラッパーです。
プロジェクトのドキュメントを読むのはいいスタートだと思います: https://www.Mercurial-scm.org/wiki/PublishingRepositories 。
また、管理を簡素化して外部委託することもできます-リポジトリが1つだけで、それをプッシュ/プルする人が数人いる場合は、 Bitbucket のような場所にホストするよりもはるかに悪い結果をもたらす可能性があります。 (そして、1つのリポジトリーのソリューションの場合、実際には無料です。)
プロジェクトを http://bitbucket.org/ 、Mercurialリポジトリホスティングサイトに配置することをお勧めします。ソースを他の人に見せたくない場合は、プライベートリポジトリを作成する設定があります。彼らがあなたにそれを請求し始める前に、あなたは1つのプライベートリポジトリを許可されていると思います。
編集:Bitbucket今 無制限に提供 プライベート/隠しリポジトリ。
確かに多くのWindows用のSSHサーバーがあります。以下に2つの例を示します。
Windowsユーザー接続については、Mercurial:The Definitive Guideブックの PuTTY の例をご覧ください。
SCM-Manager を使用して、httpまたはhttpsでリポジトリを共有できます。
Mercurialおよび PuTTY は、十分にサポートされ、文書化されたソリューションです。
最も単純な解決策は、特にWindowsのみの環境でSamba共有フォルダーを使用することです。私はちょうどそれを設定した、動作するようです。
セットアップ:Windwsサーバー+ Apache + Mercurial
Http.confの一部
<Location /hg>
DirectoryIndex hgweb.cgi #from Mercurial source, put it in htdocs/hg
AddHandler cgi-script .cgi
Options ExecCGI
Options +FollowSymLinks
Order deny,allow
Deny from all
<Limit GET POST>
Allow from 127.0.0.1 10.1.2
</Limit>
AuthUserFile D:/hg/htpasswd
AuthGroupFile D:/hg/hggroups
AuthType Basic
AuthName "Mercurial xxxx repositories"
Require group admin somegroup
RewriteBase /hg
RewriteRule ^$ hgweb.cgi [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgweb.cgi/$1 [QSA,L]
</Location>
<Location /hg/project1>
Require group somegroup admin
</Location>
<Location /hg/project2>
Require group somegroup admin
</Location>
<Location /hg/test>
Require valid-user
</Location>
Hgweb.conf/htpasswd/hggroupsのような、セットアップする他のファイルがありますが、それらは簡単な部分です。
それはかなりうまく機能しています。ユーザーがパスワードを変更したい場合は、オンラインhtpasswdジェネレーターにアクセスしてhtpasswdシーケンスを生成するように依頼し、htpasswdファイルに入れます。
私たちのセットアップは、VisualSvnサーバーが行うものと非常に似ていると思います。 (もちろん、はるかに簡略化されたバージョン)
私自身は使用していませんが、LShiftによる Mercurial Server を見てください。
「サーバーリポジトリ」を含む Dropbox フォルダーを共有します。
私の知る限り、これらのタイプのセットアップでMercurialを使用する最良の方法は、ソースが「サーバー」にプッシュするのではなく、ソースから変更をプルすることです。
私が知っている「最良の働き方」はありませんか? Mercurialがサポートしている可能性のある多数のワークフローと、偶数の ガイドに記載 があります。私は実際に「svn-ish」セットアップを使用しています。ローカルリポジトリで開発し、共有サーバー上にいくつかのリポジトリがあります。変更がある場合は、それらを中央リポジトリにプッシュします。私はそれらをHTTPS経由でプッシュしますが、(当然)プッシュ機能は開発者のみに制限しています。それは素晴らしい働き方です。
開発者が作成したクローンから中央リポジトリが変更を引き継ぐことを望んでいることは理解できますが、共有サーバー上の専用リポジトリを中央リポジトリisはプルできます。
Vプルを推進する問題についての考えを再考したいですか?