我应该从哪里开始学习版本控制系统?我过去使用过 SVN、Team Foundation 和 Sourcesafe,但我并没有完全掌握它,我的团队似乎也没有掌握它。
掌握哪些要点最重要?我意识到这从 VCS 到 VCS 是不同的,但是为了这个问题,我们可以假设 Subversion 是我最有兴趣了解的 VCS。
另外,如果可以的话,请推荐任何您认为有用的有关该主题的书籍。
我应该从哪里开始学习版本控制系统?我过去使用过 SVN、Team Foundation 和 Sourcesafe,但我并没有完全掌握它,我的团队似乎也没有掌握它。
掌握哪些要点最重要?我意识到这从 VCS 到 VCS 是不同的,但是为了这个问题,我们可以假设 Subversion 是我最有兴趣了解的 VCS。
另外,如果可以的话,请推荐任何您认为有用的有关该主题的书籍。
关于修订控制的维基百科文章是一个很好的起点
在尝试教我的同事时,我发现让他在最后理解词汇是开始向他介绍源代码控制技术的好方法。
不知道什么是分支?去看看它们是如何工作的:)
Version Control with Subversion上有一本免费的在线 subversion 书籍,它提供了非常宝贵的参考资料。
我发现了 Eric sink 的这个有用的 Source Control HOWTO
我认为关于源代码控制系统的最重要的一点是:
如果您已经涵盖了这些主要概念,那么这几乎就是您需要了解的源代码控制的大部分内容 :)
有几本关于这个主题的免费电子书。尝试:
使用 Subversion进行版本控制:使用 Subversion 进行版本控制
Subversion 版本控制 (PDF): Subversion 版本控制
我已阅读并推荐前者。没有读过“Subversion 版本控制”,但它看起来很深入。
要回答您的问题:要掌握哪些最重要的要点,我建议在完成整个签入和签出过程后,回滚到旧版本并执行差异,您应该看看分支。分支可以帮助您应对处于重大更改中并突然需要执行错误修复并将其部署到生产环境中的痛苦,而无需混入您正在处理的半成品。
我认为 Subversion 文档是一个很好的起点。我发现维基百科并没有真正的帮助,因为它只涵盖了“基本”观点。
在 alex 提到的Subversion Book中,我特别推荐第 1 章,尽管如果您已经对 Svn 有一定的经验,那它的水平可能太低了。第 4 章详细介绍了分支和合并,但技术性很强。
TortoiseSVN 文档中的日常使用指南对我帮助很大;它涵盖了教程风格中最重要的操作。
我想你需要掌握的最重要的事情是分支、合并和标记。理解这些需要时间和练习,所以我强烈建议在本地存储库中创建一个小型宠物项目,以便您进行试验。我认为重要的是要意识到整个系统是基于差异的:合并只不过是自动将一个分支中所做的更改应用到另一个分支中的代码,而不是自己更正代码。诸如冲突之类的东西(我花了很多时间来理解)只是其后果。
但是,当然,我也在学习:)
我也和您一样,从未真正对 SVN 或 SourceSafe 感到 100% 满意。
查看Mercurial。Quickstart和Cheatsheets也是DongWoo Lee
的一份很棒的备忘单(他的网站似乎已关闭,所以我扫描并上传到我的网站)
使用 Mercurial,一切似乎都变得更加顺畅和容易,不知道为什么,因为它的命令与其他人没有太大不同。
我不确定你对版本控制系统有多少经验,但对于那些对这个概念没有先验知识的人,我建议你阅读Subversion 书的前几章。那里描述的一些东西是特定于 Subversion 的,但是许多概念对于版本控制系统以及如何使用它们是“通用的”。
我认为人们在开始使用它们之前努力理解版本控制系统背后的主要概念和基本原理是非常重要的。我经常看到开发人员只使用他们系统功能的一小部分,因为他们不了解底层概念,因此要么看不到使用他们认为“高级”或“不必要”功能的意义,要么他们是只是因为害怕破坏某些东西或给项目造成问题而害怕这样做。
在过去与许多开发人员一起经历过这种现象后,我最近在我的博客上总结了我认为的版本控制最佳实践。
阅读本文:软件如何发展
恕我直言,配置管理的最佳网络资源将是Brad Appleton的 ACME 项目
您应该阅读所有 SCM 模式和反模式。所有 SCM 技术术语在这个站点上都有很好的定义,并且有很多关于分支技术、敏捷 SCM 和其他重要内容的文章。
这可能会为您提供足够的理论背景来处理任何特定版本的工具。
至于 Subversion 书,它可能是上面提到的 Official Subversion 书。它可以在线免费获得,或者您可以购买硬拷贝。
恕我直言,这就是这本书:Berczuk 关于 SCM 模式的书
Eric Sink 的版本控制示例很好且易于遵循