1

SMB 共有経由でアクセスできるいくつかのファイルのバージョンを制御する必要があります。これらのファイルは複数の人によって変更されます。ファイル自体は Web サーバーによって直接使用されます。

これらは運用ファイルであるため、ユーザーに強制的にローカル コピーを取得し、編集し、コミットしてプッシュ バックさせるようにしました。残念ながら、そのマシンには Mercurial サーバーがありません。

私の側で Mercurial を構成する適切な方法は次のとおりです。

  • バージョン管理 (.hg ディレクトリ) は共有に保持されます
  • 共有上のファイルが最新バージョンであることを確認しますか?

このサーバーへのアクセス権がありません (共有経由以外)。そのマシンにmercurialサーバーがあれば、フックを使用して本番ディレクトリのファイルを更新したでしょう(これは、私が達成したいことを強調するために言っているだけです-私はそのサーバーを制御していないため、このアプローチは不可能です)

ありがとう!

更新:中間サーバーを使用することになりました(これを制御できます)。フックをオンにchangegroupするとスクリプトがトリガーされ、 i) hg update新しいローカル ファイルが作成され、 ii)それらが SMB 共有にコピーされます。

EDIT 1アレックスとのコメントでの議論に続いて、コマンドライン出力の詳細バージョンを見てきました。\\srv\hg\test1リポジトリ[hooks]にはchangegroup = hg update. からの出力は、hg push -vいくつかの洞察を提供します。

pushing to \\srv\hg\test1
query 1; heads
(...)
updating the branch cache
running hook changegroup: hg update
'\\srv\hg\test1'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.
abort: no repository found in 'C:\Windows' (.hg not found)!
warning: changegroup hook exited with status 255
checking for updated bookmarks
listing keys for "bookmarks"

上記の出力を正しく理解している場合:

  • [hook]cmd.exe が受信側サーバー上にあったにもかかわらず、クライアント上でトリガーされた
  • リモートリポジトリを更新しようとしました
  • ...しかし、UNC がサポートされていないため失敗しました

alexの答えは正しかった - MS Windows では (まだ?) 動かない(アレックスが間違っている場合は、コメントで訂正してください)

4

2 に答える 2

0

Samba 共有をマウントしてhg initそこで実行できない理由は何ですか? hg serveプッシュ/プル操作を実行するために水銀サーバー (またはより洗練されたもの)は必要ありません。

于 2013-06-13T18:29:14.257 に答える
0

私の理解が正しければ、次の 2 つのことを探していることになります。

  1. 誰かがプッシュするたびに本番リポジトリを最新バージョンに自動的に更新するリポジトリフック。これは簡単です。あなたはこの質問に対する答えを探しています。

  2. プル、コミット、プッシュのプロセスを常に実行するように同僚に頼ることができれば、それで完了です。そうでない場合は、人々が本番ファイルをその場で変更して決してコミットしないようにする方法が必要です。

残念ながら、SMB 共有上のチェックアウトされたファイル (リポジトリではなく) への書き込みアクセス許可を選択的に保留することはできないと思います。ただし、ファイルの場所をわかりにくくすることで、直接の変更を思いとどまらせることができます。おそらく、プッシュされたすべてのものがすぐに実稼働リポジトリにプッシュされるように構成された2 番目のリポジトリに人々を導くことができます。このレポには、ファイルのチェックアウト バージョンがまったく必要ない ( で作成するhg clone -Uか、hg update -r 0後で実行する) ため、mercurial をバイパスする誘惑がなくなります。

于 2013-06-14T16:08:40.387 に答える