6

I am using TortoiseHg and would like to apply a hook to my repo. My repo's .hg/hgrc file is as follows:

[hooks]
pretxncommit = python:hg_checksize.newbinsize

The thing is that I don't know where TortoiseHg's PYTHONPATH variable is set. How do I change it? Or where do I put my Python file so that it is visible by TortoiseHg's Python interpreter?

I cannot find any mention of hooks in TortoiseHg's documentation or through Google?

StayOnTarget
  • 11,743
  • 10
  • 52
  • 81
hekevintran
  • 22,822
  • 32
  • 111
  • 180

3 Answers3

4

you can put your .py wherever you like and use a full path to it. the syntax is then

[hooks] 
pretxncommit.myhook = python:/path/to/my.py:newbinsize
jk.
  • 13,817
  • 5
  • 37
  • 50
  • I used the following as my value. python:C:\src\hooks\hg_checksize.newbinsize This doesn't work. Is it because Windows paths must be written differently? – hekevintran Mar 20 '10 at 18:44
  • 3
    It's also possible to reference a file within the working copy so hooks can easily be shared among developers: pretxncommit.syntax_check = python:bin\php_syntax_check.py:check If my working copy lives in C:\project\, TortoiseHg will look for C:\project\bin\php_syntax_check.py and execute the specified check function. – JSmitty Mar 21 '13 at 18:51
  • 1
    This is probably a better answer since editing the `\lib\library.zip` is not a very good practice, let alone available to all users. – bambams Sep 01 '15 at 19:00
4

To enable in-process hooks in TortoiseHg you must put your *.py file into C:\Program Files\TortoiseHg\library.zip. TortoiseHg loads Python files from library.zip.

Reinstalling TortoiseHg will probably mean having to repeat this step.

StayOnTarget
  • 11,743
  • 10
  • 52
  • 81
hekevintran
  • 22,822
  • 32
  • 111
  • 180
1

jk's answer is correct, according to hekevintran's comment he has a typo. It should be

pretxncommit.myhook = python:C:\src\hooks\hg_checksize:newbinsize

it should be a colon between python-file and method, not a period (confirmed with hg 1.5.1 on Win7)

anon
  • 31
  • 1