git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Potapov <dpotapov@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Alexander Litvinov <litvinov2004@gmail.com>,
	git@vger.kernel.org, Eric Wong <normalperson@yhbt.net>
Subject: Re: [PATCH] git-svn now work with crlf convertion enabled.
Date: Sat, 2 Aug 2008 02:09:32 +0400	[thread overview]
Message-ID: <20080801220932.GK7008@dpotapov.dyndns.org> (raw)
In-Reply-To: <7vmyjwserv.fsf@gitster.siamese.dyndns.org>

On Fri, Aug 01, 2008 at 12:42:44PM -0700, Junio C Hamano wrote:
> 
> Ok, earlier I was confused who was proposing what for what purpose, but
> that one was not just "a bit hackish" but an unacceptable hack ;-)

Thanks for correct my wording ;-)

> 
> Perhaps you would want to do the s/write_object/flags/ conversion, like
> this?

Yes, it was my prefered choice to change these index_xx functions.

I have applied your patch and then corrected mine to use flags.
See below.

I wonder if something should be done about other places where index_xx
functions are called. I have looked at them and all they use either 0 or
1 (boolean expression which will be evaluated to 0 or 1), so they should
work as is, but I can correct them to use HASH_OBJECT_DO_CREATE instead
of 1 if it helps with readability.

-- 8< --

From: Dmitry Potapov <dpotapov@gmail.com>
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.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
---
 Documentation/git-hash-object.txt |    6 ++++++
 hash-object.c                     |   28 +++++++++++++++-------------
 2 files changed, 21 insertions(+), 13 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@pobox.com>
diff --git a/hash-object.c b/hash-object.c
index 46c06a9..2dd7283 100644
--- a/hash-object.c
+++ b/hash-object.c
@@ -8,7 +8,7 @@
 #include "blob.h"
 #include "quote.h"
 
-static void hash_object(const char *path, enum object_type type, int write_object)
+static void hash_object(const char *path, enum object_type type, int flags)
 {
 	int fd;
 	struct stat st;
@@ -16,23 +16,23 @@ 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))
-		die(write_object
+	    index_fd(sha1, fd, &st, flags, type, path))
+		die((flags & HASH_OBJECT_DO_CREATE)
 		    ? "Unable to add %s to database"
 		    : "Unable to hash %s", path);
 	printf("%s\n", sha1_to_hex(sha1));
 	maybe_flush_or_die(stdout, "hash to stdout");
 }
 
-static void hash_stdin(const char *type, int write_object)
+static void hash_stdin(const char *type, int flags)
 {
 	unsigned char sha1[20];
-	if (index_pipe(sha1, 0, type, write_object))
+	if (index_pipe(sha1, 0, type, flags))
 		die("Unable to add stdin to database");
 	printf("%s\n", sha1_to_hex(sha1));
 }
 
-static void hash_stdin_paths(const char *type, int write_objects)
+static void hash_stdin_paths(const char *type, int flags)
 {
 	struct strbuf buf, nbuf;
 
@@ -45,7 +45,7 @@ static void hash_stdin_paths(const char *type, int write_objects)
 				die("line is badly quoted");
 			strbuf_swap(&buf, &nbuf);
 		}
-		hash_object(buf.buf, type_from_string(type), write_objects);
+		hash_object(buf.buf, type_from_string(type), flags);
 	}
 	strbuf_release(&buf);
 	strbuf_release(&nbuf);
@@ -58,7 +58,7 @@ int main(int argc, char **argv)
 {
 	int i;
 	const char *type = blob_type;
-	int write_object = 0;
+	int flags = 0;
 	const char *prefix = NULL;
 	int prefix_length = -1;
 	int no_more_flags = 0;
@@ -80,7 +80,7 @@ int main(int argc, char **argv)
 					prefix_length =
 						prefix ? strlen(prefix) : 0;
 				}
-				write_object = 1;
+				flags |= HASH_OBJECT_DO_CREATE;
 			}
 			else if (!strcmp(argv[i], "--")) {
 				no_more_flags = 1;
@@ -104,6 +104,8 @@ int main(int argc, char **argv)
 					die("Multiple --stdin arguments are not supported");
 				hashstdin = 1;
 			}
+			else if (!strcmp(argv[i], "--no-filters"))
+				flags |= HASH_OBJECT_LITERALLY;
 			else
 				usage(hash_object_usage);
 		}
@@ -116,21 +118,21 @@ int main(int argc, char **argv)
 			}
 
 			if (hashstdin) {
-				hash_stdin(type, write_object);
+				hash_stdin(type, flags);
 				hashstdin = 0;
 			}
 			if (0 <= prefix_length)
 				arg = prefix_filename(prefix, prefix_length,
 						      arg);
-			hash_object(arg, type_from_string(type), write_object);
+			hash_object(arg, type_from_string(type), flags);
 			no_more_flags = 1;
 		}
 	}
 
 	if (stdin_paths)
-		hash_stdin_paths(type, write_object);
+		hash_stdin_paths(type, flags);
 
 	if (hashstdin)
-		hash_stdin(type, write_object);
+		hash_stdin(type, flags);
 	return 0;
 }
-- 
1.6.0.rc1.33.gb756f

  reply	other threads:[~2008-08-01 22:10 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-23  8:44 git-svn does not seems to work with crlf convertion enabled Alexander Litvinov
2008-07-23  9:18 ` Johannes Schindelin
2008-07-23 11:52   ` Alexander Litvinov
2008-07-23 12:57     ` Johannes Schindelin
2008-07-23 15:49       ` Avery Pennarun
2008-07-23 16:07         ` Johannes Schindelin
2008-07-24  3:13       ` Alexander Litvinov
2008-08-06 11:15       ` Petr Baudis
2008-08-06 12:35         ` Peter Harris
2008-08-06 12:43         ` Johannes Schindelin
2008-08-06 13:51           ` git-svn on MSysGit and why is it (going to be?) unsupported Petr Baudis
2008-08-06 15:23             ` Avery Pennarun
2008-08-06 16:11         ` git-svn does not seems to work with crlf convertion enabled Dmitry Potapov
2008-07-24 14:24     ` Dmitry Potapov
2008-07-24 14:40       ` Johannes Schindelin
2008-07-24 16:28         ` Avery Pennarun
2008-07-30  4:37   ` Alexander Litvinov
2008-07-31  5:43   ` [PATCH] git-svn now " Alexander Litvinov
2008-07-31  5:57     ` Alexander Litvinov
2008-07-31 10:45       ` Dmitry Potapov
2008-07-31 19:09         ` [RFC] hash-object --no-filters Dmitry Potapov
2008-08-01  3:23         ` [PATCH] git-svn now work with crlf convertion enabled Alexander Litvinov
2008-08-01  5:09           ` Junio C Hamano
2008-08-01  7:44             ` Dmitry Potapov
2008-08-01 11:27               ` Alexander Litvinov
2008-08-01  7:47           ` Dmitry Potapov
2008-08-01  8:08             ` Junio C Hamano
2008-08-01  9:24               ` Dmitry Potapov
2008-08-01 19:42                 ` Junio C Hamano
2008-08-01 22:09                   ` Dmitry Potapov [this message]
2008-08-01 22:14                     ` Junio C Hamano
2008-08-01 23:10                       ` Dmitry Potapov
2008-08-02 17:28                     ` [PATCH] hash-object --no-filters Junio C Hamano
2008-08-03  5:42                       ` Dmitry Potapov
2008-08-03  5:56                         ` Dmitry Potapov
2008-08-03 14:36                           ` [PATCH 1/5] correct argument checking test for git hash-object Dmitry Potapov
2008-08-03 14:36                             ` [PATCH 2/5] correct usage help string for git-hash-object Dmitry Potapov
2008-08-03 14:36                               ` [PATCH 3/5] use parse_options() in git hash-object Dmitry Potapov
2008-08-03 14:36                                 ` [PATCH 4/5] add --path option to " Dmitry Potapov
2008-08-03 14:36                                   ` [PATCH 5/5] add --no-filters " Dmitry Potapov
2008-08-03 20:44                           ` [PATCH] hash-object --no-filters Junio C Hamano
2008-08-01 11:11               ` [PATCH] git-svn now work with crlf convertion enabled Alexander Litvinov
2008-08-01 12:36                 ` Dmitry Potapov
2008-08-04  3:10                   ` Alexander Litvinov
2008-08-04  0:48     ` Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080801220932.GK7008@dpotapov.dyndns.org \
    --to=dpotapov@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=litvinov2004@gmail.com \
    --cc=normalperson@yhbt.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).