1. ホーム
  2. svn

[解決済み] Subversionが管理するファイル名の@文字をエスケープするには?

2022-04-20 13:48:15

質問

Subversion の多くの操作では、ファイルや URL の引数の最後に '@' 記号を追加することで、そのファイルの特定のリビジョンをターゲットにすることができます。 例えば、 "svn info test.txt@1234" は test.txt がリビジョン 1234 で存在したときの情報を提供します。

しかし、ファイル名に @ が含まれていると、Subversion はそれをリビジョン指定子として誤って解釈してしまいます。

svn info '[email protected]' です。 svn: リビジョン '.txt' の解析で構文エラーが発生しました。

ダブルクォート、シングルクォート、'/'、'second'、'@'でのエスケープを試しましたが、'/'、'second'、'second'、'@'は使えません。 どうすればSubversionに@記号をファイル名の一部として扱わせることができますか?

どのように解決するのですか?

からの SVNブック (強調)。

察しの良い読者は、この時点で、ペグリビジョン構文が、実際にat記号を含む作業コピーパスやURLの問題を引き起こすかどうか疑問に思っていることでしょう。結局のところ、どのようにして svn news@11 は、ツリー内のディレクトリの名前なのか、それとも単に「リビジョン 11 の ニュース "? ありがたいことに スヴン は常に後者を想定していますが、些細な回避策があります。 パスの末尾にアットマークを付けるだけです。 というように news@11@ . スヴン は引数の最後の at 記号にのみ関係し、その at 記号の後にリテラル peg リビジョン指定子を省略しても違法とは見なされません。この回避策は、at 記号で終わるパスにも適用されます。 filename@@ という名前のファイルについて話すために ファイル名@ .