Установка бита "выполнить" SVN в репозитории Subversion с помощью TortiseSVN или командной строки SVN
У меня есть приложение с открытым исходным кодом, размещенное на code.google.com. Это кросс-платформа (Linux/Windows/Mac). Я загрузил исходный код с компьютера WinXP с помощью TortiseSVN, и кажется, что ни один из "настраиваемых" пакетных файлов, которые используются для сборки linux, не имеет установленных битов выполнения.
Каким будет самый простой способ установить их для файлов, которые в них нуждаются? Использование TortiseSVN было бы проще, я полагаю, но если это не может быть использовано, я также могу использовать командную строку SVN на моей машине Linux.
Ответы
Ответ 1
С черепаховой SVN это довольно просто: вы можете выбрать несколько файлов (может быть, из результатов поиска, поэтому они не обязательно должны находиться в одном каталоге), выберите "свойства" в меню TortoiseSVN, добавьте необходимое свойство (имеется раскрывающийся список наиболее используемых свойств, в данном случае "svn: executable" ) и установите значение (в данном случае "*" ). Если вы передадите измененные файлы и проверите их в Linux, будет установлен исполняемый бит.
Если вы хотите установить сразу несколько свойств, может быть более безопасным (в случае ошибок) сначала правильно настроить свойства для одного файла, экспортировать их в файл, выбрать все необходимые файлы, выбрать "свойств" и импортировать ранее сохраненные свойства.
Ответ 2
Вот как это сделать в командной строке:
for file in `find . -name configure`; do
svn ps svn:executable yes ${file}
done
Или только для одного файла (configure
- это имя файла):
svn ps svn:executable yes configure
Ответ 3
В Unix используйте {} для адресации resulset:
find . -type f -name "*.bat" -exec svn propset svn:executable yes '{}' \;
Кто-нибудь знает, почему это свойство требует "да" в качестве действительного аргумента?
Нашел другой пример с '' вместо yes, тоже работает...
Ответ 4
find . -type f -name "*.bat" -exec svn propset svn:executable yes "${}" \;
Конечно, то же самое касается и .exe и т.д.
Ответ 5
Метод восстановления исполняемых разрешений, которые теряются во время импорта svn:
копировать разрешения из исходного источника, который использовался во время импорта svn (текущий каталог до версии1):
find . -type f | xargs -I {} chmod --reference {} ../version1/{}
затем установите svn: исполняемый файл для всех исполняемых файлов, используя следующую оболочку script:
for file in `find . -executable -type f`; do
svn ps svn:executable yes ${file}
done