多くのSubversion操作では、ファイルまたはURL引数の末尾に「@」記号を追加すると、そのファイルの特定のリビジョンをターゲットにできます。たとえば、「svn info test.txt@1234」は、リビジョン1234に存在していたtest.txtに関する情報を提供します。
ただし、ファイルの名前に@が含まれている場合、Subversionはリビジョン指定子として誤って解釈します。
svn info 'test @ .txt' svn:リビジョン '.txt'の構文解析エラー
「/」、「\」、「@」でエスケープするだけでなく、二重引用符と単一引用符を試しました。 @記号をファイル名の一部として扱うようにSubversionに指示するにはどうすればよいですか?
SVN book (強調を追加)から:
知覚のある読者は、この時点で、ペグリビジョン構文が実際にアットマークを含む作業コピーパスまたはURLに問題を引き起こすのではないかと考えているでしょう。結局のところ、どのようにsvnが
news@11
が私のツリー内のディレクトリの名前なのか、それとも「(revision 11 ofニュース"?ありがたいことに、svnは常に後者を想定していますが、簡単な回避策があります。news@11@
などのように、パスの末尾にアットマークを追加するだけです。 svnは引数の最後のアットマークのみを考慮し、アットマークの後にリテラルペグリビジョン指定子を省略することは違法とは見なされません。この回避策は、アットマークで終わるパスにも適用されます。filename@@
を使用して、filename @という名前のファイルについて話します。
元の答えは正しいですが、おそらく十分に明確ではありません。特定のUNIXコマンドラインオプションは次のとおりです。
svn info '[email protected]@'
または
svn info "[email protected]@"
または
svn info image\@2x.png\@
3つすべてをテストしました。
異なるサブフォルダーに複数のファイルを追加するためのソリューション:
for file in $(find ./ -type f -name "*@*.png"); do svn add $file@; done
「@。png」の「png」を追加するファイルの種類に置き換えるだけです。
次のファイルを追加するには:[email protected]次の手順を実行します。svn add image\@ 2x.png @
私の場合、@記号を含むSVNリポジトリからファイルを削除する必要がありました。
これは機能しません:
svn remove 'src/assets/images/hi_res/[email protected]'
しかし、これは:
svn remove 'src/assets/images/hi_res/[email protected]@'
複数のファイルを追加するには、代替ソリューションがあります。
svn status | grep \.png | awk '{print $2"@"}'| xargs svn add
「move」のような2つの引数を持つsvnコマンドの場合、「@」を追加する必要がありますonly左(最初の)パラメーター。例えば:
$ svn add README@txt@
A README@txt
$ svn move README@txt@ README2@txt
A README2@txt
D README@txt
$ svn status
A README2@txt
$ svn commit -m "blah"
Adding README2@txt
Transmitting file data .
Committed revision 168.
$ svn delete README2@txt@
D README2@txt
$ svn commit -m "blahblah"
*Deleting README2@txt
Committed revision 169.
この行は重要です:$ svn move README @ txt @ README2 @ txt
ご覧のとおり、「README2 @ txt」に「@」を追加する必要はありません。
@デビッドH
私は@記号をエスケープせずに同様のコマンドを試しましたが、それでもうまくいきます
svn ci splash.png [email protected]@
これはGNU bash、バージョン3.2.48(1)-release(x86_64-Apple-darwin10.0)およびsvn 1.6.16にあります
今日、電子メールアドレスから生成されたファイル名に問題がありました(あまり良い考えではありません!)。
解決策、printf
のfind
オプションとシェル展開を使用
svn add $(find . -name "*@*.png" -printf "%p@ ")
私のために働いた唯一の解決策は、@ NPikeによって提案されたものと同じでした
svn revert 'path/to/filename @ ext @'