Cách thích hợp để thêm svn: thi hành


107

Tôi có một vài tệp đã được thực thi trước khi svn thêm chúng. Họ có tập thuộc tính svn: thi hành. Bây giờ, một số tệp khác đã được kiểm tra mà không có bit thực thi thì không có tệp đó và tôi muốn đặt thuộc tính svn: thi hành:

$ svn propset svn:executable on *.cgi

Sau đó, tôi kiểm tra trạng thái và thậm chí các tệp có tệp thực thi svn: đã được sửa đổi:

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


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

a.cgi không nên được sửa đổi. Tôi muốn thêm bit svn: thi hành để được đặt giống như trên các tệp khác, nhưng không thể tìm ra lệnh để thực hiện điều đó.


2
Tôi mở trang này mỗi khi tôi không muốn gõ svn propset svn:executable on (...). Và câu trả lời cho câu hỏi nên là for f in *.cgi; do if [ ! -x $f ]; then svn ps (...); fi; done, và chỉ cam kết các tệp đã sửa đổi. Sau đó, hãy tiếp tục.
Tomasz Gandor

@TomaszGandor Hãy nghĩ rằng bạn đang bỏ lỡ svn:executableđâu đó trong đoạn mã thứ hai đó. Có thể svn ps svn:executable on $f;?
Keith M

1
en.wikipedia.org/wiki/Ellipsis_(linguistics) - vâng, nó được để lại như một bài tập cho người đọc.
Tomasz Gandor

Câu trả lời:


166

Bạn có quyền sử dụng các lệnh chỉnh sửa thuộc tính svn. Thuộc tính svn: execute.

Để thêm "bit thực thi" trong svn

svn propset svn:executable on <list of files>

Để loại bỏ "bit thực thi" trong svn

svn propdel svn:executable <list of files>

Tài liệu SVN cho việc này nằm ở đây.

Đối với việc không sửa đổi tệp thực thi, bạn không sửa đổi tệp thực thi (một tổng kiểm tra sẽ xác minh điều đó), nhưng bạn đang sửa đổi kho lưu trữ SVN. Hãy nhớ rằng SVN sửa đổi hệ thống tệp, không chỉ tệp; vì vậy, việc sửa đổi các bit quyền sẽ làm tăng số lần sửa đổi SVN, ngay cả khi đó chỉ là sự sửa đổi các thuộc tính của tệp (chứ không phải sửa đổi bản thân tệp).


Khi tôi chạy svn propset theo cách được hiển thị ở trên, nó đặt chúng thành "*" nhưng cách tự nhiên đặt svn: thi hành không có gì, nhưng vẫn được đặt. Tôi muốn thuộc tính này giống với thuộc tính có bit thực thi được đặt trước khi thêm chúng vào subversion.
Jake

2
Xin lỗi vì tất cả các chỉnh sửa, nhưng nếu tôi nhớ lại chính xác, việc đặt nó thành bất kỳ thứ gì sẽ bật bit thực thi, xóa nó (và có thể đặt nó thành null hoặc khoảng trắng) sẽ tắt nó. Để có được giá trị mà khách hàng SVN của bạn đang sử dụng, có thể sử dụng propget svn.
Edwin Buck

-2

Đây là cách tôi đặt thuộc tính thực thi trên tất cả các tệp * .py trong dự án của tôi có đặt bit thực thi trên chúng. Tôi thực hiện điều này từ thư mục cấp cao nhất

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;

Làm thế nào để thuộc tính thực thi được thiết lập mà không sử dụng propset? Tôi đã không sử dụng nó, và theo hiểu biết tốt nhất của tôi, không ai khác cũng vậy. Nó xuất hiện trên ba tệp trong cùng một thư mục và không ở đâu khác, và dường như không có gì đặc biệt về những tệp đó. (Chúng là các tệp java, không phải sh hoặc exe hoặc bat hoặc jar hoặc bất cứ điều gì.)
Jerry Miller

Tôi tin rằng nếu tệp có bit thực thi được đặt khi nó được nhập lần đầu thì thuộc tính thực thi svn sẽ được đặt.
Isaac Jessop

khá chắc chắn tìm thấy có một công tắc -perm mà có thể là một chút thanh lịch hơn so với nếu / sau đó nhưng tất nhiên nó sẽ được nhiều hơn để nhớ
Never Again Ngủ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.