Patchwork [1,of,5,RFC] largefiles: make the protocol hack for replacing heads with lheads more precise

login
register
mail settings
Submitter Mads Kiilerich
Date Oct. 10, 2013, 2:35 a.m.
Message ID <0b23c2624ea5134c2b1b.1381372549@mk-desktop>
Download mbox | patch
Permalink /patch/2739/
State Accepted
Commit cff331cbb5ee3d60d7a1d0a23efa942e069c6453
Headers show

Comments

Mads Kiilerich - Oct. 10, 2013, 2:35 a.m.
# HG changeset patch
# User Mads Kiilerich <madski@unity3d.com>
# Date 1381372119 -7200
#      Thu Oct 10 04:28:39 2013 +0200
# Node ID 0b23c2624ea5134c2b1b6586e539bb92210fc484
# Parent  e828975722c8ff632f08cbeb84ec184da2952823
largefiles: make the protocol hack for replacing heads with lheads more precise

Before the hack would replace 'heads' with 'lheads' no matter where it occured
in a batch command string.

Instead we will use a regexp to more carefully only match the 'heads' commands.

Patch

diff --git a/hgext/largefiles/proto.py b/hgext/largefiles/proto.py
--- a/hgext/largefiles/proto.py
+++ b/hgext/largefiles/proto.py
@@ -5,6 +5,7 @@ 
 
 import os
 import urllib2
+import re
 
 from mercurial import error, httppeer, util, wireproto
 from mercurial.wireproto import batchable, future
@@ -166,9 +167,11 @@ 
         args['cmds'] = args['cmds'].replace('heads ', 'lheads ')
     return ssholdcallstream(self, cmd, **args)
 
+headsre = re.compile(r'(^|;)heads\b')
+
 def httprepocallstream(self, cmd, **args):
     if cmd == 'heads' and self.capable('largefiles'):
         cmd = 'lheads'
     if cmd == 'batch' and self.capable('largefiles'):
-        args['cmds'] = args['cmds'].replace('heads ', 'lheads ')
+        args['cmds'] = headsre.sub('lheads', args['cmds'])
     return httpoldcallstream(self, cmd, **args)