[PATCH v6+ 0/7] js/scalar-diagnose rebased

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Recent document clarification on the "--prefix" option of the "git
archive" command from René serves as a good basis for the
documentation of the "--add-virtual-file" option added by this
series, so here is my attempt to rebase js/scalar-diagnose topic
on it to hopefully help reduce Dscho's workload ;-)

Aside from obvious adjustments needed while rebasing onto the
updated documentation, there are only a couple of changes:

 - The way the <path> in --add-virtual-file=<path>:<contents> is
   used has been corrected.  Earlier, leading directory components
   of the <path> were all discarded and used nowhere, which made no
   sense.  The <path> is used as a whole, but for consistency with
   --add-file=<path>, <prefix> is still applied.

 - Overly loose quoting of variables in test scripts has been
   corrected.

Both changes have been in 'seen' from before the rebase.

1:  510f6b226b ! 1:  61522a0866 archive: optionally add "virtual" files
    @@ Commit message
     
      ## Documentation/git-archive.txt ##
     @@ Documentation/git-archive.txt: OPTIONS
    - 	by concatenating the value for `--prefix` (if any) and the
    - 	basename of <file>.
    + --prefix=<prefix>/::
    + 	Prepend <prefix>/ to paths in the archive.  Can be repeated; its
    + 	rightmost value is used for all tracked files.  See below which
    +-	value gets used by `--add-file`.
    ++	value gets used by `--add-file` and `--add-virtual-file`.
    + 
    + -o <file>::
    + --output=<file>::
    +@@ Documentation/git-archive.txt: OPTIONS
    + 	concatenating the value of the last `--prefix` option (if any)
    + 	before this `--add-file` and the basename of <file>.
      
     +--add-virtual-file=<path>:<content>::
     +	Add the specified contents to the archive.  Can be repeated to add
     +	multiple files.  The path of the file in the archive is built
    -+	by concatenating the value for `--prefix` (if any) and the
    -+	basename of <file>.
    ++	by concatenating the value of the last `--prefix` option (if any)
    ++	before this `--add-virtual-file` and `<path>`.
     ++
     +The `<path>` cannot contain any colon, the file mode is limited to
     +a regular file, and the option may be subject to platform-dependent
    @@ archive.c: static int queue_or_write_archive_entry(const struct object_id *oid,
      
      int write_archive_entries(struct archiver_args *args,
     @@ archive.c: int write_archive_entries(struct archiver_args *args,
    - 		strbuf_addstr(&path_in_archive, basename(path));
      
    - 		strbuf_reset(&content);
    + 		put_be64(fake_oid.hash, i + 1);
    + 
    +-		strbuf_reset(&path_in_archive);
    +-		if (info->base)
    +-			strbuf_addstr(&path_in_archive, info->base);
    +-		strbuf_addstr(&path_in_archive, basename(path));
    +-
    +-		strbuf_reset(&content);
     -		if (strbuf_read_file(&content, path, info->stat.st_size) < 0)
    -+		if (info->content)
    -+			err = write_entry(args, &fake_oid, path_in_archive.buf,
    -+					  path_in_archive.len,
    -+					  canon_mode(info->stat.st_mode),
    +-			err = error_errno(_("cannot read '%s'"), path);
    +-		else
    +-			err = write_entry(args, &fake_oid, path_in_archive.buf,
    +-					  path_in_archive.len,
    ++		if (!info->content) {
    ++			strbuf_reset(&path_in_archive);
    ++			if (info->base)
    ++				strbuf_addstr(&path_in_archive, info->base);
    ++			strbuf_addstr(&path_in_archive, basename(path));
    ++
    ++			strbuf_reset(&content);
    ++			if (strbuf_read_file(&content, path, info->stat.st_size) < 0)
    ++				err = error_errno(_("could not read '%s'"), path);
    ++			else
    ++				err = write_entry(args, &fake_oid, path_in_archive.buf,
    ++						  path_in_archive.len,
    ++						  canon_mode(info->stat.st_mode),
    ++						  content.buf, content.len);
    ++		} else {
    ++			err = write_entry(args, &fake_oid,
    ++					  path, strlen(path),
    + 					  canon_mode(info->stat.st_mode),
    +-					  content.buf, content.len);
     +					  info->content, info->stat.st_size);
    -+		else if (strbuf_read_file(&content, path,
    -+					  info->stat.st_size) < 0)
    - 			err = error_errno(_("cannot read '%s'"), path);
    - 		else
    - 			err = write_entry(args, &fake_oid, path_in_archive.buf,
    ++		}
    ++
    + 		if (err)
    + 			break;
    + 	}
     @@ archive.c: static void extra_file_info_clear(void *util, const char *str)
      {
      	struct extra_file_info *info = util;
2:  208f4aad5f ! 2:  5e9d19a70f archive --add-virtual-file: allow paths containing colons
    @@ Commit message
     
      ## Documentation/git-archive.txt ##
     @@ Documentation/git-archive.txt: OPTIONS
    - 	by concatenating the value for `--prefix` (if any) and the
    - 	basename of <file>.
    + 	by concatenating the value of the last `--prefix` option (if any)
    + 	before this `--add-virtual-file` and `<path>`.
      +
     -The `<path>` cannot contain any colon, the file mode is limited to
     -a regular file, and the option may be subject to platform-dependent
     -command-line limits. For non-trivial cases, write an untracked file
     -and use `--add-file` instead.
     +The `<path>` argument can start and end with a literal double-quote
    -+character; The contained file name is interpreted as a C-style string,
    ++character; the contained file name is interpreted as a C-style string,
     +i.e. the backslash is interpreted as escape character. The path must
     +be quoted if it contains a colon, to avoid the colon from being
     +misinterpreted as the separator between the path and the contents, or
    @@ t/t5003-archive-zip.sh: check_zip with_untracked
      test_expect_success UNZIP 'git archive --format=zip --add-virtual-file' '
     +	if test_have_prereq FUNNYNAMES
     +	then
    -+		PATHNAME=quoted:colon
    ++		PATHNAME="pathname with : colon"
     +	else
    -+		PATHNAME=quoted
    ++		PATHNAME="pathname without colon"
     +	fi &&
      	git archive --format=zip >with_file_with_content.zip \
    -+		--add-virtual-file=\"$PATHNAME\": \
    ++		--add-virtual-file=\""$PATHNAME"\": \
      		--add-virtual-file=hello:world $EMPTY_TREE &&
      	test_when_finished "rm -rf tmp-unpack" &&
      	mkdir tmp-unpack && (
      		cd tmp-unpack &&
      		"$GIT_UNZIP" ../with_file_with_content.zip &&
      		test_path_is_file hello &&
    -+		test_path_is_file $PATHNAME &&
    ++		test_path_is_file "$PATHNAME" &&
      		test world = $(cat hello)
      	)
      '
3:  bc1164404f = 3:  4f5b3aa775 scalar: validate the optional enlistment argument
4:  69daeb7d9d ! 4:  f4f070df8e Implement `scalar diagnose`
    @@ Metadata
     Author: Johannes Schindelin <Johannes.Schindelin@xxxxxx>
     
      ## Commit message ##
    -    Implement `scalar diagnose`
    +    scalar: implement `scalar diagnose`
     
         Over the course of Scalar's development, it became obvious that there is
         a need for a command that can gather all kinds of useful information
5:  5c1ef19524 = 5:  0417d8abe4 scalar diagnose: include disk space information
6:  0325b9c3ab = 6:  5531b65ddb scalar: teach `diagnose` to gather packfile info
7:  8fee365b07 = 7:  ce9eba5e32 scalar: teach `diagnose` to gather loose objects information






[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux