Untuk banyak operasi Subversi, menambahkan simbol '@' di akhir file atau argumen URL memungkinkan Anda untuk menargetkan revisi tertentu dari file itu. Misalnya, "info svn test.txt@1234" akan memberikan informasi tentang test.txt seperti yang ada di revisi 1234.
Namun, ketika nama file berisi @, itu ditafsirkan secara salah oleh Subversion sebagai specifier revisi:
info svn 'test @ .txt' svn: Sintaks kesalahan penguraian revisi '.txt'
Saya sudah mencoba tanda kutip ganda dan tunggal serta melarikan diri dengan '/', '\', dan '@'. Bagaimana saya bisa memberi tahu Subversion untuk memperlakukan simbol @ sebagai bagian dari nama file?
Jawaban:
Dari buku SVN (penekanan ditambahkan):
sumber
news@11
bisa juga file.@foo
untuk@bar
,svn rename @foo@ @bar
akan mengeluh tentang@bar
; tetapi jika Anda berhasilsvn rename @foo@ @bar@
, nama baru akan secara harfiah@bar@
. Untuk menghindari hal ini, tambahkan./
(atau.\
pada windows) untuk membuatnya jelas itu adalah jalan lokal:svn rename @foo@ ./@bar
.Jawaban aslinya benar, tetapi mungkin tidak cukup eksplisit. Opsi baris perintah unix tertentu adalah sebagai berikut:
atau
atau
Saya baru saja menguji ketiganya.
sumber
svn info [email protected]@
dan berhasil juga. Ya, tidak ada kutipan atau garis miring!bash
jalan raya :)Solusi untuk menambahkan banyak file dalam berbagai sub-folder:
Cukup ganti "png" di " @ .png" dengan jenis file yang ingin Anda tambahkan.
sumber
@
nama mereka sebagai kasus khusus, Anda dapat dengan aman menambahkan@
simbol ke semua nama file:for file in $(find ./ -type f -iname "*.png"); do svn add "$file@"; done
. juga, bukankah pendekatan ini membuat repo svn Anda dengan struktur file / direktori tidak konsisten dengan copy lokal yang berfungsi?exec
find mungkin lebih mudah:find . -type f -name "*@*.png" -exec svn add {}@ \;
untuk menambahkan file berikut: [email protected] lakukan hal berikut: svn add image \ @ 2x.png @
sumber
Cukup tambahkan
pada bagian file yang perlu Anda gunakan, tidak peduli apa perintah SVN itu, misalnya:
untuk
sumber
Dalam kasus saya, saya perlu menghapus file dari repo SVN yang berisi tanda @:
Ini tidak akan berhasil:
Tapi ini berhasil:
sumber
Untuk menambahkan banyak file, ada solusi alternatif:
sumber
svn status | awk '/\.png/ {print $2"@"}'| xargs svn add
Untuk perintah svn dengan 2 argumen seperti "bergerak", Anda harus menambahkan "@" hanya pada parameter kiri (pertama). Sebagai contoh:
Baris ini penting: $ svn pindahkan README @ txt @ README2 @ txt
Seperti yang Anda lihat, kita tidak perlu menambahkan "@" di "README2 @ txt"
sumber
@ David H
Saya baru saja mencoba perintah serupa tanpa keluar dari simbol @ dan masih berfungsi dengan baik
Ini ada di GNU bash, versi 3.2.48 (1) -release (x86_64-apple-darwin10.0) dan svn 1.6.16
sumber
Satu-satunya solusi yang bekerja untuk saya adalah sama dengan yang disarankan oleh @NPike
svn kembalikan 'path / ke / filename @ ext @'
sumber
Saya punya masalah hari ini dengan nama file yang dihasilkan dari alamat email (bukan ide yang sangat bagus!).
Solusi, menggunakan
printf
opsifind
, dan ekspansi shellsumber