vc-list-files: ignore git symlinks
authorEric Blake <ebb9@byu.net>
Fri, 24 Apr 2009 20:58:02 +0000 (14:58 -0600)
committerEric Blake <ebb9@byu.net>
Sat, 25 Apr 2009 02:10:26 +0000 (20:10 -0600)
* build-aux/vc-list-files (.git): Use ls-tree and a filter, rather
than ls-files, to ignore git symlinks.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
build-aux/vc-list-files

index 0083daf..fb16e2e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2009-04-24  Eric Blake  <ebb9@byu.net>
 
+       vc-list-files: ignore git symlinks
+       * build-aux/vc-list-files (.git): Use ls-tree and a filter, rather
+       than ls-files, to ignore git symlinks.
+
        maint.mk: import improvements from m4
        * top/maint.mk (VC-tag): Use signing key from cfg.mk.
        (move_if_change): Delete unused macro.
index 56acd5f..4b465a4 100755 (executable)
@@ -2,7 +2,7 @@
 # List version-controlled file names.
 
 # Print a version string.
-scriptversion=2009-03-01.09
+scriptversion=2009-04-24.14
 
 # Copyright (C) 2006-2009 Free Software Foundation, Inc.
 
@@ -72,7 +72,17 @@ esac
 test "x$dir" = x && dir=.
 
 if test -d .git; then
-  eval exec git ls-files '"$dir"' $postprocess
+  if test "x$dir" = x. ; then
+    dir=HEAD
+  else
+    dir=HEAD:$dir
+  fi
+  # Ignore git symlinks - either they point into the tree, in which case
+  # we don't need to visit the target twice, or they point somewhere
+  # else (often into a submodule), in which case the content does not
+  # belong to this package.
+  eval exec git ls-tree -r '"$dir"' \| sed -n '"s/^100[^       ]*.//p"' \
+    $postprocess
 elif test -d .hg; then
   eval exec hg locate '"$dir/*"' $postprocess
 elif test -d .bzr; then