Hi All, I am tryint to add the --no-filters option. It is useful for git-svn and other importers that want to add file as-is without being affected by any filter (in particular, autocrlf). Though, the patch below works, I am not happy with the hackish way of passing no-filter requirement to the index_fd() function. So, I wonder what would be preferable: - to change 'write_object' to be flags (bit 0: write_object, bit 1: no-filters ) - to add some global the no_filters flag to environment.c, which can be checked inside of convert_to_git(), so it may be used in the future in some other cases (though I don't see where else it can be useful). Another question: currently git hash-object --input imply no filters. I don't know if it was done intentionally (it can be argued in both ways). I don't think it is reasonable now to change this behavior, so I want to add just one line to documentation, so there will be no surprise among users. Dmitry -- 8< -- From: Dmitry Potapov <dpotapov@xxxxxxxxx> Date: Thu, 31 Jul 2008 21:10:26 +0400 Subject: [PATCH] hash-object --no-filters The --no-filters option makes git hash-object to work as there were no input filters. This option is useful for importers such as git-svn to put new version of files as is even if autocrlf is set. --- Documentation/git-hash-object.txt | 6 ++++++ hash-object.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletions(-) diff --git a/Documentation/git-hash-object.txt b/Documentation/git-hash-object.txt index ac928e1..69a17c7 100644 --- a/Documentation/git-hash-object.txt +++ b/Documentation/git-hash-object.txt @@ -35,6 +35,12 @@ OPTIONS --stdin-paths:: Read file names from stdin instead of from the command-line. +--no-filters:: + If this option is given then the file is hashed as is ignoring + all filters specified in the configuration, including crlf + conversion. If the file is read from standard input then no + filters is always implied. + Author ------ Written by Junio C Hamano <gitster@xxxxxxxxx> diff --git a/hash-object.c b/hash-object.c index 46c06a9..1e7fe8a 100644 --- a/hash-object.c +++ b/hash-object.c @@ -8,6 +8,8 @@ #include "blob.h" #include "quote.h" +static unsigned no_filters; + static void hash_object(const char *path, enum object_type type, int write_object) { int fd; @@ -16,7 +18,8 @@ static void hash_object(const char *path, enum object_type type, int write_objec fd = open(path, O_RDONLY); if (fd < 0 || fstat(fd, &st) < 0 || - index_fd(sha1, fd, &st, write_object, type, path)) + ((no_filters ? st.st_mode &= ~S_IFREG : 0), + index_fd(sha1, fd, &st, write_object, type, path))) die(write_object ? "Unable to add %s to database" : "Unable to hash %s", path); @@ -104,6 +107,8 @@ int main(int argc, char **argv) die("Multiple --stdin arguments are not supported"); hashstdin = 1; } + else if (!strcmp(argv[i], "--no-filters")) + no_filters = 1; else usage(hash_object_usage); } -- 1.6.0.rc1.32.gc84cb -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html