74

私は Mercurial をしばらく使っていますが、主に自分用です。しかし今、私が取り組んでいるプロジェクトがあり、2 人が同じプロジェクトを構築しており、おそらくお互いのファイルを変更することになるでしょう。

サーバー上に Mercurial リポジトリをセットアップし、そのリポジトリを「サーバー」にしたいので、私の変更と他のエディターの変更の両方がそのサーバーにプッシュされます (つまり、基本的にはSubversion / CVSモデル)。私は Mercurial が好きですが、Subversion のようなものに切り替えたくありません。

ここで私自身のネットワークでは、すべてが Linux で行われ、私の「サーバー」にはOpenSSHがインストールされています。したがって、私の変更 (私は複数のコンピューターで作業しています) を 1 台のコンピューターからサーバーにプッシュするのは、単に "hg push" の問題です。変更の転送に使用されるプロトコルはSSHです。

問題は、私が Linux を使用していて、サーバーが Windows であり (OpenSSH はありませんよね?)、他のエディターも Windows を使用していることです。私の知る限り、これらのタイプのセットアップで Mercurial を使用する最善の方法は、ソースが「サーバー」にプッシュするのではなく、リポジトリがソースから変更をプルすることです。私は複数のファイアウォール (完全に私のネットワークではない) の背後にいて、私のコンピューターはサーバーから見えません。また、他のエディターもファイアウォールの背後にあると想定しています (したがって、ローカルの Mercurial を起動することはできません)。 HTTP サーバーからプルする「サーバー」コンピューターを取得します)。

両方の編集者が変更をサーバー リポジトリに反映するための最良の方法は何ですか? (サーバーはインターネット上のサーバーであるgoogle.comため、.

4

14 に答える 14

50

プロジェクトのドキュメントを読むことは良いスタートだと思います: https://www.mercurial-scm.org/wiki/PublishingRepositories

于 2009-04-11T14:03:53.980 に答える
19

また、外部委託することで管理が簡素化される可能性もあります。リポジトリが 1 つしかなく、それをプッシュ/プルする人が 2 人しかいない場合は、 Bitbucketのような場所でホストするよりもはるかに悪い結果になる可能性があります。(そして、1 つのリポジトリ ソリューションの場合、実際には無料です。)

更新: 2020 年になり、Bitbucket は mercurial をサポートしなくなりました。https ://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket を参照してください。

ホスト型または自己ホスト型の無料または有料ソリューションのリストについては、https://www.mercurial-scm.org/wiki/MercurialHostingを参照してください。

于 2009-05-22T17:21:23.720 に答える
16

rhodecodeを見てみましょう。これは、コード検索など、Kilnが提供する多くの機能を備えたオープン ソースの Mercurial サーバーです。LDAP とうまく統合されるので、Windows ドメインで HG ユーザーを認証できます。

于 2011-10-27T10:21:04.833 に答える
14

更新: 2020 年になり、Bitbucket は mercurial をサポートしなくなりました。https ://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket を参照してください。

ホスト型または自己ホスト型の無料または有料ソリューションのリストについては、https://www.mercurial-scm.org/wiki/MercurialHostingを参照してください。

Mercurial リポジトリ ホスティング サイトであるhttp://bitbucket.org/にプロジェクトを配置することをお勧めします。

ソースを他の人に見られたくない場合は、プライベート リポジトリを作成する設定があります。彼らがあなたに課金し始める前に、あなたは1つのプライベートリポジトリを許可されていると思います。

編集: Bitbucket は、無制限のプライベート/隠しリポジトリを提供するようになりました。

于 2010-05-31T15:48:10.500 に答える
11

www.fogbugz.comのKiln をお勧めします。これは商用ソース管理ソリューションであり、基本的には Mercurial を内部に持つ Windows ラッパーです。

2020-10-24 更新

11 年前、Mercurial は実行可能なソリューションだったかもしれませんが、現在はそうではありません。Git は機能します。

于 2010-05-31T15:44:12.707 に答える
8

Windowsで利用できるSSHサーバーは確かにたくさんあります。次に2つの例を示します。

Windowsユーザー接続に関するMercurial:TheDefinitiveGuideブックのPuttyの例を確認してください。

于 2009-04-13T21:01:03.493 に答える
6

SCM-Managerを使用して、http または https でリポジトリを共有できます。

于 2011-02-03T08:28:46.377 に答える
5

Mercurial とPuTTYは、十分にサポートされ、十分に文書化されたソリューションです。

于 2009-04-11T13:47:59.773 に答える
3

最も簡単な解決策は、特にWindowsのみの環境で、Samba共有フォルダーを使用することのようです。設定したばかりで、動作しているようです。

于 2010-02-19T17:43:10.883 に答える
2

セットアップ: Windows サーバー + 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 Server が行うものと非常に似ていると思います。(もちろん、かなり単純化されたバージョン)

于 2011-12-09T06:16:47.030 に答える
2

私自身は使用していませんが、LShiftによるMercurial Serverを見てください。

于 2011-04-14T13:24:11.490 に答える
1

「サーバー リポジトリ」を含むDropboxフォルダを共有します。

于 2010-08-12T08:59:21.843 に答える
0

私の知る限り、これらのタイプのセットアップでMercurialで作業する最良の方法は、ソースが「サーバー」にプッシュするのではなく、リポジトリがソースから変更をプルすることです。

私が知っている「最善の働き方」はありませんか?Mercurialがサポートする可能性のあるワークフローは多数あり、それらをガイドにリストすることもできます。私は実際に「svn-ish」セットアップを使用しています。このセットアップでは、ローカルリポジトリで開発し、共有サーバー上にいくつかのリポジトリがあります。変更がある場合は、中央リポジトリにプッシュします。私はそれらをHTTPS経由でプッシュし、(当然のことながら)プッシュ機能を開発者のみに制限しました。それは素晴らしい働き方です。

開発者が作成したクローンから中央リポジトリに変更をプルすることを人々が望んでいることは理解できますが、中央リポジトリがプルできる共有サーバー上の専用リポジトリを自分自身と同僚に提供することを妨げるものは何もありません。。

あなたはプッシュvプルの問題についてのあなたの考えを再考したいかもしれませんか?

于 2011-01-14T08:23:40.633 に答える