在基于构建的 Plone 站点中使用非最新的 git 结帐

Use a non-newest git checkout in a buildout-based Plone site

我有一个基于 buildout 的 Plone 站点,有一个高效的实例和一个 development/test 实例。我注意到我目前在构建开发实例时遇到问题,可能与该问题相关的差异是产品的不同版本,在这两个实例中都是 "developed"。

不幸的是旧版本是有效的...所以我尝试将该包重置为旧版本并重建:

cd /path/to/my/instance
. bin/activate
cd src/plone.formwidget.recaptcha/
git checkout a0c334406c0d991f4facedce0334ab5566729b2f
cd -
bin/buildout buildout:newest=false

不幸的是,buildout 尝试拉动,但失败了:

mr.developer: git pull of 'plone.formwidget.recaptcha' failed.
mr.developer: You are not currently on a branch. Please specify which
mr.developer: branch you want to merge with. See git-pull(1) for details.
mr.developer:
mr.developer:     git pull <remote> <branch>
mr.developer:
mr.developer:

好吧,我不想 git pull 发生;所以我寻找 mr.developer 选项来帮助并将 mr.developer:auto-checkout= 添加到命令行。

还有那个git pull。我怎样才能抑制它?将包固定到所需版本的推荐方法是什么?

我无法帮助您完成构建过程,但您可以做一个简单的 hack 来防止拉取失败。

git checkout -b temp a0c334406c0d991f4facedce0334ab5566729b2f
git branch temp2 temp
git branch --set-upstream-to=temp2 temp

由于两个分支都指向同一个地方,因此您会遇到任何问题。

警告 如果您需要再次执行此操作,则需要重做这两个假分支。删除它们可能更容易(无论如何都应该在完成后完成。)

git branch -D temp temp2

使用 mr.developer 您可以将签出修复到固定修订:

my.package = git git://some.url.git rev=abcdef

因此 my.package 将始终指向 abcdef,它可以是分支或修订版本。

对于其他版本控制系统,请参阅 mr.developer 文档。