2010-09-20 21 views
0

Je crois comprendre qu'un fichier .tar contient des répertoires et d'autres fichiers, et un .bz2 est un fichier compressé avec la compression bzip2.Mercurial Web Server - Pourquoi est-ce que je télécharge un fichier .bz2.tar au lieu d'un fichier .tar.bz2?

Par conséquent, la plupart des tarballs avec la fin de bzip2 dans:

.tar.bz2 

Quelle est la compression bzip2 appliquée à un tarball.

Cependant, chaque fois que je télécharger le code source d'un serveur Web Mercurial, que ce soit l'interne que vous obtenez:

hg serve 

Ou de BitBucket, je reçois quelque chose qui se termine par

.bz2.tar 

qui Cela n'a pas de sens pour moi, car vous ne pouvez pas appliquer la compression bzip2 sur plusieurs fichiers, c'est pourquoi vous devez les "goudronner" en premier.

Est-ce un bug dans Mercurial? Ou est-ce un bug dans mon navigateur web (j'ai essayé Google Chrome sous Windows et Firefox sous Ubuntu)? Ou est-ce quelque chose qui est juste bizarre mais qui ne fait pas de différence?

La dernière source que j'ai téléchargée était de http://bitbucket.org/bos/hgbook qui est le référentiel pour le livre de Mercurial.

Répondre

1

Je pense que je vois le problème. L'en-tête Content-Type dans le téléchargement est bancal:

% 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 

avis l'en-tête Content-Disposition indique le navigateur utilise un nom de fichier avec l'extension correcte, mais l'en-tête Content-Type dit que c'est un fichier .tar. Quand je fais ce téléchargement dans Google Chrome, je reçois un fichier résultant nommé mayorguard-hashid.tar.gz.tar qui n'est pas correct.

L'exemple était au-dessus de hgweb et celui ci-dessous est de 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 

Je dirais que Mercurial donne une mauvaise information et le navigateur est Overthinking le nom du fichier.

+0

Cela semble logique, mais je ne suis pas un expert sur HTTP. Existe-t-il un moyen de rapporter cela à l'équipe de développement de Mercurial? – pcd6623

+2

J'ai envoyé un correctif corrigeant les types de contenu à leur liste de développement cet après-midi. Nous verrons où ça va. –

+0

Patch a été accepté dans mercurial aujourd'hui. Ce sera dans la prochaine version. –

1

Ce bogue dans bitbucket, s'il vous plaît signaler les: http://bitbucket.org/jespern/bitbucket/issues/new/

+0

Mais la même chose se produit avec "hg serve", cela ne poserait-il pas un problème plus probable dans Mercurial? Je ne fais que spéculer à voix haute. – pcd6623

+0

J'utilise 1.6.3. Lorsque vous passez la souris sur les liens, ils semblent normaux, mais lorsque vous téléchargez le fichier, vous obtenez autre chose. Je viens de faire un "hg serve" sur mon clone local du dépôt hgbook, et le fichier que j'ai obtenu s'appelait hgbook-93154fbaae9b.tar.bz2.tar, ce qui est un peu mieux que BitBucket, mais quand même étrange. – pcd6623

+1

J'ai le pourquoi de cela dans ma réponse. C'est l'extension et le type de contenu ne correspondent pas si votre navigateur "aide" en apposant la "bonne" extension pour le type de contenu, il est dit. –