2010-12-20 3 views
1

누군가가 SmushIt, PunyPNG 또는 최적화 스크립트를 사용하여 커밋 전에 이미지를 "웃는"사전 커밋 SVN 후크를 만들려고했는지 궁금했습니다.사전 커밋 SVN 후크 + 이미지 최적화 스크립트

Google에서 보았지만 아무도 시도하지 않은 것 같습니다.

조언이나 의견이 필요합니다.

감사합니다.

답변

1

나는 정확하게 질문에 답하고있는 것은 아니지만 나는 더 나은 길을 안내하려고 노력하고 있음을 인정할 것이다. 시작 - 커밋 또는 사전 커밋 (pre-commit) 훅에서 커밋 내용을 혼동해서는 안됩니다. 게다가 원래의 변경되지 않은 그래픽을 저장소에 저장하고 싶지 않으므로 "smush"작업으로 이미지가 손상되거나 원하는대로 표시되지 않는 경우 원본을 다시 가져 와서 다시 편집 할 수 있습니다.

이제는 그래픽 파일이 커밋되었음을 감지 한 후 커밋 스크립트를 설정 한 다음 이미지가 특정 기준을 충족하지 못하는 경우 "smush"도구를 호출하는 것이 좋습니다 (크기 등). 이미지에 적용된 "smush"가 있으면 저장소로 다시 커밋합니다.

2

사전 커밋 (commit) 후크는 커밋하려고하는 트랜잭션을 수정해서는 안됩니다. svn book에서 : A는 훅 스크립트를 사용하여 트랜잭션을 커밋 수정하지 않는 :

훅 스크립트는 거의 아무것도 할 수 있지만, 훅 스크립트 작성자는 억제를 표시해야합니다 에서 한 차원이있다. 동안은 문제가 발생할 수 있습니다 후크에게 스크립트를 자동으로 수정 이렇게, 가 최선을 다하고되는 파일 위반 존재 오류, 단점, 또는 정책을 사용하는 유혹 될 수 있습니다. Subversion은 클라이언트 측 리포지토리의 특정 비트의 캐시를 유지하고 이러한 방식으로 커밋 커밋을 변경하면 해당 캐시 은 감지 할 수 없게됩니다. 이 불일치는 놀라운 및 예기치 않은 동작으로 이어질 수 있습니다. 트랜잭션을 수정하는 대신 은 사전 커밋 훅에서 트랜잭션의 유효성을 검사하고 커밋을 거부해야합니다 (원하는 요구 사항을 충족하지 못하면). 보너스로, 귀하의 사용자 은 신중한 가치, 준수 지향적 인 작업 습관을 배우게됩니다.

안전한 대체 방법은 단순히 미리 커밋 된 후크에서 이미지를 확인하고 기준이 충족되지 않으면 커밋을 거부하는 것입니다. (당신은 여전히 ​​프로젝트에서 "smash"스크립트를 가질 수 있고 커미터는 이미지와 관련된 각각의 커밋 전에 수동으로 실행해야 함을 기억할 것입니다.)

실제 커밋을 정말로 수정하고 싶다면, 당신은 여전히 ​​클라이언트 측에서 안전하게 할 수 있습니다. 예를 들어, TortoiseSVN은 client-side hook scripts입니다.

관련 문제