我刚开始使用SVN.我知道基本命令并理解基本原理.我想知道是否有人在团队环境中使用Subversion有任何提示或最佳实践.
我可以看到在提交代码时添加合理冗长的消息的好处,但还有其他我应该记住的事情吗?
感谢所有伟大的答案 - 他们帮了很多忙.
Gor*_*son 75
鼓励频繁提交. 不熟悉版本控制的队友可能觉得他们需要将代码保留在存储库中,直到"它正常工作".教导每个人尽早提交,并经常尽快找到问题.而不是保持代码"直到它工作,建议你的队友创建可能破坏主干的功能分支.这导致......
建立分支和标记实践. 除了功能分支外,还鼓励你的队友使用分支来修复大错误.在工作的开始和结束时标记主要错误修复.为生产/ qa版本维护标签(以及可能的分支).
制定干线政策并坚持下去. 一个例子可能是,"主干必须始终构建没有错误." 或"主干必须始终通过所有单元测试".任何不能满足主干标准的工作必须在分支机构完成.
Tom*_*ter 65
不要在代码更改时提交格式更改
如果你想重组一个巨大的文件的空格(Control+ K+ D),那很好.提交格式更改与实际逻辑更改分开.如果要在文件中移动函数,也是如此.与实际编辑分开提交移动.
rme*_*dor 43
我一直坚持的一个关键概念是将相关的代码更改提交到一起.推论是在同一次提交中不提交不相关的代码更改.这意味着不要在一次提交中修复2个错误(除非它是相同的修复),并且不会在2次提交中提交一半错误修复.此外,如果我需要在系统的一个不相关的部分添加一些新的增强或某些东西,然后我需要进行其他工作,我会单独提交增强功能(首先).这个想法是,任何人可能想要拥有的任何变化(或自行回滚)应该是一个单独的提交.当需要进行合并或回滚损坏的功能时,它将为您节省大量的麻烦.
小智 15
已经提到了很多,这里还有一些:
如果您在源代码管理中有不需要的文件(例如配置,编译文件等),请将它们添加到忽略列表中.通过这种方式,您可以注意到任何您忘记添加的文件,总是期望显示为SVN未知的文件的空列表.
添加一个帖子提交事件,该事件将向您的开发人员邮件列表(或针对此目标的一个特定的邮件列表)发送一封与提交的更改相关的电子邮件,最理想的是它的补丁.
与您的错误跟踪器集成,以便通过链接到差异来显示对提交/功能请求的提交.像MantisBT这样的Bug跟踪器支持这一点.
考虑与持续集成(例如CruiseControl.NET),用于构建的NAnt和用于单元测试的NUnit/VS 集成.这样,一旦用户签入代码或在计划的时间间隔内编译代码,就会运行单元测试,并且开发人员会获得该流程的反馈.如果存储库被破坏(即不构建),这也会警告团队的其他成员.
Ele*_*onk 14
好吧,基础知识:
hro*_*nko 12
人们给出的答案很棒.其中大部分内容在svn用户文档中进行了总结,以了解SVN的最佳实践.
重复:
我想总结一下我坚持的最佳实践:
应该有存储库结构.我个人使用以下存储库结构:
/trunk
/tags
/builds
/PA
/A
/B
/releases
/AR
/BR
/RC
/ST
/branches
/experimental
/maintenance
/versions
/platforms
/releases
Run Code Online (Sandbox Code Playgroud)PA
pre-alpha),A
(alpha),B
(beta),AR
(alpha-release),BR
(beta-release),RC
(release release),ST
(stable).您可以通过图表的形式找到我的颠覆最佳实践的概述,说明我使用的软件配置管理方法的主要原则.
我发现非常有用的一件事是svn:external属性,这意味着你可以将其他存储库中的目录引用到你自己的库中.它提供了组织代码和数据的非常好的方法.一些例子是:
了解 SVN 的分支和合并工具及约定。
与其他团队成员合作的最佳方式是将工作分解为完整的开发功能/修复,然后在一个分支中进行单独的更改。然后,当完成/准备好/批准合并时,将更改合并回主线分支/主干。
这样,个人就可以朝着共同的目标(无论是在同一分支上还是在不同的分支上)努力,而不会与其他变更发生冲突。
您的里程可能会有所不同,这对于两个左右的人来说可能太过分了。