summaryrefslogtreecommitdiffstats
path: root/project.py
diff options
context:
space:
mode:
Diffstat (limited to 'project.py')
-rw-r--r--project.py96
1 files changed, 44 insertions, 52 deletions
diff --git a/project.py b/project.py
index a9deda42..86f41f22 100644
--- a/project.py
+++ b/project.py
@@ -849,6 +849,7 @@ class Project(object):
849 cmd, 849 cmd,
850 capture_stdout=True, 850 capture_stdout=True,
851 capture_stderr=True) 851 capture_stderr=True)
852 p.Wait()
852 except GitError as e: 853 except GitError as e:
853 out.nl() 854 out.nl()
854 out.project('project %s/' % self.relpath) 855 out.project('project %s/' % self.relpath)
@@ -856,16 +857,11 @@ class Project(object):
856 out.fail('%s', str(e)) 857 out.fail('%s', str(e))
857 out.nl() 858 out.nl()
858 return False 859 return False
859 has_diff = False 860 if p.stdout:
860 for line in p.process.stdout: 861 out.nl()
861 if not hasattr(line, 'encode'): 862 out.project('project %s/' % self.relpath)
862 line = line.decode() 863 out.nl()
863 if not has_diff: 864 out.write(p.stdout)
864 out.nl()
865 out.project('project %s/' % self.relpath)
866 out.nl()
867 has_diff = True
868 print(line[:-1])
869 return p.Wait() == 0 865 return p.Wait() == 0
870 866
871# Publish / Upload ## 867# Publish / Upload ##
@@ -2861,48 +2857,44 @@ class Project(object):
2861 bare=False, 2857 bare=False,
2862 capture_stdout=True, 2858 capture_stdout=True,
2863 capture_stderr=True) 2859 capture_stderr=True)
2864 try: 2860 p.Wait()
2865 out = p.process.stdout.read() 2861 r = {}
2866 if not hasattr(out, 'encode'): 2862 out = p.stdout
2867 out = out.decode() 2863 if out:
2868 r = {} 2864 out = iter(out[:-1].split('\0'))
2869 if out: 2865 while out:
2870 out = iter(out[:-1].split('\0')) 2866 try:
2871 while out: 2867 info = next(out)
2872 try: 2868 path = next(out)
2873 info = next(out) 2869 except StopIteration:
2874 path = next(out) 2870 break
2875 except StopIteration: 2871
2876 break 2872 class _Info(object):
2877 2873
2878 class _Info(object): 2874 def __init__(self, path, omode, nmode, oid, nid, state):
2879 2875 self.path = path
2880 def __init__(self, path, omode, nmode, oid, nid, state): 2876 self.src_path = None
2881 self.path = path 2877 self.old_mode = omode
2882 self.src_path = None 2878 self.new_mode = nmode
2883 self.old_mode = omode 2879 self.old_id = oid
2884 self.new_mode = nmode 2880 self.new_id = nid
2885 self.old_id = oid 2881
2886 self.new_id = nid 2882 if len(state) == 1:
2887 2883 self.status = state
2888 if len(state) == 1: 2884 self.level = None
2889 self.status = state 2885 else:
2890 self.level = None 2886 self.status = state[:1]
2891 else: 2887 self.level = state[1:]
2892 self.status = state[:1] 2888 while self.level.startswith('0'):
2893 self.level = state[1:] 2889 self.level = self.level[1:]
2894 while self.level.startswith('0'): 2890
2895 self.level = self.level[1:] 2891 info = info[1:].split(' ')
2896 2892 info = _Info(path, *info)
2897 info = info[1:].split(' ') 2893 if info.status in ('R', 'C'):
2898 info = _Info(path, *info) 2894 info.src_path = info.path
2899 if info.status in ('R', 'C'): 2895 info.path = next(out)
2900 info.src_path = info.path 2896 r[info.path] = info
2901 info.path = next(out) 2897 return r
2902 r[info.path] = info
2903 return r
2904 finally:
2905 p.Wait()
2906 2898
2907 def GetDotgitPath(self, subpath=None): 2899 def GetDotgitPath(self, subpath=None):
2908 """Return the full path to the .git dir. 2900 """Return the full path to the .git dir.