gclient: make git path more verbose

Review URL: http://codereview.chromium.org/353001

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@30752 0039d316-1c4b-4281-b951-d872f2087c98
experimental/szager/collated-output
msb@chromium.org 16 years ago
parent e72bb63e3e
commit e8e60e5810

@ -96,21 +96,22 @@ class GitWrapper(SCMWrapper):
def cleanup(self, options, args, file_list):
"""Cleanup working copy."""
self._RunGit(['prune'])
self._RunGit(['fsck'])
self._RunGit(['gc'])
self._RunGit(['prune'], redirect_stdout=False)
self._RunGit(['fsck'], redirect_stdout=False)
self._RunGit(['gc'], redirect_stdout=False)
def diff(self, options, args, file_list):
# NOTE: This function does not currently modify file_list.
merge_base = self._RunGit(['merge-base', 'HEAD', 'origin'])
print self._RunGit(['diff', merge_base])
self._RunGit(['diff', merge_base], redirect_stdout=False)
def export(self, options, args, file_list):
assert len(args) == 1
export_path = os.path.abspath(os.path.join(args[0], self.relpath))
if not os.path.exists(export_path):
os.makedirs(export_path)
self._RunGit(['checkout-index', '-a', '--prefix=%s/' % export_path])
self._RunGit(['checkout-index', '-a', '--prefix=%s/' % export_path],
redirect_stdout=False)
def update(self, options, args, file_list):
"""Runs git to update or transparently checkout the working copy.
@ -133,20 +134,21 @@ class GitWrapper(SCMWrapper):
revision = components[1]
if not os.path.exists(self.checkout_path):
self._RunGit(['clone', '-q', url, self.checkout_path], cwd=self._root_dir)
self._RunGit(['clone', url, self.checkout_path],
cwd=self._root_dir, redirect_stdout=False)
if revision:
self._RunGit(['reset', '--hard', revision])
self._RunGit(['reset', '--hard', revision], redirect_stdout=False)
files = self._RunGit(['ls-files']).split()
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
return
self._RunGit(['remote', 'update'])
self._RunGit(['remote', 'update'], redirect_stdout=False)
new_base = 'origin'
if revision:
new_base = revision
files = self._RunGit(['diff', new_base, '--name-only']).split()
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
self._RunGit(['rebase', new_base])
self._RunGit(['rebase', new_base], redirect_stdout=False)
def revert(self, options, args, file_list):
"""Reverts local modifications.
@ -162,7 +164,7 @@ class GitWrapper(SCMWrapper):
return self.update(options, [], file_list)
merge_base = self._RunGit(['merge-base', 'HEAD', 'origin'])
files = self._RunGit(['diff', merge_base, '--name-only']).split()
print self._RunGit(['reset', '--hard', merge_base])
self._RunGit(['reset', '--hard', merge_base], redirect_stdout=False)
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
def runhooks(self, options, args, file_list):
@ -175,20 +177,25 @@ class GitWrapper(SCMWrapper):
'does not exist.' % checkout_path)
else:
merge_base = self._RunGit(['merge-base', 'HEAD', 'origin'])
print self._RunGit(['diff', '--name-status', merge_base])
self._RunGit(['diff', '--name-status', merge_base], redirect_stdout=False)
files = self._RunGit(['diff', '--name-only', merge_base]).split()
file_list.extend([os.path.join(self.checkout_path, f) for f in files])
def _RunGit(self, args, cwd=None, checkrc=True):
def _RunGit(self, args, cwd=None, checkrc=True, redirect_stdout=True):
stdout=None
if redirect_stdout:
stdout=subprocess.PIPE
if cwd == None:
cwd = self.checkout_path
cmd = ['git']
cmd.extend(args)
sp = subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE)
sp = subprocess.Popen(cmd, cwd=cwd, stdout=stdout)
if checkrc and sp.returncode:
raise gclient_utils.Error('git command %s returned %d' %
(args[0], sp.returncode))
return sp.communicate()[0].strip()
output = sp.communicate()[0]
if output != None:
return output.strip()
class SVNWrapper(SCMWrapper):

Loading…
Cancel
Save