Questions tagged «dvcs»

分散版本控制(DVCS)可以跟踪软件修订版本,并允许许多开发人员在不必连接到公共网络的情况下处理给定项目。

3
仅使用代码注释的代码审查是一个好主意吗?
前提条件 团队使用DVCS IDE支持注释解析(例如TODO等) 诸如CodeCollaborator之类的工具预算昂贵 诸如gerrit之类​​的工具过于复杂,无法安装或无法使用 工作流程 作者在中央回购功能分支上的某个位置发布 审阅者获取它并开始审阅 如果有任何问题/评论,请创建带有特殊标签的评论,例如“ REV”。此类标签不得在生产代码中-仅在审核阶段: $somevar = 123; // REV Why do echo this here? echo $somevar; 当审阅者完成评论后,它只会发送愚蠢的消息“ comments”并向后推送 作者将功能分支拉回并以类似方式回答评论或改进代码并将其推回 当“ REV”评论消失时,我们可以认为,该评论已成功完成。 作者以交互方式为功能分支重新设置基础,挤压功能分支以删除那些“注释”提交,现在可以合并功能以开发或进行任何成功的内部检查后通常可以采取的操作 IDE支持 我知道,自定义注释标签可以在Eclipse和Netbeans中使用。当然,它也应该属于blablaStorm家族。 问题 您认为这种方法可行吗? 你知道类似的东西吗? 有什么可以改进的吗?

7
为什么不提交未解决的更改?
在传统的VCS中,我可以理解为什么您不提交未解决的文件,因为您可能会破坏构建。但是,我不明白为什么您不应该在DVCS中提交未解析的文件(其中有些实际上会阻止您提交文件)。 相反,我认为你的版本库应该从被锁定推和拉,但不承诺。 在合并过程中能够提交有几个优点(如我所见): 实际的合并更改在历史记录中。 如果合并很大,则可以进行定期提交。 如果您犯了一个错误,那么回滚会很容易(不必重做整个合并)。 在将文件标记为已解决之前,可以将其标记为未解决。这将防止推/拉。 您还可能有一组变更集充当合并,而不是一个变更集。这样一来,您仍然可以使用的工具git rerere。 那么,为什么要对未解决的文件进行提交以防止/阻止呢?除了传统之外,还有其他原因吗?


4
在多台机器上使用Git
这听起来可能有点奇怪,但是我想知道一种以某种方式联网的多台机器在Git中工作的好方法。在我看来,我有两个选择,并且我可以看到双方的好处: 使用git本身进行共享,每台机器都有自己的存储库,您必须在它们之间进行获取。 即使另一台计算机处于脱机状态,您也可以在其中任何一台计算机上工作。我认为这本身就很大。 使用在计算机之间通过网络共享的一个存储库。 每次切换机器时都不需要执行git pull,因为您的代码始终是最新的。 不必担心您忘记了从其他非托管计算机中推送代码的机会,因为您正在该计算机上处​​理文件共享,因此现在无法访问该代码。 我的直觉是,每个人通常都选择第一种选择。但是我看到的缺点是,您可能无法始终能够从其他计算机访问代码,而且我当然也不想每天结束时将所有WIP分支都推送到github。我也不想一直把计算机留在原处,这样我就可以直接从它们中获取信息。最后一点是,所有使多个分支保持最新状态的git命令都可能很乏味。 在这种情况下是否有第三个处理方法?也许有一些第三方工具可以帮助简化此过程?如果您定期处理这种情况,您有何建议?
15 git  workflows  dvcs 

11
您如何向不在CS领域的人解释使用[分布式]版本控制系统的重要性?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 一个适合该描述的人的很好的例子可能是项目经理。 前几天我的老板问我:“这个Github东西是什么,为什么它很重要?” 他有一些专有项目,所以他需要私人托管,我发现自己无法尽力解释:VCS使协作变得微不足道,提供了所有数据的历史记录和“备份”,并允许您在代码库中记录基本更改。 。在我的脑海中,我想:“几乎就像您必须使用DRVS来真正理解它的好处一样”。 我最终将他指向BitBucket,因为它们为您提供了无限的私有存储库(我什至不得不解释什么是存储库)。 有没有人有一个非常好的具体示例,说明VCS如何节省了资产或使生活更轻松等-基本上,您如何将DVSC出售给不熟悉编程但又不是专业程序员的人?
13 dvcs 

6
只要任何推送工作中的最终提交都可以,那么中断中间的提交就可以了吗?
相关: 每个git commit都应该使项目处于工作状态吗? 假设我在本地进行了以下提交: 修改数据库架构,破坏应用程序。 更新应用程序,使其再次与数据库架构兼容。 只要我同时推送两个提交,master便会保持工作状态。但是,历史版本已损坏。 我知道我可以git rebase -i用来将提交压缩在一起。但是,生成的提交将很大且描述性较低。如果我需要搜索提交历史记录以找出更改原因的原因,我宁愿找到显示我所做的事情和原因的原始提交。 我的问题是: 有没有人遇到困难,由于打破历史的主人提交? 如果是这样,是否有一种简单的方法可以避免这些困难,而又不丢弃各个提交消息和更改?
13 git  dvcs 

4
阻止开发人员在DVCS上提交错误的分支
问题 我在一个大约有10个开发人员的软件项目中,我们通过Mercurial共享源代码。每个版本都有一个开发和生产分支。在项目进行过程中,我们反复从一个分支(即v1)获取源代码,以进入补丁和维护分支以获取早期版本的软件(即v2)。 如果我们没有注意到代码进入错误的分支,则这将导致花费时间来撤消错误的提交,或者导致错误的代码(可能是非QAd)到达并部署在错误的分支中。 我们的分支和合并设计/方法 v1-test v1-patch1 v1-patch2 ^---------^-----------^ v1-prod / / \ \ -----------------------/ \ \ v1-dev \ \ \ --------------------------\ v2-dev \ \ \ ^-------^------------- v2-prod v2-test v2-patch1 因此,我们将在发布开发分支上工作,直到它准备就绪为止,然后将其分支到一个测试/ UAT /生产分支,在此完成所有发布和维护。标签用于构建该分支的发行版。在测试v1时,将为v2建立一个分支,并且开发人员将开始开发新功能。 趋于发生的事情是,开发人员将由于v2-dev分支而提交的工作提交到v1-dev或v1-prod中,或更糟糕的是,他们将v2-dev合并到v1-prod中(或类似的错误)。 我们告诉大多数开发人员不要访问-prod分支,但是代码仍然会潜入。一组更高级的开发人员“照看” -prod分支。 应该注意的是,尽管v2才刚刚开始开发,但v1中可能仍然有一些相当大的补丁程序可以解决问题。即v1可能不仅获得了奇怪的小补丁。 到目前为止我们尝试过的 有一个单独的-prod分支,带有网守。-prod分支应通过其名称发出警告,并且大多数开发人员不必永远都位于该分支中。这并没有真正减轻问题。 在开发人员中提高了对此问题的意识,以使他们更加警惕。再次,这不是很成功。 我认为开发人员承诺使用错误分支的可能原因 过于复杂的分支机构设计 在多个分支并行发展中。(该项目确实表现出使用雪崩模型的症状。) 开发人员对DVCS的了解不够充分 我读过的与某些问题相关的问题 我读过这个问题上不承诺到错误的分支,我觉得对于视觉线索的答案可能会有所帮助。但是,我并不完全相信,我们所遇到的问题不是更根本问题的征兆。 通过视觉线索,我们可以轻松地将它们合并到命令行中,但是大约有一半的团队使用Eclipse,我不确定如何合并视觉线索。 题 我们可以使用什么方法,以软件,项目管理或治理的形式来减少(理想地停止)错误的分支,从而占用我们的时间或弄脏我们已部署的代码? 对于我认为可能会做出上述贡献的原因的具体评论,将不胜感激,但这不应该限制您的答复。

4
分布式版本控制系统目前在Gartner的炒作周期中可以放在哪里?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 编辑:考虑到最近的低票(目前为+ 8 / -6),从我的角度来看,从程序员的角度来看,Gartner的生命周期是有偏见的指标。这是我要提交给管理部门的论文的一部分,管理类型是Gartner的读者的一部分。 考虑到DVCS的曝光度和热情(“可以”视为炒作,或至少受到这样的攻击),请在阅读此问题时考虑以下问题:“我如何使用Gartner的炒作周期说服管理层DVCS已准备就绪(或为我们准备好了,而不仅仅是炒作” 仅仅问DVCS是否炒作是没有建设性的,Gartner的炒作周期是一个比问问更客观的工具(即使该工具被认为是有偏差的)。如果您知道任何其他乐器,请务必提及。 编辑2:我同意Gartner的生命周期并不适用于所有技术,但我认为它可能产生了足够的嗡嗡声,因此有些人认为它是炒作,因此,至少应通过在仪器中使用此工具来对其进行评估/思考。为了证明/反证它在任何程度上。我是BTW DVCS的拥护者。 编辑#3:感谢您的回答。Bounty前往Caleb,提供详细和实用的建议来回答我的问题。可以接受的答案是给philosodad提供了另一种有用的工具并回答了我的问题之外。 我正在研究一份白皮书,以支持公司采用DVCS而撰写,但我偶然发现了社会证明的概念。我想证明采用DVCS的社会证据并不一定是对货物的狂热,因此我现在偶然发现了Gartner的炒作周期,该周期描述了5个阶段的技术成熟度。 我的问题是:在炒作周期的特定阶段,分布式指标控制系统(通常是指git,mercurial,bazaar等)的当前位置可以显示什么?话说,您是说目前对DVCS的期望是a)开始,b)膨胀,c)减少(幻灭),d)增加(启蒙)或e)稳定(成熟),以及(更重要的是)为什么? 我知道这是一个难题,涉及主观性,但是我将为特定阶段的最清晰论据/证据提供答案(和传统cookie)。
12 research  dvcs  cvcs 


3
持续集成和DVCS模式
我们目前使用Subversion和TeamCity,我们将转向使用Mercurial(特别是Kiln,因为我们是FogBugz用户)。 显然,这将导致我们的开发模式(我们两个人!)发生变化-希望有所改善-但我正在努力解决的一个问题是如何构建事物,以便我们仍然享受持续集成/我们的CI服务器的好处(已经存在并且将继续保持收益是给定的,对此问题的讨论不在此问题的范围之内。 借助SVN,我们致力于使用数量有限的中央存储库-每个项目实际上一个中央存储库(或多或少的一个Visual Studio解决方案),因此可以轻松触发构建并确保所有文件都已提交且没有任何内容但是,如果我们要充分利用Mercurial,我们将希望拥有更多的存储库实例,我希望这些更改通常会流向确定的“实时”存储库。我苦苦挣扎的问题是,对于我来说,实时回购似乎太“迟到”,无法触发我的CI构建OTOH每个开发人员每个项目一个CI构建可能会过多(并导致其他问题)。 我在钓鱼,但是那是因为中央颠覆仓库提供的一件事(我,在我们的设置下!)非常清楚什么时候建造。 nb我不是在问将Mercurial与持续集成结合使用的机制-我想为个人项目,模式和结构以及工作实践/工作流程做些准备,以求达到目标。

3
Git是否具有“安全模式”以防止重写历史记录?
当您对Git(和一般的DVCS)有点新鲜,并且开始探索历史记录的更改时,如果存储库仅是本地的,则可以放心,但是如果使用遥控器并尝试使用推动这种变化。 我期望的一个功能是启用“安全模式”的能力,这基本上会阻止我执行我不应该做的事情……那是什么意思?我的意思是对已经推向原点的事物进行历史重写。我无法精确定义它,但这将包括以下情况: commit --amend 当HEAD已被推动时 rebase 非本地分支机构 reset 被推的分支 这些是可能导致下一次push失败的情况的示例(因为IIRC不会快速前进)。我偶然地做了一些,不得不在遥控器上重新创建分支。而且我仍然很幸运能够如此快地执行此操作,以至于没人能拉出我重写的历史记录。 我相信可以识别​​这种类型的更改,并根据需要阻止用户进行更改。也许有一个选择吗? 如果没有,您认为尝试创建它值得吗?您会尝试精确定义如何识别这种“危险的变化”吗?
11 git  dvcs 

1
Git和Mercurial如何同时发展?
Git和Mercurial遵循相似的模型,并且具有相似的术语。Mercurial的最初发布仅在Git发布之后的12天。在最初的开发中,这两个项目如何最终如此相似?有人知道历史吗?
11 git  mercurial  dvcs 

2
为什么DVCS似乎都具有未落实变更的不合理恐惧症?
来自SVN背景,使用DVCS系统时要适应的最困难的事情之一就是,它们似乎都将任何未提交的更改视为滴答定时炸弹。 在Mercurial中,如果您尝试获取更改,并且您的工作副本中有任何未提交的更改,则必须跳过所有步骤以使其仅合并传入的更改。尝试切换分支吗?这将迫使您搁置所有内容,然后必须立即在另一端立即搁置所有内容。(SVN在这两种情况下都没有问题。) Git大致相同。我正在与另一个项目的开发人员并肩工作,而我只是试图将他的提交之一挑进我的叉子中。它拒绝让我,因为我的工作副本中的更改尚未提交,与他提交中的更改完全不同的文件。 甚至没有合并选项。显然,我必须先隐藏我的更改! 如果一个人以这种极端的谨慎对待完全无害的东西,我会称其为“恐惧症”,这是一种非理性的恐惧,应视为精神障碍。但是Git和Mercurial是由两个不同的聪明,理性的开发人员团队设计的,所以我不得不怀疑他们是否知道我所不知道的东西。 是否有技术上的理由证明这种对待未承诺变更的态度是正确的?如果是这样,为什么问题仅在DVCS上存在?

1
DVCS促进了地理分布团队之间的回购复制
我的公司正在探索从Perforce过渡到DVCS的问题,由于软件开发团队分布在德国,中国,美国和墨西哥,有时从一个地方到另一个地方的带宽并不理想,因此我们目前使用许多Perforce代理。 在与IT进行交流时,我们开始寻找一种方法,可以从地理分布的角度使事情顺利进行,以便每个人都能获得最新和最好的信息,而无需确定哪个回购服务器是真相的来源(即透明复制)。 我认为也许我们可以通过预推钩和预拉钩模拟DNS机制。例如,考虑国家A,B和C。从有福的A撤出后,A本身就会从B撤出变化,这反过来又会促使C发生变化。如果B和C有新的变化,它们将落入A。相反,当有推送时,它可以传播到所有受祝福的存储库。 我知道一般来说,您只有一个有名的仓库,但是这可能无法在全球范围内扩展,每个有名的仓库仅适用于来自单个国家/地区的团队。 我的问题是:DVCS回购复制的概念在实践中是否有用?有人成功完成了吗?如果是,正确的方法是什么?

3
dvcs-“克隆到分支”是常见的工作流程吗?
我最近正在与一位同事讨论dvc,因为我们的办公室开始考虑从TFS切换(我们是一家MS商店)。在此过程中,我感到非常困惑,因为他说尽管他使用Mercurial,但他没有听说过“分支”或“结帐”命令,这些术语对他来说并不陌生。在想知道他可能不了解它们并解释了dvcs分支如何在您的本地文件上“就地”工作之后,他感到非常困惑。 他解释说,类似于TFS的工作原理,当他想创建一个“分支”时,可以通过克隆来完成,因此他拥有回购协议的完整副本。这对我来说确实很奇怪,但是我必须承认的好处是,由于文件是分开的,因此您可以同时查看或处理两个分支。 在搜索此站点以查看是否有人问过这个问题之前,我看到有评论说许多在线资源都在推广这种“从分支到分支”的方法,这使发布者感到沮丧。这实际上在dvcs社区中很常见吗?这样做的利弊是什么?我永远都不会这样做,因为我不需要一次看到多个分支,切换速度很快,而且我不需要所有克隆都填满我的磁盘。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.