问题描述
想了解自托管版本控制系统是什么,以及它与GitHub有何不同。用户想知道如果使用自托管的版本控制系统,代码会存储在哪里,即它是否会上传到服务器上,如果重置计算机,是否还能访问代码。
解决方案
自托管版本控制系统是指您或您的组织拥有并控制的版本控制系统。与此相反,由GitHub.com、Azure、GitLab.com等提供的基于云的版本控制系统不是由您拥有,而是由相应的服务提供商拥有。不要将代码的所有权(由其许可证决定,通常由您拥有)与用于对代码进行版本控制的服务的所有权混淆。
自托管版本控制系统与GitHub之间存在以下区别:
1. 功能上可能存在差异。GitHub等第三方托管的版本控制系统(即不由您托管的系统)通常不仅仅提供版本控制功能,还包括协作工具、身份管理、问题跟踪等。这些功能虽然严格来说不属于版本控制系统的一部分,但它们极大地改善了使用版本控制系统的体验。
2. GitHub拥有并运营该服务。您可以提出更改其服务、API等的建议,甚至可能对其开源产品进行贡献,但您不拥有该服务。该服务根据您选择的服务级别协议向您提供。您无法对其进行自定义更改。这在大多数情况下是一件好事,除非您的业务是提供版本控制系统本身,否则您只是想使用该服务,而不是与之竞争。
关于代码的存储位置,您提到了代码的存储位置。这里有两个概念需要区分:自托管和分布式版本控制。
自托管指的是您自己控制和管理的版本控制系统。如果您在自己的计算机上自托管,那么如果计算机出现故障,您可能会丢失所有数据。同样,如果其他人在只有一个位置托管您的代码,那么如果该位置的机器出现故障,您仍然有可能丢失所有数据。
分布式版本控制是一种解决方案,它解决了集中式版本控制的一些问题。在分布式版本控制中,每个客户端都有完整的代码历史记录副本。因此,如果您自己托管的版本控制系统在您的计算机上,您可以设置一个新的版本控制服务器,将客户端切换到新服务器,代码本身的处理方式将与以前相同。但是,您仍然有可能丢失其他内容,如问题跟踪、权限设置等。
如果您想要自托管一个带有集成Web界面、问题跟踪和拉取请求功能的版本控制系统,GitLab可能是您的主要选择。
请注意,以上解决方案仅供参考,具体操作和配置可能因您的需求和环境而有所不同。在设置自托管版本控制系统时,请确保了解相关的操作和风险,并根据您的需求进行适当的设置和配置。