2010-08-02 31 views
40

Subversion thủ quốc gia «!»: '!'Làm thế nào để sửa chữa tình trạng Subversion

Mục bị thiếu (ví dụ: bạn đã di chuyển hoặc đã xóa mục này mà không sử dụng svn). Điều này cũng chỉ ra rằng một thư mục là chưa đầy đủ (một thanh toán hoặc cập nhật là bị gián đoạn).

Nhưng thường xuyên như vậy với Subversion, không có chỉ dẫn về cách khắc phục sự cố.

Thông thường, tôi sẽ sử dụng số Fix_Subversion.command đáng tin cậy của mình nhưng lần này nó là thân cây và sẽ mất vĩnh viễn.

Vì vậy, có tùy chọn nào nhanh hơn không?

+1

bạn có di chuyển hoặc xóa (các) mục được đề cập không? –

+0

Có. xem bên dưới. – Martin

+0

@Martin: cảm ơn kịch bản của bạn, nó đã lưu lại ngày của tôi! – Hraban

Trả lời

44
svn revert /path/to/file 
svn rm /path/to/file  # if you want to delete it from svn itself 

quy tắc vàng là: một khi một cái gì đó đang được svn-kiểm soát, bất cứ di chuyển, xóa, đổi tên, nên được thực hiện với các lệnh svn (svn mv, svn rm, vv), không sử dụng hệ thống tập tin bình thường/File- chức năng thám hiểm.

+0

Có, tôi đã sao chép và đổi tên. Nhưng tất cả với lệnh svn và và với svn cam kết sau mỗi thị trưởng thay đổi. Nhưng vẫn còn những điều sai lầm. – Martin

+0

Hoặc là _something_ đã làm hoặc việc triển khai svn của bạn cục bộ hoặc trên máy chủ bị hỏng. – Wrikken

+0

Tôi tự hỏi liệu Eclipse có làm rối tung mọi thứ không. Tôi làm hầu hết các công việc liên quan đến Subversion trên dòng lệnh. Với các ngoại lệ của việc đổi tên gói và lớp mà tôi làm với việc tái cấu trúc lại Eclipse. Tất nhiên Eclipse có trình cắm thêm Subversion cần thiết. – Martin

14

gì sẽ xảy ra sau khi bạn chạy:

svn cleanup . 
svn update 
svn status 
+0

và nếu bạn lo lắng về thời gian đệ quy vào các thư mục khác, hãy thêm '--depth = files' vào bản cập nhật – Rup

+0

Kết quả là: > svn cleanup. > Cập nhật svn svn: BÁO CÁO của '/ svnroot/uiq3 /! Svn/vcc/default': Không thể đọc kích thước chunk: Kết nối an toàn bị cắt bớt (https://uiq3.svn.sourceforge.net) Không trông ổn. Tôi đoán tôi phải cắn viên đạn và tạo lại toàn bộ cây làm việc… – Martin

0

gì Chính xác thì bạn làm gì để các chi nhánh trước khi bạn nhận được lỗi này?

Nếu bạn gặp sự cố thường xuyên với SVN, có thể bạn đang làm sai điều gì đó (ví dụ: sử dụng mv/rm thay vì svn mv/svn rm trên chi nhánh).

+0

Tôi đã sao chép một dự án để tạo ra một cái mới tương tự. Tôi đã sử dụng «svn copy» để làm như vậy. Sau đó tôi đã cam kết dự án mới và bắt đầu thay đổi. – Martin

+0

@Martin: Vì vậy, * tất cả * bạn đã làm là: 'svn copy', * thực hiện thay đổi *,' svn commit'? Nếu vậy, những thay đổi là gì? Chúng có liên quan đến việc di chuyển, thêm hoặc xóa tệp không? – Zaz

+0

Sau khi cam kết, tôi bắt đầu công việc “thực”. Gói lại bao thanh toán và vân vân. Với lần kiểm tra tiếp theo, sự cố đã bắt đầu. Đầu tiên một bản cập nhật được yêu cầu (lạ đối với một dự án một người). Bản cập nhật đó không thành công và đã xuống dốc từ đó. Nhưng điều này không thực sự là câu hỏi. Tôi đang sử dụng để đau buồn từ Subversion và tôi chỉ hỏi nếu có một sửa chữa nhanh chóng. Tôi đoán là không phải vì vậy tôi đã kiểm tra toàn bộ cây một lần nữa, sao chép các thay đổi của tôi trên và cam kết một lần nữa. – Martin

3

Tôi đã cố gắng hoàn nguyên & dọn dẹp nhưng nó không khắc phục được sự cố của tôi. Các giải pháp tôi tìm thấy là một chút khắc nghiệt nhưng đã làm việc:

  1. đổi tên old_folder thành new_folder.
  2. từ vấn đề gốc svn up old_folder
  3. sao chép các tệp từ new_folder [tránh đối phó thư mục .svn từ new_folder].

tôi đã xóa new_folder và theo cách này, tôi đã quản lý để có một old_folder được làm sạch.

+2

Đó chính xác là những gì 'Fix_Subversion.command' thực hiện. Nhưng tôi đã yêu cầu một giải pháp nhanh hơn/tốt hơn. Bên cạnh đó: Nó có thể không hoạt động với Subversion 1.7 nữa vì Subversion 1.7 chỉ có một thư mục .svn cho toàn bộ bản sao làm việc. – Martin

+1

Điều này làm việc cho tôi, vào ngày 1.6. Tôi đã nhận được "!" sau khi chỉnh sửa một tập tin (không kiểm tra nó) và sau đó chuyển sang một chi nhánh –

0

Nếu bạn đã xóa tệp và tệp được đánh dấu bằng !, chỉ cần chạy svn rm --force <filename> để yêu cầu SVN xóa tệp khỏi kho lưu trữ.

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