changeset 11502:460f2a0ec442

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. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Fri, 24 Apr 2009 14:58:02 -0600
parents 5223ecd9ec17
children 3b896d8318fe
files ChangeLog build-aux/vc-list-files
diffstat 2 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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.
--- a/build-aux/vc-list-files
+++ b/build-aux/vc-list-files
@@ -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 @@
 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