Revert "cat-file: split --batch input lines on whitespace"
This reverts commit c334b87b30c1464a1ab563fe1fb8de5eaf0e5bac; the update assumed that people only used the command to read from "rev-list --objects" output, whose lines begin with a 40-hex object name followed by a whitespace, but it turns out that scripts feed random extended SHA-1 expressions (e.g. "HEAD:$pathname") in which a whitespace has to be kept.maint
							parent
							
								
									d099b7173d
								
							
						
					
					
						commit
						062aeee8aa
					
				| 
						 | 
				
			
			@ -88,10 +88,8 @@ BATCH OUTPUT
 | 
			
		|||
If `--batch` or `--batch-check` is given, `cat-file` will read objects
 | 
			
		||||
from stdin, one per line, and print information about them.
 | 
			
		||||
 | 
			
		||||
Each line is split at the first whitespace boundary. All characters
 | 
			
		||||
before that whitespace are considered as a whole object name, and are
 | 
			
		||||
parsed as if given to linkgit:git-rev-parse[1]. Characters after that
 | 
			
		||||
whitespace can be accessed using the `%(rest)` atom (see below).
 | 
			
		||||
Each line is considered as a whole object name, and is parsed as if
 | 
			
		||||
given to linkgit:git-rev-parse[1].
 | 
			
		||||
 | 
			
		||||
You can specify the information shown for each object by using a custom
 | 
			
		||||
`<format>`. The `<format>` is copied literally to stdout for each
 | 
			
		||||
| 
						 | 
				
			
			@ -112,10 +110,6 @@ newline. The available atoms are:
 | 
			
		|||
	The size, in bytes, that the object takes up on disk. See the
 | 
			
		||||
	note about on-disk sizes in the `CAVEATS` section below.
 | 
			
		||||
 | 
			
		||||
`rest`::
 | 
			
		||||
	The text (if any) found after the first run of whitespace on the
 | 
			
		||||
	input line (i.e., the "rest" of the line).
 | 
			
		||||
 | 
			
		||||
If no format is specified, the default format is `%(objectname)
 | 
			
		||||
%(objecttype) %(objectsize)`.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -119,7 +119,6 @@ struct expand_data {
 | 
			
		|||
	enum object_type type;
 | 
			
		||||
	unsigned long size;
 | 
			
		||||
	unsigned long disk_size;
 | 
			
		||||
	const char *rest;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * If mark_query is true, we do not expand anything, but rather
 | 
			
		||||
| 
						 | 
				
			
			@ -164,9 +163,6 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len,
 | 
			
		|||
			data->info.disk_sizep = &data->disk_size;
 | 
			
		||||
		else
 | 
			
		||||
			strbuf_addf(sb, "%lu", data->disk_size);
 | 
			
		||||
	} else if (is_atom("rest", atom, len)) {
 | 
			
		||||
		if (!data->mark_query && data->rest)
 | 
			
		||||
			strbuf_addstr(sb, data->rest);
 | 
			
		||||
	} else
 | 
			
		||||
		die("unknown format element: %.*s", len, atom);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -277,21 +273,7 @@ static int batch_objects(struct batch_options *opt)
 | 
			
		|||
	warn_on_object_refname_ambiguity = 0;
 | 
			
		||||
 | 
			
		||||
	while (strbuf_getline(&buf, stdin, '\n') != EOF) {
 | 
			
		||||
		char *p;
 | 
			
		||||
		int error;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Split at first whitespace, tying off the beginning of the
 | 
			
		||||
		 * string and saving the remainder (or NULL) in data.rest.
 | 
			
		||||
		 */
 | 
			
		||||
		p = strpbrk(buf.buf, " \t");
 | 
			
		||||
		if (p) {
 | 
			
		||||
			while (*p && strchr(" \t", *p))
 | 
			
		||||
				*p++ = '\0';
 | 
			
		||||
		}
 | 
			
		||||
		data.rest = p;
 | 
			
		||||
 | 
			
		||||
		error = batch_one_object(buf.buf, opt, &data);
 | 
			
		||||
		int error = batch_one_object(buf.buf, opt, &data);
 | 
			
		||||
		if (error)
 | 
			
		||||
			return error;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,13 +78,6 @@ $content"
 | 
			
		|||
	echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
 | 
			
		||||
	test_cmp expect actual
 | 
			
		||||
    '
 | 
			
		||||
 | 
			
		||||
    test_expect_success '--batch-check with %(rest)' '
 | 
			
		||||
	echo "$type this is some extra content" >expect &&
 | 
			
		||||
	echo "$sha1    this is some extra content" |
 | 
			
		||||
		git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
 | 
			
		||||
	test_cmp expect actual
 | 
			
		||||
    '
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hello_content="Hello World"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue