Các thư mục bị cản trở trong Subversion


131

"Vật cản" có nghĩa là gì khi bạn cố gắng kiểm tra Subversion? Tôi thấy hai thư mục màu đỏ với trạng thái văn bản là "bị cản trở". Tôi không thấy điều này có nghĩa là bất cứ nơi nào trong các tài liệu.

Khi tôi thử cleanuplệnh, tôi nhận được "tên thư mục không phải là thư mục làm việc." Đây là một thư mục tôi vừa tạo trong VS và khi tôi cố gắng thêm nó vào Subversion, nó sẽ báo lỗi cho tôi. Tất cả các thư mục khác đều ổn.


Bạn nhận được 'Bị cản trở' trong hoạt động thêm?
Sander Rijken

Câu trả lời:


113

nó xảy ra khi bạn đã xóa hoặc di chuyển các thư mục con .svn (không thông qua các lệnh SVN), vì vậy SVN có chế độ xem bị hỏng của bản sao làm việc.

Trước tiên hãy thử dọn dẹp và nếu điều đó không giải quyết được, hãy hoàn nguyên (hoặc cập nhật) thư mục để khôi phục thư mục .svn thư mục con.


1
kỳ dị. Tôi đã kết thúc việc kiểm tra thư mục này. Các thư mục tồn tại trước trong kho lưu trữ. Sau đó tôi đã xóa nó mà không sử dụng lệnh xóa svn. Bằng cách kiểm tra lại và cam kết, vấn đề đã được giải quyết. Sau đó, trên một tệp .css khác mà tôi KHÔNG đổi tên, xóa và chỉ đang chỉnh sửa nó, tôi phải thực hiện cập nhật svn vì tôi gặp phải một số vấn đề kỳ lạ với điều đó (tin nhắn khác).
positiveGuy

1
Chúa ơi, tôi đã cố gắng cam kết dựa trên một bản sao của dự án này mà tôi có trên ổ đĩa ngoài, chứ không phải bản sao làm việc từ ổ đĩa cục bộ của tôi. Tât nhiên.
positiveGuy

8
Điều này thường xảy ra nếu bạn di chuyển một thư mục từ nơi này sang nơi khác và không sử dụng lệnh di chuyển SVN. Tệp .svn ẩn được di chuyển cùng với nó nhưng không được cập nhật. Xóa các tệp .svn sẽ khắc phục sự cố.
user85259

1
Điều này xảy ra với tôi khi tôi chuyển toàn bộ thư mục bằng cách sao chép thư mục vào thư mục khác bằng Visual Studio 2008, thay vì sử dụng Windows Explorer.
MacGyver

2
Cách tôi giải quyết là xuất các tệp của tôi khỏi thư mục bị tắc nghẽn để tôi không bị mất chúng, sau đó tôi nhấp vào thư mục phía trên thư mục bị tắc nghẽn, nhấp vào hoàn nguyên, sau đó bỏ chọn mọi thứ trừ thư mục bị tắc nghẽn và hoàn nguyên bị tắc nghẽn thư mục, vì vậy nó sẽ tách thư mục đó ra khỏi nội dung của tệp .svn. Sau đó, tôi đã thêm lại thư mục bị cản trở trước đó với các tệp đã xuất và thêm lại chúng.
MacGyver

9

Mà không biết những gì gây ra này, các giải pháp có thể để xuất khẩu các bản sao làm việc (toàn bộ thanh toán bạn có địa phương) để ở một nơi khác.

Nếu bạn đang sử dụng tortoisesvn, bạn có tùy chọn "xuất các tệp chưa được phiên bản", nhưng tôi nghĩ rằng nếu thực hiện nó từ dòng lệnh, nó chỉ xuất các tệp được phiên bản để bạn có thể có một chút nhiệm vụ khó khăn khi sao chép các tệp chưa được phiên bản theo cách thủ công .

Sau khi hoàn thành, hãy kiểm tra một bản sao làm việc sạch sẽ và sau đó thả bản sao lưu đã xuất mà bạn có lên trên nó. Điều rất quan trọng là bản sao lưu không có thư mục .svn trong đó.

Tôi đã thấy những lỗi này trước đây khi mọi người kiểm tra các bản sao làm việc bên trong các bản sao làm việc khác hoặc bất cứ điều gì khác làm hỏng các mục .svn.


Điều đó đã sửa nó cho tôi. Cảm ơn!
Patrick

11
Tôi nghĩ giải pháp là dán SVN vào thùng và chuyển sang hệ thống kiểm soát phiên bản không phải là rác. Xin lỗi ... tôi chỉ thất vọng.
Phil Hale

5

Có cùng một vấn đề và đã sửa nó như thế này:

  • đổi tên thư mục bị tắc nghẽn
  • đã tạo thư mục với tên ban đầu của nó trong SVN (ví dụ: svn mkdir)
  • đã cập nhật thư mục mẹ, vì vậy thư mục mới được tạo sẽ xuất hiện trong bản sao làm việc của tôi
  • sao chép các tập tin từ vật cản vào thư mục mới được tạo và cam kết chúng

4

Nếu bạn đang sử dụng hệ thống * nix, hãy đảm bảo rằng bạn không tạo tệp, thêm tệp vào SVN, sau đó xóa tệp đó, thay thế bằng thư mục cùng tên. Không giúp OP, nhưng hy vọng nó sẽ cứu được ai đó rất nhiều căng thẳng.


1

Điều này có nghĩa là, vì một số lý do, một cuộc xung đột đã xảy ra trong quá trình hoạt động. Kiểm tra xem nếu có một tập tin hoặc thư mục chưa được đảo ngược hiện có cùng tên với một phiên bản.

(Paraphrased từ tệp trợ giúp khách hàng của SVN Rùa)


1

Không có gì làm việc cho tôi vì vậy tôi đã làm như sau:

  • xuất với các tệp không đảo ngược ở một vị trí mới
  • đổi tên thư mục hiện có
  • di chuyển thư mục từ vị trí xuất trong dự án
  • đổi tên thư mục mới
  • thêm, cam kết
  • xóa thư mục cũ, đổi tên
  • đổi tên thư mục mới
  • cam kết

1

Có nhiều biến thể khác nhau của kịch bản có thể gây ra tình huống này. Đây là một ví dụ:

Tôi đã kết thúc với! đánh dấu vào một thư mục được đổi tên từ www thành www_a mà không sử dụng lệnh 'svn đổi tên':

  1. Đổi tên thư mục hiện tại mang tên gốc, ví dụ thành www_b
  2. Đổi tên www_a trở lại www
  3. Đảm bảo bạn cập nhật 'svn' hoặc 'svn hoàn nguyên' trong thư mục www
  4. Xóa thư mục www cập nhật mà không sử dụng 'svn xóa'
  5. Chuyển đến thư mục mẹ và phát hành 'svn update'
  6. Điều này sẽ khôi phục thư mục www gốc
  7. Lần này sử dụng 'svn đổi tên' để đổi tên www thành www_a
  8. Đổi tên www_b trở lại www
  9. Sử dụng 'svn add' để thêm nó vào kho lưu trữ

Bạn sẽ nhận được một thư mục làm việc svn chính xác tại thời điểm này. Và tìm hiểu một hoặc hai điều về cách giải quyết nhầm lẫn thư mục svn.


1

Đối mặt với vấn đề này trên một máy Windows.

Tôi đã kiểm tra thư mục trước khi tôi kiểm tra toàn bộ dự án mà nó thuộc về. Nó gây ra vấn đề 'cản trở' cho tôi.

Tôi chỉ đơn giản là xóa thư mục đó và chạy một bản cập nhật từ root (của thư mục đó). Nó hoạt động tốt.

Các lệnh như dọn dẹp, vv không làm việc cho tôi.

Một số lời cảnh báo:

  1. Điều này là tốn kém nếu thư mục lớn.
  2. Nó sẽ khiến bạn mất tất cả các thay đổi nếu có.

Tất cả tốt nhất.


1

Tôi cũng đã thấy điều này trên Windows khi tôi đã tạo một liên kết tượng trưng đến một thư mục kho lưu trữ; trong trường hợp này, kho lưu trữ gốc được xem là "bị tắc nghẽn". Điều này dường như không có bất kỳ ảnh hưởng, mặc dù.

Các bước để tái sản xuất:

  1. Kiểm tra repo của bạn

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. Kiểm tra xem thư mục của bạn có ổn không

    cd plugin_dir
    svn st -u
    

    Đầu ra nên

    Status against revision: 1234
    
  3. Tạo liên kết tượng trưng (hiển thị sự cố)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    Đầu ra sẽ là

    ~           1234  .
    Status against revision: 1234
    

0

Tôi gặp phải vấn đề này khi dán vào thư mục có thư mục con vào bản sao làm việc của mình bằng ứng dụng khách FTP của mình - Tôi biết rằng tôi đã làm hỏng ngay khi nhấn nút chuyển ... sự nguy hiểm của cách làm việc quá muộn.

Tôi đã thử tất cả các đề xuất ở trên và tìm thấy trực tuyến khác nhưng không có kết quả. Mọi tùy chọn tạo ra lỗi mà thư mục của tôi bị khóa và thao tác không thể được thực hiện.

Tôi đã đi vào bản sao Time Machine của mình, khôi phục thư mục và rất tốt để đi. Tôi đã làm sạch bản sao làm việc để đề phòng, cập nhật các tệp của mình đúng cách và đã hoạt động trở lại.


0

Chúng tôi thường có nhiều chi nhánh cùng một lúc, để tiết kiệm cho tôi chuyển đổi hoặc làm rối tung cấu hình IIS, tôi kiểm tra từng chi nhánh vào một thư mục riêng. Sau đó tôi sử dụng liên kết thư mục để kết nối các thư mục đó trở lại đường dẫn chính được cấu hình trong IIS.

Vì vậy, đối với tôi thư mục được liên kết luôn có dấu chấm than màu vàng và được đánh dấu là bị tắc nghẽn. Tôi tin rằng điều này là do nó đã được tạo / chuyển ra bên ngoài SVN.


0

Tôi nhận được trạng thái "bị cản trở" này trên các thư mục khi tôi cập nhật lên CMS (WordPress hoặc Drupal) thông qua giao diện web - ứng dụng không biết rằng mã của nó thực sự là một bản sao hoạt động lật đổ, vì vậy khi cập nhật một plugin, nó sẽ loại bỏ plugin đó thư mục (bao gồm .svnthư mục) và thả trong một thư mục mới từ phiên bản mới của plugin.

Để lấy .svnlại thư mục đó , từ thư mục chứa thư mục bị tắc nghẽn. Tôi làm một kiểm tra với --force. Ví dụ: nếu plugin_dirđược đánh dấu "~", từ thư mục mẹ của nó, tôi chạy:

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

Bất kỳ tệp nào đã có một mình và được đánh dấu "E" trên đầu ra của lệnh thanh toán (được đánh dấu là "M" khi tôi chạy svn status).

Đôi khi tôi phải quay lại và thêm bất kỳ tệp nào mới với bản cập nhật; hoặc xóa các tệp nên bị xóa như một phần của bản cập nhật, vì chúng xuất hiện lại khi tôi thực hiện kiểm tra. Tôi tin rằng những thứ này được đánh dấu là "A" trên thanh toán, nhưng sau đó svn statussẽ không đề cập đến chúng.


0

Tôi đã gặp vấn đề này trong Eclipse khi một số tệp được đánh dấu bằng dấu chấm than màu đỏ. Vấn đề là một thư mục .svn đi lạc trong thư mục nguồn. Tôi đã xóa thư mục .svn, nhật thực được làm mới và có thể kiểm tra các tệp.


yup Tôi phải xóa thư mục của mình, nó bị hỏng ... thư mục .svn.
positiveGuy

0

Điều này cũng có thể xảy ra khi bạn nâng cấp lật đổ của bạn lên phiên bản mà XCode không hỗ trợ.


0

Đây là cách đơn giản nhất (và an toàn nhất) mà tôi đã tìm thấy để giải quyết vấn đề này:

  1. Tạm thời đổi tên tệp hoặc thư mục vi phạm (hoặc thư mục mẹ) bị cản trở (ví dụ: thêm ".backup").
  2. Xóa mọi .svnthư mục bên trong thư mục được đổi tên (nếu có).
  3. svn revert đối tượng được đổi tên (và bây giờ bị thiếu) từ bước 1.
  4. svn delete các đối tượng hoàn nguyên.
  5. Đổi tên lại bản sao lưu từ bước 1 trở lại tên ban đầu.
  6. Thêm và đăng ký đối tượng được đổi tên trở lại vào svn như một đối tượng mới.

0

Điều này xảy ra với tôi khi tôi thay thế một tệp bằng một thư mục, có cùng tên chính xác. Giải quyết bằng cách xóa tệp cũ, cam kết và sau đó thêm tệp mới. Một chút hacky, nhưng làm việc cho tôi :)


0

Tôi đã xóa .svn trong các thư mục bị tắc nghẽn và cập nhật nó từ bên ngoài. Sau đó, bên ngoài lệnh svn sẽ nhận ra các tập tin này.

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.