什么是最好的SCM实践?

时间:2009-03-21 20:10:32

标签: svn git version-control

我一直在使用Git来管理自己的个人项目。我没想到我是如何使用它的。每当有一个没有真正想到的里程碑时,我通常会提交所有更改。

但在阅读blog post提到你应该如何改正提交信息后,我意识到我真的不知道如何正确使用SCM。

所以我想知道您是否有关于以下内容的任何提示:

  • 何时应提交更改
  • 如何编写提交消息
  • 如何使用存储库与他人合作
  • 其他任何事情......

谢谢!

9 个答案:

答案 0 :(得分:5)

由于您使用的是git,以下是我可能会或可能不适合您的一些做法:

  1. 始终在具有描述性名称的本地分支中工作,例如work / feature_name(使用git的awashome bash完成来帮助您键入)
  2. 在本地分支机构中尽可能经常地提交简短的评论(以记录提醒自己的意图。)因此,您可以获得完整的原始思想/发展历史记录。
  3. 在推送/发布提交/补丁之前,从您的工作分支创建一个pu(建议更新)分支(git checkout -b pu / feature_name)并使用git rebase -i进行完美提交,即组相关的小提交(和/或拆分大型提交)进入逻辑提交并编写有意义的描述(对于其他人和您自己)确保每个逻辑提交都构建并传递回归。
  4. 发布您的pu / feature_name(要么让人们拉或只是推送到像github这样的公共服务器。)
  5. 如果您有代码审核流程,您可能需要多次迭代3次和4次。
  6. 听起来很复杂,但练习真的很愉快(至少对我而言),因为git非常快,并且在完成所有这些步骤时感觉非常正确。

答案 1 :(得分:3)

我知道有两种可防御且通常使用的权力用于提交:

  • 精细提交,你提前提交,经常提交,并以小块提交。每次提交时系统可能都处于良好状态。这种做法的主要好处是,您可以清楚地了解已更改的内容以及何时更改,并使用darcs之类的系统或git-rebase这样的命令,您有机会“挑选”提交您感兴趣的内容。

  • 可靠提交,只有在系统处于固定状态时才提交,例如,它不仅可以构建,还可以通过回归测试。

在一个大型团队项目中,某种可靠的方案是必要的,尽管您仍然可以在本地进行细粒度提交,并且只有在处于固态时才会公开。

多年以后,我一直观察到大多数学生和其他初学者都害怕犯错并且不经常犯错。对于我自己的项目,我倾向于使用细粒度方法,对于较大的项目,我通常至少携带两个分支,对一个进行固体系统提交,对其他进行细粒度提交。

答案 2 :(得分:3)

其他答案适用于使用多人使用的中央存储库。当我使用git时,我通常拥有自己的私有分支来处理我正在处理的东西,而且我倾向于做很多小的提交。在开发时我发现这很有用,因为当我意识到我应该做一些不同的事情时我可以快速回溯,而且我也有一个相对详细的记录我所做的事情。

然后,当我准备好向上游推送(即测试,记录等)时,我推送作为单个提交,避免中央仓库中的混乱。两全其美。

答案 3 :(得分:2)

从Eric Sink查看Source Control HOWTO。我最后一次经历它,它主要集中在集中式VCS上,但仍然有很多好东西。

答案 4 :(得分:2)

  • 提前提交,经常提交。
  • 保持提交较小。如果提交很大,请尝试在有意义的地方将其分解。
  • 不要破坏代码。每次提交都应该使代码保持工作状态。
  • 尝试在提交消息中包含意图,而不仅仅是“what”。
  • 不要注释掉代码。取而代之的是。
  • 利用分支进行实验或潜在的代码破坏更改。
  • 标记您的发货版本。

答案 5 :(得分:1)

我通常在添加新功能后,或者在记录完错误修复完成后提交。基本上,一次一件事。这样可以更轻松地回滚更改。

对于提交消息,我将列出新功能的附加功能。对于错误修复,我从错误数据库中包含错误的ID。

答案 6 :(得分:1)

在处理一个小型的个人项目时,它可能更少,因为你知道你的代码,你记得你做了什么,大概是什么时候 - 至少我做了。

但对于拥有众多开发人员的大型项目来说,

非常重要
  • 始终指定问题编号(可以使用任何优秀的SCM强制执行)
  • 保持提交次数
  • 仅提交工作代码
  • 只提交比之前的代码更好的代码
  • 提交干净的代码(即不要留下测试代码,旧的注释代码等)
  • 不仅将“已解决的问题X”写为评论,而且还要说明有关错误/更改的更多信息,例如“修复问题X,其中面板将扩展到窗口大小之外”。

查看已更改文件的历史记录,并且您正在尝试查找特定问题何时出现,良好的评论将帮助您更快地找到正确的提交。

通过保持提交次数,还可以更轻松地检查与新功能相关的更改,还原“功能”或将其合并到另一个树中。

/ B

答案 7 :(得分:0)

当您提交更改时,请确保代码构建并基本上正常运行。提交破坏构建的代码是不好的形式。如果您在团队环境中工作,那么没有什么比查看最新代码以查找它破坏应用程序或甚至不编译更糟糕的事情。

关于评论,请粗略描述代码的作用,理想情况是为什么要这样做。这使您可以在不必阅读代码的情况下找出签入的内容

答案 8 :(得分:0)

对于个人项目,我倾向于尽可能经常地提交提交,这可能是每小时几次,因为当我意识到我遇到了错误时,这可以让我及时回到之前的“快照”路由。

对于多用户项目,它将取决于规则,在达到这些目标之前,您无法提交某些内容。就个人而言,当我可以按照“修复此票证”或“实现此功能”的方式撰写评论时,我倾向于提交。

至于评论,我提供了更改摘要或故障单或维基参考。应该记录代码和差异,以便提供详细信息。