跳转到主要内容

从标签创建python sdists

项目描述

tags2sdists

Tags2sdists可以将标签转换为python sdists,形成一个可以作为公司内部pypi(Python包索引)结构的结构。

基本操作

Tags2sdists查看两个目录

  • 一个源目录(“CHECKOUTDIR”)包含检出。根据版本控制系统,每个检出(svn trunk检出,git/hg克隆)都会根据该版本控制系统检查标签。

  • 一个目标目录(“SDISTDIR”),在其中创建每个软件包的目录,sdists的命名方式为PACKAGENAME-1.2.tar.gz

这两个目录通过检查版本控制系统中可用但目标目录中缺失的软件包/标签来保持同步。如果缺失,将生成一个“sdist”(.tar.gz源分布)并将其放置在目标目录中。

用法

Tags2sdists提供tags2sdists命令

Usage: tags2sdists CHECKOUTDIR SDISTDIR
    CHECKOUTDIR: directory with checkouts
    SDISTDIR: directory with sdist package directories

Options:
  -a, --build-all Build all releases (=don't stop if the newest tag is found)
  -h, --help      Show this help message and exit
  -v, --verbose   Show debug output
  -q, --quiet     Show minimal output

使用--build-all,构建所有标签。默认行为有助于处理表现不佳的旧标签,但如果所有软件包都干净,则--build-all是一个好的选择,因为它也会构建旧版本的错误修复版本。

设置

安装tags2sdists本身就像pip install tags2sdistseasy_install tags2sdists或以常规方式将其包含在您的buildout中一样简单。

接下来,您需要CHECKOUTDIR和SDISTDIR目录。

CHECKOUTDIR:您需要一个包含签出的目录。手动操作即可。但是当您使用svn时,一个包含 svn:externals 的目录可能更为方便。对于其他所有情况(包括svn),我会使用 checkoutmanager。创建一个配置文件(checkoutmanager.cfg),如下所示

[internalprojects]
vcs = git
basedir = /srv/packages/var/checkouts/
checkouts =
    git@github.com:lizardsystem/nensskel.git
    git@github.com:lizardsystem/lizard-ui.git
    git@github.com:lizardsystem/tags2sdists.git

设置一个cron作业,运行 checkoutmanager --configfile=YOURCONFIGFILE,它将更新您配置的基础目录中的签出。 (在同一cron作业中,之后启动 tags2sdists)。

SDISTDIR:任何地方的目录都行。您将在其中获得类似pypi的目录结构。

像tags2sdists生成的结构对于easy_install和buildout来说是一个完美的索引,如果让apache托管它。唯一的问题是:您只能有一个索引(注意:pip显然支持多个索引)。您可以通过在apache中重定向您到pypi来解决问题,当找不到内容时。

以下是一个示例apache配置片段

# Allow indexing
Options +Indexes
IndexOptions FancyIndexing VersionSort

# Start of rewriterules to use our own var/private/* packages
# when available and to redirect to pypi if not.
RewriteEngine On
# Use our robots.txt:
RewriteRule ^/robots.txt - [L]
# Use our apache's icons:
RewriteRule ^/icons/.* - [L]
# We want OUR index.  Specified in a weird way as apache
# searches in a weird way for index.htm index.html index.php etc.
RewriteRule ^/index\..* - [L]

# Use our var/private/PROJECTNAME if available,
# redirect to pypi otherwise:
RewriteCond /path/on/server/var/private/$1 !-f
RewriteCond /path/on/server/var/private/$1 !-d
RewriteRule ^/([^/]+)/?$ http://pypi.python.org/pypi/$1/ [P,L]

# Use our var/private/PROJECTNAME/project-0.1.tar.gz if available,
# redirect to pypi otherwise:
RewriteCond /path/on/server/var/private/$1 !-d
RewriteRule ^/([^/]+)/([^/]+)$ http://pypi.python.org/pypi/$1/$2 [P,L]

使用由apache托管的索引

您可以通过两种方式使用此类定制的apache索引。Easy_install有一个 -i 选项来传递索引

$> easy_install -i http://packages.my.server/ zest.releaser

In buildout中,您可以设置如下

[buildout]
index = http://packages.my.server/
parts =
    ...

开发

要运行测试,全局安装 tox 并直接运行它。

对于本地测试,使用virtualenv和pip安装

$ python3 -m venv .
$ bin/pip install -e .

致谢

tags2sdists的变更日志

1.5 (2019-12-19)

  • 在日志记录中进行的小改动:通过显示每个包的名称来使进度更清晰。这包括缺失sdists的列表(如果有)。

1.4.1 (2019-12-18)

  • 修复了从1.4开始的bug……

1.4 (2019-12-18)

  • 添加了–build-all选项:如果找到最新标签则不停下来,而是构建所有标签。

1.3 (2019-09-13)

  • 更新了设置(pytest,tox,travis-ci集成等)。

  • 使tags2sdists与python3兼容(tox测试2.7和3.7)。

1.2 (2015-05-26)

  • 补偿较新的setuptools版本。

1.1 (2013-07-12)

  • 寻找缺失标签的新方法:我们保留旧的未使用/错误/重命名的标签。

  • 从缺失标签列表中删除名称中包含“dev”的标签。

1.0 (2013-01-15)

  • 修复了临时目录清理的bug:在特定情况下,它留下了一个空目录。

0.7.1 (2011-12-08)

  • 在0.7的临时目录清理后切换回正确的目录。

0.7 (2011-12-08)

  • 添加了更多与0.6的边缘情况相关的日志。

  • 运行后清理临时目录。

0.6 (2011-12-07)

  • 补偿一个包被重命名的情况。

0.5 (2011-10-17)

  • 修复了checkout目录中错误的setup.py:其中的错误会在sdist目录中生成名为 Traceback\ (most\ recent\ call\ last): 的目录……

0.4 (2011-10-12)

  • 内部,传递到命令行的目录被转换为绝对路径。这是必要的,因为有相当多的 os.chdir()

0.3 (2011-10-12)

  • 添加了文档。

  • 将脚本从make_sdists重命名为tags2sdists。

0.2 (2011-10-11)

  • 添加了一个脚本,该脚本结合了sdist tarball的创建与目标目录的解析,并生成所有必要的tarballs。

  • 添加了创建单个sdist tarball的方法(通过zest.releaser)。

0.1 (2011-10-10)

  • 添加了对包含sdists的目标目录的解析。

  • 由nensskel创建的初始库骨架。

项目详细信息


下载文件

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

源分布

tags2sdists-1.5.tar.gz (24.6 kB 查看哈希值)

上传时间

由以下支持