Pre-commit SVN Hook + скрипт оптимизации изображения

Мне было интересно, пытался ли кто-нибудь сделать SVN-хук перед фиксацией, чтобы "смутить" изображения перед коммитом, используя SmushIt, PunyPNG или какой-либо сценарий оптимизации.

Я пытался посмотреть на Google, но похоже, что никто никогда не пытался это сделать.

Мне нужны советы и / или отзывы.

Спасибо!

2 ответа

Хуки перед фиксацией не должны изменять транзакцию, которая собирается быть зафиксированной. Из SVN книги:

Хотя подключаемые сценарии могут выполнять практически все, есть одно измерение, в котором авторы подключаемых сценариев должны проявлять сдержанность: не изменяйте транзакцию фиксации с использованием подключаемых сценариев. Хотя может быть соблазнительно использовать подключаемые сценарии для автоматического исправления ошибок, недостатков или нарушений политики, присутствующих в передаваемых файлах, это может вызвать проблемы. Subversion сохраняет клиентские кэши определенных битов данных репозитория, и если вы измените транзакцию фиксации таким образом, эти кэши станут неоправданно устаревшими. Это несоответствие может привести к неожиданному и неожиданному поведению. Вместо изменения транзакции вы должны просто проверить транзакцию в хуке предварительной фиксации и отклонить фиксацию, если она не соответствует требуемым требованиям. В качестве бонуса ваши пользователи узнают ценность осторожных, ориентированных на соблюдение рабочих привычек.

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

Если вы уверены, что действительно хотите изменить коммиты на лету, вы все равно сможете сделать это безопасно на стороне клиента. Например, TortoiseSVN имеет клиентские сценарии ловушек.

Я признаю, я не совсем отвечаю на вопрос, но я пытаюсь направить вас в лучшую сторону. Вы действительно не должны связываться с содержимым commit в хуках start-commit или pre-commit. Кроме того, вы не хотели бы иметь оригинальную неизмененную графику в репозитории, чтобы в случае, если операция "smush" испортила изображения или вам не понравилась, вы всегда можете получить оригинал обратно из репозитория и отредактировать его снова?

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

Другие вопросы по тегам