Pass '--relative' to 'git diff-index'.
authorMichał Górny <gentoo@mgorny.alt.pl>
Sun, 11 Jul 2010 10:18:38 +0000 (12:18 +0200)
committerZac Medico <zmedico@gentoo.org>
Sun, 11 Jul 2010 18:25:56 +0000 (11:25 -0700)
Instead of using faulty prefix-stripping code on 'git diff-index'
results, simply pass '--relative' to it. Thanks to that, git will do all
the stripping itself and return only changes in the current directory.

bin/repoman

index 3243438e28c6cc57a065f6fc734cff98d8f159d0..750bc66640f6ef91803bd7ed7c72c1812f54253d 100755 (executable)
@@ -938,18 +938,10 @@ 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":
-       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 = os.popen("git diff-index --name-only --relative --diff-filter=M HEAD").readlines()
        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 = os.popen("git diff-index --name-only --relative --diff-filter=A HEAD").readlines()
        mynew = ["./" + elem[:-1] for elem in mynew]
 elif vcs == "bzr":
        bzrstatus = os.popen("bzr status -S .").readlines()
@@ -2161,24 +2153,13 @@ else:
                        for prop in props if " - " in prop)
 
        elif vcs == "git":
-               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 = os.popen("git diff-index --name-only --relative --diff-filter=M HEAD").readlines()
                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 = os.popen("git diff-index --name-only --relative --diff-filter=A HEAD").readlines()
                mynew = ["./" + elem[:-1] for elem in mynew]
 
-               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]
+               myremoved = os.popen("git diff-index --name-only --relative --diff-filter=D HEAD").readlines()
                myremoved = ["./" + elem[:-1] for elem in myremoved]
 
        if vcs == "bzr":