āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐāļ­āļēāļŦāļēāļĢāļāļĢāļąāđˆāļ‡āđ€āļĻāļŠāļŠāđ€āļ›āļ™

āđ„āļ­āļ„āļ­āļ™ Fav āļ‚āļ­āļ‡ OnWorks

irkerhook-git - āļ­āļ­āļ™āđ„āļĨāļ™āđŒāđƒāļ™ Cloud

āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ irkerhook-git āđƒāļ™āļœāļđāđ‰āđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢāđ‚āļŪāļŠāļ•āđŒāļŸāļĢāļĩāļ‚āļ­āļ‡ OnWorks āļœāđˆāļēāļ™ Ubuntu Online, Fedora Online, āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļĨāļ­āļ‡āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļ­āļ‡ Windows āļŦāļĢāļ·āļ­āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļĨāļ­āļ‡āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļ­āļ‡ MAC OS

āļ™āļĩāđˆāļ„āļ·āļ­āļ„āļģāļŠāļąāđˆāļ‡ irkerhook-git āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđƒāļ™āļœāļđāđ‰āđƒāļŦāđ‰āļšāļĢāļīāļāļēāļĢāđ‚āļŪāļŠāļ•āđŒāļŸāļĢāļĩāļ‚āļ­āļ‡ OnWorks āđ‚āļ”āļĒāđƒāļŠāđ‰āļŦāļ™āļķāđˆāļ‡āđƒāļ™āđ€āļ§āļīāļĢāđŒāļāļŠāđ€āļ•āļŠāļąāļ™āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļŸāļĢāļĩāļ‚āļ­āļ‡āđ€āļĢāļē āđ€āļŠāđˆāļ™ Ubuntu Online, Fedora Online, āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļĨāļ­āļ‡āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļ­āļ‡ Windows āļŦāļĢāļ·āļ­āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļģāļĨāļ­āļ‡āļ­āļ­āļ™āđ„āļĨāļ™āđŒāļ‚āļ­āļ‡ MAC OS

āđ‚āļ„āļĢāļ‡āļāļēāļĢ:

āļŠāļ·āđˆāļ­


irkerhook - āļŠāļ„āļĢāļīāļ›āļ•āđŒ hook āļ—āļĩāđˆāđ€āļāđ‡āļšāļ—āļĩāđˆāļ­āļ­āļāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ irker

āđ€āļĢāļ·āđˆāļ­āļ‡āļĒāđˆāļ­


irkerhook.py [-āļ™] [-āļ§āļĩ] [[--āļ•āļąāļ§āđāļ›āļĢ=āļ„āđˆāļē-āļĢāļŦāļąāļŠāļ„āļ­āļĄāļĄāļīāļŠāļŠāļąāļ™-

DESCRIPTION


irkerhook.py āđ€āļ›āđ‡āļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒ Python āļ—āļĩāđˆāļĄāļĩāļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđ€āļžāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļˆāļēāļ hook āļŦāļĨāļąāļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•āļ‚āļ­āļ‡a
āļ—āļĩāđˆāđ€āļāđ‡āļšāļāļēāļĢāļ„āļ§āļšāļ„āļļāļĄāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™ āļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ‚āļ­āļ‡āļĄāļąāļ™āļ„āļ·āļ­āļĢāļ§āļšāļĢāļ§āļĄāļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļāļĢāļ°āļ—āļģāļ—āļĩāđˆāđ„āļĨāđˆāļ­āļ­āļ
āđ€āļšāđ‡āļ” (āđāļĨāļ°āļ­āļēāļˆāļāļģāļŦāļ™āļ”āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ‚āļ”āļĒāđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āļžāļ·āđ‰āļ™āļ—āļĩāđˆāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨ) āđāļĨāļ°āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļąāđ‰āļ™
āđ€āļžāļ·āđˆāļ­āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ irkerd āđ€āļžāļ·āđˆāļ­āļŠāđˆāļ‡āļ•āđˆāļ­āđ„āļ›āļĒāļąāļ‡āļŠāđˆāļ­āļ‡āļ—āļēāļ‡āļ›āļĢāļ°āļāļēāļĻāļ•āđˆāļēāļ‡āđ†

āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđāļĨāļ°āļžāļĪāļ•āļīāļāļĢāļĢāļĄāļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ‚āļ­āļ‡ irkerhook.py āļ™āļąāđ‰āļ™āđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđ„āļ›āļ‚āļķāđ‰āļ™āļ­āļĒāļđāđˆāļāļąāļšVCS
(āļĢāļ°āļšāļšāļ„āļ§āļšāļ„āļļāļĄāļĢāļļāđˆāļ™) āļāļģāļĨāļąāļ‡āđ€āļĢāļĩāļĒāļāļĄāļąāļ™āļ§āđˆāļē āļĄāļĩāļŠāļ–āļēāļ™āļ—āļĩāđˆāļ—āļĩāđˆāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āļŠāļĩāđˆāđāļŦāđˆāļ‡āļ‹āļķāđˆāļ‡āļ­āļēāļˆ
āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ:

1. āđ‚āļ—āļĢāđ„āļ›āļĒāļąāļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ­āļĢāļĢāļ–āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ VCS

2. āđƒāļ™ VCSes āđ€āļŠāđˆāļ™ git āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāļ•āļąāļ§āđāļ›āļĢāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļēāļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ„āļ”āđ‰ āļ•āļąāļ§āđāļ›āļĢ with
āļ„āļģāļ™āļģāļŦāļ™āđ‰āļē "irker".

3. āđƒāļ™ VCS āļ­āļ·āđˆāļ™ āđ„āļŸāļĨāđŒāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē "irker.conf" āļ­āļĒāļđāđˆāđƒāļ™āļ āļēāļĒāđƒāļ™āļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš
āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩ

4. āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļšāļĢāļĢāļ—āļąāļ”āļ„āļģāļŠāļąāđˆāļ‡āļ‚āļ­āļ‡āđāļšāļšāļŸāļ­āļĢāđŒāļĄ --variable=value

āļ•āļąāļ§āđāļ›āļĢāļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ›āļĢāļ—āļąāđˆāļ§āđ„āļ›āļŠāļģāļŦāļĢāļąāļš VCS āļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”:

āđ‚āļ„āļĢāļ‡āļāļēāļĢ
āļŠāļ·āđˆāļ­āđ‚āļ„āļĢāļ‡āļāļēāļĢ. āļ„āļ§āļĢāđ€āļ›āđ‡āļ™āļ•āļąāļ§āļĢāļ°āļšāļļāļ—āļĩāđˆāļ„āđˆāļ­āļ™āļ‚āđ‰āļēāļ‡āļŠāļąāđ‰āļ™ āļĄāļąāļāļˆāļ°āļ›āļĢāļēāļāļāļ‚āļķāđ‰āļ™
āļ—āļĩāđˆāļˆāļļāļ”āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ‚āļ­āļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™

repo
āļŠāļ·āđˆāļ­āļ‚āļ­āļ‡āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļĢāļ°āļ”āļąāļšāļšāļ™āļŠāļļāļ”āļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš āļŦāļēāļāđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļ°āļšāļļāđ„āļ§āđ‰ āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­ a
āļ•āļąāļ§āļžāļīāļĄāļžāđŒāđ€āļĨāđ‡āļāļ‚āļ­āļ‡āļŠāļ·āđˆāļ­āđ‚āļ„āļĢāļ‡āļāļēāļĢ

āļŠāđˆāļ­āļ‡
URL āļŠāđˆāļ­āļ‡ IRC āļŦāļĢāļ·āļ­āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļ„āļąāđˆāļ™āļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡āļŦāļĄāļēāļĒāļˆāļļāļĨāļ āļēāļ„āļ‚āļ­āļ‡āļĢāļēāļĒāļāļēāļĢāđ€āļ”āļĩāļĒāļ§āļāļąāļ™ āļ‹āļķāđˆāļ‡āļĢāļ°āļšāļļāļŠāđˆāļ­āļ‡āļ—āļĩāđˆ
āļˆāļ°āļ•āđ‰āļ­āļ‡āļŠāđˆāļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ āļŦāļēāļāđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļ°āļšāļļāđ„āļ§āđ‰ āļ„āđˆāļēāļ”āļĩāļŸāļ­āļĨāļ•āđŒāļ„āļ·āļ­ freenode #commits
āļŠāđˆāļ­āļ‡

āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
āđ‚āļŪāļŠāļ•āđŒāļ—āļĩāđˆ irker daemon āļŠāđˆāļ‡āļŠāļąāļāļāļēāļ“āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ āļ–āļđāļāļ„āļēāļ”āļŦāļ§āļąāļ‡āđƒāļŦāđ‰āļ­āļĒāļđāđˆ
āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļ›āđ‡āļ™ "localhost"

āļ­āļĩāđ€āļĄāļĨ
āļŦāļēāļāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđ„āļ§āđ‰ āđƒāļŦāđ‰āđƒāļŠāđ‰āļ­āļĩāđ€āļĄāļĨāđ€āļžāļ·āđˆāļ­āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢāđāļ—āļ™ TCP āļŦāļĢāļ·āļ­ UDP āļ„āđˆāļēāļ™āļĩāđ‰āđƒāļŠāđ‰āđ€āļ›āđ‡āļ™āļ„āđˆāļē
āļ—āļĩāđˆāļ­āļĒāļđāđˆāļ­āļĩāđ€āļĄāļĨāđ€āļ›āđ‰āļēāļŦāļĄāļēāļĒ

TCP
āļ–āđ‰āļē "āļˆāļĢāļīāļ‡" āđƒāļŦāđ‰āđƒāļŠāđ‰ TCP āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ āļ–āđ‰āļē "āđ€āļ—āđ‡āļˆ" āđƒāļŦāđ‰āđƒāļŠāđ‰ UDP āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļ›āđ‡āļ™ "āđ€āļ—āđ‡āļˆ"

āļ„āļģāļ™āļģāļŦāļ™āđ‰āļē URL
āļ„āļģāļ™āļģāļŦāļ™āđ‰āļē URL āļŠāļļāļ”āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļŠāļģāļŦāļĢāļąāļš repo āļ‚āļ­āļ‡āļ„āļļāļ“ āđ€āļĄāļ·āđˆāļ­āđƒāļŠāđˆāļĢāļŦāļąāļŠāļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•āļ•āđˆāļ­āļ—āđ‰āļēāļĒāļŠāļīāđˆāļ‡āļ™āļĩāđ‰ āļ„āļ§āļĢ
āļŠāļĩāđ‰āđ„āļ›āļ—āļĩāđˆ CGI āļ—āļĩāđˆāļˆāļ°āđāļŠāļ”āļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•āļœāđˆāļēāļ™ cgit, gitweb āļŦāļĢāļ·āļ­āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļ„āļĨāđ‰āļēāļĒāļāļąāļ™
āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ­āļēāļˆāđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļŦāļēāļāļ„āļļāļ“āļĄāļĩāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē gitweb/cgit āļ—āļąāđˆāļ§āđ„āļ›

āļŦāļēāļāļ„āđˆāļēāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢāļ™āļĩāđ‰āļ„āļ·āļ­ "āđ„āļĄāđˆāļĄāļĩ" āđƒāļŦāđ‰āļŠāļĢāđ‰āļēāļ‡āļŸāļīāļĨāļ”āđŒ URL āđƒāļ™ commit
āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļˆāļ°āļ–āļđāļāļĢāļ°āļ‡āļąāļš āļ„āđˆāļēāđ€āļ§āļ—āļĒāđŒāļĄāļ™āļ•āļĢāđŒāļ­āļ·āđˆāļ™ āđ† āđ„āļ”āđ‰āđāļāđˆ "cgit", "gitweb" āđāļĨāļ°
"viewcvs" āļ‹āļķāđˆāļ‡āļ‚āļĒāļēāļĒāđ€āļ›āđ‡āļ™āđ€āļ—āļĄāđ€āļžāļĨāļ• URL āļ—āļĩāđˆāļĄāļąāļāļˆāļ°āđƒāļŠāđ‰āļ‡āļēāļ™āđ„āļ”āđ‰āļāļąāļšāļĢāļ°āļšāļšāđ€āļŦāļĨāđˆāļēāļ™āļąāđ‰āļ™

āļĄāļēāļĒāļēāļāļĨāļ„āļļāļāļāļĩāđ‰ "%(host)s" āđāļĨāļ° %(repo)s" āļ­āļēāļˆāđ€āļāļīāļ”āļ‚āļķāđ‰āļ™āđƒāļ™ URL āļ™āļĩāđ‰ āļ­āļ”āļĩāļ•āļ„āļ·āļ­
āļ‚āļĒāļēāļĒāđ€āļ›āđ‡āļ™ FQDN āļ‚āļ­āļ‡āđ‚āļŪāļŠāļ•āđŒāļ—āļĩāđˆ irkerhook.py āļ—āļģāļ‡āļēāļ™āļ­āļĒāļđāđˆ āļ­āļĒāđˆāļēāļ‡āļŦāļĨāļąāļ‡āļ„āļ·āļ­
āļ‚āļĒāļēāļĒāđ€āļ›āđ‡āļ™āļ„āđˆāļēāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "repo"

āļ•āļąāļ§āļˆāļīāđ‹āļ§
āđ€āļ—āļĄāđ€āļžāļĨāļ• URL āļ—āļĩāđˆāļŠāļĩāđ‰āđ„āļ›āļ—āļĩāđˆāļšāļĢāļīāļāļēāļĢāļŠāļģāļŦāļĢāļąāļšāļšāļĩāļšāļ­āļąāļ” URL āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āđƒāļŠāđ‰āļžāļ·āđ‰āļ™āļ—āļĩāđˆāļ™āđ‰āļ­āļĒāļĨāļ‡
āļŠāđˆāļ­āļ‡āļ§āđˆāļēāļ‡āđƒāļ™āļšāļĢāļĢāļ—āļąāļ”āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ āļŦāļēāļāļ„āđˆāļēāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢāļ™āļĩāđ‰āļ„āļ·āļ­ "āđ„āļĄāđˆāļĄāļĩ" āđāļŠāļ”āļ‡āļ§āđˆāļēāđ„āļĄāđˆāļĄāļĩ
āļˆāļ°āļžāļĒāļēāļĒāļēāļĄāļšāļĩāļšāļ­āļąāļ”

āļŠāļĩ
āļŦāļēāļāđ€āļ›āđ‡āļ™ "mIRC" āđƒāļŦāđ‰āđ„āļŪāđ„āļĨāļ•āđŒāļŠāđˆāļ­āļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ”āđ‰āļ§āļĒāļĢāļŦāļąāļŠāļŠāļĩ mIRC āļ–āđ‰āļē "ANSI" āđ€āļ™āđ‰āļ™
āļŸāļīāļĨāļ”āđŒāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļ—āļĩāđˆāļĄāļĩāļĨāļģāļ”āļąāļšāļŦāļĨāļĩāļāļ‚āļ­āļ‡āļŠāļĩ ANSI āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđ€āļ›āđ‡āļ™ "āđ„āļĄāđˆāļĄāļĩ" (āđ„āļĄāđˆāļĄāļĩāļŠāļĩ)
āļĢāļ­āļ‡āļĢāļąāļšāļĢāļŦāļąāļŠ ANSI āđƒāļ™ Chatzilla, irssi, ircle āđāļĨāļ° BitchX āļĢāļŦāļąāļŠ mIRC āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™āļ„āļ·āļ­
āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļĒāļ­āļĄāļĢāļąāļšāđƒāļ™ mIRC, XChat, KVirc, Konversation āļŦāļĢāļ·āļ­ weechat

āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ: āļŦāļēāļāļ„āļļāļ“āđ€āļ›āļīāļ”āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ™āļĩāđ‰āđāļĨāļ°āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āļŦāļĒāļļāļ”āļ›āļĢāļēāļāļāļšāļ™āļŠāđˆāļ­āļ‡āļ‚āļ­āļ‡āļ„āļļāļ“ āļ„āļļāļ“āļ•āđ‰āļ­āļ‡
āđ€āļžāļ·āđˆāļ­āļ›āļīāļ”āļŸāļīāļĨāđ€āļ•āļ­āļĢāđŒāļŠāļĩāļ‚āļ­āļ‡ IRC āđƒāļ™āļŠāđˆāļ­āļ‡āļ™āļąāđ‰āļ™ āđƒāļ™āļāļēāļĢāļ—āļģāđ€āļŠāđˆāļ™āļ™āļĩāđ‰āļ„āļļāļ“āļˆāļ°āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰op
āļŠāļīāļ—āļ˜āļīāļžāļīāđ€āļĻāļĐ; āļ­āļ­āļāļ„āļģāļŠāļąāđˆāļ‡ "/mode -c" āļāļąāļš āđāļ—āļ™āļ—āļĩāđˆāļ”āđ‰āļ§āļĒāļ‚āļ­āļ‡āļ„āļļāļ“
āļŠāļ·āđˆāļ­āļŠāđˆāļ­āļ‡. āļ„āļļāļ“āļ­āļēāļˆāļ•āđ‰āļ­āļ‡āļ­āļ­āļāļ„āļģāļŠāļąāđˆāļ‡āļāđˆāļ­āļ™ "/msg chanserv set
MLOCK +nt-slk".

āļŠāđˆāļ­āļ‡āļŠāļđāļ‡āļŠāļļāļ”
āļ•āļĩāļ„āļ§āļēāļĄāļ§āđˆāļēāđ€āļ›āđ‡āļ™āļˆāļģāļ™āļ§āļ™āđ€āļ•āđ‡āļĄ āļ–āđ‰āļēāđ„āļĄāđˆāđ€āļ›āđ‡āļ™āļĻāļđāļ™āļĒāđŒ āļˆāļģāļāļąāļ”āļˆāļģāļ™āļ§āļ™āļŠāđˆāļ­āļ‡āļ—āļĩāđˆāđ€āļšāđ‡āļ”āļˆāļ°
āļ•āļĩāļ„āļ§āļēāļĄāļˆāļēāļāļ•āļąāļ§āđāļ›āļĢ "āļŠāđˆāļ­āļ‡"

āļ•āļąāļ§āđāļ›āļĢāļ™āļĩāđ‰āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļœāđˆāļēāļ™āļ•āļąāļ§āđāļ›āļĢāļ„āļ­āļ™āļŸāļīāļāļđāđ€āļĢāļŠāļąāļ™ VCS āļŦāļĢāļ·āļ­ irker.conf āļĄāļąāļ™āļŠāļēāļĄāļēāļĢāļ–
āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ”āđ‰āļ§āļĒāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļšāļĢāļĢāļ—āļąāļ”āļ„āļģāļŠāļąāđˆāļ‡āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ āļ”āļąāļ‡āļ™āļąāđ‰āļ™āđƒāļ™āđ„āļ‹āļ•āđŒāļ›āļĨāļ­āļĄāļ‹āļķāđˆāļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš
āđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļąāļšāļ­āļ™āļļāļāļēāļ•āđƒāļŦāđ‰āđāļāđ‰āđ„āļ‚āļŠāļ„āļĢāļīāļ›āļ•āđŒāļŦāļĨāļąāļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ• āļœāļđāđ‰āļ”āļđāđāļĨāđ„āļ‹āļ•āđŒāļŠāļēāļĄāļēāļĢāļ–
āļ•āļąāđ‰āļ‡āļ„āđˆāļēāđƒāļŦāđ‰āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ›āļ·āļ™āļĨāļđāļāļ‹āļ­āļ‡āļŠāđˆāļ‡āļŠāđāļ›āļĄāđ‚āļ”āļĒāđ€āļˆāđ‰āļēāļ‚āļ­āļ‡āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļ­āļąāļ™āļ•āļĢāļēāļĒ āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļ„āđˆāļē
āļ™āđ‰āļ­āļĒāļāļ§āđˆāļē 2 āđāļ•āđˆāļ­āļēāļˆāļˆāļ°āđ„āļĄāđˆāļ‰āļĨāļēāļ”

āđ€āļ‹āļĩāļĒāđ„āļĨāļ„āđŒ
āļŦāļēāļāđ„āļĄāđˆāļ§āđˆāļēāļ‡āđ€āļ›āļĨāđˆāļēāđāļĨāļ°āđ„āļĄāđˆāđƒāļŠāđˆ "āđ„āļĄāđˆāļĄāļĩ" (āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™) āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļˆāļ°āđ€āļĨāļĩāļĒāļ™āđāļšāļšāļžāļĪāļ•āļīāļāļĢāļĢāļĄ CIA āđāļšāļšāđ€āļāđˆāļēāļ‚āļ­āļ‡
āļ§āļēāļ‡āļĢāļēāļĒāļāļēāļĢāđ„āļŸāļĨāđŒāđāļšāļšāļĒāļēāļ§āđ€āļžāļ·āđˆāļ­āļŠāļ™āļąāļšāļŠāļ™āļļāļ™āļšāļ—āļŠāļĢāļļāļ›āļ‚āļ­āļ‡āđāļšāļšāļŸāļ­āļĢāđŒāļĄ (āđ„āļŸāļĨāđŒ N āđƒāļ™ M
āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩ) āļ„āđˆāļēāļ•āđ‰āļ­āļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđ€āļĨāļ‚āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āļ„āđˆāļēāļ‚āļĩāļ”āļˆāļģāļāļąāļ”āļŠāļģāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāļĒāļēāļ§āļ‚āļ­āļ‡
āļĢāļēāļĒāļāļēāļĢāđ„āļŸāļĨāđŒāđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļąāļāļĐāļĢ

āļ„āļ­āļĄāđ„āļžāļĨāđŒ
āļ āļēāļĒāđƒāļ•āđ‰ git āļ§āļīāļ˜āļĩāļ›āļāļ•āļīāđƒāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ hook āļ™āļĩāđ‰ (āļˆāļēāļāļ āļēāļĒāđƒāļ™ hook āļāļēāļĢāļ­āļąāļ›āđ€āļ”āļ•) āļˆāļ°āļŠāđˆāļ‡āļœāđˆāļēāļ™ a
refname āļ•āļēāļĄāļ”āđ‰āļ§āļĒāļĢāļēāļĒāļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ• āđ€āļžāļĢāļēāļ° āļ„āļ­āļĄāđ„āļžāļĨāđŒ āļĢāļēāļĒāļāļēāļĢāļĢāļ­āļš āļ›āļāļ•āļīāļĢāļēāļĒāļāļēāļĢāļˆāļēāļāļŠāđˆāļ§āļ™āđƒāļŦāļāđˆ
āļĨāđˆāļēāļŠāļļāļ”āđ„āļ›āđ€āļāđˆāļēāļ—āļĩāđˆāļŠāļļāļ” āļ„āļļāļ“āļˆāļ°āļ•āđ‰āļ­āļ‡āđƒāļŠāđ‰ --reverse āđ€āļžāļ·āđˆāļ­āļĨāļ°āđ€āļ§āđ‰āļ™āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđƒāļ™
āļĨāļģāļ”āļąāļšāđ€āļ§āļĨāļē āđƒāļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒāļ­āļąāļ›āđ€āļ”āļ•āļ›āļāļ•āļī āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ„āļ§āļĢāļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ”āļąāļ‡āļ™āļĩāđ‰

āļŠāļ·āđˆāļ­āļœāļđāđ‰āļ­āđ‰āļēāļ‡āļ­āļīāļ‡ = $1
āđ€āļāđˆāļē=$2
āđƒāļŦāļĄāđˆ=$3
irkerhook.py --refname=${refname} $(git rev-list --reverse ${old}..${āđƒāļŦāļĄāđˆ})

āļĒāļāđ€āļ§āđ‰āļ™āļ§āđˆāļēāļ„āļļāļ“āļˆāļ°āļ•āđ‰āļ­āļ‡āļĄāļĩāđ€āļŠāđ‰āļ™āļ—āļēāļ‡āļ—āļĩāđˆāđāļ™āđˆāļ™āļ­āļ™āļŠāļģāļŦāļĢāļąāļš irkerhook.py

āđ€āļžāļ·āđˆāļ­āļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāđƒāļ™āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāļāļąāļ™āđ„āļ”āđ‰āđāļšāļšāļĒāđ‰āļ­āļ™āļŦāļĨāļąāļ‡ āļŦāļēāļāļ„āļļāļ“āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ irkerhook.py āđ‚āļ”āļĒāđ„āļĄāđˆāļĄāļĩ
āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒ (āđ€āļŠāđˆāļ™āđƒāļ™āļ•āļ°āļ‚āļ­āļŦāļĨāļąāļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•) āļĄāļąāļ™āļˆāļ°āļ—āļģāļ•āļąāļ§āļĢāļēāļ§āļāļąāļšāļ§āđˆāļēāļĄāļąāļ™āļ–āļđāļāđ€āļĢāļĩāļĒāļāļ§āđˆāļēāđ€āļŦāļĄāļ·āļ­āļ™
āļ™āļĩāđ‰:

irkerhook.py --refname=refs/heads/master HEAD

āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄ āļŠāļīāđˆāļ‡āļ™āļĩāđ‰āļˆāļ°āđ„āļĄāđˆāđƒāļŦāđ‰āļœāļĨāļĨāļąāļžāļ˜āđŒāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āđ€āļĄāļ·āđˆāļ­āļ„āļļāļ“āļāļ”āđ„āļ›āļĒāļąāļ‡āļŠāļēāļ‚āļēāļ—āļĩāđˆāđ„āļĄāđˆāđƒāļŠāđˆāļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ‚āļ­āļ‡a
repo āđ€āļ›āļĨāđˆāļē

āļ§āļīāļ˜āļĩāļ—āļąāđˆāļ§āđ„āļ›āđƒāļ™āļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ hook āļ™āļĩāđ‰āļˆāļĢāļīāļ‡ āđ† āđāļĨāđ‰āļ§āđƒāļ™ hook āļŦāļĨāļąāļ‡āļāļēāļĢāļĢāļąāļšāđ€āļžāļĢāļēāļ°āđ„āļ”āđ‰āļĢāļąāļš
āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āđāļĨāļ°āļˆāļ°āđ„āļĄāđˆāļĒāļāđ€āļĨāļīāļāļāļēāļĢāļœāļĨāļąāļāļ”āļąāļ™āļ„āļ§āļēāļĄāļĨāđ‰āļĄāđ€āļŦāļĨāļ§ āđƒāļŠāđ‰āļŠāļīāđˆāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰
āļŠāļ„āļĢāļīāļ›āļ•āđŒ:

#!bin / sh /

echo "āļāļģāļĨāļąāļ‡āļŠāđˆāļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ IRC"
āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļ­āđˆāļēāļ™āļŠāļ·āđˆāļ­āđƒāļŦāļĄāđˆ refname āđ€āļāđˆāļē; āļ—āļģ
irkerhook --refname=${refname} $(git rev-list --reverse ${old}..${āđƒāļŦāļĄāđˆ})
āļ—āļģ

āđ€āļžāļ·āđˆāļ­āļ„āļ§āļēāļĄāļŠāļ°āļ”āļ§āļ āļŠāļ„āļĢāļīāļ›āļ•āđŒāļ•āļąāļ§āļŠāđˆāļ§āļĒ irkerhook-git āļ”āļģāđ€āļ™āļīāļ™āļāļēāļĢāļ™āļĩāđ‰

āļ„āđˆāļēāļāļģāļŦāļ™āļ”āļ­āļēāļˆāļ–āļđāļāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđƒāļ™āđ„āļŸāļĨāđŒāļāļģāļŦāļ™āļ”āļ„āđˆāļē repo āđƒāļ™āļŠāđˆāļ§āļ™ [irker] āļ™āļĩāđˆāļ„āļ·āļ­āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡
āļ‚āļ­āļ‡āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ”āļąāļ‡āļ™āļĩāđ‰:

[āđ€āļ­āļīāļĢāđŒāļāđ€āļāļ­āļĢāđŒ]
āđ‚āļ„āļĢāļ‡āļāļēāļĢ = gpsd
āļŠāļĩ = ANSI
āļŠāđˆāļ­āļ‡ = irc://chat.freenode.net/gpsd,irc://chat.freenode.net/commits

āļ„āļļāļ“āđ„āļĄāđˆāļ„āļ§āļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ "repository" (āļˆāļ°āļ„āļģāļ™āļ§āļ“āđ€āļ—āļĩāļĒāļšāđ€āļ—āđˆāļē) āđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāļžāļĒāļēāļĒāļēāļĄ
āļ—āļģāļ‚āļķāđ‰āļ™āđ€āļžāļ·āđˆāļ­āđāļ›āļĨāđ„āļŸāļĨāđŒ irker.conf

āļ„āđˆāļēāļ”āļĩāļŸāļ­āļĨāļ•āđŒāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "project" āļ„āļ·āļ­āļŠāļ·āđˆāļ­āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļ—āļĩāđˆāđ€āļāđ‡āļš
āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "urlprefix" āļ„āļ·āļ­ "cgit"

āļĄāļĩāļ•āļąāļ§āđāļ›āļĢāđ€āļ‰āļžāļēāļ° git āļŦāļ™āļķāđˆāļ‡āļ•āļąāļ§āļ„āļ·āļ­ "revformat" āļ—āļĩāđˆāļ„āļ§āļšāļ„āļļāļĄāļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ commit
āļ•āļąāļ§āļĢāļ°āļšāļļāđƒāļ™āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™ āļ­āļēāļˆāļĄāļĩāļ„āđˆāļēāļ”āļąāļ‡āļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰:

āļ”āļīāļš
āļĢāļŦāļąāļŠāļāļēāļ™āļŠāļīāļšāļŦāļāđ€āļ•āđ‡āļĄāļ‚āļ­āļ‡āļāļēāļĢāļāļĢāļ°āļ—āļģ

Short
āļĢāļŦāļąāļŠāđ€āļĨāļ‚āļāļēāļ™āļŠāļīāļšāļŦāļ 12 āļ•āļąāļ§āđāļĢāļ

āļšāļĢāļĢāļĒāļēāļĒ
āļ­āļ˜āļīāļšāļēāļĒāļŠāļąāļĄāļžāļąāļ™āļ˜āđŒāļāļąāļšāđāļ—āđ‡āļāļŠāļļāļ”āļ—āđ‰āļēāļĒ āļ–āļ­āļĒāļāļĨāļąāļšāđ„āļ›āļŠāļąāđ‰āļ™

āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­ 'āļ­āļ˜āļīāļšāļēāļĒ'

āļāļēāļĢāđ‚āļ„āđˆāļ™āļĨāđ‰āļĄ
āļ āļēāļĒāđƒāļ•āđ‰āļāļēāļĢāđ‚āļ„āđˆāļ™āļĨāđ‰āļĄ irkerhook.py āļĒāļ­āļĄāļĢāļąāļš --repository āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļ—āļĩāđˆāļĄāļĩāļ„āđˆāļē (āļ„āđˆāļēāļŠāļąāļĄāļšāļđāļĢāļ“āđŒ
āļŠāļ·āđˆāļ­āļžāļēāļ˜āļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš Subversion) āđāļĨāļ°āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ„āļ­āļĄāļĄāļīāļ• (āļĢāļ°āļ”āļąāļšāļāļēāļĢāđāļāđ‰āđ„āļ‚āļ•āļąāļ§āđ€āļĨāļ‚
āļ‚āļ­āļ‡āļ āļēāļĢāļ°āļœāļđāļāļžāļąāļ™) āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđāļĨāļ° HEAD āļ•āļēāļĄāļĨāļģāļ”āļąāļš

āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļāđ‡āļ•āļēāļĄ āđ‚āļ›āļĢāļ”āļ—āļĢāļēāļšāļ§āđˆāļēāļ„āļļāļ“ āđ„āļĄāđˆāđ„āļ”āđ‰ āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ—āļĩāđˆāđ€āļāđ‡āļšāļ āļēāļĒāđƒāļ™ Subversion
āļ•āļ°āļ‚āļ­āļŦāļĨāļąāļ‡āļāļĢāļ°āļ—āļģ; āļ™āļĩāđˆāđ€āļ›āđ‡āļ™āđ€āļžāļĢāļēāļ°āļ‚āđ‰āļ­āļˆāļģāļāļąāļ”āļ‚āļ­āļ‡āļāļēāļĢāđ‚āļ„āđˆāļ™āļĨāđ‰āļĄ āļ‹āļķāđˆāļ‡āļāđ‡āļ„āļ·āļ­āļāļēāļĢāđ„āļ”āđ‰āļĢāļąāļš
āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩāļ›āļąāļˆāļˆāļļāļšāļąāļ™āđ„āļĄāđˆāļ™āđˆāļēāđ€āļŠāļ·āđˆāļ­āļ–āļ·āļ­āļ āļēāļĒāđƒāļ™ hooks āđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰ āđāļ—āļ™ āļ„āđˆāļēāļ•āđ‰āļ­āļ‡āđ€āļ›āđ‡āļ™ two
āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ—āļĩāđˆāļāļēāļĢāđ‚āļ„āđˆāļ™āļĨāđ‰āļĄāļŠāđˆāļ‡āļœāđˆāļēāļ™āđ„āļ›āļĒāļąāļ‡āđ€āļšāđ‡āļ”āļ™āļąāđ‰āļ™āđ€āļ›āđ‡āļ™āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒ āļ”āļąāļ‡āļ™āļąāđ‰āļ™ āļāļēāļĢāđ€āļĢāļĩāļĒāļāđ‚āļ”āļĒāļ—āļąāđˆāļ§āđ„āļ›āđƒāļ™
āļŠāļ„āļĢāļīāļ›āļ•āđŒāļŦāļĨāļąāļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•āļˆāļ°āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āļ”āļąāļ‡āļ™āļĩāđ‰:

REPO = 1 āļ”āļ­āļĨāļĨāļēāļĢāđŒ
REV=$2
irkerhook.py --repository=$REPO $REV

āļ­āļ·āđˆāļ™ āđ† --variable=value āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ­āļēāļˆāđ„āļ”āđ‰āļĢāļąāļšāđƒāļ™āļšāļĢāļĢāļ—āļąāļ”āļ„āļģāļŠāļąāđˆāļ‡āđāļĨāļ°āļˆāļ°āđāļ—āļ™āļ—āļĩāđˆ
āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđƒāļ” āđ† āđƒāļ™āđ„āļŸāļĨāđŒ irker.conf

āļ„āđˆāļēāļ”āļĩāļŸāļ­āļĨāļ•āđŒāļŠāļģāļŦāļĢāļąāļšāļ•āļąāļ§āđāļ›āļĢāđ‚āļ›āļĢāđ€āļˆāđ‡āļāļ•āđŒāļ„āļ·āļ­āļŠāļ·āđˆāļ­āļāļēāļ™āļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™
āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "urlprefix" āļ„āļ·āļ­ "viewcvs"

āļŦāļēāļāļĄāļĩāđ„āļŸāļĨāđŒ irker.conf āđƒāļ™āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļĢāļēāļāļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš (āđ„āļĄāđˆāđƒāļŠāđˆāđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļāļēāļĢāđ€āļŠāđ‡āļ„āđ€āļ­āļēāļ—āđŒ
āđāļ•āđˆāļ—āļĩāđˆ internals āđ€āļŠāđˆāļ™āđ„āļŸāļĨāđŒ "āļĢāļđāļ›āđāļšāļš" āļĄāļĩāļŠāļĩāļ§āļīāļ•āļ­āļĒāļđāđˆ) āđ€āļšāđ‡āļ”āļˆāļ°āļ•āļĩāļ„āļ§āļēāļĄāļ•āļąāļ§āđāļ›āļĢ
āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļˆāļēāļāļĄāļąāļ™ āļ™āļĩāđˆāļ„āļ·āļ­āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļĨāļąāļāļĐāļ“āļ°āļ‚āļ­āļ‡āđ„āļŸāļĨāđŒāļ”āļąāļ‡āļāļĨāđˆāļēāļ§:

# āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ irkerhook āļŠāļģāļŦāļĢāļąāļšāđ‚āļ„āļĢāļ‡āļāļēāļĢ irker
āđ‚āļ„āļĢāļ‡āļāļēāļĢ = irker
āļŠāđˆāļ­āļ‡ = irc://chat.freenode/irker,irc://chat.freenode/commits
tcp = āđ€āļ—āđ‡āļˆ

āļ­āļĒāđˆāļēāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ•āļąāļ§āđāļ›āļĢ "repository" āļŦāļĢāļ·āļ­ "commit" āđƒāļ™āđ„āļŸāļĨāđŒāļ™āļĩāđ‰ āļ—āļĩāđˆāļˆāļ°āđ„āļĄāđˆāļĄāļĩāļ„āļ§āļēāļĄāļŠāļļāļ‚
āļœāļĨ.

āđ„āļĄāđˆāļĄāļĩāļ•āļąāļ§āđāļ›āļĢāđ€āļ‰āļžāļēāļ°āļāļēāļĢāđ‚āļ„āđˆāļ™āļĨāđ‰āļĄ

āļŦāļĨāļēāļĒāđƒāļˆ
āļ āļēāļĒāđƒāļ•āđ‰ Mercurial irkerhook.py āļŠāļēāļĄāļēāļĢāļ–āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āđ„āļ”āđ‰āļŠāļ­āļ‡āļ§āļīāļ˜āļĩ: āđ„āļĄāđˆāļ§āđˆāļēāļˆāļ°āđ€āļ›āđ‡āļ™ Python hook
(āļˆāļ°āļžāļīāļˆāļēāļĢāļ“āļēāđ€āļ›āđ‡āļ™āļžāļīāđ€āļĻāļĐ) āļŦāļĢāļ·āļ­āđ€āļ›āđ‡āļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒ

āļŦāļēāļāļ•āđ‰āļ­āļ‡āļāļēāļĢāđ€āļĢāļĩāļĒāļāļĄāļąāļ™āļ§āđˆāļē Python hook āđƒāļŦāđ‰āđ€āļžāļīāđˆāļĄ collowing āđ„āļ›āļ—āļĩāđˆ "commit" āļŦāļĢāļ·āļ­ "incoming" hook
āļ›āļĢāļ°āļāļēāļĻāđƒāļ™āļ—āļĩāđˆāđ€āļāđ‡āļš Mercurial āļ‚āļ­āļ‡āļ„āļļāļ“:

[āļ•āļ°āļ‚āļ­]
incoming.irker = āļŦāļĨāļēāļĄ:/path/to/irkerhook.py:hg_hook

āđ€āļĄāļ·āđˆāļ­āđ€āļĢāļĩāļĒāļāđ€āļ›āđ‡āļ™āļŠāļ„āļĢāļīāļ›āļ•āđŒ hook āļĒāļ­āļĄāļĢāļąāļšāļ•āļąāļ§āđ€āļĨāļ·āļ­āļ --repository āļ—āļĩāđˆāļĄāļĩāļ„āđˆāļē (āļ„āđˆāļēāļŠāļąāļĄāļšāļđāļĢāļ“āđŒ
āļŠāļ·āđˆāļ­āļžāļēāļ˜āļ‚āļ­āļ‡āļ—āļĩāđˆāđ€āļāđ‡āļš Mercurial) āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļšāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ—āļĩāđˆāļ„āļ­āļĄāļĄāļīāļ•āđ„āļ”āđ‰ (the Mercurial hash
ID āļ‚āļ­āļ‡āļāļēāļĢāļāļĢāļ°āļ—āļģāļŦāļĢāļ·āļ­āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡) āļ„āđˆāļēāļ”āļĩāļŸāļ­āļĨāļ•āđŒāļŠāļģāļŦāļĢāļąāļšāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļ—āļĩāđˆāđ€āļāđ‡āļšāļ„āļ·āļ­
āđ„āļ”āđ€āļĢāļāļ—āļ­āļĢāļĩāļ›āļąāļˆāļˆāļļāļšāļąāļ™ āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ„āļ·āļ­ '-1' āļ‹āļķāđˆāļ‡āļāļģāļŦāļ™āļ”āļ—āļīāļ›āļ›āļąāļˆāļˆāļļāļšāļąāļ™
āļāļĢāļ°āļ—āļģ

āļŠāļģāļŦāļĢāļąāļš git āđƒāļ™āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡āļāļĢāļ“āļĩ āļ•āļąāļ§āđāļ›āļĢāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ­āļēāļˆāļ–āļđāļāļ•āļąāđ‰āļ‡āļ„āđˆāļēāđƒāļ™āđ„āļŸāļĨāđŒ repo hgrc āđƒāļ™ [irker]
āļŠāđˆāļ§āļ™. āļĒāļ­āļĄāļĢāļąāļšāļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒāļšāļĢāļĢāļ—āļąāļ”āļ„āļģāļŠāļąāđˆāļ‡āļ•āļąāļ§āđāļ›āļĢ=āļ„āđˆāļē āđāļ•āđˆāđ„āļĄāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļŠāļ„āļĢāļīāļ›āļ•āđŒ
āļ§āļīāļ‡āļ§āļ­āļ™ āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļžāļĒāļēāļĒāļēāļĄāļ•āļĩāļ„āļ§āļēāļĄāđ„āļŸāļĨāđŒ irker.conf

āļ„āđˆāļēāļ”āļĩāļŸāļ­āļĨāļ•āđŒāļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "project" āļ„āļ·āļ­āļŠāļ·āđˆāļ­āļžāļ·āđ‰āļ™āļāļēāļ™āļ‚āļ­āļ‡āđ„āļ”āđ€āļĢāđ‡āļāļ—āļ­āļĢāļĩāļ—āļĩāđˆāđ€āļāđ‡āļš
āļ„āđˆāļēāđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ‚āļ­āļ‡āļ•āļąāļ§āđāļ›āļĢ "urlprefix" āļ„āļ·āļ­āļ„āđˆāļēāļ‚āļ­āļ‡ "web.baseurl" config
āļ„āđˆāļē āļ–āđ‰āļēāļĄāļĩ

āļāļĢāļ­āļ‡
āđ€āļ›āđ‡āļ™āđ„āļ›āđ„āļ”āđ‰āļ—āļĩāđˆāļˆāļ°āļāļĢāļ­āļ‡āļāļēāļĢāļāļĢāļ°āļ—āļģāļāđˆāļ­āļ™āļ—āļĩāđˆāļˆāļ°āļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡ irkerd

āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļĢāļ°āļšāļļ cmd āļ•āļąāļ§āļāļĢāļ­āļ‡ āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļ‹āļķāđˆāļ‡āļˆāļ°āđ€āļ›āđ‡āļ™āļ„āļģāļŠāļąāđˆāļ‡ irkerhook.py āļˆāļ°āļ—āļģāļ‡āļēāļ™
āļ„āļģāļŠāļąāđˆāļ‡āļ™āļĩāđ‰āļ„āļ§āļĢāļĒāļ­āļĄāļĢāļąāļšāļŦāļ™āļķāđˆāļ‡āļ­āļēāļĢāđŒāļāļīāļ§āđ€āļĄāļ™āļ•āđŒ āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ•āļąāļ§āđāļ—āļ™āļ‚āļ­āļ‡ JSON āļ‚āļ­āļ‡āļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ—āđāļĨāļ°
āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļēāļ‚āļ­āļ‡āļ•āļąāļ§āđāļĒāļ (āļĢāļ§āļĄāļ–āļķāļ‡āļ•āļąāļ§āđāļ›āļĢāļŠāđˆāļ­āļ‡) āļ„āļģāļŠāļąāđˆāļ‡āļ„āļ§āļĢāļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡āļĄāļēāļ•āļĢāļāļēāļ™
āđāļŠāļ”āļ‡āļœāļĨāļāļēāļĢāđāļ—āļ™āļ„āđˆāļē JSON āļ‚āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļē (āļ­āļēāļˆāļĄāļĩāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡)

āļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ™āļĩāđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ•āļąāļ§āļāļĢāļ­āļ‡:

#!/usr/bin/env āļŦāļĨāļēāļĄ
# āļ™āļĩāđˆāđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļĨāđ‡āļāļ™āđ‰āļ­āļĒāļ‚āļ­āļ‡āļ•āļąāļ§āļāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļē
# āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ—āļĩāđˆāļ—āļģāļ„āļ·āļ­āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļŠāļ·āđˆāļ­āļ‚āļ­āļ‡āļœāļđāđ‰āļāļĢāļ°āļ—āļģāļāļēāļĢāļ„āļ­āļĄāļĄāļīāļ•
#
āļ™āļģāđ€āļ‚āđ‰āļēāļĢāļ°āļšāļš json
āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļē = json.loads(sys.argv[1])

āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļē['āļœāļđāđ‰āđ€āļ‚āļĩāļĒāļ™'] = "āļ­āļ­āļ‹āļœāļđāđ‰āļĒāļīāđˆāļ‡āđƒāļŦāļāđˆāđāļĨāļ°āļ—āļĢāļ‡āļžāļĨāļąāļ‡"

āļžāļīāļĄāļžāđŒ json.dumps(āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļĄāļ•āļē)
# āļˆāļš

āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļĄāļēāļ•āļĢāļāļēāļ™āļĄāļĩāļ­āļĒāļđāđˆāđƒāļ™āđ€āļšāđ‡āļ”āļŠāļģāļŦāļĢāļąāļšāļ„āļ§āļēāļĄāļ„āļ·āļšāļŦāļ™āđ‰āļēāđāļĨāļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

OPTIONS


irkerhook.py āđƒāļŠāđ‰āļ•āļąāļ§āđ€āļĨāļ·āļ­āļāļ•āđˆāļ­āđ„āļ›āļ™āļĩāđ‰:

-n
āļĢāļ°āļ‡āļąāļšāļāļēāļĢāļŠāđˆāļ‡āđ„āļ›āļĒāļąāļ‡ daemon āđƒāļŦāđ‰āļ”āļąāļĄāļžāđŒāļ„āļģāļ‚āļ­ JSON āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™āđ„āļ›āļ—āļĩāđˆ
āđ€āļ­āļēāļ•āđŒāļžāļļāļ•āļĄāļēāļ•āļĢāļāļēāļ™ āļĄāļĩāļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ”āļĩāļšāļąāļ

-V
āđ€āļ‚āļĩāļĒāļ™āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđ„āļ›āļ—āļĩāđˆ stdout āđāļĨāļ°āļĒāļļāļ•āļī

āđƒāļŠāđ‰ irkerhook-git āļ­āļ­āļ™āđ„āļĨāļ™āđŒāđ‚āļ”āļĒāđƒāļŠāđ‰āļšāļĢāļīāļāļēāļĢ onworks.net


āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāđāļĨāļ°āđ€āļ§āļīāļĢāđŒāļāļŠāđ€āļ•āļŠāļąāļ™āļŸāļĢāļĩ

āļ”āļēāļ§āļ™āđŒāđ‚āļŦāļĨāļ”āđāļ­āļž Windows & Linux

āļ„āļģāļŠāļąāđˆāļ‡ Linux

Ad