Phương pháp SVN 405 không được phép


122

Tôi đã vô tình xóa một thư mục trong SVN và thêm lại nó ngay lập tức. Tôi đã gặp sự cố với điều này và giải pháp của tôi đã xóa hoàn toàn thư mục khỏi bản sao cục bộ cũng như bản sao máy chủ. Tôi có thể thực hiện cập nhật và cam kết mà không gặp sự cố trên bất kỳ tệp hoặc thư mục nào khác, nhưng nếu tôi cố gắng tạo một thư mục có cùng tên, thêm và cam kết, nó sẽ gây ra cho tôi lỗi sau:

svn: Máy chủ đã gửi giá trị trả về không mong muốn (Phương pháp 405 Không được phép) để phản hồi yêu cầu MKCOL cho '/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0/canh / htdocs / Solutions / Medical'

Tôi đã chạy vô số lần dọn dẹp, cam kết, cập nhật, v.v. Không có gì giải quyết được vấn đề. Ý tưởng?

FYI, tôi không có tùy chọn đổi tên thư mục cấp cao nhất.


Tôi đã cố gắng làm điều tương tự trong khi cố gắng xóa một thư mục con để tôi có thể bỏ qua nó đúng cách. Bằng cách nào đó, nó tự giải quyết và tôi thực sự không biết sự kết hợp phức tạp nào của các yếu tố trùng hợp để cho phép điều này, vì vậy tôi đã loại bỏ câu hỏi của mình. Cái mới của tôi là: tại sao tất cả chúng ta không sử dụng git?
icedwater

Câu trả lời:


170

Tôi đoán là thư mục bạn đang cố thêm đã tồn tại trong SVN. Bạn có thể xác nhận bằng cách kiểm tra các tệp sang một thư mục khác và xem liệu thân cây đã có thư mục cần thiết hay chưa.


1
Tôi đã xác minh điều này trên một phiên bản đã kiểm tra khác. Tại sao bản sao làm việc của tôi không cập nhật với nó, tôi không thể xác định.
roadunknown,

1
Cũng có trường hợp ở đây, nhưng tôi phải kiểm tra thư mục trong một thư mục riêng (hay đúng hơn, tôi đã đổi tên nó thành "foo" và svn up'd và lấy lại nó, bao gồm cả thư mục "đã xóa", mặc dù tôi đã cam kết thành công. xóa nó.)
Kalle

1
@Shaji: Tôi hiểu trường hợp của bạn. Nhưng làm thế nào tôi vẫn có thể được cam kết do lỗi này? Hoặc có bất cứ điều gì để làm, Xin vui lòng cho tôi biết. Cảm ơn.
Huy Tower

1
Thực hiện cập nhật SVN trên thư mục, rồi thử thực hiện lại cam kết.
Alex R

Đây là một lỗi khó chịu. Tôi đã kiểm tra một kho lưu trữ mới từ Github và cam kết một thư mục mới. Nó luôn hiển thị cùng một lỗi. Đã thử giải pháp của bạn nhưng nó không hoạt động.
emeraldhieu

56

Cách nhanh nhất để tôi sửa nó là sao chép thư mục bị ảnh hưởng và cam kết nó với một tên thay thế. Sau đó svn mv duplicateFolder originalFolder. Khá dễ.

Vì vậy, hãy lấy folder1 và tạo một folder1Copy:

svn delete folder1
svn add folder1Copy

Cam kết và cập nhật:

svn mv folder1Copy/ folder1/

Cam kết lại và nó đã được sửa.


6
Điều này rất hiệu quả đối với tôi và đơn giản hơn rất nhiều so với việc xử lý một bản sao làm việc thứ hai.
Justin

Hy vọng rằng commit & updatekhông phải là một dòng lệnh nghĩa đen ... trong Unix sẽ cố gắng thực hiện song song cả hai.
LarsH

1
Rất tốt, thưa ngài nếu ngài đến sunnyvale và bằng cách nào đó tìm thấy tôi, tôi sẽ mua cà phê cho ngài.
Michael Voznesensky

10

Thư mục "đã biến mất" của tôi là libraries/fof.

Nếu tôi xóa nó, sau đó chạy cập nhật, nó sẽ không hiển thị.

cd libaries
svn up

(chẳng có gì xảy ra).

Nhưng cập nhật với tên thực:

svn update fof

đã thực hiện thủ thuật và nó đã được cập nhật. Vì vậy, tôi đã phát nổ bản sao làm việc (được lưu trữ bằng tar) của mình trên đó và gửi lại. Giải pháp dễ dàng nhất.


Đồng ý đây là cách dễ nhất. Chỉ cần thực hiện "svn up [folder]" thay vì "svn up".
Dimitris

Giải pháp này là giải pháp phù hợp với tôi. Cảm ơn bạn.
Miguel Rentes

4

Tôi vừa sửa lỗi này trong kho lưu trữ của riêng mình. Tôi đang sử dụng TortoiseSVN trên Windows, vì vậy tôi không chắc chắn chính xác những lệnh này được dịch sang dòng lệnh nào, nhưng đây là những gì tôi đã làm:

Thư mục có vấn đề được gọi libvà nó đã được thêm vào.

  • Trước tiên, tôi gỡ bỏ phần bổ sung, để SVN không còn chú ý đến nó nữa.
  • Sau đó, tôi đổi tên nó (thành libs, không quan trọng) bằng menu ngữ cảnh của Windows, thêm nó và cam kết thành công.
  • Cuối cùng, tôi đổi tên nó trở lại libbằng cách sử dụng menu ngữ cảnh của TortoiseSVN (điều này có lẽ quan trọng) và cam kết lại.

3

Tôi cũng đã gặp vấn đề này ngay bây giờ và giải quyết nó theo cách này. Vì vậy, tôi ghi lại nó ở đây, và tôi muốn nó hữu ích cho những người khác.

Tình huống:

  1. Trước khi tôi cam kết mã, hãy sửa đổi: 100
  2. (Ai đó khác cam kết mã ... bản sửa đổi đã tăng lên 199)
  3. Tôi (quên chạy "svn up",) cam kết mã, bây giờ là bản sửa đổi của tôi: 200
  4. Tôi chạy "svn up".

Đã xảy ra lỗi.

Giải pháp:

  1. $ mv current_copy copy_back # Đổi tên bản sao mã hiện tại
  2. $ svn checkout current_copy # Kiểm tra lại
  3. $ cp copy_back / current_copy # Khôi phục các sửa đổi của bạn

3

Tôi đã có một vấn đề tương tự. Cuối cùng tôi đã đưa nó khỏi quỹ đạo và mất lịch sử SVN của mình trong quá trình này. Nhưng ít nhất tôi đã biến cái lỗi chết tiệt đó đi.

Đây có lẽ là một chuỗi lệnh dưới tối ưu để thực thi, nhưng nó phải tuân theo khá chặt chẽ chuỗi lệnh mà tôi đã thực sự làm để mọi thứ hoạt động:

cp -rp target ~/other/location/target-20111108
svn rm target --force
cp -rp ~/other/location/target-20111108 target-other-name
cd target-other-name
find . -name .svn -print | xargs rm -rf
cd ..
svn add target-other-name
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
svn mv target-other-name target
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"

Đó là cách duy nhất để chắc chắn.
TomDestry

1

Nếu bạn sử dụng code.google.comđể lưu trữ kho Subversion của mình.

Bạn biết những điều dưới đây, phải không?

If you plan to make changes, use this command to check out the code as yourself using HTTPS:

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://.../svn/trunk/ user-...

When prompted, enter your generated googlecode.com password.
Use this command to anonymously check out the latest project source code:

# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://.../svn/trunk/ ...-read-only

Lỗi bạn đề cập chính xác là bạn đang sử dụng Non-members may check out a read-only working copy anonymously over HTTPtrạng thái. Vì vậy, bạn không thể cam kết hoặc làm bất cứ điều gì cho đến nay.

Bạn phải sử dụng Project members authenticate over HTTPS to allow committing changesđiều.

Bây giờ sẽ ổn thôi.


0

Tôi gặp sự cố tương tự và có thể khắc phục bằng cách:

  1. Sao chép thư mục sang một nơi khác.
  2. Xóa .svn khỏi thư mục đã sao chép
  3. Nhấp chuột phải vào thư mục gốc và chọn 'SVN Checkout'
  4. Nếu bạn không tìm thấy (3), thì trường hợp của bạn khác với trường hợp của tôi.
  5. Xem thư mục trên REPO-BROWSER có đúng không. Đối với trường hợp của tôi, đây là nguyên nhân.
  6. Thủ tục thanh toán
  7. Lấy lại các tệp từ thư mục đã sao chép vào thư mục gốc.
  8. Cam kết.

0

Điều này có nghĩa là thư mục / tệp mà bạn đang cố gắng đặt trên svn đã tồn tại ở đó. Lời khuyên của tôi là trước khi làm bất cứ điều gì chỉ cần nhấp chuột phải vào thư mục / tệp và nhấp vào trình duyệt repo. Bằng cách này, bạn sẽ có thể xem tất cả các tệp / thư mục con, v.v. đã có trên svn. Nếu tệp / thư mục cần thiết không có trên svn thì bạn chỉ cần xóa (sau khi sao lưu) tệp bạn muốn thêm và sau đó chạy cập nhật.


0

Thư mục hiện được thêm vào đã được cam kết trong kho lưu trữ. Vì vậy, hãy xóa thư mục trong kho lưu trữ và cam kết lại cùng một thư mục.


0

Tôi gặp lỗi này vì tôi đã thay thế địa chỉ URL bằng địa chỉ URL mới có "/". Ý tôi là ghi trong cơ sở dữ liệu wc.db trong thư mục .svn trong bảng REPOSITORY.

Khi tôi xóa dấu: "/" thì lỗi đã biến mất.

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.