#2 和/或 #3
#1
单一存储库,锁定访问 - 现在很少使用,因此它们并不值得一提。
#2
单一存储库、并发访问——被称为 VCS 或 CVCS(集中式版本控制系统)仍然被广泛使用。
#3
分布式 - 是下一件大事,因为它们消除了其他系统强加给开发人员的许多人为障碍。
首先,回答您的问题/疑虑:
1.
商业接受度取决于组织及其开发人员。如果经理是负责所使用软件的人,并且他们倾向于在几乎没有实际证据的情况下强硬保守的决定,那么他们可能会默认使用微软提供的任何东西。在这种情况下,祝你好运。我听说过的所有关于 MS 版本控制(特别是 SourceSafe)的事情都是坏事,我不确定 MS 是否有 DVCS 选项。
OTOH,如果开发人员团队负责选择他们的工具(或者经理们思想开放),那么 git 或 mercurial 可能是要走的路。git 很难适应,因为它过于复杂。mercurial 是 CVCS 的一个非常简单的过渡,请务必下载 tortoisehg GUI 客户端以了解工作流程。两者都完全稳定并可以投入生产。Mercurial 和 Subversion 用于 Sourceforge.net 以及 Google Code,它们都托管了数千个项目。他们可能有的任何错误,他们要么知道他们已经解决了。
2.
我敢肯定,当我说“在这个时代,滚动你自己的版本控制系统是一种荒谬的时间和精力浪费”时,我代表了整个开发人员。
当然,您可能可以制作一个小型且适合您的应用程序的专用版本控制系统;但是,在您决定之前,请考虑一下这项工作所涉及的所有时间和精力。更不用说,您需要将版本控制系统的代码置于版本控制之下。纳夫说……
3.
不,您不是,您实际上可以同时使用两者。很多人使用 CVCS(通常是颠覆)在组织范围内进行集中版本控制,同时使用 DVCS 在较小的小组或个人中进行本地开发(甚至有微软工程师在他们的开发人员小组中秘密使用 git 的故事)。由于 DVCS 在文件系统中仅由隐藏文件夹和可能的忽略文件表示,因此很容易将所有信息添加到 CVCS 忽略文件中,这样信息就不会在中央存储库中被跟踪。Easy peasy,如有必要,您可以利用两者的优势。
我认为,当您提交 DVCS 的提交历史记录到 CVCS 时,甚至有办法将其传输到 CVCS。虽然,我不知道具体是怎么做的,因为我从来没有理由这样做。
4.
#2和/或#3绝对。
如果已经有一个 CVCS 并且你应该使用它,我会说两者。
Subversion 可能会做任何事情,但问题是,CVCS 的所有版本历史都保存在服务器上。IE,如果您没有直接的网络访问权限,则无法提交或更新。这对一些开发人员来说可能很好,但大多数开发人员都在移动,并且在他们需要工作时不能总是找到网络连接。不好的部分是提交被拖出,他们最终在与主干开发分支进一步不同步的源代码上工作。Subversion(或一般的 CVCS)在处理分支方面也是出了名的糟糕,这意味着,如果您有两个开发人员在主线的两个不同分支上测试想法并且他们决定将它们重新合并在一起,事情就会变得丑陋。DVCS 在分支机构中要好得多。
如果没有 CVCS,则仅使用 DCVCS。
DCVS 能够做任何事情,因为您可以将存储库的远程克隆用作存放点。工作流程的不同之处在于,当您提交到 CVCS 时,如果没有问题,它会直接进入远程存储库。在 DCVS 中,当您提交它时,如果没有更改,它会提交到本地存储库。然后,在您准备好发布一组更改后,您将提交(或在 mercurial 中同步)推送到远程。
由于 DCVS 中的存储库都是相同的,因此您可以从任何其他存储库推/拉,无论位置如何。一开始有点棘手,但它有一些明显的优势。首先,无论你走到哪里,你总是带着项目的历史,所以如果中央服务器出现故障,你所有的开发人员都带着它的备份副本,所以这没什么大不了的。其次,允许开发人员在任何时候不受限制地提交是非常有益的。开发人员提交的越多,版本历史记录就越详细,如果代码需要回滚,您发现问题的速度就越快。
实现您所描述的内容。在您希望放置的任何位置创建启动器存储库。它所需要的只是网络访问。
将初始文件复制到项目文件夹并提交。
让所有处理文件的人克隆他们自己的存储库副本。
如果您需要以编程方式进行更新,您可以检查是否需要从中央存储库中提取更改或提交并在必要时使用命令行推送新更改。
只要您可以将序列化数据写入源代码控制下文件夹中的文本文件,这不是问题。当您提交/推送时,您必须手动解决冲突,但这是任何版本控制系统所期望的。
如果要确保远程存储库和本地存储库之间几乎没有冲突或没有冲突,请始终在提交之前拉取本地副本。这样,如果有冲突,可以在本地处理。
这就是我得到的。