Cách giải quyết chỉnh sửa cục bộ, xóa tin nhắn khi cập nhật


293

Khi tôi làm một svn status ., tôi nhận được điều này:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

về cơ bản, các tệp này không nên có trong kho lưu trữ. Một nhà phát triển đã loại bỏ chúng. Sau đó, tôi nghĩ rằng tôi đã làm một svn rm ...sự thật sau khi nhầm lẫn (nên thực hiện svn update .thay thế).

Vì vậy, bây giờ, khi tôi làm svn status ., tôi nhận được những tin nhắn xung đột cây.

Tôi đã tìm thấy tài liệu ở đây nhưng không chắc chắn làm thế nào để hợp nhất với nó theo tài liệu.

Làm thế nào để có được loại bỏ chúng?

Tôi nghĩ rằng bản sao làm việc của tôi là đồng bộ với kho lưu trữ. Không biết tại sao những tin nhắn này hiển thị. Những tập tin này nên được gỡ bỏ và được gỡ bỏ theo như tôi biết ở mọi nơi. Tôi đã thử svn update .svn revert .tôi vẫn nhận được tin nhắn này khi tôi làm svn status ..


1
Câu trả lời của lesmana cũng hoạt động cho thông điệp"local missing or deleted or moved away, incoming dir edit upon merge"
Chimpanzee hiếu chiến

Câu trả lời:


434

Phiên bản ngắn:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

Nếu xung đột là về các thư mục thay vì các tệp thì thay thế touchbằng mkdirrmbằng rm -r.


Lưu ý: quy trình tương tự cũng hoạt động cho tình huống sau:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

Phiên bản dài:

Điều này xảy ra khi bạn chỉnh sửa tệp trong khi người khác xóa tệp và cam kết trước. Là một công dân svn tốt, bạn thực hiện cập nhật trước khi cam kết. Bây giờ bạn có một cuộc xung đột. Nhận ra rằng việc xóa tệp là điều đúng đắn để bạn xóa tệp khỏi bản sao làm việc của mình. Thay vì nội dung svn bây giờ phàn nàn rằng các tệp cục bộ bị thiếu và có một bản cập nhật mâu thuẫn mà cuối cùng muốn xem các tệp bị xóa. Làm tốt lắm svn.

Không nên svn resolvelàm việc, vì bất kỳ lý do gì, bạn có thể làm như sau:

Tình huống ban đầu: Thiếu tệp cục bộ, cập nhật bị xung đột.

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

Tạo lại các tệp xung đột:

$ touch foo bar

Nếu xung đột là về thư mục thì thay thế touchbằng mkdir.

Tình huống mới: Các tệp cục bộ sẽ được thêm vào kho lưu trữ (yeah right, svn, bất cứ điều gì bạn nói), cập nhật vẫn xung đột.

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

Hoàn nguyên các tệp về trạng thái svn thích chúng (có nghĩa là đã xóa):

$ svn revert foo bar

Tình huống mới: Các tệp cục bộ không biết đến svn, cập nhật không còn xung đột.

$ svn st
?       foo
?       bar

Bây giờ chúng ta có thể xóa các tập tin:

$ rm foo bar

Nếu xung đột là về thư mục thì thay thế rmbằng rm -r.

svn không còn phàn nàn:

$ svn st

Làm xong.


8
Điều này cũng hoạt động khi xung đột là cho một Thư mục. Thay vì chạm thanh foo làm mkdir foothanh mkdir . Mọi thứ khác là như nhau.
Vipin Johney

bạn có thể sử dụng svn st | grep ! | cut -f 7 -d' ' | xargs touchnhư một lớp lót để chạm vào tất cả các tệp bị thiếu
Tibor Blenessy

Ghi nhớ cho các thư mục cũng làm rm -r foo bar(hoặc rmdir foo bartrên Windows hoặc nếu bạn thích Windows).
phân ly

Câu trả lời này đã cứu tôi tỉnh táo. Cảm ơn bạn.
Sam

159

Cố gắng giải quyết xung đột bằng cách sử dụng

svn resolve --accept=working PATH

cảm ơn. đó dường như là giải pháp đúng đắn (trước đây tôi không biết về tùy chọn "giải quyết". Tôi đã đánh dấu nó là câu trả lời. chỉ cần xóa thư mục và thực hiện cập nhật.
Xah Lee

1
Nó không hoạt động với tôi ban đầu, vì vậy tôi đã kiểm tra một bản sao khác của chi nhánh svn trong một thư mục tạm thời. Sau đó, tôi đã xóa PATH gây ra xung đột và cam kết thay đổi. Sau đó tôi trở lại bản gốc của mình và chạy lệnh này. Nó hoạt động với thông điệp "Đã giải quyết trạng thái xung đột của PATH" Điều này hoạt động, cảm ơn :)
Durin

Sự hiểu biết của tôi là sẽ không có vấn đề gì nếu bản gốc đã bị xóa hoặc không có trong kho lưu trữ, bởi vì "giải quyết" chỉ hoạt động trên bản sao làm việc.
govi

giải pháp hoàn hảo cho tôi
Sergio Álvarez

20

Tôi chỉ gặp vấn đề tương tự và tôi thấy rằng

$ svn revert foo bar

Đã giải quyết vấn đề.

Giải quyết svn không làm việc cho tôi:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update

2

Nếu bạn chưa thực hiện bất kỳ thay đổi nào trong thư mục bị xung đột, bạn cũng có thể rm -rf conflicts_in_here/và sau đó svn up. Điều này làm việc cho tôi ít nhất.


1

Bạn có thể buộc hoàn nguyên thư mục địa phương của bạn vào svn.

 svn revert -R your_local_path

Cảm ơn, cũng đã giúp tôi giải quyết A + C path/to/dir> local dir edit, incoming dir delete or move upon update
RAM237

0

Vì vậy, bạn chỉ có thể hoàn nguyên tệp mà bạn đã xóa nhưng hãy nhớ, Nếu bạn đang làm việc với bất kỳ loại dự án nào với tệp dự án đã đặt (như iOS), việc hoàn nguyên tệp sẽ thêm nó vào cấu trúc thư mục hệ thống của bạn chứ không phải cấu trúc tệp dự án của bạn. các bước bổ sung có thể được yêu cầu nếu bạn trong trường hợp này


0

Vấn đề này thường xảy ra khi chúng tôi cố gắng hợp nhất các thay đổi chi nhánh khác từ một thư mục sai.

Ví dụ:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

Một cuộc xung đột bị ném vào khi thực hiện nó là:

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

Và khi bạn chọn q để thoát độ phân giải , bạn sẽ nhận được trạng thái là:

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

điều đó có nghĩa rõ ràng là sự hợp nhất chứa các thay đổi liên quan đến Branch1_SubDirBranch1_AnotherSubDir, và các thư mục này không thể được tìm thấy bên trong Branch1_SubDir(rõ ràng một thư mục không thể nằm trong chính nó).

Làm thế nào để tránh vấn đề này ở nơi đầu tiên:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

Các sửa chữa đơn giản cho vấn đề này mà làm việc cho tôi:

svn revert -R .
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.