Mercurial Web Server - Почему я загружаю файл .bz2.tar вместо файла .tar.bz2? - PullRequest
0 голосов
/ 20 сентября 2010

Насколько я понимаю, файл .tar содержит каталоги и другие файлы, а файл .bz2 - это файл, сжатый сжатием bzip2.

Поэтому большинство тарболлов со сжатием bzip2 заканчиваются на:

.tar.bz2

Что такое сжатие bzip2, применяемое к тарболу.

Однако всякий раз, когда я загружаю исходный код с веб-сервера Mercurial, либо внутренний, который вы получаете:

hg serve

Или из BitBucket, я получаю что-то, что заканчивается

.bz2.tar

Что не имеет смысла для меня, потому что вы не можете применить сжатие bzip2 к нескольким файлам, поэтому вам нужно сначала их «сжать».

Это ошибка в Mercurial? Или это ошибка в моем веб-браузере (я пробовал Google Chrome в Windows и Firefox в Ubuntu)? Или это что-то странное, но не имеет значения?

Последний загруженный мной источник был от http://bitbucket.org/bos/hgbook, который является хранилищем книги Mercurial.

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Мне кажется, я вижу проблему. Заголовок Content-Type в загружаемом файле является выигрышным:

% GET -Ssed http://host/mayorguard/archive/tip.tar.bz2
GET http://ry4an.org/hg/mayorguard/archive/tip.tar.bz2 --> 200 Script output follows
Connection: close
Date: Mon, 20 Sep 2010 19:01:00 GMT
Server: Apache/2.2.14 (Ubuntu)
Content-Type: application/x-tar
Client-Date: Mon, 20 Sep 2010 19:01:00 GMT
Client-Peer: 75.146.191.221:80
Client-Response-Num: 1
Client-Transfer-Encoding: chunked
Content-Disposition: attachment; filename=mayorguard-dee99508cd77.tar.bz2

Обратите внимание, что заголовок Content-Disposition предлагает браузеру использовать имя файла с правильным расширением, но заголовок Content-Type говорит, что это файл .tar. Когда я делаю эту загрузку в Google Chrome, я получаю файл с именем mayorguard-hashid.tar.gz.tar, который не является правильным.

Пример выше был от hgweb, а пример ниже от bitbucket:

% GET -Ssed http://bitbucket.org/mailchimp/etsy-php/get/000000000000.bz2
GET http://bitbucket.org/mailchimp/etsy-php/get/000000000000.bz2 --> 200 OK
Cache-Control: max-age=1800
Connection: close
Date: Mon, 20 Sep 2010 19:05:16 GMT
Accept-Ranges: bytes
Server: nginx/0.7.67
Content-Length: 189
Content-Type: application/x-tar
Expires: Mon, 20 Sep 2010 19:35:16 GMT
Last-Modified: Mon, 20 Sep 2010 19:05:16 GMT
Client-Date: Mon, 20 Sep 2010 19:05:16 GMT
Client-Peer: 207.223.240.182:80
Client-Response-Num: 1
Content-Disposition: attachment; filename=etsy-php-000000000000.bz2

Я бы сказал, что Mercurial предоставляет неверную информацию, а браузер переосмысливает имя файла.

1 голос
/ 20 сентября 2010

Это ошибка в битбакете, сообщите об этом им: http://bitbucket.org/jespern/bitbucket/issues/new/

...