Выйти из файла Subversion только для чтения.

Иногда я хочу получить файл из репозитория для использования в каком-то проекте, который не находится под контролем источника. Скажем, это просто файл, полный полезных функций полезности. Я знаю, что могу просто экспортировать svn, но мне бы хотелось время от времени обновлять svn update, чтобы получить последнюю версию файла.

Важно то, что я не хочу вносить какие-либо изменения в файл из нового проекта; Я просто хочу иметь возможность делать обновления, чтобы обновить файл.

Есть ли способ проверить файл как доступный только для чтения?

Ответ 1

Это похоже на эмуляцию проверки только для чтения CVS, и я не думаю, что это было реализовано в Subversion.

Идеальный сценарий будет заключаться в том, чтобы удалить доступ с фиксацией на стороне сервера, но я полагаю, что ваш пользователь должен изменить файл в определенном рабочем пространстве, не изменяя (и не комментируя) тот же файл в другой среде (то есть в этом проекте который не находится под контролем источника).

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

Ответ 2

Один из способов сделать это, когда вы проверяете файл, добавьте к нему свойство (локально!), например readonly или некоторые из них. Вы можете даже script выполнить последовательность проверки только для чтения, которая сделает это за вас за один шаг. Это само по себе не делает файл доступным только для чтения.

Что вы можете сделать, напишите крюк pre-commit, который делает svnlook propget в потенциальной транзакции, и если readonly определено, запретите фиксацию.

Когда вы делаете обычный svn update, он должен работать нормально, без дополнительной работы.

Это может быть излишним, но если это функция, которую вы хотели бы использовать часто, это может быть полезно.

Ответ 3

У вас, вероятно, есть какая-то форма автоматизации сборки (make, ant и т.д.) для компиляции. Почему бы не добавить шаг обновления в ваш файл make, который выглядит примерно так:

update:
        svn update
        svn export <<export parameters go here>>

Тогда всякий раз, когда кто-то набирал svn update, они могут вводить make update и иметь тот же эффект.

Ответ 4

Почему бы не создать пользователя subversion, который имеет доступ только к чтению в репозиторий, а затем использовать этого пользователя для выполнения проверки/обновления.

Ответ 5

Как уже упоминалось, установите бит только для чтения. В Eclipse щелкните правой кнопкой мыши файл и выберите "Только для чтения".

Read-Only

Ответ 6

Как вам нравится идея устанавливать атрибуты только для чтения, чтобы проверять файлы? Я блуждаю, если можно автоматизировать это действие в каком-то обработчике/крюке после проверки?

Это не помешает вам выполнить изменения.

Ответ 7

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

Для меня решение заключалось в том, чтобы сделать .svn невозможным запись

Запустив linux/mac, вы можете запустить chmod -R -w .svn. Если вы попытаетесь что-то проверить, вы получите сообщение об ошибке. Вы все еще можете различить, обвинять и т.д. Недостатком является то, что это предотвратит вас от svn up -ing до тех пор, пока вы не повторите чтение каталога. Однако вы можете просто включить/выключить запись, когда вам нужно это сделать (chmod -R +w .svn).

К сожалению, я не уверен, что такое эквивалент Windows.