diff --git a/project.py b/project.py index 48cf08c6..8274f022 100644 --- a/project.py +++ b/project.py @@ -650,7 +650,7 @@ class Project(object): return True if self.work_git.DiffZ('diff-files'): return True - if consider_untracked and self.work_git.LsOthers(): + if consider_untracked and self.UntrackedFiles(): return True return False @@ -779,12 +779,16 @@ class Project(object): if not get_all: return details - changes = self.work_git.LsOthers() + changes = self.UntrackedFiles() if changes: details.extend(changes) return details + def UntrackedFiles(self): + """Returns a list of strings, untracked files in the git tree.""" + return self.work_git.LsOthers() + def HasChanges(self): """Returns true if there are uncommitted changes. """ diff --git a/subcmds/upload.py b/subcmds/upload.py index 20b8fe5d..09ee5c02 100644 --- a/subcmds/upload.py +++ b/subcmds/upload.py @@ -204,6 +204,12 @@ Gerrit Code Review: https://www.gerritcodereview.com/ p.add_option('-y', '--yes', default=False, action='store_true', help='answer yes to all safe prompts') + p.add_option('--ignore-untracked-files', + action='store_true', default=False, + help='ignore untracked files in the working copy') + p.add_option('--no-ignore-untracked-files', + dest='ignore_untracked_files', action='store_false', + help='always ask about untracked files in the working copy') p.add_option('--no-cert-checks', dest='validate_certs', action='store_false', default=True, help='disable verifying ssl certs (unsafe)') @@ -370,6 +376,10 @@ Gerrit Code Review: https://www.gerritcodereview.com/ # Check if there are local changes that may have been forgotten changes = branch.project.UncommitedFiles() + if opt.ignore_untracked_files: + untracked = set(branch.project.UntrackedFiles()) + changes = [x for x in changes if x not in untracked] + if changes: key = 'review.%s.autoupload' % branch.project.remote.review answer = branch.project.config.GetBoolean(key)