if modified:
filestat.append('M')
if new:
+ filestat.append('A')
filestat.append('N')
if deleted:
filestat.append('D')
else:
print '%s' % fs[1]
-def diff(files = [], rev1 = 'HEAD', rev2 = None, out_fd = sys.stdout):
+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:
- out_fd.write(_output(['git-diff-tree', '-p', rev1, rev2]+files))
+ diff_str = _output(['git-diff-tree', '-p', rev1, rev2] + files)
else:
- out_fd.write(_output(['git-diff-cache', '-p', rev1]+files))
+ diff_str = _output(['git-diff-cache', '-p', rev1] + files)
+
+ if out_fd:
+ out_fd.write(diff_str)
+ else:
+ return diff_str
def diffstat(files = [], rev1 = 'HEAD', rev2 = None):
"""Return the diffstat between rev1 and rev2
# checkout doesn't remove files
for fs in to_delete:
os.remove(fs[1])
+
+def fetch(location, head = None, tag = None):
+ """Fetch changes from the remote repository. At the moment, just
+ use the 'git fetch' scripts
+ """
+ args = [location]
+ if head:
+ args += [head]
+ elif tag:
+ args += ['tag', tag]
+
+ if __run('git fetch', args) != 0:
+ raise GitException, 'Failed "git fetch %s"' % location
+
+ return read_string(os.path.join(base_dir, 'FETCH_HEAD'))