建那种外卖网站该怎么做,怎么做跳转流量网站,网站建设中源码,怎样制作悬浮的WordPress简介 在过去几年#xff0c;对于分布式版本控制可以给开发过程提供的益处有许多争论。最近#xff0c;分布式工具已经很成熟了。尽管分布式工具的一些优点最初可能不明显#xff0c;但是从长期来看#xff0c;它们提供的灵活性是非常有意义的。阅读完本文之后#xff0c;您… 简介 在过去几年对于分布式版本控制可以给开发过程提供的益处有许多争论。最近分布式工具已经很成熟了。尽管分布式工具的一些优点最初可能不明显但是从长期来看它们提供的灵活性是非常有意义的。阅读完本文之后您应该能够开始使用分布式版本控制系统基本了解分布式模型能够提供的优点。 围绕分布式版本控制的争论主要集中在不再需要的中心服务器。这是一个非常独特的特性对于一些开发人员组很重要但是它的真正价值在于它允许开发人员组实现他们选择的几乎任何工作流。它能够完成很多事情比如传统的集中式模型或两个开发人员在咖啡馆通过无线连接协同工作等等。 允许开发人员以各种新的方式工作这是分布式版本控制真正令人兴奋的特点。实际上在本文末尾会介绍如何实现这样的“咖啡馆”工作流。这对于作家、学校教师和 Linux® 内核开发人员都有益处。 什么是分布式版本控制 分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法但是它也可以使用中心服务器。更改可以被合并到 DVCS 的任何其他用户的系统中因此可以实现非常灵活的工作流。 DVCS 的两个主要优点是它比集中的版本控制更灵活因为它除了支持传统的集中式工作流还支持其他各种工作流它比集中式服务器快得多因为大多数操作在客户机本地进行而不需要网络操作。 什么是钩子 钩子是在版本控制操作的生命周期中通过程序执行操作的方法。例如通过使用钩子可以在代码签入check in存储库时自动发送电子邮件。另外还可以在签入代码之前检查用户是否满足一组条件比如包含一个测试文件。 另一种扩展版本控制系统功能的方法是编写插件。如果打算编写自己的插件在 参考资料 中可以找到描述 Bazaar、Git 和 Mercurial 的插件系统的文章链接。 DVCS 和集中式版本控制系统的主要差异 在 DVCS 和集中式版本控制系统之间有三个关键差异。第一个差异是DVCS 通过本地提交支持离线工作这是由 DVCS 的操作方式决定的。这与集中式版本控制完全不同集中式版本控制要求通过到中心服务器的连接执行所有操作。这种灵活性让开发人员在飞机上也能够像在办公室中一样轻松地工作可以一次又一次地进行提交。 第二个差异是 DVCS 比集中式系统更灵活因为 DVCS 支持许多不同类型的工作流从传统的集中式工作流到纯粹的特殊工作流再到特殊工作流和集中式工作流的组合。这种灵活性允许通过电子邮件、对等网络和开发团队喜欢的任何方式进行开发。 第三个差异是 DVCS 比集中式版本控制系统快得多因为大多数操作在客户机上进行速度非常快。另外在需要进行推push 操作与另一个节点通信时速度也更快因为两个客户机机器上都有完整的元数据。速度差异相当显著根据使用本地存储库还是网络存储库DVCS 比 Subversion 快大约 3-10 倍。 回页首 分布式版本控制工作流 因为 DVCS 非常灵活可以实现各种各样的工作流但是由于篇幅有限本文只讨论两种工作流。首先讨论最常用的工作流之一 Partner 工作流。按照 Partner 工作流一个开发人员启动一个项目然后进行分支。然后在不同开发人员工作的分支之间来回合并更改。 第二种常用的工作流是通过本地提交使用集中式服务器。在这种工作流中开发人员的工作方式与使用集中式 subversion 存储库时非常相似但是他们进行本地提交然后把最终更改推到集中式服务器。这种工作流有许多变体包括与 Partner 工作流结合使用。重要的是可以采用许多种工作方式通过使用 DVCS可以灵活地选择最适合自己的工作方式。 回页首 快速入门指南 了解一种新技术的最好方法之一是实际使用它。在本节中简要介绍 Mercurial、Bazaar 和 Git 中的常用操作您可以试试这些操作 Mercurial 安装sudo easy_install-2.5 mercurial建立项目目录mkdir hgrepo; cd hgrepo初始化项目hg init添加文件touch foo.txt; hg add foo.txt提交hg commit -m added foo.txt commit抓取共享的存储库hg clone ssh://example.com//projects/hgrepo本地提交更改hg -ci -m adding a change把更改推到服务器hg push以补丁形式查看未处理的更新hg incoming -p从服务器下载更新hg pull应用更改hg update合并冲突hg merge合并两个不相关的远程存储库hg pull -f ssh://example2.com//projects/hgrepoBazaar 安装sudo easy_install-2.5 bzr建立项目目录mkdir bzrrepo; cd bzrrepo初始化项目bzr init添加文件touch foo.txt; bzr add foo.txt提交bzr commit -m added foo.txt commit抓取共享的存储库bzr branch bzrssh://example.com/projects/gitrepo本地提交更改bzr -ci -m adding a change把更改推到服务器bzr push从服务器下载更新bzr pull应用更改bzr update合并冲突bzr mergeGit 安装下载最新的 tar 文件 http://kernel.org/pub/software/scm/建立项目目录mkdir gitrepo; cd gitrepo初始化项目git init添加文件touch foo.txt; git add foo.txt提交git commit -m added foo.txt commit抓取共享的存储库git clone ssh://example.com/projects/bzrrepo本地提交更改bzr -ci -m adding a change commit把更改推到服务器bzr push从服务器下载更新bzr pull应用更改bzr update合并冲突bzr merge 回页首 转换工具和与 subversion 的集成 这三种 DVCS 都能够把现有的 subversion 存储库轻松地转换为各自的格式甚至可以在不同的 DVCS 之间进行转换。这使开发人员能够方便地试用 DVCS 或从一种 DVCS 转移到另一种 DVCS。 例如对于 Mercurial可以使用工具 hgimportsvn 和 hgpullsvn 与现有的 subversion 存储库通信创建新的 hg 存储库和历史。tailor 工具是一种通用的存储库转换工具。 另一种有意思的试用方法是集成 DVCS 与现有的 subversion 存储库。对这种方法的详细讨论超出了本文的范围但是 参考资料 给出了一些工具的链接这些工具可以在 subversion 分支与 Git、Bazaar 和 Mercurial 之间进行双向操作。 回页首 第三方托管选项 如果开放源码或商业开发人员不希望或不需要管理自己的集中式 “集线器”那么可以选用流行的托管站点托管自己的 Git、Bazaar 或 Mercurial 项目。对于 Mercurial流行的免费和付费托管站点是 Bitbucket。对于 Git可以使用 Github对于 Bazaar可以使用由 Canonical 发起的 Launchpad。 回页首 提示“咖啡馆” Mercurial 工作流 图 1. 咖啡馆工作流 如果希望实现安全的特殊版本控制工作流让两个开发人员可以在咖啡馆中通过无线网络一起工作那么可以试试下面的方法。 第一个用户使用 Mercurial 创建一个存储库 mkdir /tmp/myhgrepo
cd /tmp/myhgrepo
hg init然后通过 Web 作为只读共享共享它 hg serve第二个用户使用以下命令克隆这个存储库 hg clone http://example.com:8000注意这是另一台机器的 IP 地址或本地主机名。在 OS X 上可以通过对 your-machine-name.local 使用 Bonjour 获得这一信息。 第二个用户进行他需要的更改然后作为只读的 HTTP 共享提供他的存储库 http://example.com:8000第一个用户对第二个用户的存储库拷贝执行 hg 拖操作 hg clone http://example2.com:8000每个开发人员都是安全的因为他们只在需要更新自己的本地文件系统时才对对方的存储库进行拖操作。 回页首 结束语 本文讨论了分布式版本控制能够提供的价值比较了三种主流工具 Git、Mercurial 和 Bazaar 之间的差异。如果您不太熟悉版本控制那么应该继续学习版本控制、钩子和插件以及它们能够提供的功能。 如果您是老手那么应该试试这些工具寻找最适合自己的工具。请通过 参考资料 中的链接详细了解各种分布式版本控制系统以及别人的使用经验。转载于:https://www.cnblogs.com/ryanlaw/archive/2011/10/11/2207967.html