Add git-find-new-files to find files that are in the tree, but not checked into 
the repository.

Most users will probably want to "make clean" before using this for real
significant changes, as it does such a good job that it finds binaries that
just got built.

Signed-off-by: Ryan Anderson <[EMAIL PROTECTED]>
---

 Makefile           |    2 +-
 git-find-new-files |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 1 deletions(-)
 create mode 100755 git-find-new-files

028b21ae78dba3edab5e9b1a24cdf68011e42ab7
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -36,7 +36,7 @@ SCRIPTS=git git-apply-patch-script git-m
        git-reset-script git-add-script git-checkout-script git-clone-script \
        gitk git-cherry git-rebase-script git-relink-script git-repack-script \
        git-format-patch-script git-sh-setup-script git-push-script \
-       git-branch-script git-parse-remote
+       git-branch-script git-parse-remote git-find-new-files
 
 PROG=   git-update-cache git-diff-files git-init-db git-write-tree \
        git-read-tree git-commit-tree git-cat-file git-fsck-cache \
diff --git a/git-find-new-files b/git-find-new-files
new file mode 100755
--- /dev/null
+++ b/git-find-new-files
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+#
+# A simple script to take a look at all the files git knows about and compare
+# that to the files that we actually see in teh source tree, and output a
+# listing of the difference between them.
+#
+# The original command that did this is below, but a pure-Perl version can skip
+# the temp files.
+#
+#      find . -name .git -type d -prune -o -type f -print \
+#              | grep -v -e .tree1 -e .tree2 \
+#              | sed -e "s/^\.\///" \
+#              | sort >.tree1
+#      git-ls-files | grep -v -e .tree1 -e .tree2 \
+#              | sort >.tree2
+#      diff -u .tree1 .tree2
+
+use warnings;
+use strict;
+
+# Since we're using NUL (ASCII value of 0) to terminate strings,
+# set the field separator to that:
+$/ = "\0";
+
+my (%actual,%git);
+
+open(F,"-|","find . -name .git -type d -prune -o -type f -print0")
+       or die "Failed to open pipe from find: " . $!;
+
+while(<F>) {
+       chomp;
+       s#^\./##;
+       $actual{$_}++;
+}
+close(F);
+
+open(F,"-|","git-ls-files -z")
+       or die "Failed to open pipe from git-ls-files: " . $!;
+
+while(<F>) {
+       chomp;
+       delete $actual{$_};
+}
+close(F);
+
+foreach my $f (sort keys %actual) {
+       printf("A\t%s\n",$f);
+}
-- 

Ryan Anderson
  sometimes Pug Majere
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to