Am 27.05.22 um 21:01 schrieb Junio C Hamano: > René Scharfe <l.s.r@xxxxxx> writes: > >> --prefix=<prefix>/:: >> - Prepend <prefix>/ to each filename in the archive. >> + Prepend <prefix>/ to paths in the archive. Can be repeated; its >> + leftmost value is used for all tracked files. See below which >> + value gets used by `--add-file`. > > Doesn't "the last one wins" take the rightmost one? Ha ha! Classic mistake, I do that all the time, especially when in a hurry. >_< > >> @@ -58,8 +60,9 @@ OPTIONS >> --add-file=<file>:: >> Add a non-tracked file 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 leftmost `--prefix` option to >> + the right of this `--add-file` (if any) and the basename of >> + <file>. > > It is not what archive.c::add_file_cb() seems to be doing, though > > It is passed the pointer to "base" that is on-stack of > parse_archive_args(), which is the same variable that is used to > remember the latest value that was given to "--prefix". Then it > concatenates the argument it received after that base value, so > > by concatenating the value of the last "--prefix" seen on the > command line (if any) before this `--add-file` and the basename > of <file>. > > probably. I always get my left and right mixed up X-<. You too? So yeah, avoiding the terms is appealing. > >> @@ -194,6 +197,12 @@ EXAMPLES >> commit on the current branch. Note that the output format is >> inferred by the extension of the output file. >> >> +`git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD`:: >> + >> + Creates a tar archive that contains the contents of the latest >> + commit on the current branch with no prefix and the untracked >> + file 'configure' with the prefix 'build/'. >> + >> `git config tar.tar.xz.command "xz -c"`:: >> >> Configure a "tar.xz" format for making LZMA-compressed tarfiles. > > Thanks. > > This patch probably needs to come before the "scalar diagnose" > series, which we haven't heard much about recently (no, I am not > complaining---we all heard that Dscho is busy). > > --- >8 --- Subject: [PATCH v3] archive: improve documentation of --prefix Document the interaction between --add-file and --prefix by giving an example. Helped-by: Junio C Hamano <gitster@xxxxxxxxx> Signed-off-by: René Scharfe <l.s.r@xxxxxx> --- Documentation/git-archive.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt index bc4e76a783..94519aae23 100644 --- a/Documentation/git-archive.txt +++ b/Documentation/git-archive.txt @@ -49,7 +49,9 @@ OPTIONS Report progress to stderr. --prefix=<prefix>/:: - Prepend <prefix>/ to each filename in the archive. + 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`. -o <file>:: --output=<file>:: @@ -57,9 +59,9 @@ OPTIONS --add-file=<file>:: Add a non-tracked file 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>. + multiple files. The path of the file in the archive is built by + concatenating the value of the last `--prefix` option (if any) + before this `--add-file` and the basename of <file>. --worktree-attributes:: Look for attributes in .gitattributes files in the working tree @@ -194,6 +196,12 @@ EXAMPLES commit on the current branch. Note that the output format is inferred by the extension of the output file. +`git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD`:: + + Creates a tar archive that contains the contents of the latest + commit on the current branch with no prefix and the untracked + file 'configure' with the prefix 'build/'. + `git config tar.tar.xz.command "xz -c"`:: Configure a "tar.xz" format for making LZMA-compressed tarfiles. -- 2.35.3