我们目前使用Gerrit,为一个大约十几个团队和一些开发人员.
这是我们当前的工作流程:
1.开发人员从master开始分支
2.开发人员在他们的本地分支上工作
3.开发人员推动gerrit,它通过在refs/for/master中包含推送的提交来保护master分支.(如果你不知道,gerrit也是一个存储库管理器.)4.Gerrit
调用Jenkins,在变更集上运行单元测试(和Selenium测试).如果失败,则提交将被踢回给开发人员.否则,Jenkins + 1s提交.
5.审阅者查看提交和+ 1s
6.高级审阅者查看提交和+ 2s并将变更集合并到refs/head/master(即实际分支)
我们喜欢这个工作流程 这很棒.它为我们的开发带来了精彩且非常需要的流程和纪律,并且从我们之前被忽视和忽略的代码审查瓶颈中创建了一个待办事项列表,每个人都对此感到高兴.
x - 间歇 - x
我们现在正在寻求将任务管理转移到Jira.在我设置它的同时,我也设置了Crucible,因为它似乎是自然集成以使代码审查成为整个shebang的一部分.我无法做的是重现我们已经爱上的工作流程.随着Jira/Crucible的集成,由于我们不再拥有我们的存储库守门所有东西(而且我们不想为Atlassian的Stash付费),我们会将代码推送到Bitbucket.我们不能再直接在master上工作了,因为糟糕的代码不再是"门保持",而是在通过任何测试或代码审查之前由开发人员合并到master中.保持它脱离主分支的唯一解决方案似乎是分叉.好吧,这很烦人,但我可以随便滚动.但是,如何通过开发人员的fork获取提交,以便在通过代码审查后合并到master分支中?这就是我希望从那些做过任何甚至远程相似的事情的人那里听到的,或者知道如何根据我的情况来完成它.
所有这一切的替代方法是尝试使用https://github.com/hobbs/jirret强制Jira和Gerrit之间的集成,但是它使用了Jira仍然支持但不再进行任何开发的XML RPC.
我要疯了.
这是父母:
class Parent {
/**
* @Id
* @GeneratedValue
* @Column(type="integer")
*/
protected $id;
/**
* @OneToMany(targetEntity="Core\Parent\Child", mappedBy="parent", cascade={"persist", "remove"})
*/
protected $children;
public function __construct() {
$this->children = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getChildren() {
return $this->children->toArray();
}
public function removeAllChildren() {
$this->children->clear();
}
public function addChild($child) {
$this->children->add($child);
}
}
Run Code Online (Sandbox Code Playgroud)
这是孩子:
class Child {
/**
* @Id
* @GeneratedValue
* @Column(type="integer")
*/
protected $id;
/**
* @ManyToOne(targetEntity="Core\Parent", inversedBy="children")
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
protected $parent;
}
Run Code Online (Sandbox Code Playgroud)
对我来说不起作用的是删除这个父母的所有现有孩子.从我的控制器,我做:
$parent …
Run Code Online (Sandbox Code Playgroud)