小编Toh*_*ter的帖子

如何处理来自不同Git功能分支的多个db alter脚本?

描述有点复杂,但我会尽我所能.基本上我们正在使用Git工作流程,这意味着我们有以下分支:

  • 生产,这是现场分支.一切都是生产在实时网络环境中运行.
  • 集成,其中集成了所有新功能.该分支每周合并到生产中.
  • 一个或多个功能分支,开发人员或开发团队在其中开发新功能.完成此操作后,开发人员将其功能分支合并到集成.

所以,这里没什么复杂的.但是,由于我们的应用程序是针对MySQL数据库运行的Web应用程序,因此新功能通常需要更改数据库方案.为了自动执行此操作,我们使用dbdeploy,它允许我们在给定数字的情况下创建alter脚本.例如00001.sql,00002.sql等.在合并到集成分支时,dbdeploy将检查哪个更改脚本的编号高于该特定数据库上最新执行的脚本,并将执行这些脚本.

现在假设以下内容. - 集成已将脚本更改为00200.sql.所有这些都在集成数据库上执行. - 开发人员John有一个功能分支featureX,它是在集成仍然有00199.sql作为最高的alter脚本时创建的.

由于一些必需的数据库架构更改,John创建了00200.sql.

现在,在某些时候,John将他的修改合并回集成分支.John将发生合并冲突,并且会看到他的00200.sql已经存在于集成中.这意味着他需要打开冲突的文件,提取他的内容,重置文件恢复到"我的"(原来的状态,如集成),并把自己的内容在一个新的文件.

现在,由于我们与十位开发人员合作,我们每天都会遇到这种情况.虽然我们确实理解了背后的原因,但它有时非常麻烦.John重命名他的脚本,执行合并提交到集成,将更改推送到上游只是为了看到其他人已经创建了00201.sql,要求John再次执行该过程.

当然必须有更多的团队使用Git工作流并使用数据库变更管理工具来自动化数据库模式更改?

所以,简而言之,我的问题是:

  • 在处理同一数据库的不同实例上的不同功能分支时,如何自动执行数据库模式更改?
  • 如何一直防止合并冲突,同时仍然可以选择在执行的alter脚本中有一个固定的顺序?例如,00199.sql必须在00200.sql之前执行,因为00200.sql可能取决于在00199.sql中完成的操作.

任何其他提示都是最受欢迎的.

database git dbdeploy

8
推荐指数
1
解决办法
1288
查看次数

Twitter Bootstrap轮播箭头不垂直居中,具体取决于glyphicon

我使用默认箭头(glyphicon-chevron-left和glyphicon-chevron-right)创建了一个Twitter Bootstrap轮播.这些很好地在旋转木马中垂直居中.

我想用两个不同的图标替换这些图标,即glyphicon-circle-arrow-left和glyphicon-circle-arrow-right.但由于某种原因,当只更换图标时,它们突然不再垂直居中.我找不到原因.

这是一个很好的中心版本(http://jsfiddle.net/AdF6b):

    <div class="row">
      <div  id="foto-carousel" class="carousel slide">
        <ol class="carousel-indicators">
          <li data-target="#foto-carousel" data-slide-to="0" class="active"></li>
          <li data-target="#foto-carousel" data-slide-to="1"></li>
          <li data-target="#foto-carousel" data-slide-to="2"></li>
        </ol>
        <!-- Carousel items -->
        <div class="carousel-inner">
          <div class="active item">
            <img src="http://lorempixel.com/g/1600/800/city/1">
            <div class="carousel-caption">
              <h4>Slide 1</h4>
              <p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...</p>
            </div>
          </div>
          <div class="item">
            <img src="http://lorempixel.com/g/1600/800/city/3">
            <div class="carousel-caption">
              <h4>Slide 2</h4>
              <p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...</p>
            </div>
          </div> …
Run Code Online (Sandbox Code Playgroud)

html css twitter-bootstrap

3
推荐指数
2
解决办法
1万
查看次数

宇宙飞船操作员与 pimpl 成语

我有一个使用 pimpl 习惯用法的类。

class MyImpl;

class MyClass
{
public:

private:
    MyImpl* _impl;
};
Run Code Online (Sandbox Code Playgroud)

现在我想向此类添加宇宙飞船操作员支持。理想情况下我会写这样的东西:

auto operator<=>(const MyClass& rhs) const
{
    return *_impl <=> *rhs._impl;
}
Run Code Online (Sandbox Code Playgroud)

但头文件中不知道其实现。因此,我必须在源文件中编写实现。但这阻止了将 用作auto返回类型。我必须明确指出它是std::strong_orderingstd::weak_ordering还是std::partial_ordering。但这在很大程度上取决于 的细节MyImpl。如果MyImpl仅包含ints,则返回类型将为std::strong_ordering,但如果也包含floats,则返回类型将为std::partial_ordering

我希望类声明MyClass不要改变太多。有什么方法可以保持其 api 稳定,同时仍然允许更改MyImpl. 我想总是回来并不理想std::partial_ordering

c++ pimpl-idiom spaceship-operator c++20

2
推荐指数
1
解决办法
109
查看次数