Làm cách nào để khắc phục lỗi chứa vùng quản trị bản sao làm việc bị thiếu trong SVN?


184

Tôi đã xóa thủ công một thư mục tôi vừa thêm, ngoại tuyến, trong kho lưu trữ của tôi. Tôi không thể khôi phục thư mục.

Mọi nỗ lực thực hiện cập nhật hoặc cam kết sẽ thất bại với:

"blabla/.svn" containing working copy admin area is missing.

Tôi hiểu tại sao, nhưng dù sao cũng có cách khắc phục điều này.

Tôi không muốn kiểm tra toàn bộ repo và thêm các thay đổi của mình vào đó một cách thủ công, sẽ mất hàng giờ.

Câu trả lời:


148

Theo đó: http://www.devcha.com/2008/03/svn-directory-svn-contained-usiness.html

Kiểm tra thư mục "blabla" sang một vị trí khác và sau đó sao chép thư mục .svn của nó trở lại "blabla" ban đầu.


62
Tôi có SVN rất nhiều. Thư .svnmục con xả rác khắp nơi phải là ý tưởng tồi tệ nhất trong lịch sử kiểm soát phiên bản.
Julian Fahrenkrug

9
Các bạn ơi, hãy xem những gợi ý dưới đây của Rob, thật dễ dàng cho giải pháp hiện tại.
Mohammad Arif

Mohammed, cảm ơn vì đã ngẩng cao đầu. Điều đó làm việc cho tôi. Đã cố gắng để SVN bỏ qua một thư mục nhật ký và xóa .svn đã khiến tôi gặp vấn đề này. Giải pháp của Rob đã giải quyết nó.
Asmor

Tôi cũng không phải là người đề xuất SVN nhưng lợi thế của các thư mục .svn là bạn có thể kiểm tra các thư mục con của kho lưu trữ và duy trì kiểm soát phiên bản.
Joseph Persie

@MohammadArif, Hiện tại có hai "Robs"
Charles Clayton

123

fwiw, tôi đã có một tình huống tương tự và đã sử dụng svn --force xóa __dir__ . Điều đó đã giải quyết vấn đề cho tôi. Sau đó tôi tiếp tục làm việc với bản sao làm việc của tôi như bình thường.


2
Cái này cũng có tác dụng với tôi. Cập nhật và dọn dẹp thất bại vì thư mục không bao giờ có trong kho lưu trữ, nhưng bản sao hoạt động chắc chắn rằng nó nằm dưới sự kiểm soát sửa đổi. Tôi tự hỏi nếu tôi đã thêm thư mục, nhưng sau đó xóa nó trước khi tôi cam kết?
Magnus

1
Điều này là rất tốt. Tôi đã thêm một thư mục, đã xóa .svn nhưng không bao giờ cam kết. Tổng số này đã thực hiện mánh khóe
Eric

8
Cảm ơn bạn; Câu trả lời này đã tiết kiệm cho tôi rất nhiều thời gian. svn cleanupsau đó svn --force delete <directory-that-doesn't-exist-but-should>làm việc cho tôi
mpontillo

Làm việc ở lần thử thứ hai, lần đầu tiên tôi đã thử mà không cần - lực lượng, bằng cách nào đó đã để lại một tệp khóa trong .svn của cha mẹ mà tôi phải xóa thủ công. Lần thứ hai với - Force đã khắc phục vấn đề.
Jorn Horstmann

3
Hừm, lệnh đó đơn giản chỉ cho tôi lỗi "bản sao làm việc" tương tự.
Oscar

72

Những gì tôi đã làm để khắc phục điều này là xóa bản sao cục bộ của thư mục theo câu hỏi và sau đó thực hiện một svn updatephụ huynh trực tiếp sau đó.

Đã sửa nó ngay.


3
Tôi không thể tin được ... tôi đã thử mọi cách ... và mọi thứ thật dễ dàng !!! Nó hoạt động hoàn hảo, cảm ơn nhiều !!!!!
lucaferrario

Đây là câu trả lời thẳng nhất.
joaerl

35

Bạn có thể thử kiểm tra một bản sao mới của thư mục cha không?

Chỉnh sửa: Để cụ thể hơn một chút, tôi có nghĩa là đề nghị tăng một cấp và xóa thư mục chứa. Sau đó làm một

svn update --set-depth infinity

để thay thế thư mục.


Tôi đã thử điều đó nhưng vì một số lý do kỳ lạ, tôi kết thúc với một thư mục trống. Tôi không hiểu ...
e-satis

Một <code> svn cập nhật blabla </ code> rõ ràng từ cha mẹ cũng nên hoạt động.
jmanning2k

@ jmanning2k, đó là những gì tôi nghĩ là tốt, nhưng OP nói rằng anh ấy đã thử nó và nó đã không hoạt động.
Rob Wells

Để làm rõ, tôi đề nghị --set-depth infinityvì điều này: stackoverflow.com/questions/866835/
mẹo

1
Điều này cần rất nhiều upvote ... giải pháp sạch nhanh chóng và tương đối (đối với tiêu chuẩn svn).
Dino

6

Tôi đã thêm một thư mục vào svn, sau đó tôi vô tình xóa thư mục .svn bên trong.

Tôi đã sử dụng

svn delete --keep-local folderName

để khắc phục vấn đề của tôi.


Điều này làm việc cho tôi khi IDE của tôi thêm một thư mục, và sau đó tôi đã chuyển một thư mục cùng tên vào vị trí trước khi nó được cam kết.
dập tắt

đã thử điều này, nhưng vẫn không thể cam kết. Tôi đã sử dụng svn checkout --force [url]để tạo lại thư mục .svn
Lex

4

Tôi mới thực hiện 'svn Revert / blabla' và nó đã hoạt động, thư mục đã hoạt động trở lại và tôi có thể xóa svn


Cảm ơn. Tôi đã có vấn đề này và đã thử đề nghị của bạn và nó đã làm việc.
Boric

3

Lỗi "Thư mục 'blah / .svn' chứa vùng quản trị bản sao đang hoạt động bị thiếu" xảy ra khi tôi cố thêm thư mục vào kho lưu trữ, nhưng không có đủ đặc quyền hệ thống tệp để làm như vậy. Thư mục chưa có trong kho lưu trữ, nhưng nó được cho là nằm dưới sự kiểm soát phiên bản sau khi thêm thất bại.

Kiểm tra một bản sao của thư mục mẹ sang một vị trí khác và thay thế thư mục .svn trong thư mục gốc của bản sao làm việc cho phép tôi thêm và cam kết thư mục mới thành công (dĩ nhiên sau khi sửa quyền truy cập tệp).


2

Chúng tôi sử dụng maven và svn. Đó là một đăng ký nhầm của thư mục đích đến SVN gây ra lỗi này. Loại bỏ tất cả mọi thứ cố định, nếu gợi ý này giúp bất cứ ai.


Loại bỏ những gì / từ nơi exacly?
DerMike

maven tạo thư mục "đích" khi xây dựng. Thông thường không ai có thể kiểm tra cái này. Một đăng ký có dấu đã tạo ra vấn đề cấp phép cho lần kiểm tra tiếp theo tạo ra lỗi này. Xóa thư mục "đích" khỏi SVN đã giải quyết được vấn đề.
Madu

2

Tôi đã cố gắng svn rm --force /path/to/dirvô ích nhưng cuối cùng chỉ chạy svn upvà nó đã sửa nó cho tôi.


1

Tôi đã gặp lỗi này gần đây, khi các tệp bị loại trừ bởi các cài đặt trong toàn cầu SVN của tôi. Lỗi đặc biệt khó chịu vì tôi cũng đã xóa các tệp trực tiếp khỏi kho lưu trữ - và điều này có nghĩa là các giải pháp trên đã từ chối sẽ không hoạt động. Trong trường hợp này, xóa thủ công thư mục .svn khỏi thư mục mà tôi đã xóa khỏi SVN cho phép tôi chạy một bản cập nhật mà sau đó cho phép tôi cam kết.


1

Tôi gặp vấn đề tương tự, khi tôi đang cố gắng chuyển "C: \ superfolder"

Thông báo lỗi:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Sau khi thử "dọn dẹp", tôi đã gặp lỗi sau:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Giải pháp:

  1. Xóa thư mục "thư mục con"
  2. Dọn dẹp thư mục "superfolder"
  3. Hãy thử chuyển đổi lại thư mục "superfolder"

Điều này làm việc cho tôi. Xin vui lòng cho tôi biết nếu nó cũng làm việc cho bạn.


1

Tôi đã có lỗi này gần đây. Nguyên nhân là do root sở hữu một vài tệp trong thư mục gây ra lỗi này.

Sau khi tôi thay đổi quyền, mọi thứ hoạt động như mong đợi.


1

Không hiểu nhiều từ bài viết của bạn. Giải pháp của tôi là

  1. Cắt thư mục có vấn đề và sao chép vào một số vị trí.
  2. Do Get Solution From Subversion vào một thư mục làm việc khác (chỉ mới).
  3. Thêm thư mục đã lưu của bạn vào bản sao làm việc mới và thêm nó dưới dạng Dự án Hiện tại (nếu đó là dự án như trong trường hợp của tôi).
  4. Cam kết;

1

Tôi đã có vấn đề này. Chỉ cần tạm thời di chuyển blabla đến một vị trí khác, nói với svn để hoàn nguyên nó, và sau đó di chuyển nó trở lại. Nó được coi là một bổ sung mới. Đơn giản!


1

Đơn giản nhất đã giúp tôi:

rm -rf _dir_in_question_
svn up

Nếu bạn có những thay đổi trong thư mục có vấn đề, thì đây không phải là một giải pháp tốt cho bạn.


1

Tôi đã gặp phải vấn đề này khi thay thế thư viện API của bên thứ ba bằng phiên bản mới hơn và không có giải pháp nào ở đây thực sự hiệu quả với tôi vì tôi muốn thay thế phiên bản SVN bằng phiên bản địa phương. Giải pháp của tôi là như sau:

1) Di chuyển thư mục vi phạm vào thư mục nhà của tôi, xóa nó khỏi SVN và cam kết:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Đặt lại thư mục, thêm nó vào SVN và xác nhận lại:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

Hơi khó chịu khi phải cam kết hai lần, nhưng có vẻ như nó đã hoạt động tốt.


Nói chung, tôi thích làm việc với mã riêng biệt với bản sao làm việc của repo (IDE, trình biên dịch, trình phân tích lỗi, v.v. không thích .svn và không có lệnh 'MỌI NGƯỜI IGNORE .SVNs EXCEPT SVN!' Trong Eclipse afaik); điều này có nghĩa là quy trình cam kết SVN cơ bản đối với tôi là: 1. kiểm tra bản sao làm việc của repo 2. xóa thư mục gốc của dự án Tôi có một bản cập nhật cho 3. sao chép và dán thư mục dự án đã cập nhật vào thư mục mẹ của dự án trong bản sao làm việc 4. svn thêm - lực lượng <projname> 5. cam kết. Điều này thường hoạt động, nhưng đôi khi có thể ném lỗi của OP. Bản sửa lỗi của Jamie Brown đã hoạt động trong trường hợp của tôi
CCJ

0

Chỉ trong trường hợp bất cứ ai muốn một giải pháp khác:

  1. Kiểm tra thư mục mới của bạn dưới dạng "Foldername2"
  2. Đi vào trình duyệt repo Tortise SVN
  3. Đổi tên "Foldername2" thành "Foldername"
  4. Trong windows explorer làm một bản cập nhật

Hy vọng nó sẽ giúp được ai đó.

-Ev


một giải pháp duy nhất của Windows.
Raptor

0

Đối với tôi, vấn đề tương tự đã xảy ra khi cả hai tôi:

  • đã xóa ( --force) một tệp .map
  • đã thêm * .map vào svn:ignorethông quasvn propedit svn:ignore .

Giải pháp của tôi là:

  1. hoàn tác các thay đổi đối với tài sản
  2. cam kết thay đổi các tập tin
  3. kiểm tra một bản sao mới của kho lưu trữ (than ôi!)
  4. thay đổi tài sản và cam kết

0

Tôi gặp vấn đề này khi tôi đang cố gắng thêm một thư mục vào svn. Tôi đã giải quyết nó bằng cách vào trình duyệt repo. Nhấp chuột phải vào cửa sổ bên trái, chọn thêm thư mục và thêm thư mục trực tiếp trong trình duyệt repo.

Sau đó tôi đã xóa thư mục cục bộ (sau khi sao lưu tất nhiên) đã thực hiện cập nhật svn và mọi thứ đều hoạt động trở lại.


Tôi có thể thêm rằng cái này được thêm vào tập tin "svn hút" của tôi.
Speck

0

Trước hết hãy kiểm tra dự án vào hệ thống của bạn trong một thư mục. Sau đó xóa thư mục .svn khỏi dự án xung đột và sao chép thư mục .svn từ thư mục thanh toán mới và dán vào thư mục bản sao làm việc của bạn. Sau đó, vấn đề được giải quyết.


0

Một nhiệm vụ phổ biến mà tôi đã trải qua là phải lấy một thư mục repo để dàn dựng và sao chép nó sang một repo khác - cả dưới SVN và cả hai đều được gọi cùng tên. Cách làm việc với tôi là như sau:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
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.