Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial Web服务器-为什么我下载的是.bz2.tar文件而不是.tar.bz2文件?_Mercurial_Tar_Bitbucket_Bzip2 - Fatal编程技术网

Mercurial Web服务器-为什么我下载的是.bz2.tar文件而不是.tar.bz2文件?

Mercurial Web服务器-为什么我下载的是.bz2.tar文件而不是.tar.bz2文件?,mercurial,tar,bitbucket,bzip2,Mercurial,Tar,Bitbucket,Bzip2,据我所知,.tar文件包含目录和其他文件,.bz2是一个使用bzip2压缩的文件 因此,大多数bzip2压缩的柏油球结束于: .tar.bz2 这是施加在沥青球上的bzip2压缩 但是,每当我从Mercurial Web服务器下载源代码时,无论是从以下站点获得的内部源代码: hg serve 或者从BitBucket中,我得到了以 .bz2.tar 这对我来说没有意义,因为你不能对多个文件应用bzip2压缩,这就是为什么你需要先“tar”它们 这是Mercurial中的bug吗?或者这是我

据我所知,.tar文件包含目录和其他文件,.bz2是一个使用bzip2压缩的文件

因此,大多数bzip2压缩的柏油球结束于:

.tar.bz2
这是施加在沥青球上的bzip2压缩

但是,每当我从Mercurial Web服务器下载源代码时,无论是从以下站点获得的内部源代码:

hg serve
或者从BitBucket中,我得到了以

.bz2.tar
这对我来说没有意义,因为你不能对多个文件应用bzip2压缩,这就是为什么你需要先“tar”它们

这是Mercurial中的bug吗?或者这是我的网络浏览器中的一个bug(我在Windows中尝试过谷歌Chrome,在Ubuntu中尝试过Firefox)?或者这只是一件奇怪的事,但没有什么区别


我下载的最新来源是Mercurial图书的存储库。

这是bitbucket中的一个bug,请向他们报告:

我想我看到了问题所在。下载中的
内容类型
标题不可靠:

% 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
文件。当我在谷歌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提供的信息不好,浏览器对文件名考虑过多。

但“hg serve”也会出现同样的情况,这难道不是Mercurial中更可能出现的问题吗?我只是大声猜测,我用的是1.6.3。当您将鼠标悬停在链接上时,它们看起来很正常,但当您实际下载该文件时,您会看到其他内容。我刚刚在本地克隆的hgbook存储库上做了一个“hg服务”,我得到的文件名为hgbook-93154fbaae9b.tar.bz2.tar,比BitBucket好一点,但仍然很奇怪。我在回答中找到了原因。它的扩展名和内容类型不匹配,所以你的浏览器通过为它被告知的内容类型附加“正确”的扩展名来“帮助”你。这似乎是有道理的,但我不是HTTP方面的专家。有没有办法向Mercurial开发团队报告这一点?我今天下午发送了一个补丁,修正了他们开发列表中的内容类型。我们会看到它的发展方向。今天mercurial接受了补丁。它将在下一版本中发布。