SVN 405 Метод запрещен


122

Я случайно удалил папку в SVN и сразу добавил ее обратно. У меня возникла проблема, и мое решение закончилось тем, что папка была полностью удалена из моей локальной копии, а также из копии на сервере. Я могу без проблем выполнять обновления и коммиты в любом другом файле или папке, но если я попытаюсь создать папку с тем же именем, добавить и зафиксировать, это даст мне следующую ошибку:

svn: сервер отправил неожиданное возвращаемое значение (метод 405 запрещен) в ответ на запрос MKCOL для '/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical'

Я провел бесчисленное количество чисток, коммитов, обновлений и т.д. Ничто не решает проблему. Идеи?

К вашему сведению, у меня нет возможности переименовать папку верхнего уровня.


Я попытался сделать то же самое при попытке удалить подкаталог, чтобы я мог игнорировать его должным образом. Каким-то образом это разрешилось само собой, и я действительно не знаю, какая загадочная комбинация элементов совпала, чтобы позволить это, поэтому я отказался от своего вопроса. Мой новый вопрос: почему мы не все используем git?
Iceedwater

Ответы:


170

Я предполагаю, что папка, которую вы пытаетесь добавить, уже существует в SVN. Вы можете подтвердить это, переместив файлы в другую папку и проверив, есть ли в транке нужная папка.


1
Я проверил это на другой проверенной версии. Почему моя рабочая копия не обновлялась, я не могу определить.
Roadsunknown

1
Так было и здесь, но мне пришлось проверить папку в отдельной папке (вернее, я переименовал ее в «foo» и svn up'd и получил обратно, включая «удаленную» папку, несмотря на мою успешную фиксацию удалить его.)
Калле

1
@Shaji: Я понимаю ваш случай. Но как я все еще могу быть совершенным из-за этой ошибки? Или есть способ сделать, пожалуйста, скажите мне. Спасибо.
Huy Tower

1
Выполните обновление SVN в папке, а затем повторите попытку фиксации.
Alex R

Это досадная ошибка. Я проверил новый репозиторий из Github и зафиксировал новую папку. Всегда показывает одну и ту же ошибку. Пробовал ваше решение, но оно не работает.
emeraldhieu 06

56

Самый быстрый способ исправить это - продублировать затронутую папку и зафиксировать ее под другим именем. Тогда svn mv duplicateFolder originalFolder. Очень легко.

Итак, возьмите folder1 и сделайте folder1

svn delete folder1
svn add folder1Copy

Зафиксировать и обновить:

svn mv folder1Copy/ folder1/

Зафиксируйте снова, и это исправлено.


6
Это отлично сработало для меня и намного проще, чем иметь дело со второй рабочей копией.
Джастин

Надеюсь, commit & updateэто не буквальная командная строка ... в Unix, которая попытается сделать и то, и другое параллельно.
LarsH

1
Великолепно, добрый сэр, если вы приедете в Саннивейл и каким-то образом найдете меня, я куплю вам кофе.
Михаил Вознесенский

10

Моя "исчезнувшая" папка была libraries/fof.

Если бы я удалил его, а затем запустил обновление, он бы не появился.

cd libaries
svn up

(Ничего не произошло).

Но обновление с фактическим именем:

svn update fof

сделали свое дело, и он был обновлен. Поэтому я взорвал свою (вручную заархивированную tar) рабочую копию поверх нее и повторно принял. Самое простое решение.


Согласитесь, это самый простой способ. Просто введите «svn up [folder]» вместо «svn up».
Димитрис

Это решение помогло мне. Спасибо.
Мигель Рентес,

4

Я только что исправил это в собственном репозитории. Я использую TortoiseSVN в Windows, поэтому я не совсем уверен, в какие команды это переводится в командной строке, но вот что я сделал:

Проблемная папка называется lib, и ее должны были добавить.

  • Сначала я отменил добавление, чтобы SVN больше не обращал на него внимания.
  • Затем я переименовал его (в libs не имеет значения) с помощью контекстного меню Windows, добавил и успешно зафиксировал.
  • Наконец, я снова переименовал его libв контекстное меню TortoiseSVN (это, вероятно, важно) и снова зафиксировал.

3

Я тоже только что столкнулся с этой проблемой и решил ее таким образом. Я записал его здесь и желаю, чтобы он был полезен другим.

Сценарий:

  1. Прежде, чем я зафиксирую код, ревизия: 100
  2. (Кто-то еще фиксирует код ... версия увеличена до 199)
  3. Я (забыл запустить "svn up",) фиксирую код, теперь моя ревизия: 200
  4. Бегу "svn up".

Произошла ошибка.

Решение:

  1. $ mv current_copy copy_back # Переименовать текущую копию кода
  2. $ svn checkout current_copy # Проверить еще раз
  3. $ cp copy_back / current_copy # Восстановить ваши изменения

3

У меня была похожая проблема. Я закончил тем, что сбил его с орбиты, и при этом потерял свою историю SVN. Но, по крайней мере, я исправил эту чертову ошибку.

Вероятно, это неоптимальная последовательность команд для выполнения, но она должна довольно точно соответствовать последовательности команд, которые я действительно сделал, чтобы заставить все работать:

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"

Это единственный способ убедиться.
TomDestry

1

Если вы используете code.google.comдля размещения своего репозитория Subversion.

Вы знаете, что ниже, не так ли?

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

Ошибка, которую вы упомянули, именно вы используете Non-members may check out a read-only working copy anonymously over HTTP статус. Следовательно, вы пока не можете совершать или делать что-либо.

Вы должны использовать Project members authenticate over HTTPS to allow committing changesвещь.

Теперь все будет хорошо.


0

Я столкнулся с той же проблемой и смог ее исправить:

  1. Скопируйте папку в другое место.
  2. Удалить .svn из скопированной папки
  3. Щелкните правой кнопкой мыши исходную папку и выберите «SVN Checkout».
  4. Если вы не можете найти (3), то ваш случай отличается от моего.
  5. Посмотрите, правильный ли каталог в REPO-BROWSER. В моем случае причина была именно в этом.
  6. Проверять, выписываться
  7. Верните файлы из скопированной папки в исходный каталог.
  8. Commit.

0

Это означает, что папка / файл, который вы пытаетесь поместить в svn, уже существует там. Я советую, прежде чем что-либо делать, просто щелкните правой кнопкой мыши папку / файл и выберите репо-браузер. Сделав это, вы сможете увидеть все файлы / подпапки и т. Д., Которые уже присутствуют в svn. Если нужный файл / папка отсутствует в svn, вы просто удалите (после создания резервной копии) файл, который хотите добавить, а затем запустите обновление.


0

Добавленный в данный момент каталог уже зафиксирован в репозитории. Поэтому удалите каталог в репозитории и снова зафиксируйте тот же каталог.


0

Я получил эту ошибку, потому что я заменил URL-адрес новым, заканчивающимся на "/". Я имею ввиду запись в базе данных wc.db в .svn папке .svn в таблице REPOSITORY.

Когда я удалил знак: "/", ошибка исчезла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.