Package: python-git
Version: 0.3.2~RC1-3
Severity: important
Tags: upstream patch
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').
I'm attaching a patch that fixes the untracked_files property.
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.12-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages python-git depends on:
ii git [git-core] 1:1.9.0-1
ii git-core 1:1.9.0-1
ii libjs-jquery 1.7.2+dfsg-3
ii python 2.7.5-5
ii python-gitdb 0.5.4-1
python-git recommends no packages.
python-git suggests no packages.
-- no debconf information
-- debsums errors found:
debsums: changed file /usr/share/pyshared/git/repo/base.py (from python-git
package)
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
_______________________________________________
Python-modules-team mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/python-modules-team