From 0b2c54b5bdef47a9a6f2dee8654f4984ed8cb874 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 12 Jan 2009 08:01:04 +0000 Subject: Bug #252727 - Use `git diff-index --name-only --diff-filter=M HEAD` instead of `git ls-files -m --with-tree=HEAD` since the latter doesn't behave like we want for files that have been added to the index. Also, use `git diff-index` instead of `git diff` since the latter is considered a high-level "porcelain" command which means that it's interface may not be reliable. (trunk r12359) svn path=/main/branches/2.1.6/; revision=12430 --- bin/repoman | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'bin/repoman') diff --git a/bin/repoman b/bin/repoman index d99be1ab4..8eff9c077 100755 --- a/bin/repoman +++ b/bin/repoman @@ -746,10 +746,15 @@ if vcs == "svn": mychanged = [ "./" + elem.split()[-1:][0] for elem in svnstatus if elem and elem[:1] in "MR" ] mynew = [ "./" + elem.split()[-1:][0] for elem in svnstatus if elem.startswith("A") ] elif vcs == "git": - mychanged = os.popen("git ls-files -m --with-tree=HEAD").readlines() - mychanged = [ "./" + elem[:-1] for elem in mychanged ] - mynew = os.popen("git diff --cached --name-only --diff-filter=A").readlines() strip_levels = repolevel - 1 + + mychanged = os.popen("git diff-index --name-only --diff-filter=M HEAD").readlines() + if strip_levels: + mychanged = [elem[repo_subdir_len:] for elem in mychanged \ + if elem[:repo_subdir_len] == repo_subdir] + mychanged = ["./" + elem[:-1] for elem in mychanged] + + mynew = os.popen("git diff-index --name-only --diff-filter=A HEAD").readlines() if strip_levels: mynew = [elem[repo_subdir_len:] for elem in mynew \ if elem[:repo_subdir_len] == repo_subdir] @@ -1742,15 +1747,21 @@ else: for prop in props if " - " in prop) elif vcs == "git": - mychanged = os.popen("git ls-files -m --with-tree=HEAD").readlines() - mychanged = [ "./" + elem[:-1] for elem in mychanged ] - mynew = os.popen("git diff --cached --name-only --diff-filter=A").readlines() strip_levels = repolevel - 1 + + mychanged = os.popen("git diff-index --name-only --diff-filter=M HEAD").readlines() + if strip_levels: + mychanged = [elem[repo_subdir_len:] for elem in mychanged \ + if elem[:repo_subdir_len] == repo_subdir] + mychanged = ["./" + elem[:-1] for elem in mychanged] + + mynew = os.popen("git diff-index --name-only --diff-filter=A HEAD").readlines() if strip_levels: mynew = [elem[repo_subdir_len:] for elem in mynew \ if elem[:repo_subdir_len] == repo_subdir] mynew = ["./" + elem[:-1] for elem in mynew] - myremoved = os.popen("git diff --cached --name-only --diff-filter=D").readlines() + + myremoved = os.popen("git diff-index --name-only --diff-filter=D HEAD").readlines() if strip_levels: myremoved = [elem[repo_subdir_len:] for elem in myremoved \ if elem[:repo_subdir_len] == repo_subdir] -- cgit v1.2.3-1-g7c22