1 |
Author: zmedico |
2 |
Date: 2008-12-28 20:29:22 +0000 (Sun, 28 Dec 2008) |
3 |
New Revision: 12359 |
4 |
|
5 |
Modified: |
6 |
main/trunk/bin/repoman |
7 |
Log: |
8 |
Bug #252727 - Use `git diff-index --name-only --diff-filter=M HEAD` instead |
9 |
of `git ls-files -m --with-tree=HEAD` since the latter doesn't behave |
10 |
like we want for files that have been added to the index. Also, use `git |
11 |
diff-index` instead of `git diff` since the latter is considered a high-level |
12 |
"porcelain" command which means that it's interface may not be reliable. |
13 |
|
14 |
|
15 |
Modified: main/trunk/bin/repoman |
16 |
=================================================================== |
17 |
--- main/trunk/bin/repoman 2008-12-28 01:14:37 UTC (rev 12358) |
18 |
+++ main/trunk/bin/repoman 2008-12-28 20:29:22 UTC (rev 12359) |
19 |
@@ -746,11 +746,16 @@ |
20 |
mychanged = [ "./" + elem.split()[-1:][0] for elem in svnstatus if elem and elem[:1] in "MR" ] |
21 |
mynew = [ "./" + elem.split()[-1:][0] for elem in svnstatus if elem.startswith("A") ] |
22 |
elif vcs == "git": |
23 |
- mychanged = os.popen("git ls-files -m --with-tree=HEAD").readlines() |
24 |
- mychanged = [ "./" + elem[:-1] for elem in mychanged ] |
25 |
- mynew = os.popen("git diff --cached --name-only --diff-filter=A").readlines() |
26 |
strip_levels = repolevel - 1 |
27 |
+ |
28 |
+ mychanged = os.popen("git diff-index --name-only --diff-filter=M HEAD").readlines() |
29 |
if strip_levels: |
30 |
+ mychanged = [elem[repo_subdir_len:] for elem in mychanged \ |
31 |
+ if elem[:repo_subdir_len] == repo_subdir] |
32 |
+ mychanged = ["./" + elem[:-1] for elem in mychanged] |
33 |
+ |
34 |
+ mynew = os.popen("git diff-index --name-only --diff-filter=A HEAD").readlines() |
35 |
+ if strip_levels: |
36 |
mynew = [elem[repo_subdir_len:] for elem in mynew \ |
37 |
if elem[:repo_subdir_len] == repo_subdir] |
38 |
mynew = ["./" + elem[:-1] for elem in mynew] |
39 |
@@ -1742,15 +1747,21 @@ |
40 |
for prop in props if " - " in prop) |
41 |
|
42 |
elif vcs == "git": |
43 |
- mychanged = os.popen("git ls-files -m --with-tree=HEAD").readlines() |
44 |
- mychanged = [ "./" + elem[:-1] for elem in mychanged ] |
45 |
- mynew = os.popen("git diff --cached --name-only --diff-filter=A").readlines() |
46 |
strip_levels = repolevel - 1 |
47 |
+ |
48 |
+ mychanged = os.popen("git diff-index --name-only --diff-filter=M HEAD").readlines() |
49 |
if strip_levels: |
50 |
+ mychanged = [elem[repo_subdir_len:] for elem in mychanged \ |
51 |
+ if elem[:repo_subdir_len] == repo_subdir] |
52 |
+ mychanged = ["./" + elem[:-1] for elem in mychanged] |
53 |
+ |
54 |
+ mynew = os.popen("git diff-index --name-only --diff-filter=A HEAD").readlines() |
55 |
+ if strip_levels: |
56 |
mynew = [elem[repo_subdir_len:] for elem in mynew \ |
57 |
if elem[:repo_subdir_len] == repo_subdir] |
58 |
mynew = ["./" + elem[:-1] for elem in mynew] |
59 |
- myremoved = os.popen("git diff --cached --name-only --diff-filter=D").readlines() |
60 |
+ |
61 |
+ myremoved = os.popen("git diff-index --name-only --diff-filter=D HEAD").readlines() |
62 |
if strip_levels: |
63 |
myremoved = [elem[repo_subdir_len:] for elem in myremoved \ |
64 |
if elem[:repo_subdir_len] == repo_subdir] |