2012-04-23 47 views
1

目前我保持我的本地和开发服务器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 

我怎么能折叠范围变更为一体的上到位桶?我曾尝试使用machg,但它只是拉回所有我合并。我试图以合适的方式在我的VPS上部署我的项目,并使其与本地回购站保持同步。在设置环境的过程中,我不得不对repo进行微小的调整,导致许多变更集被制作并拉到服务器上。因此,我想将所有这些小变更集合为一个,以保持我的回购记录清洁。

感谢

+0

为什么要保持回购记录“干净”?在那里进行一些小的提交有什么危害? – 2012-04-23 13:33:00

回答

0

不知道我完全理解你的要求,但使用类似于Git Flow一个分支工作流程管理开发与发布之间变化的流量的好方法。

在“短”,

  • 保持在一个分支上的所有版本中称为主
  • 做默认所有的开发,因为您通常会
  • 在发布时创建一个分支关老爷对释放

    $汞柱更新主& &汞柱分支relv1.0

  • 合并你想要的默认值,这个例子假定最新的是你想要的。

    $汞柱合并默认& &汞柱提交-m

  • “从默认的合并最新的”如果在这个分支需要进行更改,使测试通过,如果适用,一般把它准备发布任何这意味着对于你的项目。

    $汞柱提交-m“最后一分钟的错误修复...等”

  • 当你有信心,释放已准备就绪,标记它,关闭支路并将其合并到主。

    $汞柱标签 “释放1.0” & &汞柱更新主& &汞柱合并 “释放1.0” & &汞柱提交-m “合并发行1.0”

    $汞柱更新 “释放1.0” & &汞柱承诺--close-branch -m“全部完成”

  • 并最终使默认回到与主同步。

    $汞柱更新默认& &汞柱合并主站#有合并冲突的可能性在这里,如果你有多人做开发

    $汞柱提交-m“合并来自主释放1.0”

  • 对于部署,您可以从主站点拉最新

这里的总体效果是,进入主站的差异应始终表示组合更改自上个版本以来的默认分支,我认为是您想要的,而不是导致该版本的所有单个变更集。

很明显,可能有1000种方法可以做到这一点,但我认为像Git-Flow这样的分支策略无处不在,您的团队可以理解并遵循它。

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