2013-05-24 31 views
16

Tôi hoàn toàn bị mắc kẹt với lỗi SVN khi cam kết 2447 tệp cùng một lúc. Tôi đang sử dụng TortoiseSVN (phiên bản mới nhất) trên Windows 7 64bits."Kiểu kết thúc dòng không nhất quán" cơn ác mộng

Thực tế là một số tệp đã được tạo trên Mac và các tệp khác trên PC, vì vậy TortoiseSVN đã dừng cam kết với lỗi gây phiền nhiễu Inconsistent line ending style. Ban đầu, để giải quyết vấn đề này, tôi đã tự mở tập tin bị phân biệt trong , thêm một khoảng trống, xóa nó và lưu tệp để Netbeans chuyển đổi đúng tất cả các ký tự kết thúc dòng, nhưng dường như có nhiều hơn "một số các tệp "bị buộc tội.

Tất nhiên tôi đã tìm kiếm trên web một giải pháp nhưng tôi không tìm thấy bất kỳ giải pháp nào phù hợp với môi trường Windows.

Tôi hiện đang đập đầu vào tường.

+1

tôi sẽ cố gắng sử dụng 'unix2dos' trên một vỏ Cygwin. – Kai

+1

Viết một chương trình nhỏ tìm kiếm trình chấm công kiểu mac và thay thế chúng bằng kiểu cửa sổ? Netbeans tìm và thay thế bằng regex cũng có thể làm điều đó. – assylias

+0

[Notepad ++] (http://notepad-plus-plus.org/) cũng có thể tìm và thay thế trong nhiều tệp cùng một lúc và hỗ trợ tìm kiếm '\ r',' \ n', v.v. – Kai

Trả lời

21

Trong Windows 7, bạn có thể sử dụng Notepad++ v5.6.8 để chuyển đổi EOL

Chỉnh sửa -> Chuyển đổi EOL -> Windows/Unix/Mac

3

Vì vậy, tôi trả lời câu hỏi của riêng tôi với @assylias's answer:

Bạn có thể nắm bắt được w: (\w)\n$ và thay thế bằng $1\r\n nơi $1 là nhân vật.

Tìm kiếm & thay thế bằng Netbeans bằng regex này thực hiện công việc.

Edit: vấn đề của tôi là rằng một kịch bản tùy chỉnh chèn ký tự sai EOL (\n thay vì \r\n) trong những tập tin này)

+0

Nếu điều này phù hợp nhất với bạn, tại sao bạn không đánh dấu nó là câu trả lời? –

+0

@SimonSobisch: Có lẽ vì stackoverflow không cho phép bạn chấp nhận câu trả lời của riêng bạn cho đến 48 giờ đã trôi qua, và nó không đáng để mọi người nhớ lại và chấp nhận nó một khi có thể. – ToolmakerSteve

+0

@ToolmakerSteve Điều này là không thể trong trường hợp này vì Epoc đã chấp nhận một câu trả lời đã được đăng hai tuần sau khi của riêng mình. Tôi chỉ hỏi vì anh ta đã viết trong câu trả lời của mình "điều này làm việc cho tôi" nhưng đánh dấu câu trả lời với nhiều phiếu nhất là "điều này làm việc cho tôi". –

3

Trong Notepad ++, chọn "Xem -> Hiển thị biểu tượng -> Hiển thị kết thúc dòng"

Trong hộp tìm kiếm (Control-F) chọn chế độ tìm kiếm Regular Expression và tìm kiếm các chuỗi:

[^ \ r] \ n $

(dịch: \ n mà không có \ r trước đó).

này sẽ đưa bạn trực tiếp dòng vấn đề (s), nơi bạn sẽ thấy dòng kết thúc với LF hơn với cặp CR-LF

+0

Bạn có chắc chắn dấu chấm sau khi nhóm ký tự chính xác không? AFAICS, regex này chọn các dòng có chứa 'bất cứ điều gì nhưng một \ r' theo sau bởi' bất cứ điều gì' theo sau bởi '\ n'. Không nên biểu thức là '[^ \ r] \ n $'? –

+0

Cảm ơn, không được phép ở đó. Biểu mẫu này tìm thấy cho tôi dòng đã kết thúc bằng \ n thay vì \ r \ n. Sửa lỗi –

+0

NP ++ của tôi khớp với '$ \ r \ n' thay vì' \ r \ n $ '(đếm kết thúc của một dòng là char * trước * dấu phân cách dòng), chỉ trong trường hợp có ai gặp vấn đề – Hashbrown

0

Trong Vim hoặc GVim trong môi trường Windows, các tập tin bị hỏng tất cả cho thấy ^M ở cuối mỗi dòng.

Để khắc phục: :s/\r//g để xóa các kết thúc dòng thừa bị hỏng.

0

Liên quan đến bài đăng ở trên, thực tế là regexp vim phải là :1,$s/\r//g. Một cách khác trên * n?x đang sử dụng sed:

sed -i '-es/\ r // g'

2

Nếu kết thúc dòng của bạn được tất cả theo thứ tự, nó có thể là tập tin văn bản của bạn có một Byte UTF16 Dấu đơn hàng (BOM).

Bạn có thể khắc phục điều đó bằng Notepad ++. Mã hóa -> Chuyển đổi sang UTF-8.

+0

Bắt tốt! Vì lý do nào đó, Windows Scheduler sẽ xuất các tác vụ của nó sang các tệp xml của mã hóa 'UCS2 LE BOM': | con rùa không thích điều đó lắm. Sau khi đi đến bộ lập lịch 'UTF' vẫn có thể nhập chúng trở lại để nó hoạt động cho tôi – Hashbrown

0

Để giải quyết vấn đề với kết thúc dòng khác nhau, bạn có thể thiết lập thuộc tính SVN như sau:

svn propset svn: eol-style mẹ đẻ my_file

Mặc dù điều này sẽ giải quyết vấn đề kết thúc dòng và thực hiện việc sáp nhập dễ dàng hơn, nó sẽ có nghĩa là đổ lỗi cho thấy người thêm kiểu eol làm thay đổi tất cả các dòng, và nó cũng có nghĩa là các tệp làm việc của bạn sẽ được sao chép vào thư mục tạm thời khi thực hiện một khác biệt.

Vấn đề trách nhiệm có thể được giải quyết sau đó bằng cách làm này:

svn đổ lỗi my_file -x "--ignore-gian-change --ignore-eol-style"

Các vấn đề liên quan