3

会社の SCM を SVN から mercurial に移行しています。

現在のシナリオはこのようなものです。SVN は専用の別の Ubuntu サーバーで実行されています。そのため、すべての開発者は、Ubuntu サーバーで作成されたユーザーを使用して、個々のマシンから「svn + ssh」プロトコルを使用してコードをチェックインおよびチェックアウトしていました。その結果、SSH で使用するユーザーが変更セットの作成者としてリポジトリに記録されます。

では、Mercurial では、開発者が SSH 経由で (hgrc に設定されたローカル ユーザー名ではなく) チェックインするたびに、Ubuntu で作成された同じユーザー セットを使用して作成者として記録することは可能ですか??

hg クローン ssh://user@192.168.2.2//hg/support

私が使おうとしているものです。それは機能しますが、作者の問題です。

4

1 に答える 1

6

いいえ、これは不可能です。集中型バージョン管理と分散型バージョン管理の根本的な違いに直面しています。

DVCS では、作成者はすべての開発者のローカル構成で構成され、変更がコミットされるとすぐに設定されます。この後、コミットはimmutableであり、そのハッシュは固定されているため、プッシュしてもサーバーは author を変更できません

これは問題として認識されていません。マントラは次のとおりです。開発者が正しい名前を設定することを信頼できない場合は、最初からコードをプッシュするためのアクセス権を開発者に与えるべきではありません。作成者は単なる有用なメタデータであり、信頼できるものではありません。

これをどうにかしてログに記録する必要がある場合は、どのユーザーがどの変更セットをプッシュしたかを記録するフックを使用して、プッシュログを作成することができます。例はそこにあります。たとえば、Mozilla には「mercurial pushlog」の google があります。

于 2012-06-07T13:28:07.797 に答える