subversion
Как удалить файлы из Subversion (SVN) репозитория
Файлы из SVN репозитория нельзя удалить подобно файлам из CVS. Для удаления могут быть разные причины, включая случайный commit или разделение одного репозитория на несколько. На будущее разработчики запланировали опцию 'obfuscate', но в настоящее время единственным способом является следующий:
svnadmin dump /путь/к/репозиторию > myrepo.dump cat myrepo.dump | svndumpfilter exclude /путь/к/ненужным/файлам/репозитория >myrepo.clean mv /путь/к/репозиторию /путь/к/репозиторию.bkp svnadmin create --fs-type fsfs /путь/к/репозиторию svnadmin load myrepo.clean
Пояснения к коду ниже:
Права на запуск на файлах в репозиториях subversion
Для того то бы хранить в репозитории исполняемые скрипты с правами на запуск, svn предоставляет специальное property svn:executable. Обычно при коммите, если файл имеет права на исполение, svn автоматически устанавливает это property. Но если вам надо уборать права на исполение, то надо удалить svn:executable напрямую.
ramok@~work/stable-1-3/ds/scripts/ svn proplist header.gif Properties on 'header.gif': svn:executable svn:mime-type ramok@~work/stable-1-3/ds/scripts/ svn propdel svn:executable header.gif Logo.jpg property 'svn:executable' deleted from 'header.gif'. property 'svn:executable' deleted from 'Logo.jpg'. ramok@~work/stable-1-3/ds/scripts/ svn commit -m "fix permission on header.gif Logo.jpg"
Git и Subversion могут жить вместе
Предположим, что у вас есть централизованный сервер с svn репозиторием, но вы хотите использовать git локально, делать commit'ы, ветки и другие прелести децентрализованной системы контроля версий. С помощью git-svn это довольно просто.
Как бороться с mime property в svn
SVN при добавлении файла в репозиторий автоматически определяет бинарный это файл или нет. В зависимости от этого SVN будет вести себя с файлом по разному
(в частности не будет выводить diff для таких файлов).
Но бывает так что файл является текстовым, но править его как текст вы вряд ли будете.
Например ps, eps, xpm. И правке таких файлов получаются мегабайтные diff между commit, в которых трудно ориентироваться.
Для исправления этого недоразумения для файлов которые уже в репозитории можно указать напрямую MIME этого файла. Все что будет отличатся от text/* не будет интерпретироваться как текст. Например в директории img дадим всем .eps файлам правильный MIME и закомитим изменения.
$ svn propset svn:mime-type application/postscript img/*.eps $ svn commit -m "fix mime for .eps"
Какие mime какому типу файла соответствуют можно подсмотреть в /etc/mailcap. и man mime незабудьте
прочесть Ж:-)
В долгосрочной перспективе рекомендую добавить в ~/.subversion/config этот текст
что бы все нужные propertis устанавливались автоматически.


