On my dev box it consistently improves performance when timing the
full testsuite:
before:
user 2m22.509s
sys 0m50.695s
user 2m23.565s
sys 0m49.399s
user 2m23.497s
sys 0m49.675s
after:
user 2m20.261s
sys 0m45.687s
user 2m21.485s
sys 0m46.427s
user 2m20.581s
sys 0m45.367s
Signed-off-by: Yann Dirson <ydirson@altern.org>
def __init__(self, id_hash):
self.__id_hash = id_hash
def __init__(self, id_hash):
self.__id_hash = id_hash
- lines = _output_lines('git-cat-file commit %s' % id_hash)
+ lines = _output_lines(['git-cat-file', 'commit', id_hash])
for i in range(len(lines)):
line = lines[i]
if line == '\n':
for i in range(len(lines)):
line = lines[i]
if line == '\n':
return None
def get_parents(self):
return None
def get_parents(self):
- return _output_lines('git-rev-list --parents --max-count=1 %s'
- % self.__id_hash)[0].split()[1:]
+ return _output_lines(['git-rev-list', '--parents', '--max-count=1',
+ self.__id_hash])[0].split()[1:]
def get_author(self):
return self.__author
def get_author(self):
return self.__author
"""Returns the name of the file pointed to by the HEAD link
"""
return strip_prefix('refs/heads/',
"""Returns the name of the file pointed to by the HEAD link
"""
return strip_prefix('refs/heads/',
- _output_one_line('git-symbolic-ref HEAD'))
+ _output_one_line(['git-symbolic-ref', 'HEAD']))
def set_head_file(ref):
"""Resets HEAD to point to a new ref
def set_head_file(ref):
"""Resets HEAD to point to a new ref
must_switch = True
# write the index to repository
if tree_id == None:
must_switch = True
# write the index to repository
if tree_id == None:
- tree_id = _output_one_line('git-write-tree')
+ tree_id = _output_one_line(['git-write-tree'])
else:
must_switch = False
# the commit
else:
must_switch = False
# the commit
- cmd += 'GIT_AUTHOR_NAME="%s" ' % author_name
+ cmd += ['GIT_AUTHOR_NAME=%s' % author_name]
- cmd += 'GIT_AUTHOR_EMAIL="%s" ' % author_email
+ cmd += ['GIT_AUTHOR_EMAIL=%s' % author_email]
- cmd += 'GIT_AUTHOR_DATE="%s" ' % author_date
+ cmd += ['GIT_AUTHOR_DATE=%s' % author_date]
- cmd += 'GIT_COMMITTER_NAME="%s" ' % committer_name
+ cmd += ['GIT_COMMITTER_NAME=%s' % committer_name]
- cmd += 'GIT_COMMITTER_EMAIL="%s" ' % committer_email
- cmd += 'git-commit-tree %s' % tree_id
+ cmd += ['GIT_COMMITTER_EMAIL=%s' % committer_email]
+ cmd += ['git-commit-tree', tree_id]
# get the parents
for p in parents:
# get the parents
for p in parents:
commit_id = _output_one_line(cmd, message)
if must_switch:
commit_id = _output_one_line(cmd, message)
if must_switch:
the pushing would fall back to the three-way merge.
"""
if check_index:
the pushing would fall back to the three-way merge.
"""
if check_index:
+ index_opt = ['--index']
diff_str = diff(files, rev1, rev2)
if diff_str:
try:
diff_str = diff(files, rev1, rev2)
if diff_str:
try:
- _input_str('git-apply %s' % index_opt, diff_str)
+ _input_str(['git-apply'] + index_opt, diff_str)
except GitException:
return False
except GitException:
return False
# general when pushing or picking patches)
try:
# use _output() to mask the verbose prints of the tool
# general when pushing or picking patches)
try:
# use _output() to mask the verbose prints of the tool
- _output('git-merge-recursive %s -- %s %s' % (base, head1, head2))
+ _output(['git-merge-recursive', base, '--', head1, head2])
except GitException, ex:
err_output = str(ex)
pass
except GitException, ex:
err_output = str(ex)
pass
files = {}
stages_re = re.compile('^([0-7]+) ([0-9a-f]{40}) ([1-3])\t(.*)$', re.S)
files = {}
stages_re = re.compile('^([0-7]+) ([0-9a-f]{40}) ([1-3])\t(.*)$', re.S)
- for line in _output('git-ls-files --unmerged --stage -z').split('\0'):
+ for line in _output(['git-ls-files', '--unmerged', '--stage', '-z']).split('\0'):
- for line in _output_lines('git-diff-tree -r %s %s' % (rev1, rev2)):
+ for line in _output_lines(['git-diff-tree', '-r', rev1, rev2]):
result += '%s %s\n' % tuple(line.rstrip().split(' ',4)[-1].split('\t',1))
return result.rstrip()
result += '%s %s\n' % tuple(line.rstrip().split(' ',4)[-1].split('\t',1))
return result.rstrip()
- for line in _output_lines('git-diff-tree -r %s %s' % (rev1, rev2)):
+ for line in _output_lines(['git-diff-tree', '-r', rev1, rev2]):
result += '%s\n' % line.rstrip().split(' ',4)[-1].split('\t',1)[-1]
return result.rstrip()
result += '%s\n' % line.rstrip().split(' ',4)[-1].split('\t',1)[-1]
return result.rstrip()
- _input_str('git-apply --index', diff)
+ _input_str(['git-apply', '--index'], diff)
except GitException:
if base:
switch(orig_head)
except GitException:
if base:
switch(orig_head)