📅  最后修改于: 2020-10-31 14:15:29             🧑  作者: Mango
本章讨论版本控制系统的生命周期。在后面的章节中,我们将为每个操作看到Subversion命令。
该存储库是开发人员存储所有工作的中心位置。存储库不仅存储文件,而且还存储有关更改的历史记录。这意味着它将保留文件中所做更改的历史记录。
“创建”操作用于创建新的存储库。在大多数情况下,此操作仅执行一次。创建新存储库时,VCS会希望您说些什么来标识它,例如您希望在何处创建它,或者应给存储库指定什么名称。
“签出”操作用于从存储库创建工作副本。工作副本是开发人员进行更改并随后将这些更改提交到存储库的私人工作场所。
顾名思义,“更新”操作用于更新工作副本。此操作将工作副本与存储库同步。由于存储库由所有团队共享,因此其他开发人员可以提交更改,并且您的工作副本会更旧。
让我们假设Tom和Jerry是从事一个项目的两个开发人员。两者都从存储库中签出最新版本并开始工作。此时,其工作副本已与存储库完全同步。 Jerry非常有效地完成了他的工作,并将更改提交到存储库。
现在,汤姆的工作副本已经过时。更新操作将从存储库中提取Jerry的最新更改,并更新Tom的工作副本。
结帐后,您可以执行各种操作来执行更改。编辑是最常见的操作。可以编辑现有文件以从文件中添加/删除内容。
一个可以添加文件/目录。但是,这些文件/目录不会立即成为存储库的一部分,而是会被添加到挂起的更改列表中,并在提交操作之后成为存储库的一部分。
同样,可以删除文件/目录。删除操作会立即从工作副本中删除文件,但是实际删除文件的操作会添加到挂起的更改列表中,并在提交操作之后对存储库进行更改。
“重命名”操作更改文件/目录的名称。 “移动”操作用于将文件/目录从存储库树中的一个位置移动到另一个位置。
当您签出工作副本或更新工作副本时,您的工作副本将与存储库完全同步。但是,当您对工作副本进行更改时,它会比存储库更新。最好在“提交”操作之前检查您的更改。
“状态”操作列出了对工作副本所做的修改。如前所述,每当您在工作副本中进行更改时,所有这些更改都会成为挂起的更改列表的一部分。而“状态”操作用于查看挂起的更改列表。
“状态”操作仅提供更改列表,但不提供有关更改的详细信息。可以使用diff操作来查看对工作副本进行的修改的详细信息。
让我们假设一个人对其工作副本进行了更改,但是现在,他想放弃这些更改。在这种情况下,“还原”操作将有所帮助。
还原操作还原对工作副本所做的修改。可以还原一个或多个文件/目录。也可以还原整个工作副本。在这种情况下,“还原”操作将销毁待处理的更改列表,并将工作副本恢复为原始状态。
合并时可能会发生冲突。 “合并”操作会自动处理所有可以安全完成的操作。其他一切都被视为冲突。例如, “ hello.c”文件在分支中被修改,而在另一个分支中被删除。这种情况需要一个人做出决定。 “解决”操作用于帮助用户弄清楚事情并通知VCS有关处理冲突的方式。
“提交”操作用于将更改从工作副本应用于存储库。此操作将修改存储库,其他开发人员可以通过更新其工作副本来查看这些更改。
在提交之前,必须将文件/目录添加到挂起的更改列表中。这是更改等待提交的地方。使用commit时,我们通常会提供一条日志消息来说明有人进行更改的原因。该日志消息成为存储库历史记录的一部分。提交是一个原子操作,这意味着整个提交成功或回滚。用户永远不会看到半完成的提交。