git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: zip files created with git archive flags text files as binaries

From
René Scharfe <l.s.r@web.de>
Date
Feb 23, 2015, 19:30 UTC
Message-ID
<54EB7FE4.7070804@web.de>
In-Reply-To
<12g5ss8uqwflv.dlg@nililand.de>
Am 23.02.2015 um 14:58 schrieb Ulrike Fischer:
> I'm using git on windows 7.
>
> $ git --version
> git version 1.9.4.msysgit.0
Git's code for ZIP file creation hasn't changed since then.
Show 12 quoted lines
> Some days ago I uploaded a latex package to CTAN (www.ctan.org).
> I created the zip-file with
>
> git archive --format=zip --prefix=citeall/
> --output=zip/citeall_2015-02-20.zip HEAD
>
> The zip contained four text files and a pdf.
>
> The CTAN maintainers informed me that all files in the zip are
> flagged as binaries and this makes it difficult for them to process
> them further (they want to correct line feeds of the text files:
> http://mirror.ctan.org/tex-archive/help/ctan/CTAN-upload-addendum.html#crlf)

I wouldn't have expected that this ZIP file attribute is actually used in the wild.

Show 18 quoted lines
> unzip -Z reports for my zip:
>
> $ unzip -Z citeall_2015_02_20.zip
> Archive:  citeall_2015_02_20.zip
> Zip file size: 105509 bytes, number of entries: 6
> drwx---     0.0 fat        0 bx stor 15-Feb-20 17:07 citeall/
> -rw----     0.0 fat      458 bx defN 15-Feb-20 17:07 citeall/README
> -rw----     0.0 fat   102244 bx defN 15-Feb-20 17:07
> citeall/citeall.pdf
> -rw----     0.0 fat     3431 bx defN 15-Feb-20 17:07
> citeall/citeall.sty
> -rw----     0.0 fat     3971 bx defN 15-Feb-20 17:07
> citeall/citeall.tex
> -rw----     0.0 fat      557 bx defN 15-Feb-20 17:07
> citeall/examples-citeall.bib
> 6 files, 110661 bytes uncompressed, 104669 bytes compressed:  5.4%
>
> The problem are all the "bx" entries.
The "x" is due to the extra mtime header and unrelated to your issue.

"b" (binary) is set unconditionally to ensure that line endings are kept intact by unpackers on all platforms.

"fat" is used as lowest common denominator for regular files and directories; "unx" is used for symbolic links.

Show 21 quoted lines
> When I zip all the files with the standard windows zip-tool I get
> this:
>
> $ unzip -Z citeall-win.zip
> Archive:  citeall-win.zip
> Zip file size: 105275 bytes, number of entries: 5
> -rw----     2.0 fat   102244 b- defN 15-Feb-20 17:07
> citeall/citeall.pdf
> -rw----     2.0 fat     3431 t- defN 15-Feb-20 17:07
> citeall/citeall.sty
> -rw----     2.0 fat     3971 t- defN 15-Feb-20 17:07
> citeall/citeall.tex
> -rw----     2.0 fat      557 t- defN 15-Feb-20 17:07
> citeall/examples-citeall.bib
> -rw----     2.0 fat      458 t- defN 15-Feb-20 17:07 citeall/README
> 5 files, 110661 bytes uncompressed, 104675 bytes compressed:  5.4%
>
> Here the text files have a correct t flag.
>
> I don't know if it the problem exists also with zips created with
> git archive on non-windows OS.
Yes, git archive creates the same ZIP files everywhere.
> Would it be possible to correct the zip-backend so that it flags
> text files correctly? Or alternativly could one configure git
> archive to use another zip programm?

We would have to detect the line ending format (DOS, Unix, Macintosh, etc.) of each file, then set the attribute "t" (text) and the host system. The detection would slow down archive creation a bit and the resulting files would be different, of course, so this feature should only be enabled by a new command line option. I'll take a look.

René
Previous: Ulrike FischerNext: René Scharfe
Message 2 of 8 in “zip files created with git archive flags text files as binaries”
  1. Ulrike FischerFeb 23, 2015
  2. René ScharfeFeb 23, 2015
  3. René ScharfeMar 4, 2015
  4. archive-zip: add --text parameterRené Scharfe, Mar 4, 2015
  5. Junio C HamanoMar 5, 2015
  6. René ScharfeMar 5, 2015
  7. René ScharfeMar 5, 2015
  8. archive-zip: mark text files in archivesRené Scharfe, Mar 5, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.