SVN камень преткновения - PullRequest
       2

SVN камень преткновения

1 голос
/ 27 апреля 2009

Я сталкиваюсь с несколькими проблемами при использовании SVN. Вот список

  • В какой-то момент времени все мои команды, такие как svn commit, svn add и т. Д., Работали, но я сделал что-то, чтобы ни одна из них не работала без запуска от имени пользователя root (sudo). какие конкретные действия вызвали бы это и как это исправить?
  • мой другой веб-сайт сам создал папку с изображениями, и в результате ее user: group стала www-data: www-data. Когда я попытался добавить эту папку для управления версиями, я думаю, что svn не удалось создать подкаталог .svn внутри изображений, поэтому он вывел, что все подпути к папке с изображениями были заблокированы, и мне нужно было выполнить очистку. Очистка также не удалась. Также он начал показывать каталог изображений с символом '~' (тильда), подразумевая, что в какой-то момент он был версионным, но с ним что-то случилось. Я исправил циклическую проблему «Не удается зафиксировать до разрыва блокировки» и «Не удается разорвать блокировки» следующим образом:
    • удалены файлы .svn / lock из каждой директории, ведущей в папку с изображениями
    • переместил каталог изображений в домашнюю папку и зафиксировал «Удаленные изображения»
    • скопировал обратно папку с изображениями и сделал 'svn add'

Но я хочу знать, что я должен был сделать в каждом из двух вышеупомянутых случаев. Я подозреваю, что в случае 1 проблема была связана с неправильными правами доступа к папкам, но я не знаю точно, что и как это исправить. Я подозреваю, что мог бы сделать один из следующих шагов для папок, у которых не установлены соответствующие владельцы / группы:

  • попробуйте сделать 'sudo add folder_with_different_user_and_group'
  • изменить пользователя: сгруппировать значения по умолчанию, добавить файлы и зафиксировать. Но каким-то образом я хотел бы отменить эти изменения таким образом, чтобы он заработал в будущем. возможно, поменяйте права назад, но не смените владельца: группа папки .svn?

Каков наилучший способ использовать svn в каждом из вышеперечисленных случаев, и как успешно сломать блокировки и т.д., когда что-то подобное происходит?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2009

Похоже, у вас есть как минимум 2 разных пользователя обновление одна и та же рабочая копия:

  • www-data: www-data (веб-пользователь)
  • ваш собственный пользователь

Это проблема. Вы можете использовать root (то есть sudo) для всех операций svn - это не чисто, но будет работать.

1 голос
/ 27 апреля 2009

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

Если ваши файлы создаются веб-сервером, у вас, вероятно, есть проблема, заключающаяся в том, что Apache настроен для работы как «www-data» или что-то подобное. В этом случае может быть проще добавить пользователя (который запускает команды SVN) в группу, которую Apache использует для записи файлов.

1 голос
/ 27 апреля 2009

Ваша первая проблема - проблема с правами доступа к файловой системе, а не svn. Если вы запускаете команды svn от имени пользователя root, очень вероятно, что некоторые ваши файлы и каталоги окажутся в собственности root. Запуск

chown -R desiredusername .

как root в корневом каталоге рабочей копии, это должно исправить ситуацию (обратите внимание, что вам нужно будет заменить реальное имя пользователя «desiredusername»). Старайтесь не работать с правами root, и вы избежите многих из этих проблем. :)

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

svn propset svn:ignore imagedirectoryname .

в родительском каталоге. Снова замените фактическое имя на «imagedirectoryname». Также обратите внимание, что если у вас уже есть другие игнорируемые ресурсы в родительском каталоге, использование svn propset перезапишет их, поэтому вы хотите запустить

svn propedit svn:ignore .

вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...