Merge "upload: report names of uncommitted files"
diff --git a/project.py b/project.py
index 95403cc..316ce7b 100644
--- a/project.py
+++ b/project.py
@@ -736,27 +736,49 @@
return matched
## Status Display ##
+ def UncommitedFiles(self, get_all=True):
+ """Returns a list of strings, uncommitted files in the git tree.
- def HasChanges(self):
- """Returns true if there are uncommitted changes.
+ Args:
+ get_all: a boolean, if True - get information about all different
+ uncommitted files. If False - return as soon as any kind of
+ uncommitted files is detected.
"""
+ details = []
self.work_git.update_index('-q',
'--unmerged',
'--ignore-missing',
'--refresh')
if self.IsRebaseInProgress():
- return True
+ details.append("rebase in progress")
+ if not get_all:
+ return details
- if self.work_git.DiffZ('diff-index', '--cached', HEAD):
- return True
+ changes = self.work_git.DiffZ('diff-index', '--cached', HEAD).keys()
+ if changes:
+ details.extend(changes)
+ if not get_all:
+ return details
- if self.work_git.DiffZ('diff-files'):
- return True
+ changes = self.work_git.DiffZ('diff-files').keys()
+ if changes:
+ details.extend(changes)
+ if not get_all:
+ return details
- if self.work_git.LsOthers():
- return True
+ changes = self.work_git.LsOthers()
+ if changes:
+ details.extend(changes)
- return False
+ return details
+
+ def HasChanges(self):
+ """Returns true if there are uncommitted changes.
+ """
+ if self.UncommitedFiles(get_all=False):
+ return True
+ else:
+ return False
def PrintWorkTreeStatus(self, output_redir=None):
"""Prints the status of the repository to stdout.
diff --git a/subcmds/upload.py b/subcmds/upload.py
index 0ee36df..674fc17 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -339,13 +339,17 @@
self._AppendAutoList(branch, people)
# Check if there are local changes that may have been forgotten
- if branch.project.HasChanges():
+ changes = branch.project.UncommitedFiles()
+ if changes:
key = 'review.%s.autoupload' % branch.project.remote.review
answer = branch.project.config.GetBoolean(key)
# if they want to auto upload, let's not ask because it could be automated
if answer is None:
- sys.stdout.write('Uncommitted changes in ' + branch.project.name + ' (did you forget to amend?). Continue uploading? (y/N) ')
+ sys.stdout.write('Uncommitted changes in ' + branch.project.name)
+ sys.stdout.write(' (did you forget to amend?):\n')
+ sys.stdout.write('\n'.join(changes) + '\n')
+ sys.stdout.write('Continue uploading? (y/N) ')
a = sys.stdin.readline().strip().lower()
if a not in ('y', 'yes', 't', 'true', 'on'):
print("skipping upload", file=sys.stderr)