问题标签 [feature-branch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - Gitolite config won't deny permissions
I'm having a config file like this:
Problem is now that also i give just read rights to all users, everyone can write on the master branch.
When i add a - master = @all
as first line the result is the same.
How can i make master read-only to the @all group and give right permissions just on the users own featurebranch?
Thanks in advance.
svn - 如何防止人们在 SVN 中使用重新集成的分支?
我们已经开始在工作中使用功能分支模式。
一切似乎都运行良好,这是我们使用的步骤:
- 开发者分支主干
- 开发人员使用分支完成实施和测试
- 开发人员将主干合并到分支中,使分支保持最新状态以备重新集成
- 维护者将分支重新集成到主干中
- 版本、构建和标记。
开发人员拥有对分支文件夹的读/写权限,对标签和主干的读权限
维护者对所有文件夹具有读/写权限
我们使用 svn 1.5.1(在服务器上仅限于 Ubuntu Server 8.04),尽管我们正在迁移到具有最新 svn 的最新服务器(Ubuntu Server 12.04)。
我们的客户端 TortoiseSVN 1.7.6,svn 客户端版本 1.7.4。
到目前为止,一切都运行良好,我们有多个开发人员同时编写功能。
然而,目前我是唯一被提名的维护者,一旦流程敲定并且人们已经接受了足够的培训,其他人将被提名。
我担心的是,一个过程变得更加自主,我的直接参与减少了,可能会发生以下情况,我不知道如何防止它们:
- 开发人员忘记了一个分支已被重新集成并意外地向它提交了工作
- 维护者没有充分检查分支是否是最新的并准备好重新集成并执行重新集成和提交。
我在 Tortoise 或 SVN 中看不到任何警告或阻止你这样做的东西。
再说一次,我并没有试图做出任何令人讨厌的事情,只是为了看看它做了什么。
如何自动防止用户做出这些错误的提交?
git - Git 将修补程序分支合并到功能分支中
假设我们在 Git 中有以下情况:
创建的存储库:
/li>master 中的一些修改发生并被提交:
/li>Feature1 分支了 master 并完成了一些工作:
/li>同时,在master-code中发现了一个bug,并建立了一个hotfix-branch:
/li>该错误已在 hotfix 分支中修复并合并回主分支(可能在拉取请求/代码审查之后):
/li>feature1 的开发仍在继续:
/li>
假设我需要在我的功能分支中进行修补程序,可能是因为该错误也发生在那里。如何在不将提交复制到我的功能分支中的情况下实现这一点?
我想防止在我的功能分支上获得两个与功能实现无关的新提交。如果我使用拉取请求,这对我来说尤其重要:所有这些提交也将包含在拉取请求中并且必须进行审查,尽管这已经完成(因为修补程序已经在主服务器中)。
我不能做git merge master --ff-only
:“致命:不可能快进,中止。”,但我不确定这是否对我有帮助。
git - 在 QA 和业务验收之后,如何使用 git 一次仅部署一项功能?
我们需要的:
我的团队正在维护并为已经投入生产的产品添加功能。我们正在尝试找出如何改进我们的部署策略,以便我们可以开始一次部署一个功能,而不是大量的功能。理想情况下,当一个功能通过 QA 和业务验收时,我们希望将这个功能部署到生产中(随时)。
我们现在在做什么:(那行不通)
我们已经在遵循“每个功能分支”的概念。现在,我们正在开发分支中创建新的功能分支。当我们完成一个功能时,我们会创建一个 pull-request 返回到 dev 分支。该拉取请求看起来很棒......它只有与该功能相关的更改。代码审查后,分支合并到 dev master(并部署到 dev),QA 进行查看。一旦 QA 批准了该功能,我们将原始功能分支合并到 staging 分支(并部署到 staging)。一旦业务接受新功能,原始功能分支就会合并到生产中。我们的问题是原始特性分支在投入生产时似乎滚雪球,其中有许多似乎与特性分支无关的更改。到底,
git - 如何让 TeamCity 自动将 Git 功能分支与 master 合并,并在合并冲突的情况下使构建失败?
我们的开发/发布周期是这样的:
- 开发者创建一个特性分支,实现一个特性
- 开发人员表示功能已准备好进行验收测试 (UAT)
- 测试人员部署功能分支并接受(或拒绝)功能
接受的功能然后由测试人员合并到主分支中,因此将在下一个发布周期中发布(我们每周部署主干/主代码)。
我们对合并冲突感到沮丧,因为当测试人员对功能进行 UAT 并发现它不会干净地合并时,在其中工作的开发人员通常会转向其他事情。
我们正在考虑一种解决方案,TeamCity 会自动将每个功能分支与当前主分支合并,并且任何导致合并冲突的构建都被视为失败的构建 - 这将使我们尽早了解有问题的合并,以便我们可以修复他们早点。
TeamCity 似乎没有对此工作流程的内置支持(即,当分支 X 发生推送时,结帐 master,将分支 X 合并到它上面,构建,单元测试,创建包)。有没有人使用 TeamCity 和 Github 创建了类似的工作流程——也许是使用自定义 msbuild 目标?
编辑:我应该澄清一下我们正在使用 Github,但我们目前没有使用拉取请求 - 听起来这是我应该调查的事情。:)
git - Git:如何避免在先前合并还原后合并功能分支时发生冲突
在我们的存储库中,我们基于功能分支开发功能。最近我将一个功能集成feature/myfeature
到master
:
在这次合并之后,发生了更多的开发,直到结果证明这个功能有问题并且阻止了集成,所以我决定恢复这个合并。在https://stackoverflow.com/a/6217372/1237653之后,我选择了在不破坏历史记录的情况下恢复合并的唯一选项:
与此同时,更多的开发master
已经发生,并且作者添加了修复提交。现在我想再次运行以集成/合并该功能。不幸的是,现在我遇到了十几个冲突,因为第一次应用和恢复与第二次尝试接触的代码行完全相同。
如何在没有那些毫无意义的冲突的情况下重新应用我以前恢复的功能分支?
我试过-s recursive -Xrenormalize
没有运气。Rebase 也会引起同样的冲突。
branching-and-merging - 当错误被修复并合并到主干时,协调每个任务的分支和错误修复,但错误实际上并没有充分“修复”
我最近从 CVS 切换到 Plastic 进行源代码控制。我们使用 Jira 进行问题跟踪,使用 Plastic 分支将变更集与未解决的问题联系起来。通过切换,我还采用了按任务分支的方法进行开发。在修复重新打开的错误时,这导致了一个有趣的困境(一个新的测试用例发现该错误在迭代/发布测试后没有完全修复)
我已经修复了一个错误,针对它运行了我的测试(当时可用)并且它通过了。我合并了代码,并开发了涉及同一文件的第二个功能。两项更改都在不同的分支上完成,并且都成功合并到主构建分支中。新版本进入 QA,他们发现了一种稍微不同的方式来重现相同的问题(一个新的测试用例)并重新打开错误。原始错误分支不包括添加到同一文件中的新功能,因为它们位于不同的分支上(例如错误 1 修复是功能 2 分支的一部分 [因为此分支是在原始修复合并到构建分支后创建的],但新功能 2 代码不在 bug 1 分支上)
鉴于这种情况:当重新打开错误并且您使用的是按任务分支的方法时,修复错误的最佳实践是什么?
- 克隆 Jira 中的错误以创建新问题
编号、创建新分支并像新问题一样重新修复问题会更好吗?
[这基本上将新修复基于原始修复+新功能的组合]( 如果您必须跟踪同一问题的多个修复,
这是否会使跨版本合并变得更加困难 ?) - 回到
原来问题被修复的原始分支,并重新修复它,然后再次合并,
每次发生这种事情时处理冲突解决会更好吗?
笔记:
- 创建分支以与错误跟踪系统 (Jira) 链接,因此分支名称包含问题编号。
- 由于这个链接,我不能创建 2 个同名的分支,除非它们有不同的父级。因此,我可以从原始分支创建第二个分支,但不能从构建分支(这是原始问题的父级)
似乎每个任务方法的分支会导致在错误修复和功能之间反复发生冲突解决,直到两者都经过完全测试和解决,因为这些任务分支之间没有合并 - 仅到主干,它们都将连续彼此“过时”。
我敢打赌这对于单个开发人员来说不会经常发生,但它可能会在更大的团队中更频繁地发生,即使它不是专门在错误和功能之间(可以想象,两个功能可能会影响同一个文件(s ),在发布之前的构建/测试周期的生命周期内导致额外的冲突解决)
这个过程的工作方式几乎与团队过去使用 CVS 的方式相反,所以我试图找到“正确”的方式来完成它,以尽量减少推进新模型的痛苦。以前,我只会从上次构建中获取最新更改并进行新修复——因此,避免任何冲突解决问题(但我没有得到每个任务分支的好处)。
现在,我必须考虑“原始”修复是在哪个分支上完成的,如果那是“新”修复需要去的正确位置,以使问题跟踪系统与更改集列表保持同步。
git - Git:在几个依赖分支之上重新合并或重新定位
我经常发现自己开发了一个特性分支,它依赖于从同一个提交中分出的两个或多个(相互不相关的)分支。我的提交树通常如下所示:
或者
现在,假设在每个依赖分支上发生了更多的提交,最新的提交分别是B'
和C'
。如果我现在做默认合并,我会得到类似的东西:
但是,我想要类似的东西:
或者
我正在寻找一种快速且非交互式的方式(冲突解决除外)来实现这一目标,因为我经常遇到这种情况。
什么是最不痛苦/最方便的方法?
git - 如何将开发分支中的 git 提交合并到功能分支
我的 git 存储库中有一个开发分支和一个功能分支。我添加了一个开发提交,现在我希望将该提交合并到我的功能分支中。如果我这样做
我最终得到一个合并提交。由于我会经常将开发中的新提交合并到我的功能分支中,因此我想避免所有这些不必要的合并提交。我看到这个答案建议做一个git rebase develop
,但它最终将我的分支倒带得太远并且变基失败。
更新: 我最终做的是
更新:我刚刚注意到,当我合并然后 rebase 到功能分支时,develop 上的原始提交会获得不同的哈希值。我认为这不是我想要的,因为最终我会将功能重新合并到开发中,我猜这不会很好。
git - mercurial 中的功能分支
我注意到一个问题:
在 Mercurial 中,书签旨在用于功能分支,并且相当于 Git 中的分支。但是在 Git 中,修订版总是有一个关于它属于哪个分支的信息。所以在 Git 中,我们总是可以说功能工作何时开始以及何时完成。
在 Mercurial 中 - 书签仅指向一个提交,因此我们无法说出功能分支实际开始的位置,并且我们无法将该功能分支合并回来(因为修订版将与我们要合并的修订版属于同一分支)。这只有在使用命名分支时才有可能,但它们对于功能分支来说“很重”,而书签似乎太“轻量级”了。
该问题的常见解决方案是什么,以及 Mercurial 中如何正确地进行特征分支?
upd:
我想要实现的大致工作流程是:
- 将新的无意义提交设为默认值
- 更新到先前的提交,并进行与该功能相关的提交
- 然后与无意义的提交合并,并使用合并结果对其进行修改。