4

私は Mercurial を使用して特にユニークな状況にいます。私のグループは、組み込み Linux を実行するいくつかの異なるハードウェア アーキテクチャにわたって開発を行っています。その結果、ほとんどのコード開発はデスクトップ Linux と PC で行い、さまざまなハードウェア アーキテクチャを実行するサーバーでビルドを行います。

Windows を使用している人がすべての変更を Mercurial サーバーにプッシュする必要があるシナリオがあります。ただし、サーバーとすべてのビルド マシンは Linux を実行し、特定の種類のファイルに対して特定の (UNIX) ファイル アクセス許可を想定しています。

私の質問は次のとおりです。PC から UNIX ファイルのパーミッションを変更する機能はありますか、または Mercurial でファイルを追加して変更をプッシュするときに、ある種のファイルパーミッションルールを設定する方法はありますか?

ほとんどの PC ユーザーは、TortoiseHG GUI または hg コマンドライン インターフェイスを使用していることに注意してください。

ありがとう!

4

1 に答える 1

6

Mercurial はファイルについて 2 つのことしか追跡できません: 実行可能な状態とシンボリックリンクの状態です。これは、より複雑な権限 (グループ権限など) を保存できないことを意味します。

Windows では、Mercurial は実行可能ファイルとシンボリック リンクのビットを読み書きしようとしません。したがって、新しく追加されたファイルは、Unix (モード 644) では非実行ファイルとして表示され、通常のファイルとして表示されます。Unix の規則に変換されたパーミッションを確認するために使用hg manifest -vしますが、Mercurial は実際にはファイルごとに 2 ビットしか格納しないことに注意してください。

Windows 上で保存されたビットを操作することはできません。ビットを設定するためのルール システムはありませんが、そのようなシステムを実装する拡張機能を作成できます。

ファイルに対してこれよりも特殊なアクセス許可が必要な場合はhg update、ビルド マシンの後でそれらを設定する必要があります。これにはフックを使用することも、拡張機能を作成することもできます。これを行う既存の拡張機能はないと思いますが、チェックアウトされたファイルの変更時間を保存および復元する拡張機能は、良い出発点になるはずです。

于 2013-09-20T22:41:22.783 に答える