Làm thế nào để bạn khắc phục lỗi 'lỗi thời' svn?


336

Tôi đã cố di chuyển cấu trúc thư mục từ vị trí này sang vị trí khác trong Subversion, nhưng tôi gặp Item '*' is out of datelỗi cam kết.

Tôi có phiên bản mới nhất được kiểm tra (theo như tôi có thể nói). svn st -ubật lên không có sự khác biệt nào ngoài các lệnh mv.


11
bạn đã thử svn chưa?
Sklivvz

3
một công cụ tránh vấn đề tầm thường là: nếu xóa thư mục và nội dung, chỉ xóa nội dung trước, svn, sau đó xóa thư mục, sau đó svn lại.
Fattie

Câu trả lời:


636

Đôi khi tôi nhận được điều này với TortoiseSVN trên các cửa sổ. Giải pháp cho tôi là vào svn updatethư mục, mặc dù không có bản sửa đổi để tải xuống hoặc cập nhật. Nó làm một cái gì đó cho siêu dữ liệu, mà sửa chữa nó một cách kỳ diệu.


4
Tôi đã thay đổi svn: bỏ qua thuộc tính của một thư mục và bắt đầu lỗi ngày. Nhưng như bạn đã nói, chỉ cần cập nhật nó đã hoạt động.
Sushant

4
Khi tôi cố cập nhật thư mục đó, tôi nhận được "svn: Hai báo cáo cấp cao nhất không có mục tiêu" Thêm một lý do để ghét SVN. Với git, tôi chưa bao giờ gặp phải vấn đề ngu ngốc này với các thao tác cơ bản như di chuyển một thư mục.
Dan Dascalescu

Tôi đã gặp lỗi 'hết hạn' trên thư mục gốc của mình bằng GUI Phiên bản. Tôi đã cập nhật thư mục cha mẹ và sau đó cam kết không có lỗi.
milesmeow

1
điều này cũng được gây ra bởi việc thay đổi svn: bỏ qua cho tôi và cập nhật svn đã sửa nó. cảm ơn!
Nathan Schwermann

8
Trong Subclipse, sử dụng "Team -> Update to HEAD". Làm việc tốt với tôi.
NeoRamza

42

Sau khi thử tất cả những điều hiển nhiên và một số gợi ý khác ở đây, không có gì may mắn, một tìm kiếm Google đã dẫn đến liên kết này (liên kết không hoạt động nữa) - Subversion nói: Tệp hoặc thư mục của bạn có thể đã lỗi thời

Tóm lại, mẹo là vào thư mục .svn (trong thư mục chứa tệp vi phạm) và xóa tệp "all-wcprops" .

Làm việc cho tôi khi không có gì khác làm.


Điều đó đã làm nó! Cảm ơn! Bất cứ ai cũng có bất kỳ đề nghị về cách điều này xảy ra và làm thế nào để tránh nó ở nơi đầu tiên?
Jesse Barnum

Đã làm cho tôi. Cuối cùng tôi đã phải xóa tất cả các tệp 'all-wcprops': find. -name all-wcprops -exec rm -rf {} \;
Peter Hough

Tôi đoán bạn sẽ có thể giải quyết vấn đề này bằng các công cụ và tùy chọn svn, mà không cần xóa các tệp trong cấu trúc
augusto

+1, đây là điều duy nhất làm việc cho tôi. Các giải pháp khác thì không.
Clayton Dukes

9
Không làm việc cho tôi, không có all-wcpropstập tin nào trong .svthư mục
ulkas

39

Tôi tin rằng vấn đề này đến từ tệp .svn. Điều đó không đúng ở cha mẹ cũ, cha mẹ mới hoặc cha mẹ cũ. Tôi sẽ cố gắng trở lại điểm xuất phát của bạn. Sử dụng xuất để có được một bản sao sạch của thư mục. Di chuyển bản sao sạch đến vị trí mới và sử dụng thêm và xóa để thực hiện di chuyển. Đó là thủ công làm những gì SVN làm, nhưng nó có thể hoạt động.


4
Subversion thực sự sao chép sau đó xóa, điều này khá khác với việc xóa ở đó và thêm vào đây.
SnakE

37

Tôi thấy rằng điều này làm việc cho tôi:

svn update
svn resolved <dir>
svn commit

Làm việc cho tôi mà không làm svn updatetrước đây, tôi có một kịch bản mà tôi muốn tránh cập nhật. (vì vậy tôi mới giải quyết và cam kết và nó đã hoạt động)
Sinh ra ToCode

Đây là cách chữa trị cho tình trạng của tôi, không có gì khác hiệu quả. cảm ơn!
texasdave

14

Đã thử cập nhật bản sao cục bộ và hoàn nguyên mục được đề cập và vẫn gặp lỗi 'hết hạn'. Điều này làm việc vì một số lý do:

svn update --force /path/to/dir/or/file

11

Tôi chỉ gặp vấn đề tương tự trong một số thư mục và đây là những gì tôi đã làm để cam kết:

1) Trong phối cảnh "Đồng bộ hóa nhóm", nhấp chuột phải vào thư mục> Ghi đè và Cập nhật
2) Xóa thư mục lại
3) Cam kết và hài lòng


5

Cảm ơn bạn. Điều đó chỉ giải quyết nó cho tôi. cập nhật svn - lực lượng / đường dẫn đến tên tệp /

Nếu tệp gần đây của bạn trong thư mục cục bộ là như nhau, không có lời nhắc. Nếu tệp khác, nó sẽ nhắc tf, mf, v.v ... chọn mf (đầy đủ) đảm bảo không có gì bị ghi đè và tôi có thể cam kết khi hoàn tất.

Jay CompuMatter


5

Tôi quản lý để giải quyết nó bằng cách nhấn nút cập nhật


4

Giống như @ Alexander-Klyubin gợi ý, hãy di chuyển trong kho lưu trữ. Nó cũng sẽ nhanh hơn nhiều, đặc biệt nếu bạn có một lượng lớn dữ liệu cần di chuyển, bởi vì bạn sẽ không phải chuyển tất cả dữ liệu đó qua mạng một lần nữa.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

nên làm việc tốt


Tôi đã gặp vấn đề này với một svn up; svn mvloạt lệnh, và điều này đã thực hiện thủ thuật độc đáo. Cảm ơn bạn.
DopeGhoti

3

Xóa tệp của bạn hoặc đường dẫn của bạn bằng cách sử dụng trước khi thực hiện lệnh thực hiện bk các thay đổi của bạn

sudo rm -r /path/to/dir/

sau :

svn up and commit or delete 

2

Bạn có chắc chắn bạn đã kiểm tra đầu và không phải là phiên bản thấp hơn? Ngoài ra, bạn đã thực hiện cập nhật để đảm bảo bạn đã có phiên bản mới nhất chưa?

Có một cuộc thảo luận về điều này trên http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Giả sử bạn muốn kiểm tra một bản sao cũ? Cách dễ nhất để làm cho việc đăng ký hoạt động là gì?
OJW

Nếu bạn đang nói về việc trở lại một bản sao cũ, chỉ cần kiểm tra nó như bình thường. Nó sẽ nhận được một số sửa đổi mới.
jgreep


2

Có ít nhất một nguyên nhân khác của thông báo "lỗi thời". Trong trường hợp của tôi, vấn đề là .svn / dir-props được tạo bằng cách chạy "svn propset svn: ign -F .gitignore." lần đầu tiên Xóa .svn / dir-props có vẻ như là một ý tưởng tồi và có thể gây ra các lỗi khác, vì vậy tốt nhất nên sử dụng "svn propdel" để dọn sạch "svn propset".

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

Nếu bạn đang sử dụng cầu nối github svn, có khả năng là do có gì đó đã thay đổi ở phía của github. Giải pháp rất đơn giản, bạn chỉ cần chạy svn switch, cho phép nó tự tìm đúng, sau đó cập nhật và mọi thứ sẽ hoạt động. Chỉ cần chạy sau đây từ thư mục gốc của bạn

svn info | grep Relative 
svn switch path_from_previous_command
svn update

hoặc là

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

Cơ sở cho giải pháp này đến từ blog của Lee Preimesberger


1

Bạn đang di chuyển nó bằng cách sử dụng svn mv, hoặc chỉ mv? Tôi nghĩ rằng sử dụng chỉ mvcó thể gây ra vấn đề này.


1

Tôi đã chuyển thư mục đến máy cục bộ của mình để giữ an toàn, sau đó svn xóa thư mục ngu ngốc, sau đó cam kết. Khi tôi cố gắng thêm thư mục từ máy cục bộ của mình, VẪN đã ném lỗi (di chuyển SVN đã làm điều tương tự khi tôi cố đổi tên thư mục). Vì vậy, tôi đã hoàn nguyên, sau đó tôi đã thực hiện một mkdir DIRNAME, đã thêm và cam kết. Sau đó, tôi đã thêm các nội dung trong và cam kết, và nó đã làm việc.


1
Tôi sẽ tránh thay đổi nội dung kho lưu trữ (xóa svn), chỉ vì thanh toán cục bộ của tôi bị lỗi nào đó.
Lars Noschinski

1

Tôi đã nhận ngẫu nhiên lỗi này sau khi xóa một vài thư mục chứa một số tệp. Tôi đã xóa các thư mục thông qua Netbeans và nhận ra rằng nó không thực sự xóa chúng. Nó dường như chỉ xóa mọi thứ bên trong các thư mục và xóa tham chiếu đến thư mục trong Netbeans. Họ vẫn còn tồn tại trên hệ thống tập tin mặc dù. Hãy chắc chắn rằng chúng đã bị xóa khỏi hệ thống tập tin và thử lại cam kết.


1

Nếu một lần giải quyết vấn đề tương tự bằng cách kiểm tra một bản sao làm việc mới và thay thế thư mục .svn, ném các lỗi xác nhận bằng cái này mới được kiểm tra. Lý do trong trường hợp của tôi là sau khi kho lưu trữ bị hỏng và khôi phục từ bản sao lưu, bản sao đang hoạt động đang hướng đến một bản sửa đổi không tồn tại trong kho lưu trữ được khôi phục. Cũng có lỗi "mục hết hạn". Cập nhật bản sao làm việc trước khi cam kết không giải quyết được điều này nhưng thay thế .svn như mô tả ở trên đã làm.


1

Tôi đã làm điều này và nó đã làm việc cho tôi:
1. Sao lưu tập tin của bạn. Bạn chỉ có thể sao chép mã của bạn vào một tệp văn bản.
2. Nhấp chuột phải vào tệp bạn muốn cam kết >> Nhóm >> Hiển thị Lịch sử. 3. Trong Bảng "Hiển thị Lịch sử", bạn sẽ thấy tất cả các phiên bản của tệp đó. Nhấp chuột phải vào bản sửa đổi mới nhất của tệp >> Nhận sửa đổi: Nó sẽ ghi đè các thay đổi cục bộ của bạn.
4. Bây giờ, hợp nhất mã của bạn với tệp mới nhất với tệp sao lưu (bước # 1).
5. Đồng bộ hóa và Cam kết tập tin mới được hợp nhất.


1

Nâng cấp máy chủ và máy khách của bạn lên Subversion 1.9.

Nếu out of datelỗi xảy ra ngẫu nhiên khi bình thường không nên, khi bạn chạy cam kết, nó có thể cho thấy bạn đang sử dụng Subversion 1.7 lỗi thời và không được hỗ trợ của máy khách hoặc máy chủ cũ hơn.

Bạn nên nâng cấp máy chủ và máy khách để giải quyết vấn đề. Xem mục Ghi chú phát hành Subversion 1.9 có liên quan: Lỗi "lỗi thời" khi cam kết qua HTTPv1 .


1
Điều này thậm chí đã xảy ra với tôi với TortoiseSVN 1.8.8 trên Windows. Cập nhật lên 1.9 đã giúp.
Martin Pecka

1

Lỗi là do bạn không cập nhật tệp cụ thể đó, cập nhật đầu tiên sau đó chỉ bạn mới có thể cam kết tệp.


1

Đã thử tất cả nhưng thay đổi trong .svn trực tiếp. Không có gì giúp được vì vậy đây là giải pháp của tôi.

Trong Eclipse> Cửa sổ> Hiển thị Chế độ xem> Lịch sử Tôi đã thấy tệp đó không phải là Bản sửa đổi mới nhất, mặc dù tôi đã thực hiện nhiều svn "Ghi đè & Cập nhật" / "Hoàn nguyên" / xóa tệp và kiểm tra.

Vì vậy, tôi đã đi Gói Explorer> Nhấp chuột phải vào tệp> Thay thế bằng> Mới nhất từ ​​Kho lưu trữ .

Một cái nhìn khác trong Chế độ xem lịch sử cho thấy rằng tệp hiện đã được sửa đổi mới nhất.


1

"Dọn dẹp" Nó sẽ giúp bạn đi đúng hướng.

Nhấp chuột phải vào thư mục svn và nhấp vào 'Dọn dẹp', thực hiện việc này nếu bạn gặp lỗi đó.


0

Điều này xảy ra khi tôi cập nhật một nhánh của một bản phát hành trước đó với các tệp từ thân cây. Tôi đã sử dụng Windows Explorer để sao chép các thư mục từ thư mục kiểm tra thân cây của mình và dán chúng vào khung nhìn Eclipse của thư mục kiểm tra nhánh phát hành. Bây giờ Windows Explorer đã được định cấu hình để không hiển thị các tệp "ẩn" bắt đầu bằng ".", Vì vậy tôi không biết tất cả các tệp .svn không chính xác được dán vào thư mục kiểm tra chi nhánh phát hành của tôi. Đừng!

Giải pháp của tôi là thổi bay dự án Eclipse bị hỏng, kiểm tra lại và sau đó sao chép các tệp mới một cách cẩn thận hơn. Tôi cũng đã thay đổi Windows để hiển thị các tập tin "ẩn".


0

Tôi đã gặp lỗi này khi cố gắng cam kết một số tệp, chỉ có nó là tệp / thư mục không tồn tại trong bản sao làm việc của tôi. Tôi thực sự không muốn gặp rắc rối khi di chuyển các tệp và kiểm tra lại, cuối cùng, tôi đã kết thúc việc chỉnh sửa tệp .svn / mục và xóa tham chiếu thư mục vi phạm.


0

Trong trường hợp của tôi, chỉ xóa phiên bản cục bộ và kiểm tra lại bản sao mới là một giải pháp.


0

Tôi vừa nhận được lỗi này. Những gì tôi khuyên là trước tiên bạn nên kiểm tra trên máy chủ của mình nếu tệp gốc có ở đó. Đôi khi những thay đổi không được thực hiện trong thư mục địa phương của bạn. Nếu đây là tình huống của bạn, chỉ cần xóa thư mục của bạn và kiểm tra lại.


0

Để giải quyết, tôi cần hoàn nguyên tệp có vấn đề và cập nhật bản sao làm việc của mình và sau đó tôi đã sửa đổi tệp một lần nữa và sau các bước này, lỗi không xảy ra nữa.


0

Chỉ cần làm svn lên dòng lệnh hoặc nếu bạn đang ở trong cửa sổ, hãy chọn tùy chọn cập nhật svn.

  • Một khi điều này sẽ được thực hiện, điều này cho phép bạn thực hiện thêm hành động như cam kết và những người khác.

0

Tôi chỉ nhận được điều này trong khi tôi đang cố gắng committừ một trunkthư mục. Làm svn updatetừ trunkthư mục không giải quyết được lỗi; tuy nhiên, làm svn updatetừ thư mục mẹ (nơi chứa .svnthư mục) đã giải quyết lỗi.

Tôi đoán về những gì đã xảy ra (một trường hợp sử dụng khác, có thể có nhiều lý do cho điều này svn: E160024: tài nguyên đã hết hạn; hãy thử cập nhật vào): cùng với trunkđó là một branchesthư mục. Tôi kéo một branches/branch-1thành mastertừ GitHub. Làm svn updatetừ thư mục mẹ (nghĩa là gốc của bản sao làm việc của tôi) thay vì trunkdường như đã làm một cái gì đó branchesngoài trunk. Khi tôi cố gắngcommit một lần nữa, không có lỗi.

Tuy nhiên, như tôi đã nói ở trên, đây là một trường hợp trong số nhiều người khác.

Lưu ý bên lề: không giống như những gì ai đó đề xuất, tôi không tin rằng nên chơi thủ công trong .svnthư mục.

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.