2011-11-06 15 views
18

Tôi thấy rằng thực tiễn tốt nhất là có tất cả các tệp văn bản có svn:eol-style=native thuộc tính được đặt. Nhưng cách hiệu quả nhất để làm điều đó là gì?Cách tốt nhất để có svn: eol-style = native cho các tệp văn bản theo mặc định là gì?

Tôi phát triển các chương trình chủ yếu trên Windows (sử dụng dòng lệnh TortoiseSVN và svn.exe) và đôi khi viết thư viện C/C++ di động cho Windows và Linux. Để ngăn chặn sự hỗn hợp khó chịu-CR, vấn đề LF trên các tập tin nguồn của tôi, tôi nghĩ rằng svn:eol-style=native nên là "mặc định", nhưng tiếc là nó không phải là.

Tôi biết từ Sách đỏ Subversion định cấu hình [auto-props] trong ~/.subversion/config hoặc %APPDATA%\Subversion\config giúp, tuy nhiên, đó là mỗi cài đặt của khách hàng. Điều gì về một số nhà phát triển trong nhóm của tôi quên cấu hình các tập tin cấu hình (suy nghĩ về dev trên nhiều máy ảo)? Thậm chí tất cả hãy nhớ, điều gì sẽ xảy ra nếu một số loại tên mở rộng tập tin văn bản mới xuất hiện? Làm cách nào để truyền đạt chính xác thay đổi này cho tất cả tệp cấu hình trên tất cả các máy dev trong nhóm của tôi?

Tất cả dường như là một quá trình rườm rà.

+1

liên quan: [Force svn: eol-style = nguồn gốc trên máy chủ] (http://stackoverflow.com/questions/ 562406/force-svneol-style-native-on-the-server) – blahdiblah

Trả lời

12

Subversion 1.8 cách

Bởi vì Subversion 1.8 có repository dictated configuration (RDC), cho bắt buộc sử dụng cài đặt chung bởi tất cả khách hàng cho một kho lưu trữ nhất định, thuộc tính có thể và phải được định cấu hình trong thư mục gốc của kho lưu trữ (hoặc trunk)

+0

Cảm ơn bạn. Đó là giải pháp của svn 1.8 là tuyệt vời mà tôi nghĩ rằng giải quyết 99% của những rắc rối. –

21

Điều gì về một số nhà phát triển trong nhóm của tôi quên định cấu hình các cấu hình đó tệp (nghĩ về dev trên nhiều máy ảo)?

Chỉ sửa lỗi.

Nếu bạn tìm thấy tệp đã được đăng ký không chính xác, sẽ không quá khó để khắc phục. Trước tiên, hãy thay đổi tệp thành kiểu kết thúc dòng chính xác cho nền tảng của bạn. Bất kỳ trình soạn thảo lập trình nào cũng có thể chuyển đổi kiểu với một số lệnh tích hợp hoặc bạn có thể sử dụng tiện ích loại 'fromdos' hoặc 'todos'. Sau khi đã cố định, thiết lập thuộc tính và kiểm tra xem nó trong:

svn propset svn:eol-style native filename 
svn commit filename 

Bản sao nhận xét của tôi:

gợi ý khác là sử dụng pre-cam kết nối, kiểm tra svn: thiết lập eol-style (và hiện diện) và sửa chữa nếu cần thiết

+1

Một gợi ý khác là sử dụng móc trước cam kết, kiểm tra cài đặt kiểu svn: eol (và hiện diện) và sửa nếu cần –

+0

Có thể là một ý tưởng hay. Có thể trước khi cam kết móc âm thầm thêm svn: eol-style = native property vào tập tin cam kết ngay trước khi cam kết vào kho lưu trữ? Khi svn client thực hiện cập nhật 'svn' lần sau, anh ta sẽ tự động nhận được thuộc tính đó. –

+0

Tôi nghĩ rằng - nó có thể: bạn có thể sử dụng bất kỳ lệnh nào trong hook-script. Tôi không kbow chỉ làm thế nào để có được danh sách tập tin cho các tập tin trong cam kết và tập tin duy nhất từ ​​danh sách –

6

Đây phải là câu trả lời nhanh, chứ không phải đây là liên kết "phiên bản.

Chúng tôi sẽ chỉ làm điều đó, được chứ? Đối với phiên bản phụ 1.8+:

$ cd my_checkout_dir 

$ svn propset svn:auto-props ' 
### src 
*.c = svn:eol-style=native 
*.cpp = svn:eol-style=native 
*.h = svn:eol-style=native 
*.pch = svn:eol-style=native 
*.lua = svn:eol-style=native 
*.py = svn:eol-style=native 
*.pl = svn:eol-style=native 
*.txt = svn:eol-style=native 
*.sh = svn:eol-style=native;svn:executable 
### ui 
*.xib = svn:eol-style=native 
*.ui = svn:eol-style=native 
*.qrc = svn:eol-style=native 
### project 
*.pro = svn:eol-style=native 
*.pbxproj = svn:eol-style=native 
*.json = svn:eol-style=native 
*.xcworkspacedata = svn:eol-style=native 
*.plist = svn:eol-style=native 
' . 

$ svn commit -m 'Got really tired of svn:eol-style issues' 

Xin lưu ý đóng dấu nháy đơn và dấu chấm (tức là thư mục hiện tại) ở cuối. Điều chỉnh danh sách này theo nhu cầu của bạn, sao chép svn propset svn:auto-props '…' . vào thiết bị đầu cuối unix/msys (có, với Enters). Sau khi cam kết, tất cả các tệp dưới my_checkout_dir sẽ kế thừa các thuộc tính tương ứng khi thêm. Tệp được thêm trước hành động này sẽ không phải được sửa đổi. Như bạn thấy trong *.sh trở xuống, bạn có thể thêm các thuộc tính khác qua ;.Nếu bạn muốn thay đổi danh sách, chỉ cần lặp lại mọi thứ.

Dưới đây là giá trị mặc định được đề xuất bởi svn trong tôi ~/.subversion/config cho tài liệu tham khảo:

### The format of the entries is: 
### file-name-pattern = propname[=value][;propname[=value]...] 
### The file-name-pattern can contain wildcards (such as '*' and 
### '?'). All entries which match (case-insensitively) will be 
### applied to the file. Note that auto-props functionality 
### must be enabled, which is typically done by setting the 
### 'enable-auto-props' option. 
# *.c = svn:eol-style=native 
# *.cpp = svn:eol-style=native 
# *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native 
# *.dsp = svn:eol-style=CRLF 
# *.dsw = svn:eol-style=CRLF 
# *.sh = svn:eol-style=native;svn:executable 
# *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL; 
# *.png = svn:mime-type=image/png 
# *.jpg = svn:mime-type=image/jpeg 
# Makefile = svn:eol-style=native 
Các vấn đề liên quan