서브버전 커밋 알림

사실 지난 에서 중요한 내용은 커밋 알림이 아니었기 때문에 간단히 다루고 넘어갔는데요, 여러(두) 분이 많은 관심을 보여주셔서 이렇게 소개하는 자리를 따로 마련해 보렵니다. 사실 구현은 간단합니다. 하지만 그 간단한 걸 만들지 않는 이유도 이해합니다. 저도 그랬거든요.

서브버전CVS처럼 몇 가지 후킹 포인트를 제공합니다. 기본적인 기능을 제공하지 않음으로써 후킹을 적극적으로 사용하도록 권장하기도 하지요(^^). 예를 들면 로그 수정같은 기능 말입니다. 후킹이 뭔지에 대해서 설명하고 싶은데, 제 글을 읽는 분 중 저보다 모르는 분은 아마 없으리라 생각해서 관두렵니다. 부끄러워서요.

아무튼 제가 커밋 알림 봇을 만들기 전에 쓰던 후킹 스크립트는 두 개였습니다. 로그 수정을 허용하는 것과 로그 없는 커밋을 거절하도록 하는 스크립트인데, 각각 '리비전 설정 변경 직전'과 '커밋 직전'에 이루어지는 작업입니다. CVS를 사용하던 시절에도 비슷한 스크립트를 넣어 놓곤 했었죠.

아주 예전에 언젠가, msn 봇을 만들려고 파이썬으로 만들어진 라이브러리를 들여다 본 적이 있습니다. 꽤 잘 만들어진 콘솔 메신저를 제공하고 있어서 몇 번 뚝딱거려보고는 말았습니다만은. 그러니까, 저는 그걸 어떻게 만들어야 하는지 이미 알고 있었다는 거지요.

왜 그럴까요? 왜 그걸 안 만들었을까요? 이럴 때 쉽게 할 수 있는 변명은, 바쁘다는 겁니다. 저는 정말 바빴어요. 그리고 또 다른 변명은, 그게 좋은 건 알겠지만, 얼마나 좋은지 몰랐다는 겁니다. 이것도 흔한 변명이죠. 개발 일이 본격화 하고 나면 컨텐츠와 상관없는 것(눈에 보이지 않는 것)에는 손을 대기가 쉽지 않아집니다. 새로운 일을 하는 건 언제나 즐겁지만, 또 언제나 두렵습니다. 우리에게는 관성이라는 게 있기 때문입니다. 하지만 이것 하나는 확실합니다. 곱하기는 언제나 더하기 보다 더 낫다는 거요. 김창준님식으로 하면 복리적인 행동이라고 할 수 있겠죠.

개발 환경에 투자하는 것은 언제나 안 하는 것보다 낫습니다! 하지만, 같은 일을 하더라도 최소한의 노력으로 하는 게 더 이익인 셈이죠. 다른 사람의 동작하는 작업물을 바탕으로 하면 관성과 두려움을 이기기에 더 도움이 되리라 생각합니다. (정신 차려 보면 전혀 다른 코드가 되어 있을지라도요.)

이 소스는 msnlib을 필요로 합니다. 소스를 옮겨 넣으시고, hooks 디렉토리에 들어 있는 'post-commit'을 수정하셔야 합니다.

  1. REPOS="$1"
  2. REV="$2"
  3. /home/svn/project/hooks/commit-notifier.py "$REPOS" "$REV" >> /home/svn/project/hooks/msn.log 2>&1 &

어제도 적었지만 몇 가지 문제는 있습니다. 아마 이 문제를 해결하려면 전혀 다른 방식으로 해야 할거예요. 완성하시면 다시 공개해주실 것을 기대합니다. :]

  • 아직 원인은 찾지 못했는데, 봇이 로그인만 하고 로그를 보내주지 않는 경우가 드물게 있습니다.
  • 봇이 이미 로그인 한 상태에서 소스가 새로 커밋되면 기대하는 동작을 못할 겁니다.

이 글은 스프링노트에서 작성되었습니다.

신고
Trackback 0 Comment 12

prev 1 ··· 7 8 9 10 11 12 13 14 15 ··· 28 next


티스토리 툴바