折叠/合并提交到一个变更集

时间:2012-04-23 02:12:58

标签: deployment mercurial fabric bitbucket

目前我保持本地和开发服务器env同步的方式是使用fabfile。

def upload():
 """ upload project dir to the production server. """
extra_opts = '--omit-dir-times'
rsync_project(
    remote_dir=env.remote_dir,
    local_dir=env.local_dir,
    exclude=RSYNC_EXCLUDE,
    delete=True,
    extra_opts=extra_opts,
)
reload_apache()

当我想从回购中抽出时,我使用这个

def update_source():
    """ Update the project source. """
    with cd(env.directory):
        run('hg fetchanddestroy')

别名cmd执行此操作

fetchanddestroy = !hg pull && hg update -C

如何在bitbucket上将一系列变更集合并为一个?我尝试过使用machg,但它只是拉回了我合并的所有内容。我试图以合适的方式在我的VPS上部署我的项目,并使它们与我的本地仓库保持同步。在设置环境的过程中,我不得不对repo进行微调,导致在服务器上进行了许多更改集。因此,我想将所有这些小变更集合并为一个,以保持我的仓库历史记录清洁。

由于

1 个答案:

答案 0 :(得分:1)

我不确定我完全理解您的要求,但使用类似于Git Flow的分支工作流程是管理开发和发布之间变更流程的好方法。

在“短”中,

  • 将所有版本保存在名为master
  • 的分支中
  • 按照惯例进行默认情况下的所有开发
  • 在发布时为主页创建分支

    $ hg update master&& hg branch relv1.0

  • 合并你想要的默认值,本例假设最新的是你想要的。

    $ hg merge default&& hg commit -m“默认合并最新”

  • 如果有必要,可以在此分支中进行更改,以便在适用的情况下通过测试,并且通常可以随时为您的项目做好准备。

    $ hg commit -m“最后一刻bug修复......等等”

  • 如果您确信发布已准备就绪,请对其进行标记,关闭分支并将其合并为主数据。

    $ hg tag“release 1.0”&& hg update master&& hg合并“发布1.0”&& hg commit -m“merge release 1.0”

    $ hg update“release 1.0”&& hg commit --close-branch -m“all done”

  • 最后让默认值与master同步。

    $ hg update default&& hg merge master#如果你有多个人正在进行开发,那么这里有合并冲突的可能性

    $ hg commit -m“从master”

  • 合并版本1.0
  • 进行部署时,您可以从主

  • 中获取最新信息

这里的整体效果是进入master的diff应始终代表自上次发布以来默认分支的组合变化,我认为这是您想要的,而不是导致该版本的所有单个变更集。

显然可能有1000种方法可以做到这一点,但我认为可以肯定的是,像Git-Flow这样的分支策略无处不在,你的团队可以理解它,从而遵循它。

另一种选择是使用补丁队列,这样您就可以完全控制在任何给定点进入变更集的内容。