跳转到主要内容

为简化大量包的大型项目的开发而设计的zc.buildout扩展。

项目描述

简介

https://fschulze.github.io/mr.developer/xkcd-buildout.png

让开发者先生帮您赢得永无止境的构建战!

(由 Matt Hamilton 混搭,原始来源 https://xkcd.com/303)

mr.developer 是一个 zc.buildout 扩展,使您能够轻松地处理包含大量包的构建,而您只想开发其中的一些。基本思路来自 Wichert Akkerman 的 plonenext 努力。

用法

mr.developer 添加到您的 [buildout] 部分的 extensions 条目

[buildout]
extensions = mr.developer

这启用了额外的 [buildout] 选项

这指定了包含您的包的仓库信息的部分名称。默认为 sources

源目录

这指定了您的开发包将被放置的默认目录。默认为 src

自动检出

这指定了在构建时应该检出的包的名称。已检出的包将被跳过。您可以使用 * 作为 sources 中所有包的通配符。

始终检出

这默认为 false。如果为 true,则在每次构建运行期间,将更新由 auto-checkout 指定并当前处于开发模式的包。如果设置为 force,则即使包已损坏,也会更新包,而不是交互式请求。

更新 Git 子模块

这默认为 always。如果为 always,则每个开发包中的子模块将在检出时注册和更新,新子模块将通过 develop 命令进行更新。如果您不想初始化任何子模块,请将值设置为 never。如果设置为 checkout,子模块中的代码将仅在第一次拉取时更新,因此 develop up 命令将使子模块为空。请注意,更新仅初始化新的子模块,不会从原始子模块仓库拉取最新代码。

始终接受服务器证书

这默认为 false。如果为 true,则不接受询问即可接受无效的服务器证书(对于子版本控制库)。

mr.developer-threads

这设置用于并行检出的线程数。有关为什么您可能需要此设置的原因,请参阅 检出和更新期间的锁定

git-clone-depth

这设置 git 拉取历史的大小(git clone –depth 参数)。对于开发来说不是很有用,但在 CI 环境中非常有用。另一个主要好处是克隆速度加快,因为只下载少量修订版本。默认是获取完整历史。

[sources] 部分条目的格式为

[sources]
name = kind url [key=value ...]

其中各个部分为

名称

包名称。

类型

仓库的类型。目前支持 svnhggitbzrdarcscvsfs

URL

仓库的位置。此值特定于所使用的版本控制系统。

key=value

您可以使用此功能为每个独立软件包添加选项。键(key)、值(value)以及等于号周围不允许有空格。有关选项的说明,请参阅下文。(注意:不要用方括号括起您的 key=value,我们在这里只使用方括号 [ ] 来表示添加选项是可选的。)

每个软件包的选项包括:

通用选项

path 选项允许您设置软件包将被检出到的基目录。软件包的名称将被附加到基路径。如果未设置 path,则使用 sources-dir

使用 full-path 您可以设置软件包将被检出到的目录。这是实际目标,不会添加任何内容。例如

[sources]
pkg = fs pkg full-path=/path/to/pkg

update 选项允许您指定在 buildout 过程中是否更新软件包。如果设置为 true,则始终更新。如果设置为 false,则永远不会更新,即使全局 always-checkout 选项已设置。

egg 选项使得管理非 egg 软件包成为可能,使用 egg=false。所有如 update 等命令都按预期工作,但软件包不会被添加到 develop buildout 选项,并且 activatedeactivate 命令会跳过该软件包。

newest_tag 选项允许您检出/更新到最新的标签。该选项的可能值是“true”和“false”。newest_tag_prefix 选项允许您限制标签的选择,使其以指定的前缀开头。这两个选项目前仅适用于 cvshg

svn

url 是 subversion 支持的 URL 之一。

您可以使用带有修订版本引用的 URL,例如 https://example.com/trunk@123

您还可以设置 revrevision 选项,它可以是类似于 rev=123 的引用,或者是一个最小修订版本,例如 rev=>123rev=>=123。当您设置最小修订版本时,当当前修订版本较低时,会更新仓库。

git

branch 选项允许您使用特定的分支而不是 master。

rev 选项允许您使用特定的修订版本(通常是标签)而不是 HEAD。

pushurl 选项允许您明确地将推送 URL 与通过 git config 配置的拉取 URL 分离。

submodules 选项允许您初始化现有的子模块。默认值由 buildout 选项 update-git-submodules 控制。可能的值与之前在 update-git-submodules 选项中描述的相同。

depth 选项允许您指定要克隆的历史记录量。这就是所谓的 浅克隆。请注意,这对于常规克隆通常没有太大用处,另一方面,对于一次性使用(例如持续集成)它可以使克隆变得更快。此选项覆盖了通用的 git-clone-depth 值,因此可以为每个源指定深度。

请注意,branchrev 选项是互斥的。

hg

branch 选项允许您使用特定的分支而不是默认分支。

“rev”选项允许您在buildout之后强制检出特定的修订版本(哈希值、标签、分支)。

bzr

目前没有其他选项。

darcs

目前没有其他选项。

cvs

“cvs_root”选项可以用来覆盖$CVSROOT环境变量的设置。 “tag”选项强制检出/更新给定的标签,而不是CVS HEAD。

“tag_file”选项定义从哪个文件中读取标签(在使用“newest_tag”的情况下)。默认值是“setup.py”。

fs

这允许您在没有版本控制系统或使用不受支持的版本控制系统的情况下,在文件系统中添加包。您可以激活和停用包,但您不会获得状态信息,也不能更新等。

“url”需要与包的“name”相同。

以下是一个示例,说明您的“buildout.cfg”可能的样子

[buildout]
extensions = mr.developer
auto-checkout = my.package

[sources]
my.package = svn https://example.com/svn/my.package/trunk update=true
some.other.package = git git://example.com/git/some.other.package.git

当您运行buildout时,在您的buildout目录中会创建脚本“bin/develop”。使用此脚本,您可以对包执行各种操作,例如检出它们的源代码,而无需知道存储库的位置。

要了解脚本可以执行的操作,请运行“bin/develop help”。

如果您检出了一个包的源代码,您必须再次运行buildout。然后新包将被标记为开发egg,并清除其版本固定(如果有)。您可以使用“activate”和“deactivate”命令显式控制开发egg列表。

在更新期间,任何路径是符号链接的源都会被跳过,因为这假设开发者会手动处理它。它基本上被当作文件系统源处理。

配置

您可以在您的buildout的全局“~/.buildout/mr.developer.cfg”或局部“.mr.developer-options.cfg”中添加选项。但请不要编辑buildout中的“.mr.developer.cfg”,它是自动生成的。

在“[mr.developer]”部分,您有以下选项。

threads

这设置用于并行检出的线程数。有关为什么您可能需要此设置的原因,请参阅 检出和更新期间的锁定

在“[rewrites]”部分,您可以设置源的重写规则。如果您想要提供一个包含源代码的buildout给那些只对匿名用户只读的存储库,这非常有用。在这种情况下,开发者可以添加一个URL重写规则,自动将URL更改为可写存储库。

重写规则可以有多个操作符

=

匹配确切字符串。用于仅对某种类型的源进行操作,以及类似的事情。这不会重写任何内容,但会限制规则。

~=

匹配正则表达式。这不会重写任何内容,但会限制规则。

~

这运行正则表达式替换。替换从下一行读取。您可以在表达式中使用分组和反斜杠语法。请参阅re.sub文档。

以下是一些有用的示例

[rewrites]

plone_svn =
  url ~ ^http://svn.plone.org/svn/
  https://svn.plone.org/svn/

github =
  url ~ ^https://github.com/
  git@github.com:
  kind = git

my_mrdeveloper_fork =
  url ~ fschulze(/mr.developer.git)
  me\1

my_mrdeveloper_fork_alternate =
  url ~= fschulze/mr.developer.git
  url ~ fschulze/
  me/

扩展

您可以通过扩展mr.developer来教它新的工作副本类型,并添加或修改现有命令。

Mr.developer使用入口点来实现这一点。要详细了解如何创建入口点,您可以查看现有的入口点。

添加对新的工作副本类型的支持

向入口点组“mr.developer.workingcopytypes”添加一个条目。条目的键将用于buildout文件中源的部分。值应该是类。引用的类必须实现以下方法

- __init__(self, source)
- matches(self)
- checkout(self, **kwargs)
- status(self, verbose=False, **kwargs)
- update(self, **kwargs)

源是一个类似字典的对象。源对象提供了以下属性

- name
- url
- path

此外,它包含在buildout源行上可以定义的所有键值对,并且有一个名为exists的方法,用于返回路径是否已存在。

匹配方法必须返回,如果路径的检出与URL的仓库匹配

这些命令映射到mr.developer提供的命令。要查看潜在参数的列表,请检查命令的文档。命令checkoutupdate只返回它们想要在标准输出上打印的内容,status命令必须检查详细标志。如果详细标志已设置,则必须返回一个元组,包含它想要打印的内容以及VCS命令生成的输出。

所有对象都必须有列表_output,其中包含日志信息。请参考现有实现以了解如何填充此信息。

如果您的副本处理程序需要抛出错误,请以mr.developer.common.WCError为基类抛出错误。

如果您需要为新的命令添加新功能或更改某些内容的操作行为,尽量不编写新的副本处理程序。尽量使您的更改具有通用性,并将它们放入mr.developer。

添加新命令

将条目添加到入口点组mr.developer.commands。键将是命令本身的名称。

引用的类必须实现以下方法

- __init__(self, develop)
- __call__(self, args)

这里发生了一种控制反转。在初始化时,您会收到一个develop对象,该对象表示处理./bin/develop调用的类。现在,您的工作是修改develop对象的属性,以处理参数解析。创建一个ArgumentParser并将其添加到develop.parsers

在调用时,您可以执行您的操作。从mr.developer.commands.Command派生是一个好主意。它提供了方便的辅助方法

- get_workingcopies(self, sources)
- get_packages(args, auto_checkout, develop, checked_out)

get_workingcopies为您提供了一个WorkingCopies对象,该对象将委托所有工作副本操作到正确的工作副本处理程序。

get_packages是一个小助手,用于根据规则获取源。args可以是源名称的一个或多个正则表达式过滤器,其他属性是布尔标志,默认为False。False表示不进行过滤。因此,仅通过调用arg '.'来调用该方法将返回所有包。返回的对象是一个只包含源名称的集合。

要执行操作,您通过get_packages获取包名称,然后获取WorkingCopies对象并在此对象上调用您想要执行的操作。WorkingCopies对象检查哪个工作副本负责给定的包并将操作委派给该对象。WorkingCopies对象还处理线程功能。

develop对象有一个config属性。该对象可以用来存储您操作的配置。在config.develop下有一个字典,它存储是否将使用具有给定键的源进行源检出。

故障排除

脏SVN

您将收到如下错误

ERROR: Can't switch package 'foo' to 'https://example.com/svn/foo/trunk/' because it's dirty.

如果您没有修改src/foo下的包文件,则可以检查发生的情况,使用status -v。一个常见的原因是每次运行buildout时都会生成*.egg-info文件夹,并在svn状态中显示为未跟踪项。

您应该在~/.subversion/config中添加.egg-info到您的全局Subversion忽略中,如下所示

global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store *.egg-info

HTTPS证书

目前处理HTTPS证书的最佳方式是在手动检出源时永久接受它们。

Mercurial 报告不匹配的 URL

如果你使用了 launchpad 的 lp:// URL,就会发生这种情况。问题在于,hg 报告的是实际 URL,而不是 lp 快捷方式。

检出和更新过程中的锁定

特别是在多核机器上,由于并行检出,可能会出现锁定问题。你可以在项目的构建根目录下的 .mr.developer.cfg 文件中配置用于此操作的线程数,或在全局范围内在 ~/.buildout/mr.developer.cfg 中通过 [mr.developer] 部分的 threads 选项或在构建配置中的 buildout 部分使用 mr.developer-threads 选项来全局设置。将其设置为 1 应该可以解决这些问题,但这样会禁用并行检出并使过程稍微变慢。

此外,如果你在本地 ssh 配置中使用了 ControlPersist,并且你有一个使用 ssh 的源检出(例如 git@github.com:...),检出或更新可能可以正常工作,但 ssh 连接可能保持开启状态,而 mr.developer 无法退出,因为它正在等待 ssh 进程完成。

命令

以下是一个包含所有命令及其选项的列表。

activate (a)

usage: develop activate [-h] [-a] [-c] [-d]
                        package-regexp [package-regexp ...]

Add packages to the list of development packages.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all checked out
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.

arguments (args)

usage: develop arguments [-h]

Print arguments used by last buildout which will be used with the 'rebuild'
command.

optional arguments:
  -h, --help  show this help message and exit

checkout (co)

usage: develop checkout [-h] [-a] [-v] package-regexp [package-regexp ...]

Make a checkout of the packages matching the regular expressions and add them
to the list of development packages.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -v, --verbose        Show output of VCS command.

deactivate (d)

usage: develop deactivate [-h] [-a] [-c] [-d]
                          package-regexp [package-regexp ...]

Remove packages from the list of development packages.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all checked out
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.

help (h)

usage: develop help [-h] [--rst] [-z] [command]

Show help on the given command or about the whole script if none given.

positional arguments:
  command     The command you want to see the help of.

optional arguments:
  -h, --help  show this help message and exit
  --rst       Print help for all commands in reStructuredText format.
  -z, --zsh   Print info for zsh autocompletion

info

usage: develop info [-h] [-a] [-c] [-d] [--name] [-p] [--type] [--url]
                    [package-regexp [package-regexp ...]]

Lists informations about packages.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all declared
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       declared packages are processed.

Output options:
  The following options are used to print just the info you want, the order
  they are specified reflects the order in which the information will be
  printed.

  --name               Prints the name of the package.
  -p, --path           Prints the absolute path of the package.
  --type               Prints the repository type of the package.
  --url                Prints the URL of the package.

list (ls)

usage: develop list [-h] [-a] [-c] [-d] [-l] [-s]
                    [package-regexp [package-regexp ...]]

Lists tracked packages.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only show packages in auto-checkout list.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all checked out
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.
  -l, --long           Show URL and kind of package.
  -s, --status         Show checkout status.
                       The first column in the output shows the checkout
                       status:
                           '#' available for checkout
                           ' ' in auto-checkout list and checked out
                           '~' not in auto-checkout list, but checked out
                           '!' in auto-checkout list, but not checked out
                           'C' the repository URL doesn't match

purge

usage: develop purge [-h] [-n] [-f] [package-regexp [package-regexp ...]]

Remove checked out packages which aren't active anymore.

Only 'svn' packages can be purged, because other repositories may contain
unrecoverable files even when not marked as 'dirty'.

positional arguments:
  package-regexp  A regular expression to match package names.

optional arguments:
  -h, --help      show this help message and exit
  -n, --dry-run   Don't actually remove anything, just print the paths which
                  would be removed.
  -f, --force     Force purge even if the working copy is dirty or unknown
                  (non-svn).

rebuild (rb)

usage: develop rebuild [-h] [-n]

Run buildout with the last used arguments.

optional arguments:
  -h, --help     show this help message and exit
  -n, --dry-run  DEPRECATED: Use 'arguments' command instead. Don't actually
                 run buildout, just show the last used arguments.

reset

usage: develop reset [-h] [-a] [-c] [-d] [package-regexp [package-regexp ...]]

Resets the packages develop status. This is useful when switching to a new
buildout configuration.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all checked out
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.

status (stat, st)

usage: develop status [-h] [-a] [-c] [-d] [-v]
                      [package-regexp [package-regexp ...]]

Shows the status of tracked packages, filtered if <package-regexps> is given.
The first column in the output shows the checkout status:
    ' ' in auto-checkout list
    '~' not in auto-checkout list
    '!' in auto-checkout list, but not checked out
    'C' the repository URL doesn't match
    '?' unknown package (only reported when package-regexp is not specified)
The second column shows the working copy status:
    ' ' no changes
    'M' local modifications or untracked files
    '>' your local branch is ahead of the remote one
The third column shows the development status:
    ' ' activated
    '-' deactivated
    '!' deactivated, but the package is in the auto-checkout list
    'A' activated, but not in list of development packages (run buildout)
    'D' deactivated, but still in list of development packages (run buildout)

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -c, --checked-out    Only considers packages currently checked out. If you
                       don't specify a <package-regexps> then all checked out
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.
  -v, --verbose        Show output of VCS command.

update (up)

usage: develop update [-h] [-a] [-d] [-f] [-v]
                      [package-regexp [package-regexp ...]]

Updates all known packages currently checked out.

positional arguments:
  package-regexp       A regular expression to match package names.

optional arguments:
  -h, --help           show this help message and exit
  -a, --auto-checkout  Only considers packages declared by auto-checkout. If
                       you don't specify a <package-regexps> then all declared
                       packages are processed.
  -d, --develop        Only considers packages currently in development mode.
                       If you don't specify a <package-regexps> then all
                       develop packages are processed.
  -f, --force          Force update even if the working copy is dirty.
  -v, --verbose        Show output of VCS command.

变更日志

2.0.2 (2024-04-24)

  • 修复 ValueError:解包值过多(期望 2 个)。[flipmcf]

2.0.1 (2020-08-19)

  • 修复 Python 3 中的 bin/develop help

2.0.0 (2019-03-04)

  • rebuild/rb 命令中删除已弃用的 -n/--dry-run 选项。[fschulze]

  • 使用 universal_newlines 处理 git 的所有输出。[pbauer]

  • 修复 Python 3 中的详细状态。[pbauer]

  • 停止测试 Python 2.6 和 Python 3.3,从现在开始,无法保证这些 Python 版本能够正常工作。[fschulze]

1.38 (2017-03-17)

  • 使用 from __future__ import print_function 修复 help --rst 的输出。[fschulze]

  • 为开发包设置空版本标记,而不是从部分中移除版本标记。[fschulze]

1.37 (2017-03-04)

  • 增加有关 git 操作的更多信息,以便可以看到克隆了哪个仓库以及使用了哪个分支。[fschulze]

  • 修复 git 子模块与 git 2.x 的问题。[fschulze]

1.36 (2017-03-01)

  • 添加 buildout 选项 mr.developer-verbose,它可以在运行 buildout 时显示与运行 ./bin/develop up -v 相同的输出。[sunew]

  • 尊重更新时的 buildout -v 设置,就像它已经为检出做了这样。

1.35 - 2017-02-01

  • 不要在 Python 2 上使用 configparser 的回端口,以修复某些命令上的“Option values must be strings”异常。[MatthewWilkes]

  • 不再在 Python 3.2 上进行测试。[maurits]

  • 改进在 fs 模式下找不到目录时的错误消息。[idgserpro]

1.34 - 2015-09-30

  • 停止支持 python 2.4 和 2.5。使用 python 2.6 或更高版本或 python 3.2 或更高版本。[reinout]

  • 报告缺少的可执行文件(如 'hg'),而不是报告过于通用的“文件未找到”错误。[reinout]

  • 修复缺少部分的赋值问题。根据 buildout 的文档,option=valuebuildout:option=value 等效。修复问题 #151。[mvaled]

  • 修复从修订版切换到 git 分支的问题。当当前不在 git 分支上(例如在标签上)时,运行 develop 更新会尝试拉取并失败。现在我们只是获取,并像以前一样处理可能的分支切换和合并。修复问题 #162。[maurits]

  • 修复包含非[A-Za-z0-9.]字符的名称的鸡蛋未解绑问题。这意味着要正确解绑pkg.foo_bar,我们必须从构建出的[版本]部分删除pkg.foo-bar。[ale-rt (Alessandro Pisa)]

  • 在克隆git仓库时检出分支。[gforcada]

1.33 - 2015-05-25

  • 修复git-clone-depth全局选项,它需要保持为字符串而不是转换为数字。[gforcada, fschulze]

1.32 - 2015-05-23

  • 添加git-clone-depth全局选项和每个源深度的选项,以在git克隆中指定要克隆的历史记录量。[gforcada (Gil Forcada)]

  • 添加使用入口点添加命令的插件接口。[fschulze]

  • 如果源部分引用了缺失的部分,则抛出异常。[icemac (Michael Howitz)]

1.31 - 2014-10-29

  • 修复了一些git版本中的子模块匹配问题。[jod (Josip Delic), fschulze]

  • 为Python 3添加了compat.py。[jod (Josip Delic)]

  • 当svn无法切换到脏检查状态时提供更多信息。[gotcha]

  • Git:在没有指定分支的情况下尝试切换到master分支。如果没有master分支,不要在这种情况下报错。修复了问题#125 [maurits]

1.30 - 2014-03-14

  • 修复1.29版本中的回归问题。[Trii (Josh Johnston)]

1.29 - 2014-03-14

  • 保留在develop选项中指定的egg的顺序。[anjos (André Anjos)]

1.28 - 2014-01-23

  • Mercurial现在检查工作副本是否领先于远程分支。[rafaelbco]

1.27 - 2014-01-10

  • 修复了在默认编码未正确设置的情况下安装过程中的编码问题。修复了问题#127 [fschulze, jajadinimueter]

  • 修复了列出git分支失败时的错误信息。修复了问题#124 [toutpt (JeanMichel FRANCOIS), fschulze]

1.26 - 2013-09-10

  • 修复了git 1.6.0至1.6.2版本的分支选项。修复了问题#117。[maurits]

  • 跳过对符号链接源更新。[chaoflow (Florian Friesdorf)]

  • 在重建命令中废弃-n--dry-run,转而使用新的arguments命令。

1.25 - 2013-03-15

  • 支持git子模块。[sunbit]

  • 为mercurial和cvs添加了newest_tag选项。[kkujawinski, fschulze]

  • 修复了Python 3的修复问题。[fschulze, jajadinimueter (Florian Mueller)]

  • 修复了修订版本固定问题。参考#113 [do3cc (Patrick Gerken)]

  • 正确对齐status的输出。[fschulze]

1.24 - 2013-01-29

  • Mercurial现在可以切换分支。[bubenkoff (Anatoly Bubenkov), fschulze]

  • 修复了自1.22以来损坏的gitsvn/gitify工作副本类型。[rpatterson (Ross Patterson)]

  • 修复了自1.22以来损坏的deactivate命令。参考#105 [fschulze, icemac]

1.23 - 2012-11-28

  • 单元测试现在使用Python 2.4, 2.5, 2.6, 2.7和3.2执行。[fschulze]

  • 官方添加了源重写。参考#56 [fschulze]

  • 添加额外的可选配置文件.mr.developer-options.cfg,该文件从构建目录中读取用于本地可控制选项。[fschulze]

  • 如果always-checkout为true,则在整个构建过程中更新所有已激活的包,而不仅仅是auto-checkout列表中的包或设置了update选项的包。参考#95 [fschulze]

  • 修复了使用基本身份验证时对svn请求密码的问题。参考#100 [MordicusEtCubitus]

  • 修复了svn模块中的回归问题。参考#37 [fschulze, evilbungle (Alan Hoey)]

  • 修复了Python 3上git的分支检出问题。[mitchellrj]

  • 修复了Python 3上subversion检出问题。[mitchellrj]

1.22 - 2012-10-13

  • 如果将线程设置为1,则不再使用任何单独的线程,操作现在在主线程中完成。[fschulze]

  • 通过在buildout部分中设置mr.developer-threads选项,通过构建配置来配置使用的线程数。[fschulze]

  • 对于git仓库,status命令显示您的本地分支何时领先于远程分支。[fschulze]

  • 始终在 buildout 中启用 sources-dir 选项,即使它设置为默认值。修复了 #49 [fschulze]

  • 对所有 svn 命令从 URL 解析版本号。修复了 #37 [fschulze]

  • 使用入口点允许通过插件包添加和覆盖工作副本类型。[fschulze]

  • 修复了在文件系统和 gitsvn 源中详细状态下的 ValueError。[maurits]

  • 修复了使用 Python 3 时出现的某些异常。[icemac (Michael Howitz)]

  • 在 Windows 上,使用 PATHEXT 环境变量查找 git 可执行文件。[kleist]

1.21 - 2012-04-11

  • [mr.developer] 部分添加 threads 选项以设置运行签出时使用的线程数。[fschulze]

  • 除了当前 buildout 基目录中的 .mr.developer.cfg 之外,还从 ~/.buildout/mr.developer.cfg 读取每个用户的配置文件。[fschulze]

  • 使用 2to3 支持 Python 3。[mitchellrj (Richard Mitchell)]

1.20 - 2012-02-26

  • Git:添加了 pushurl 选项 [iElectric (Domen Kožar)]

  • 重构了线程锁定。[shywolf9982]

  • 重构了查找 git 可执行文件和版本处理。[shywolf9982]

  • 在未提供 package-regexp 的情况下,在状态命令报告未知软件包时使用“?”。[maurits]

  • 在清除命令中添加了 –force 选项。这在清除非 subversion 软件包时特别有用,否则我们拒绝删除。修复了问题 #71。[maurits]

  • 如果存在 xml.etree(Python >= 2.5),则不依赖 elementtree

  • 在调用 svn 时不再设置区域设置。如果输出是本地化而不是英文,可能会中断,但我无法再重现这个问题。 [fschulze, rochecompaan (Roché Compaan)]

  • 修复与 mercurial v2.1 的兼容性 [janjaapdriessen (Jan-Jaap Driessen)]。

1.19 - 2011-09-22

  • Git:在重命名/添加 git 远程后不要停止 buildout,即在积极处理某个软件包时。[witsch (Andreas Zeidler)]

  • 修复了即使以斜杠结尾也尊重 buildout:develop 参数的 Bug。[lukenowak]

  • 安装:检查所需模块的存在,而不是依赖于 python 的版本。[lukenowak (Łukasz Nowak)]

1.18 - 2011-08-16

  • Mercurial:添加了对分支的支持。[posborne (Paul Osborne)]

  • Git:添加了对 Windows msysGit 的支持。[canassa (Cesar Canassa)]

  • Git:添加了 rev 选项,允许您使用特定的版本(通常是标签)而不是 HEAD。[maurits (Maurits van Rees)]

1.17 - 2011-01-26

  • Git:如果没有在源中指定分支,则默认为 master 分支。[stefan]

  • 刷新 README 文件。[stefan]

  • 如果不存在,则创建 sources-dir。[janjaapdriessen]

  • 仅当 Python < 2.7 时需要 argparse。[dobe]

  • 使用 bzr 修复了问题 #35,类似于上一版本中 hg 的修复 #28。[menesis]

  • 将分支传递给 bzr pull。[menesis]

  • 添加了对 darcs 的支持。[lelit, azazel]

1.16 - 2010-09-16

  • 当使用 gitsvn 并运行 status 命令时,修复了 NameError: global name 'source' is not defined 错误。[markvl]

  • 添加了对 zc.buildout 1.5 中新 -s 命令行选项的处理,这修复了问题 #29。[fschulze]

  • 不要将 PYTHONPATH 传递给 mercurial,这修复了问题 #28 [fschulze, Christian Zagrodnick]

  • 修复了在 Windows 上保存 buildout 选项的问题。问题 #24 [fschulze]

  • 仅当 svn 版本过旧时才警告。[fschulze]

1.15 - 2010-07-25

  • 使用 buildout 配置中的 always-checkout 选项更新命令。这修复了问题 #18。[fschulze]

  • 修复了 Python 2.4 和 2.5 中的 OSError: [Errno 10] No child processes 错误。问题 #12 [fschulze]

  • 修复了 CVS 更新。[sargo]

1.14 - 2010-05-15

  • 添加了 bzr 支持。[tseaver]

  • 添加了 git 分支支持。[shywolf9982, fschulze]

1.13 - 2010-04-11

  • 告诉用户哪些包已排队更新或检出,以便在并行检出时输出完成后才能打印输出,可以检查哪些包仍在更新。[fschulze]

  • 添加了always-accept-server-certificate选项。在[buildout]部分设置后,无效的证书始终被接受用于子版本库。[fschulze]

  • 添加了-v/--version选项。[tomster, fschulze]

  • 使用更友好的argparse库而不是optparse。[fschulze]

1.12 - 2010-03-15

  • 修复svn检出。[fschulze]

1.11 - 2010-03-14

  • 通过询问用户来处理不受信任的服务器证书。[fschulze]

  • 使用锁来防止并行检出的问题,正确处理用户输入的授权。[fschulze]

  • 在运行buildout时,只检出/更新自动检出或具有update = true选项的包。[fschulze]

1.10 - 2010-02-06

  • 如果包含命令,则不要存储buildout选项。[fschulze]

  • 基本支持buildout离线模式(-o)。尚未处理所有情况。[fschulze]

  • 添加了full-path包选项。[fschulze]

  • 添加了egg包选项(问题#6)。[fschulze]

  • 通过设置always-checkout = force,所有包在脏时都会更新,而无需询问。[fschulze]

  • 将源的部分[path]替换为path=PATH语法,并在使用时发出警告。[fschulze]

  • 现在允许在URL之前允许包的特定选项。[fschulze]

  • 检查svn版本,如果版本太旧或无法确定,则输出有用的错误信息(问题#13)。[fschulze]

  • 当源定义错误时,输出错误信息而不是跟踪信息。[fschulze]

  • 修复包的检出(问题#9和#11)。[fschulze]

  • 在CVS中,可选择检出/更新标签而不是HEAD。[sargo]

  • CVS集成测试[sargo]

  • 更好地检查CVS包的纯净度。[sargo]

1.9 - 2010-01-11

  • 将dry-run选项添加到purge命令中。[fschulze]

  • 修复在Windows上的清除问题。[kleist (Karl Johan Kleist)]

  • 修复与Python < 2.6的兼容性问题。[fschulze, vincentfretin]

  • 修复update命令的all回答。[fschulze]

1.8 - 2010-01-10

  • 为并行检出添加了线程。[fschulze, jensens]

  • 在检出期间询问是否更新脏包。[fschulze]

  • 当回答是否更新脏包的问题时回答yes,则所有后续问题都回答yes,现在已修复。[fschulze]

  • 在更新脏包时添加了all选项。[fschulze]

  • 将所有命令的帮助信息添加到PyPI描述中。[fschulze]

  • help命令添加了选项,该选项以reStructuredText格式输出所有命令的帮助信息。[fschulze]

  • 当用户在是否更新包的问题上回答no后,不要终止,只需跳过该包。[fschulze]

1.7 - 2009-11-26

  • 修复了自动检出时未将包添加到开发包中的问题。[fschulze]

1.6 - 2009-11-21

  • 将从buildout:develop收集的包过滤到已声明的源中,否则像“develop = .”之类的东西会出错。[fschulze]

  • 添加了对并发版本系统(CVS)的支持。[sargo (Wojciech Lichota)]

1.5 - 2009-11-19

  • 添加了全局always-checkout和每个源update选项。[fschulze]

  • 添加了purge命令。[fschulze]

  • 当包是脏的时,询问用户如何处理。[fschulze]

  • 重构了包匹配并使命令选项保持一致。现在您可以使用 -d 和类似的选项仅更新当前正在开发中的包。[fschulze]

  • 修复了重复的日志输出。[fschulze]

  • 修复了在使用 -t 时解析 buildout 参数的问题。[fschulze]

1.4 - 2009-11-16

  • 允许为 svn 仓库设置最小修订版本。如果当前修订版本较低,则更新包。[fschulze]

1.3 - 2009-11-15

  • 读取上次 buildout 运行使用的 cfg 文件。这可以防止在更改 mr.developer 选项(如源声明)且不运行 buildout 时出现意外的行为。此类更改现在将立即被拾取。[fschulze]

  • 添加了测试和 buildout 运行它们。[fschulze]

1.2 - 2009-11-12

  • 如果包被从 auto-checkout 中移除且未显式激活,则它将自动从开发包中移除。在具有较旧 mr.developer 的现有 buildout 中,您必须先 reset 包。[fschulze]

  • auto-checkout 添加了 * 通配符支持。[fschulze]

  • 对于以斜杠或修订标记结束的子版本库 URL,不要退出。[fschulze]

  • 删除了使用 sources-svnsources-git 指定源的老旧方式。[fschulze]

  • 作为扩展运行时,在检出过程中出现问题时立即退出。[fschulze]

  • 作为扩展运行时,使用 buildout 的详细输出。[fschulze]

  • 修复了 develop 脚本中的 buildout_dir,使其在 Windows 上正确转义。[fschulze]

  • 更改了 list -s 的输出,使其与 status 中的输出相匹配。[fschulze]

  • 在 readme 中添加了故障排除部分。[miohtama, fschulze]

  • 所有命令现在都有 -h--help 选项,用于显示它们的帮助。[fschulze]

1.1 - 2009-08-07

  • 如果可能,请使用 buildout 目录的相对路径作为 develop 选项。这解决了如果您的 buildout 路径包含空格时的问题。[fschulze]

  • 在尝试激活或停用未检出包时发出警告。[fschulze]

  • Python >= 2.5 不再依赖 elementree,因为它是内置的。[fschulze]

  • 在检出源时,它将自动被激活。[fschulze]

  • 使用 'sources' 作为源信息的默认部分名称。[fschulze]

  • 添加了对 'fs' 类型的无版本控制文件系统包的支持。[fschulze]

1.0.1 - 2009-05-05

  • 修复了多个命令中对包名称的大小写敏感性。[fschulze]

  • SVN 外部链接不再导致修改状态。[fschulze]

1.0 - 2009-05-02

  • 添加了 info 命令,用于打印有关包的各种信息。[fschulze]

  • 添加了 reset 命令,用于重置包的开发状态。这在切换到新的 buildout 配置时非常有用。在下一个 buildout 运行期间,开发状态将像在干净的 buildout 中一样确定。[fschulze]

  • 通过删除工作副本实现中不必要的 __init__ 调用来消除 Python 2.6 中的弃用警告。[fschulze]

0.15 - 2009-04-17

  • 在激活或停用包后添加了运行 buildout 的提醒。[fschulze]

  • 添加了 rebuild 命令,用于使用最后一个使用的参数重新运行 buildout。[fschulze]

0.14 - 2009-04-16

  • 修复了 checkout 命令的详细输出。[fschulze]

  • update 命令添加了 -f 选项,强制更新,即使工作副本不干净。[fschulze]

0.13 - 2009-04-14

  • update 命令添加了 -a 选项,仅更新 auto-checkout 列表中声明的包。[fschulze]

  • 增加了激活禁用命令。这允许选择哪些软件包添加到zc.buildout的develop选项。增强了状态命令以显示附加信息。[fschulze]

  • 在状态命令中交换了~C的含义。[fschulze]

0.12 - 2009-04-14

  • 添加了对Mercurial (hg)的支持。[mj]

  • 重构了工作副本逻辑,使其更容易添加对其他版本控制系统的支持。[fschulze]

  • checkoutupdate命令添加了详细模式标志。[fschulze]

0.11 - 2009-04-06

  • 移除了漂亮的os.path.relpath使用,因为它只从Python 2.6开始引入。[fschulze]

0.10 - 2009-04-06

  • status命令添加了详细模式标志。[fschulze]

  • 已弃用sources-svnsources-git,改为使用sources,这允许更多的灵活性。[fschulze]

  • status命令更改为仅检查已知路径,而不是整个sources-dir路径。[fschulze]

  • updatestatus命令中添加了过滤软件包的可能性。[fschulze]

  • 在buildout运行结束时告诉用户是否有任何错误发生在自动检出过程中。[fschulze]

  • develop脚本作为第一部分而不是最后一部分安装,以便可以使用它来解决问题。[fschulze]

0.9 - 2009-03-30

  • 如果作为egg安装,则生成的develop脚本可以从任何地方调用,并尝试从当前工作目录中找到正确的develop脚本并执行它。[fschulze]

  • 修复了帮助文本格式。[fschulze]

0.8 - 2009-03-25

  • 为subversion命令添加了身份验证支持。[fschulze]

  • checkout命令添加了-a选项,以限制匹配到由auto-checkout选项声明的软件包。如果没有给出其他参数,则处理auto-checkout中的所有软件包。[fschulze]

0.7 - 2009-03-24

  • update命令添加到checkout脚本中。[fschulze]

  • status命令添加到checkout脚本中。[fschulze]

  • 将状态标志添加到list命令中,以指示具有错误URL的软件包。[fschulze]

  • 如果工作副本是干净的,则自动切换svn软件包。[fschulze]

  • 在buildout过程中跳过检出错误,以便生成develop脚本,并有机会检查和修复问题。[fschulze]

  • 检查远程URL,如果不同则停止检出。[fschulze]

  • list命令添加了各种选项。[fschulze]

  • 现在有了一个包含各种命令的develop脚本,而不是checkout脚本。[fschulze]

0.6 - 2009-03-24

  • 为checkout脚本添加了自定义日志格式化器,以提供更友好的输出。[fschulze]

  • 移除了“-e”选项,现在正则表达式匹配是默认的。[fschulze]

  • 使能够在不使用管道符号和引号的情况下指定多个正则表达式。[fschulze]

  • 将checkout脚本的帮助文本添加到pypi页面。[fschulze]

  • 在检出后添加警告,提示重新运行buildout。[fschulze]

0.5 - 2009-03-23

  • 确保实际使用更新后的版本。[fschulze]

0.4 - 2009-03-22

  • 修复了日志记录,修复了信息消息输出。[fschulze]

  • 跳过现有软件包的检出。[fschulze]

0.3 - 2009-03-22

  • 通过添加MANIFEST.in文件固定源分布。[fschulze]

  • 在检出脚本中添加了-e和-l选项。[fschulze]

0.2 - 2009-03-22

  • 添加了auto-checkout选项(目前仅支持subversion)。[fschulze]

  • 添加了对git的支持。[fschulze]

  • 尝试检出未知包时抛出错误。[fschulze]

  • 修复了检出目标目录。[fschulze]

0.1 - 2009-03-19

  • 初始版本

项目详情


下载文件

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

源分布

mr.developer-2.0.2.tar.gz (78.7 kB 查看哈希)

上传时间

构建分布

mr.developer-2.0.2-py2.py3-none-any.whl (60.9 kB 查看哈希)

上传时间 Python 2 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面