跳转到主要内容

从互联网上获取fetch内容

项目描述

从互联网上获取fetch内容

fetch.py是一个打包为的单文件Python模块,易于安装和Python导入。fetch的目的是将远程资源(URL)镜像到本地文件系统中,以便同步和更新希望以这种方式镜像的依赖项。

格式

fetch从以下格式的清单中获取

[URL] [Destination] [Type]

URL可以包含一个哈希标签(例如http://example.com/foo#bar/fleem),该标签用于从多目录资源中提取子目录。

资源的类型用于将对象分配给负责获取对象的包含的Fetchers。

使用清单是为了从特定的fetch运行中获取多个资源。

示例

检出存储库并运行python setup.py develop后,您应该在示例清单上运行fetch

fetch example.txt

这将创建一个相对清单的tmp目录,并将多个资源拉入其中。

Fetchers

fetch包括几个用于获取资源的对象

file : fetch a single file
tar : fetch and extract a tarball
hg : checkout a mercurial repository
git : checkout a git repository

由于它是单个资源,因此文件fetcher不能有哈希标签子路径。

尽管fetch包含了一组fetchers,但您可以将任意列表传递给fetch.Fetch的构造函数。

版本控制

hg和git抓取器从版本控制系统抓取数据,并具有附加选项。构造函数的唯一当前选项是export,默认为True。如果export为True,则将仓库导出到非版本化结构。如果在URL中指定了带有#的子路径,则仓库也将被导出。

待办事项

  • 使用manifestparser .ini文件与另一种清单格式:当我开始工作于fetch时,我认为一个特定领域的清单会是一个很大的胜利。但现在,可能一个.ini类型的清单看起来差不多,并且是已经使用的东西。内部切换不会太糟糕,但如果fetch.py作为单个文件使用,它不能有“传统”的python依赖。由于manifestparser.py也是单个文件,并且fetch无论如何都需要网络访问,因此可能可以使用require模式来完成此目的。

  • clobber:通常,您希望覆盖现有资源,以避免关于上游依赖的更名。

  • 仅输出子路径:通常,您不需要从整个清单中抓取,只需从清单的某些子路径中抓取。您应该能够基于目标子路径输出要镜像的子集。CLI选项--dest旨在用于此目的,但目前尚未使用。

  • 抓取器选项:当前read_manifests在存在形式为如foo=one,bar=two的字符串时,将未使用的列读入options字典中,如{'foo': 'one', 'bar': 'two'}。目前还没有这种需求,也没有使用。如果我们想要有资源特定的选项,我们应该使用这个并让它工作。否则它可以被删除。

  • python包抓取器:通常,您会想将python包作为一个资源抓取。这实际上会抓取对象(使用另一个抓取器),并将python setup.py sdist的结果(未解包)作为一个资源。这将删除不属于python包的文件。未知包括如何指定子抓取器。您也可以根据需要包括其他特定领域的抓取器。

  • 注意python 2.5+的具体情况:fetch当前使用至少python 2.5中的os.path.relpath以及可能的其他2.5+特性。这些至少应该被记录,并在必要时进行检查。其中一个重新实现可以在https://github.com/mozilla/mozbase/blob/master/manifestdestiny/manifestparser.py#L66找到

未解决的问题

fetch的一个常见故事是将文件镜像到VCS仓库,因为远程资源需要作为仓库的一部分,并且没有更好的方式来检索和/或更新它们。然而,如果这些远程资源被修改了怎么办?在一个理想的生态系统中,修复将自动分类并触发上游包含,或者上游的差异被保留在本地修改中(尽管供应商分支等更适合后者类的问题,并且通常在可消费上游依赖的系统不那么侵入时被劝阻)。


Jeff Hammel http://k0s.org/mozilla/hg/fetch

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

fetch-0.0.tar.gz (7.3 kB 查看哈希值)

上传时间

支持