Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
程序员应该多久向SVN提交一次?_Svn - Fatal编程技术网

程序员应该多久向SVN提交一次?

程序员应该多久向SVN提交一次?,svn,Svn,一般规则是什么?何时提交?尽早且经常提交。在团队中工作时,它可以最大限度地减少冲突解决步骤。但是不要做任何破坏你的构建的事情。理想情况下,持续集成会在构建中断时通知团队。每当我完成一项“工作”时,我都会尝试提交—当然,只要代码能够编译。如果在主干上工作,我会在遇到不会影响我的队友的里程碑时提交。当我在一个私有分支上工作时,每当我遇到一个我不想失去的里程碑时,我都会做出承诺(我不在乎它是否构建)。对于个人项目,我经常使用mercurial和commit。这一切都取决于什么对你和你的团队有效。这在一

一般规则是什么?何时提交?

尽早且经常提交。在团队中工作时,它可以最大限度地减少冲突解决步骤。但是不要做任何破坏你的构建的事情。理想情况下,持续集成会在构建中断时通知团队。

每当我完成一项“工作”时,我都会尝试提交—当然,只要代码能够编译。

如果在主干上工作,我会在遇到不会影响我的队友的里程碑时提交。当我在一个私有分支上工作时,每当我遇到一个我不想失去的里程碑时,我都会做出承诺(我不在乎它是否构建)。对于个人项目,我经常使用mercurial和commit。这一切都取决于什么对你和你的团队有效。

这在一篇关于最佳实践的老文章中有介绍(也有详细介绍)


我建议你看看这篇文章,因为它涵盖了很多好的想法,而不仅仅是提交的频率。

当你有不想丢失的代码时提交。这并不意味着你要致力于主干,如果你在一个团队中进行开发,你应该避免为他人破坏东西。如果编辑器破坏了文件,您希望修改多少代码?一两个小时?

每当我完成一个工作单元时,我都会承诺:修复一个bug、添加一个功能、提高效率等等。但我尽量避免长时间的沉默。中的建议值得一读。

这取决于具体情况

  • 如果您在自己的分支内工作或使用git,请立即启动
  • 如果有一个自动化的构建过程或持续集成,您将希望提交粒度改进
  • 如果您在分支上与其他人同时工作,那么当您有可靠的细粒度改进时,您会希望提交,但更多的是基于“里程碑”的基础
一般来说,当我在自己的分支机构工作时,我会遵循两条准则

  • 如果某件事“完成”,则提交。这经常被松散地使用——它可以是一个函数、一个类、一个页面,或者一些足够完整的东西,可以独立存在
  • 如果是“这可行,但很难看”的情况,请提交。在这里提交作为一种退路,我回去修改我丑陋的修复,使之更优雅。更糟糕的情况是,我回到了可行的解决方案,不管它多么丑陋

使用测试驱动开发时,每次编写新的单元测试并通过测试时,我都会签入

  • 写测试
  • 确保测试失败(否则测试无效或不需要)
  • 为此测试编写新代码
  • 确认所有自动测试均通过
  • 登记入住
  • 重构您的工作,使您引入的任何复制不再存在
  • 确认所有自动测试仍然通过
  • 登记入住
  • 进入第一步

svn要求提交到远程服务器,这使得您很难尽可能频繁地提交,因此我建议您尝试mercurial或git,以便您可以随时进行本地提交,如果必须使用集中式svn存储库,则在进行清理后将这些提交发送到svn(通过git svn或hg svn)


您询问提交的频率意味着svn的集中式本质在某种程度上阻碍了您的工作流程。一旦您通过了学习曲线,您将为本地机器存储库的好处感到高兴。

来自精简/分布式VCS或以前使用过它的程序员将通过小更改或功能进行提交,因为本地提交非常便宜。然后,一旦需要同步,他们将推动中央回购。但是由于SVN的提交非常昂贵,所以每天使用SVN的程序员(通常)都会提交,有时变更集可能会非常大,提交可能需要通过特性进行关联。这是坏习惯


因此,我也尝试将DVCS使用的最佳实践应用到SVN中。因此,我将通过特性向SVN提交,以便在更改中出现问题时更容易回滚

如果我需要添加一个新功能或修复一个bug,我通常会做的是从我需要的任何地方创建一个分支,在那里做我的工作,让它的代码得到审查,然后再将它合并回来。您甚至可以为每个开发人员保存更改的用户(如果用户很多,则可能没有意义)分解您的分支文件夹。

一般规则:

  • 在做了有意义的原子变化之后
原子更改:是一种“逻辑单元”更改,您可以轻松地将其写入提交的注释中

有道理:它包括安全更新-编译而不是破坏功能-这有逻辑上的变化,你不怕在评论中说

我什么时候做承诺:当我做了一些一般规则中提到的改变,并且我试着更频繁地去做


在这里可以找到更多的好做法:

Never。程序员应该致力于git。可能的重复:@ChssPly76-像一个真正的git一样说话。@ChssPly76我不知道git有这么多噪音。当然,这对于开源项目来说是很棒的(我也很喜欢),它解决了集中式VCS的许多问题(容易创建分支、断开连接的工作等等)。但是,请向我解释一下DVCS为IT团队的普通组织解决了什么问题。根据我的经验,在这样的环境中,开发人员总是相互联系的,不进行分支,因为这会惹恼他们(对或错,这不是问题),不喜欢或只是不知道如何使用命令行,不喜欢更改,等等。那么为他们使用Git有什么意义呢?我很好奇…即使一个人出于任何原因不喜欢某个工具,这个问题仍然可以回答,因为它确实是任何给定工具的一个一般性问题。当你认为你承诺的次数足够多时,就多做一次!或者换一种说法,在开始新的工作之前+1这对svn来说非常有意义(即,您不想合作