Pre-commit SVN Hook + скрипт оптимизации изображения - PullRequest
1 голос
/ 20 декабря 2010

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

Я пытался посмотреть в Google, но никто не выглядиткогда-либо пытался сделать это.

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Хуки Pre-commit не должны изменять транзакцию, которая вот-вот будет зафиксирована.Из svn book :

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

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

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

1 голос
/ 20 декабря 2010

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

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

...