diff options
-rw-r--r-- | project.py | 96 |
1 files changed, 44 insertions, 52 deletions
@@ -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. |