2012-04-04 13 views
3

私はMercurialがWindows上のreposでシンボリックリンクをサポートしていないことを知っています。私はそれで暮らすことができますが、NTFSシンボリックリンクを使った実装は、非管理者のためのWindowsボックスで特権を有効にできる人にとってはうれしいでしょう。MercurialはWindowsから独自のシンボリックリンク形式を作成できますか?

私は、MercurialがWindowsマシン上にリポジトリが表示されたときに、Unixリポジトリからの実際のリンクを処理する方法について疑問に思っています。レポから私のWindows開発マシン上のシンボリックリンクを使って更新すると、そのリンクのターゲットがテキストとして実際のファイルに変更されていることがわかります。

とにかくでも、MercurialはWindows上でさえも、実際のファイルとして保存されていても、もともとはシンボリックリンクであったことを知っています。 Windowsでファイルの内容を編集すると、シンボリックリンクがまだMercurialによってシンボリックリンクとして記録されているため、シンボリックリンクのターゲットを変更できます。私がUnixにプッシュバックすると、シンボリックリンクが新しい場所を指しています。

So. Windowsで作成したファイルをシンボリックリンクとしてマークするにはどうすればよいですか? MercurialがこのようなシンボリックリンクをUnixファイルシステムにプッシュできることは明らかですが、Unix上でリンクを最初に作成することなくそのようにマークする方法はわかりません。

フラグは設定できますか?

答えて

1

no work-around on Windowsがあります。ただし、Windows上のファイルのシンボリックリンクビットを設定できる拡張機能を作成することもできます。この拡張はおそらくdirstate.flagfuncをオーバーライドする必要があります。これはファイルの "フラグ"(実行とシンボリックリンクビット)を要求するときに使用される関数です。

MercurialがチェックアウトでWindowsのシンボリックリンクを作成するための全体的な機能については、Issue 1825も参照してください。それは「完了しました」とマークされているので、いつでもすぐに変更することはほとんどありません。

+0

明確にするために、私はWindowsのシンボリックリンクを作成したくありません。私はUnixにプッシュするときにsymlinkになるコンテンツをターゲットとする1行のテキストファイルを作成したいだけです。 Mercurialによるシンボリックリンクとして既に知られているファイルは、適切なシンボリックリンクとして戻ってきます。私が作成した特定のテキストファイルをMercurialに同じことを伝えることはできますか?それは私が拡張機能を書くことができるビットなのか、もしそうなら、どこでMercurialのコードを調べ始めるべきですか?ありがとう。 –

+0

@IanHallam:確かに、私は、オーバーライドする関連する関数と思われるものへのポインタで答えを更新しました。 –

関連する問題