diff options
author | Maximiliano Curia <maxy@gnuservers.com.ar> | 2014-05-06 12:11:11 +0200 |
---|---|---|
committer | Maximiliano Curia <maxy@gnuservers.com.ar> | 2014-05-06 12:11:11 +0200 |
commit | 5d4a9c2374049ed45b43d09781c086d5674f48cf (patch) | |
tree | 6e03f51a3560a9338bb8097543d651ccd24f3f4e | |
parent | 2976561e6c369b40f7e0a36016b26cd560db6ad4 (diff) | |
download | gitpython-5d4a9c2374049ed45b43d09781c086d5674f48cf.tar.gz |
Fix for untracked_files no longer detected #138
-rw-r--r-- | git/db/cmd/base.py | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/git/db/cmd/base.py b/git/db/cmd/base.py index 09847b43..96320a8a 100644 --- a/git/db/cmd/base.py +++ b/git/db/cmd/base.py @@ -662,26 +662,25 @@ class CmdHighLevelRepository(HighLevelRepository): return True # END untracked files return False - + @property def untracked_files(self): # make sure we get all files, no only untracked directores - proc = self.git.status(untracked_files=True, as_process=True) - stream = iter(proc.stdout) + proc = self.git.status(porcelain=True, + untracked_files=True, + as_process=True) + # Untracked files preffix in porcelain mode + prefix = "?? " + untracked_files = list() - for line in stream: - if not line.startswith("# Untracked files:"): + for line in proc.stdout: + if not line.startswith(prefix): continue - # skip two lines - stream.next() - stream.next() - - for untracked_info in stream: - if not untracked_info.startswith("#\t"): - break - untracked_files.append(untracked_info.replace("#\t", "").rstrip()) - # END for each utracked info line - # END for each line + filename = line[len(prefix):].rstrip('\n') + # Special characters are escaped + if filename[0] == filename[-1] == '"': + filename = filename[1:-1].decode('string_escape') + untracked_files.append(filename) return untracked_files def blame(self, rev, file): |