Switch to side-by-side view

--- a/ForgeHg/forgehg/model/hg.py
+++ b/ForgeHg/forgehg/model/hg.py
@@ -7,6 +7,7 @@
 from hashlib import sha1
 from datetime import datetime
 from cStringIO import StringIO
+from ConfigParser import ConfigParser
 
 import tg
 from pylons import c
@@ -55,9 +56,6 @@
         return super(Repository, self).log(branch, offset, limit)
 
 class HgImplementation(M.RepositoryImplementation):
-    post_receive_template = string.Template(
-        '\n[hooks]\n'
-        'changegroup = curl -s $url\n')
     re_hg_user = re.compile('(.*) <(.*)>')
 
     def __init__(self, repo):
@@ -205,12 +203,16 @@
 
     def _setup_receive_hook(self):
         'Set up the hg changegroup hook'
-        text = self.post_receive_template.substitute(
-            url=tg.config.get('base_url', 'localhost:8080')
-            + '/auth/refresh_repo' + self._repo.url())
+        cp = ConfigParser()
         fn = os.path.join(self._repo.fs_path, self._repo.name, '.hg', 'hgrc')
-        with open(fn, 'ab') as fp:
-            fp.write(text)
+        cp.read(fn)
+        if not cp.has_section('hooks'):
+            cp.add_section('hooks')
+        url = (tg.config.get('base_url', 'http://localhost:8080')
+               + '/auth/refresh_repo' + self._repo.url())
+        cp.set('hooks','changegroup','curl -s %s' % url)
+        with open(fn, 'w') as fp:
+            cp.write(fp)
         os.chmod(fn, 0755)
 
     def _tree_from_changectx(self, changectx):