hgext/mq.py
branchstable
changeset 23412 94092019e839
parent 23346 5ccced6eab0b
child 23442 a5c94ea3b8af
equal deleted inserted replaced
23409:dc4d2cd3aa3e 23412:94092019e839
   111     '# Date ',
   111     '# Date ',
   112     '#      ',
   112     '#      ',
   113     '# Branch ',
   113     '# Branch ',
   114     '# Node ID ',
   114     '# Node ID ',
   115     '# Parent  ', # can occur twice for merges - but that is not relevant for mq
   115     '# Parent  ', # can occur twice for merges - but that is not relevant for mq
   116     '', # all lines after headers 'has' this prefix - simplifies the algorithm
       
   117     ]
   116     ]
   118 
   117 
   119 def inserthgheader(lines, header, value):
   118 def inserthgheader(lines, header, value):
   120     """Assuming lines contains a HG patch header, add a header line with value.
   119     """Assuming lines contains a HG patch header, add a header line with value.
   121     >>> try: inserthgheader([], '# Date ', 'z')
   120     >>> try: inserthgheader([], '# Date ', 'z')
   125     ['# HG changeset patch', '# Date z']
   124     ['# HG changeset patch', '# Date z']
   126     >>> inserthgheader(['# HG changeset patch', ''], '# Date ', 'z')
   125     >>> inserthgheader(['# HG changeset patch', ''], '# Date ', 'z')
   127     ['# HG changeset patch', '# Date z', '']
   126     ['# HG changeset patch', '# Date z', '']
   128     >>> inserthgheader(['# HG changeset patch', '# User y'], '# Date ', 'z')
   127     >>> inserthgheader(['# HG changeset patch', '# User y'], '# Date ', 'z')
   129     ['# HG changeset patch', '# User y', '# Date z']
   128     ['# HG changeset patch', '# User y', '# Date z']
       
   129     >>> inserthgheader(['# HG changeset patch', '# Date x', '# User y'],
       
   130     ...                '# User ', 'z')
       
   131     ['# HG changeset patch', '# Date x', '# User z']
   130     >>> inserthgheader(['# HG changeset patch', '# Date y'], '# Date ', 'z')
   132     >>> inserthgheader(['# HG changeset patch', '# Date y'], '# Date ', 'z')
   131     ['# HG changeset patch', '# Date z']
   133     ['# HG changeset patch', '# Date z']
   132     >>> inserthgheader(['# HG changeset patch', '', '# Date y'], '# Date ', 'z')
   134     >>> inserthgheader(['# HG changeset patch', '', '# Date y'], '# Date ', 'z')
   133     ['# HG changeset patch', '# Date z', '', '# Date y']
   135     ['# HG changeset patch', '# Date z', '', '# Date y']
   134     >>> inserthgheader(['# HG changeset patch', '# Parent  y'], '# Date ', 'z')
   136     >>> inserthgheader(['# HG changeset patch', '# Parent  y'], '# Date ', 'z')
   135     ['# HG changeset patch', '# Date z', '# Parent  y']
   137     ['# HG changeset patch', '# Date z', '# Parent  y']
   136     """
   138     """
   137     start = lines.index('# HG changeset patch') + 1
   139     start = lines.index('# HG changeset patch') + 1
   138     newindex = HGHEADERS.index(header)
   140     newindex = HGHEADERS.index(header)
       
   141     bestpos = len(lines)
   139     for i in range(start, len(lines)):
   142     for i in range(start, len(lines)):
   140         line = lines[i]
   143         line = lines[i]
       
   144         if not line.startswith('# '):
       
   145             bestpos = min(bestpos, i)
       
   146             break
   141         for lineindex, h in enumerate(HGHEADERS):
   147         for lineindex, h in enumerate(HGHEADERS):
   142             if line.startswith(h):
   148             if line.startswith(h):
   143                 if lineindex < newindex:
       
   144                     break # next line
       
   145                 if lineindex == newindex:
   149                 if lineindex == newindex:
   146                     lines[i] = header + value
   150                     lines[i] = header + value
   147                 else:
   151                     return lines
   148                     lines.insert(i, header + value)
   152                 if lineindex > newindex:
   149                 return lines
   153                     bestpos = min(bestpos, i)
   150     lines.append(header + value)
   154                 break # next line
       
   155     lines.insert(bestpos, header + value)
   151     return lines
   156     return lines
   152 
   157 
   153 def insertplainheader(lines, header, value):
   158 def insertplainheader(lines, header, value):
   154     if lines and lines[0] and ':' not in lines[0]:
   159     if lines and lines[0] and ':' not in lines[0]:
   155         lines.insert(0, '')
   160         lines.insert(0, '')