2010-01-07 41 views
23

Gần đây tôi đã gặp phải một hành vi rất kỳ lạ của sự lật đổ.Không thể giải quyết xung đột cây với SVN

Tôi vừa mới hợp nhất bản sao chi nhánh địa phương của mình với chi nhánh từ xa. Mọi thứ suôn sẻ, nhưng tôi có 1 xung đột cây (xóa cục bộ, cập nhật từ xa).

Được rồi, tôi nghĩ, đã sửa đổi bản sao làm việc một cách thích hợp và chạy "svn resolve --accept = working -R.".

Subversion nói rằng nó đã giải quyết được sự cố của tôi và "svn st" không còn hiển thị bất kỳ vấn đề nào. Vì vậy, tôi đã cố gắng để cam kết, nhưng svn nói với tôi rằng một trong các thư mục bên trong (bên trong của tôi mâu thuẫn) đã lỗi thời và đề nghị để svn lên, NHƯNG nó làm cho các thư mục để được xung đột một lần nữa!

Tôi phải làm gì để thoát ra khỏi vòng kết nối này?

+0

có thể muốn xem xét các câu trả lời và chấp nhận một câu trả lời khác nhau – FlipMcF

Trả lời

8

Điều này có thể có hoặc không có ích, nhưng đôi khi "dọn sạch svn" sẽ khắc phục các vấn đề siêu dữ liệu lạ. Nếu bạn kiểm tra một bản sao làm việc sạch sẽ, bản sao sạch có cùng một vấn đề không? Nếu vậy thì câu trả lời trước đó giống như một bước đi đúng hướng

+0

Ah, cảm ơn, tôi đã quên mất về dọn dẹp ... Cần phải thử cái này – Anton

5

Bạn có thể sử dụng một cách khác hơn so với lệnh svn quyết tâm:

  1. Tạo một bản vá của tập tin mâu thuẫn. (Hoặc một bản sao lưu của các phiên bản của thư mục mâu thuẫn với xuất khẩu svn ...)
  2. Cập nhật kho của bạn (svn update)
  3. Áp dụng các bản vá được thực hiện trước đó (hoặc thay thế các tập tin mâu thuẫn/thư mục với các sao lưu)
  4. Cam kết thay đổi (svn commit)
+0

Đó là thực sự những gì tôi đã kết thúc với :( – Anton

+1

Khi svn không hoạt động bình thường, nó có nghĩa là thư mục .svn bị rối tung, lệnh Svn cleanup có thể giúp nhưng nó không bao giờ làm việc cho tôi vì vậy tôi sử dụng phương thức này mọi lúc ... (buồn) Đừng quên đánh dấu bài này là "câu trả lời được chấp nhận" nếu nó hoạt động (hoặc câu hỏi này vẫn sẽ vẫn chưa được trả lời) – Phong

0

Có thể bạn chưa cập nhật thư mục khi đã hợp nhất hoặc có xung đột ở đâu đó trước khi hợp nhất. Để khắc phục, bạn phải hoàn nguyên thân cây của mình (thư mục đích) về bản sửa đổi trước đó. Sau đó chạy clean-up trên thư mục đó. Sau đó chạy dọn dẹp trên thư mục nhánh (thư mục nguồn). Sau đó cập nhật lại cả hai thư mục. Nếu bạn đang nhận được dòng màu đỏ trong bất kỳ quy trình làm việc nào, thì trước tiên bạn cần hoàn nguyên các tệp đó, sau đó đưa chúng vào trạng thái mà bạn muốn chúng. Sau đó, cập nhật các thư mục (có, một lần nữa). Cuối cùng thực hiện hợp nhất một lần nữa.

41
~/sandbox/jabira > svn resolve --accept=theirs-full testClient/ 
svn: warning: Tree conflicts can only be resolved to 'working' state; 'testClient' not resolved 

~/sandbox/jabira > svn resolve --accept=working testClient/ 
Resolved conflicted state of 'testClient' 

Hy vọng điều này giúp đỡ

+1

Cảm ơn nó đã giúp! Tôi đoán nó rất dễ dàng để giải thích sai thông báo cảnh báo từ svn, mà svn là sai lầm. Trên thực tế nó là một hướng dẫn phải làm gì trong trường hợp này. –

0

Đây là những gì làm việc cho tôi từ bỏ tất cả thay đổi cục bộ và đi với các tập tin từ các kho lưu trữ máy chủ:

svn update --accept theirs-full 

svn resolve --accept theirs-full <pathname> 

Thông báo này xuất hiện: W155027: xung đột Tree chỉ có thể được giải quyết để 'hoạt động'

Bước tiếp theo không trực quan nhưng điều này thực sự cắt bắt-22:

svn resolve --accept=working <pathname> 

NGAY BÂY GIỜ hoàn nguyên tất cả thay đổi "đang hoạt động" đệ quy. Điều này sẽ xóa tất cả các thay đổi cục bộ của tôi.

svn revert -R . 

Trở lại bình thường, không có lỗi:

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