LINUX.ORG.RU

[SVN] Commit failed, Permission denied

 


0

0

Описание ситуации:

Репозиторий SVN расположен на виндовом сервере и расшарен. Эта шара примонтирована в файловую систему. Права на создание, удаление, редактирование файлов и каталогов есть.

В пррошлую субботу коммит проходил без проблем. Начиная с понедельника попытка коммита выдает такую ошибку:

$ svn ci

svn: Commit failed (details follow):
svn: Can't read file '/home/path_to_svn_repository/db/transactions/335-11.txn/props': Permission denied

Ни на сервере, ни на моем компьютере софт не обновлялся. Антивируса на сервере не установлено.

Чекаут и апдейт выполняются без проблем.

Если сделать чекаут, потом изменить файлы, сделать коммит, то снова нарвусь на подобную ошибку.

Если делать коммит из-под Windows с помощью TortoiseSVN, то коммит проходит.

Гуглил, но ничего путного не нагуглил.

# uname -a
Linux andreyu 2.6.24-gentoo-r8 #1 SMP PREEMPT Mon Jun 2 13:08:15 EEST 2008 i686 Intel(R) Core(TM)2 CPU 6320 @ 1.86GHz GenuineIntel GNU/Linux

net-fs/samba-3.0.28a-r1 (пробовал и net-fs/samba-3.0.30)

dev-util/subversion-1.4.6 (пробовал и dev-util/subversion-1.5.0_rc5)

Ребята, намекните, куда копать?

★★★★★

Вначале поднять apache + svn, а потом смотреть что будет. У меня такое ощущение, что cmd клиент что-то нехорошее хочет сделать с файловой системой. Ссылку, например, создать. И обламывается на этом.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

> авторизация в свн небось по учетке в винде, нэ?

Какая еще авторизация, svn и любой его клиент даже не подозревает, что репозиторий находится на другом компьютере. Репозиторий примонтирован в мою файловую систему. Используется fusesmb. Но это не имеет значениЯ - пробовал и mount.cifs.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от Reset

> Вначале поднять apache + svn, а потом смотреть что будет. У меня такое ощущение, что cmd клиент что-то нехорошее хочет сделать с файловой системой. Ссылку, например, создать. И обламывается на этом.

Наши админы не станут поднимать ни apache, ни subversion на той машине. Да и что это дало бы?

Тем более, что конфигурация и софт не менялись. И все прекрасно работало долгое время, вплоть до прошлой субботы. А с понедельника пришел финиш :(

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Если они не будут ничего поднимать то возникает вопрос - нужен ли вообще SVN конторе ? Если не нужен, то надо забить на проблему.

Проблема скорее всего в том, что родной клиент знает под какой системой запущен и как работать с файловой системой на хосте. Вот в виндах все и работет. Когда поднимешь сервер, то репозиторий будет обслуживать виндовая версия svn'а, а твой клиент будет к ней коннектиться.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

> у вас в сам свн коммит чтоле всем разрешен и анонимно?

Только тем, кому разрешено пришарить данный репозиторий. Но какое это имеет значение к моему вопросу?

andreyu ★★★★★
() автор топика
Ответ на: комментарий от Reset

> Проблема скорее всего в том, что родной клиент знает под какой системой запущен и как работать с файловой системой на хосте.

Что значит родной клиент? Subversion везде одинаков. На винде, где расположен репозиторий вообще нет никакого svn.

> Вот в виндах все и работет. Когда поднимешь сервер, то репозиторий будет обслуживать виндовая версия svn'а, а твой клиент будет к ней коннектиться.

Ход ваших мыслей понятен.
Но почему до этого пол года все работало прекрасно, что под линуксом, что под виндой?

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

> Что значит родной клиент? Subversion везде одинаков. На винде, где расположен репозиторий вообще нет никакого svn.

Это не значит, что его поведение везде одинаково. Он же не знает, что ты подключаешь что-то там по smb и там нельзя делать ln -s или chown (что там еще не работает по smb ... ). Проявилось видимо после какого-то апдейта.

Reset ★★★★★
()
Ответ на: комментарий от Reset

> Это не значит, что его поведение везде одинаково. Он же не знает, что ты подключаешь что-то там по smb и там нельзя делать ln -s или chown (что там еще не работает по smb ... ).

Понятно, что сделать ln -s он не сможет. Но ему это и не нужно (полагаю).
Ну а chown он выполнить сможет, только на файл это не повлияет.

> Проявилось видимо после какого-то апдейта.

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

Одним словом хез, что теперь делать :(

andreyu ★★★★★
() автор топика
Ответ на: комментарий от Reset

> можно прогнать strace'ом и посмотреть на чем он обламывается

Хорошая идея, спасибо. Вот рез-т:

$ strace svn ci
<поскипано>
unlink("/home/andrey/samba/APPSYS/PARADISE2/CG.Svn/db/transactions/335-14.txn/c hanges") = 0
unlink("/home/andrey/samba/APPSYS/PARADISE2/CG.Svn/db/transactions/335-14.txn/n ext-ids") = 0
unlink("/home/andrey/samba/APPSYS/PARADISE2/CG.Svn/db/transactions/335-14.txn/n ode.0.0") = 0
unlink("/home/andrey/samba/APPSYS/PARADISE2/CG.Svn/db/transactions/335-14.txn/p rops") = -1 EBUSY (Device or resource busy)
<еще_поскипано>

Млин. И как сие понимать?

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

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

например виндовый svn может более внимательно следить за тем - какие файлы и когда он открывает и удаляет, а unix'овый - не заморачиваться об этом так как легко может удалять любые свои открытые файлы :)

имхо экспортировать репозитарий svn через шары самбы - это была плохая идея, вышеприведённая ошибка может быть следствием ограничений smb протокола или ограничений файловой системы винды. насколько я помню - такой вариант работы в документации на svn не обсуждается. там есть только три варианта: _локальная_ файловая система, через svnserve (+ssh), через apache.

Eshkin_kot ★★
()
Ответ на: комментарий от Eshkin_kot

Спасибо, что пытаетесь помочь мне решить проблему, но:

> например в винде нельзя удалить файл если он кем-то используется, а в unix - можно.

Кем же он может использоваться? Это простой файл-сервер. Без антивируса и прочей ерунды.

> имхо экспортировать репозитарий svn через шары самбы - это была плохая идея, вышеприведённая ошибка может быть следствием ограничений smb протокола или ограничений файловой системы винды.

Вы видимо не очень внимательно прочитали мой первый пост. Репозиторий ВСЕГДА находился на виндовом сервере, и с ним всегда работали так же, как и сейчас.

starce показал, что один из файлов по какой то причине занят. У меня возникло предположение, что винда за воскресенье накатила какой то патч втихаря, а самба об этом еще не знает.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Удалить файл не может. Смотри кто его держит. lsof. Если винда держит, то надо на ней юзать что-то из утилит от sysinternals

Reset ★★★★★
()
Ответ на: комментарий от andreyu

> Кем же он может использоваться?

самой утилитой svn :) она этот файл открыла, что-то из него читала и не закрыв стала удалять. в linux это проходит а в win - нет

> Вы видимо не очень внимательно прочитали мой первый пост. Репозиторий ВСЕГДА находился на виндовом сервере, и с ним всегда работали так же, как и сейчас.

да, видимо. мне почему-то показалось что у Вас был только один или несколько комитов перед тем как оно перестало работать.

> starce показал, что один из файлов по какой то причине занят. У меня возникло предположение, что винда за воскресенье накатила какой то патч втихаря, а самба об этом еще не знает.

кстати ! я так понял что Вы на той win машине локально работали с репозитарием через tortoisesvn ? может быть это как раз он держит файл ? у него там есть приблуда которая постоянно висит в памяти и занимается кешированием, может быть это она держит тот файл ? можно попробовать для проверки удалить tortoisesvn (только придётся перезагружать win)

Eshkin_kot ★★
()
Ответ на: комментарий от Reset

> Удалить файл не может. Смотри кто его держит. lsof. Если винда держит, то надо на ней юзать что-то из утилит от sysinternals

Этот файл редактируется и удаляется без проблем при помощи любой утилиты ;)

> да, видимо. мне почему-то показалось что у Вас был только один или несколько комитов перед тем как оно перестало работать.

Работало всегда без нареканий. Но в один прекрасный, млин, момент, перестало ;)

> кстати ! я так понял что Вы на той win машине локально работали с репозитарием через tortoisesvn ? может быть это как раз он держит файл ?

На той машине никто не работает. Это обычная файлопомойка, именуемая сервером.

> у него там есть приблуда которая постоянно висит в памяти и занимается кешированием, может быть это она держит тот файл ? можно попробовать для проверки удалить tortoisesvn (только придётся перезагружать win)

Проблема не в tortoisesvn.

andreyu ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.