Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork939
Closed
Milestone
Description
Hi,
The output of git status is no longer in the format expected by python-git, in
particular the Repo.untracked_files property parses the git status output
expecting a:
# Untracked files:
while later versions of git droped the #, also there are some subtleties in
the management of the file names (avoid the use of replace and rstrip
removes spaces not only '\n').
Here is a patch that fixes the untracked_files property. There might be other parts affected by the change in the git output.
diff -Naru python-git/git/repo/base.py python-git.new/git/repo/base.py--- python-git/git/repo/base.py 2011-07-05 21:50:02.000000000 +0200+++ python-git.new/git/repo/base.py 2014-02-23 17:54:32.157547255 +0100@@ -512,35 +512,33 @@ return True # END untracked files return False- + @property def untracked_files(self): """ :return: list(str,...)- + Files currently untracked as they have not been staged yet. Paths are relative to the current working directory of the git command.- + :note: ignored files will not appear here, i.e. files mentioned in .gitignore""" # 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+ preffix = "?? " untracked_files = list()- for line in stream:- if not line.startswith("# Untracked files:"):+ for line in proc.stdout:+ if not line.startswith(preffix): 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(preffix):].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 @property
Metadata
Metadata
Assignees
Labels
No labels