self.__id_hash = id_hash
lines = _output_lines('git-cat-file commit %s' % id_hash)
+ self.__parents = []
for i in range(len(lines)):
line = lines[i]
if line == '\n':
if field[0] == 'tree':
self.__tree = field[1]
elif field[0] == 'parent':
- self.__parent = field[1]
+ self.__parents.append(field[1])
if field[0] == 'author':
self.__author = field[1]
- if field[0] == 'comitter':
+ if field[0] == 'committer':
self.__committer = field[1]
self.__log = ''.join(lines[i:])
return self.__tree
def get_parent(self):
- return self.__parent
+ return self.__parents[0]
+
+ def get_parents(self):
+ return self.__parents
def get_author(self):
return self.__author
def get_committer(self):
return self.__committer
+ def get_log(self):
+ return self.__log
+
# dictionary of Commit objects, used to avoid multiple calls to git
__commits = dict()
def diff(files = [], rev1 = 'HEAD', rev2 = None, out_fd = None):
"""Show the diff between rev1 and rev2
"""
- os.system('git-update-cache --refresh > /dev/null')
if rev2:
diff_str = _output(['git-diff-tree', '-p', rev1, rev2] + files)
else:
+ os.system('git-update-cache --refresh > /dev/null')
diff_str = _output(['git-diff-cache', '-p', rev1] + files)
if out_fd:
"""Return the diffstat between rev1 and rev2
"""
- os.system('git-update-cache --refresh > /dev/null')
p=popen2.Popen3('git-apply --stat')
diff(files, rev1, rev2, p.tochild)
p.tochild.close()
def files(rev1, rev2):
"""Return the files modified between rev1 and rev2
"""
- os.system('git-update-cache --refresh > /dev/null')
str = ''
for line in _output_lines('git-diff-tree -r %s %s' % (rev1, rev2)):
return str.rstrip()
+def barefiles(rev1, rev2):
+ """Return the files modified between rev1 and rev2, without status info
+ """
+
+ str = ''
+ for line in _output_lines('git-diff-tree -r %s %s' % (rev1, rev2)):
+ str += '%s\n' % line.rstrip().split(' ',4)[-1].split('\t',1)[-1]
+
+ return str.rstrip()
+
def checkout(files = [], tree_id = None, force = False):
"""Check out the given or all files
"""