วิธีที่เหมาะสมในการเพิ่ม svn: executable


107

ฉันมีไฟล์สองสามไฟล์ที่สามารถเรียกใช้งานได้ก่อนที่ svn จะเพิ่มเข้าไป พวกเขามีชุดคุณสมบัติ svn: executable ตอนนี้มีการตรวจสอบไฟล์อื่น ๆ อีกสองสามไฟล์โดยไม่มีบิตที่เรียกใช้งานได้และฉันต้องการตั้งค่าคุณสมบัติ svn: executable:

$ svn propset svn:executable on *.cgi

จากนั้นฉันตรวจสอบสถานะและแม้กระทั่งไฟล์ที่มี svn: executable ได้รับการแก้ไขแล้ว:

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


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

ไม่ควรแก้ไข a.cgi ฉันต้องการเพิ่ม svn: บิตเรียกทำงานเพื่อตั้งค่าในลักษณะเดียวกับที่มีอยู่ในไฟล์อื่น ๆ แต่ไม่สามารถหาคำสั่งให้ทำได้


2
svn propset svn:executable on (...)ฉันเปิดหน้านี้เวลาที่ฉันไม่ต้องการที่จะทุกประเภท และคำตอบสำหรับคำถามควรเป็นfor f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; doneและเพียงแค่ยืนยันไฟล์ที่แก้ไข จากนั้นไปต่อ
Tomasz Gandor

@TomaszGandor คิดว่าคุณหายไปsvn:executableไหนในตัวอย่างที่สอง อาจจะsvn ps svn:executable on $f;?
Keith M

1
en.wikipedia.org/wiki/Ellipsis_( ภาษาศาสตร์) - ใช่มันถูกปล่อยให้เป็นแบบฝึกหัดสำหรับผู้อ่าน
Tomasz Gandor

คำตอบ:


166

คุณมีสิทธิ์ใช้คำสั่งแก้ไขคุณสมบัติ svn คุณสมบัติคือ svn: executable

หากต้องการเพิ่ม "บิตปฏิบัติการ" ใน svn

svn propset svn:executable on <list of files>

หากต้องการลบ "บิตปฏิบัติการ" ใน svn

svn propdel svn:executable <list of files>

เอกสาร SVN สำหรับสิ่งนี้อยู่ที่นี่

เท่าที่ไม่ได้แก้ไขไฟล์ปฏิบัติการคุณไม่ได้แก้ไขไฟล์ปฏิบัติการ (การตรวจสอบจะตรวจสอบสิ่งนั้น) แต่คุณกำลังแก้ไขที่เก็บ SVN โปรดจำไว้ว่า SVN แก้ไขระบบไฟล์ไม่ใช่แค่ไฟล์ ดังนั้นการแก้ไขบิตการอนุญาตจะเพิ่มหมายเลขการแก้ไข SVN แม้ว่าจะเป็นเพียงการแก้ไขคุณสมบัติของไฟล์ก็ตาม (ไม่ใช่การแก้ไขไฟล์เอง)


เมื่อฉันเรียกใช้อุปกรณ์ประกอบฉาก svn ตามวิธีที่แสดงไว้ด้านบนมันจะตั้งค่าเป็น "*" แต่วิธีที่เป็นธรรมชาติจะตั้งค่า svn: executable ให้เป็นอะไร แต่ยังคงตั้งค่าไว้ ฉันต้องการให้คุณสมบัตินี้เหมือนกับคุณสมบัติที่มีการตั้งค่าบิตที่เรียกใช้งานได้ก่อนที่จะเพิ่มลงในการโค่นล้ม
Jake

2
ขออภัยสำหรับการแก้ไขทั้งหมด แต่ถ้าฉันจำได้ถูกต้องการตั้งค่าเป็นอะไรก็ได้จะเป็นการเปิดบิตที่เรียกใช้งานได้การลบมัน (และอาจตั้งค่าเป็นโมฆะหรือช่องว่าง) จะเป็นการปิด เพื่อให้ได้ค่าที่ไคลเอนต์ SVN ของคุณใช้สามารถใช้ svn propget ได้
Edwin Buck

-2

นี่คือวิธีที่ฉันตั้งค่าคุณสมบัติที่เรียกใช้งานได้ในไฟล์ * .py ทั้งหมดในโปรเจ็กต์ของฉันที่มีการตั้งค่าบิตรันไว้ ฉันดำเนินการสิ่งนี้จากไดเรกทอรีระดับบนสุด

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;

จะตั้งค่าแอตทริบิวต์ที่สามารถเรียกใช้งานได้โดยไม่ใช้อุปกรณ์ประกอบฉากได้อย่างไร? ฉันไม่ได้ใช้มันและด้วยความรู้ที่ดีที่สุดก็ไม่มีใครทำเช่นกัน มันปรากฏบนไฟล์สามไฟล์ในไดเร็กทอรีเดียวกันและไม่มีที่ไหนเลยและดูเหมือนว่าไฟล์เหล่านั้นจะไม่มีอะไรพิเศษ (เป็นไฟล์ java ไม่ใช่ sh หรือ exe หรือ bat หรือ jar หรืออะไรก็ตาม)
Jerry Miller

ฉันเชื่อว่าหากไฟล์มีการตั้งค่าบิตปฏิบัติการเมื่อนำเข้าครั้งแรกคุณสมบัติที่ปฏิบัติการได้จะถูกตั้งค่า
Isaac Jessop

ค่อนข้างแน่ใจว่าพบว่ามีสวิตช์ -perm ซึ่งอาจจะดูหรูหรากว่า if / then เล็กน้อย แต่แน่นอนว่าจะต้องจดจำมากกว่านี้
Never Sleep Again
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.