Cara yang tepat untuk menambahkan svn: executable

107

Saya memiliki beberapa file yang telah dieksekusi sebelum svn menambahkannya. Mereka memiliki set properti svn: executable. Sekarang, beberapa file lain diperiksa tanpa bit yang dapat dieksekusi tidak memilikinya, dan saya ingin mengatur properti svn: executable:

$ svn propset svn:executable on *.cgi

Kemudian saya memeriksa status dan bahkan file dengan svn: executable telah dimodifikasi:

$ svn diff
Property changes on: a.cgi
___________________________________________________________________
Modified: svn:executable
   - 
   + *


Property changes on: b.cgi
___________________________________________________________________
Added: svn:executable
   + *

a.cgi tidak boleh dimodifikasi. Saya ingin menambahkan svn: bit yang dapat dieksekusi untuk disetel dengan cara yang sama seperti pada file lain, tetapi tidak dapat menemukan perintah untuk melakukannya.

Jake
sumber
2
Saya membuka halaman ini setiap kali saya tidak ingin mengetik svn propset svn:executable on (...). Dan jawaban atas pertanyaan itu seharusnya for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; done, dan cukup lakukan file yang dimodifikasi. Lalu lanjutkan.
Tomasz Gandor
@TomaszGandor Pikirkan Anda melewatkan svn:executablesuatu tempat di cuplikan kedua itu. Mungkinkah svn ps svn:executable on $f;?
Keith M
1
en.wikipedia.org/wiki/Ellipsis_(linguistics) - ya, itu dibiarkan sebagai latihan untuk pembaca.
Tomasz Gandor

Jawaban:

166

Anda berhak menggunakan perintah pengeditan properti svn. Properti ini adalah svn: dapat dieksekusi.

Untuk menambahkan "bit yang dapat dieksekusi" di svn

svn propset svn:executable on <list of files>

Untuk menghapus "bit yang dapat dieksekusi" di svn

svn propdel svn:executable <list of files>

Dokumentasi SVN untuk ini ada di sini.

Sejauh tidak memodifikasi executable, Anda tidak memodifikasi executable (checksum akan memverifikasi itu), tapi Anda sedang memodifikasi repositori SVN. Ingatlah bahwa sistem file revisi SVN, bukan hanya file; jadi, modifikasi bit izin akan meningkatkan nomor revisi SVN, meskipun itu hanya modifikasi properti file (dan bukan modifikasi dari file itu sendiri).

Edwin Buck
sumber
Ketika saya menjalankan svn propset dengan cara yang ditunjukkan di atas, ia menyetelnya ke "*" tetapi cara alami menyetel svn: dapat dieksekusi menjadi tidak ada, tetapi masih disetel. Saya ingin properti ini sama dengan properti yang bit yang dapat dieksekusi ditetapkan sebelum menambahkannya ke subversi.
Jake
2
Maaf untuk semua pengeditan, tetapi jika saya ingat dengan benar, mengaturnya ke apa pun akan mengaktifkan bit yang dapat dieksekusi, menghapusnya (dan mungkin mengaturnya ke null atau whitespace) akan mematikannya. Untuk mendapatkan nilai yang digunakan klien SVN Anda, propget svn dapat digunakan.
Edwin Buck
-2

Berikut adalah cara saya mengatur properti yang dapat dieksekusi pada semua file * .py dalam proyek saya yang telah menjalankan bit yang ditetapkan padanya. Saya menjalankan ini dari direktori tingkat atas

for f in `find ./ -name '*.py'`; do echo $f; if [ -x $f ]; then echo $f 'is executable setting svn:executable'; svn propset svn:executable on $f; else echo $f 'is not executable'; fi; done;
Isaac Jessop
sumber
Bagaimana atribut yang dapat dieksekusi diatur tanpa menggunakan propset? Saya tidak menggunakannya, dan sejauh pengetahuan saya, tidak ada orang lain yang juga menggunakannya. Itu muncul pada tiga file di direktori yang sama dan tidak di tempat lain, dan tampaknya tidak ada yang istimewa tentang file-file itu. (Itu file java, bukan sh atau exe atau bat atau jar atau apapun.)
Jerry Miller
Saya percaya jika file tersebut memiliki bit yang dapat dieksekusi yang disetel ketika awalnya diimpor maka properti yang dapat dieksekusi svn akan disetel.
Isaac Jessop
cukup yakin menemukan memiliki tombol -perm yang mungkin sedikit lebih elegan daripada jika / maka tapi tentu saja itu akan lebih untuk diingat
Never Sleep Again