自定义Git服务器也可以提供更新,即使它根本不存储代码



我读了pro git book to to Git on the Server章节,其中显示了如何制作git服务器:它说(第94页(:

为了最初设置任何git服务器,您必须将现有存储库导出到新的裸露中 存储库 - 不包含工作目录的存储库

服务器完成后,我意识到no working directory意味着没有代码:如果我正确地说,没有代码存储在我们的服务器中。

我的校长要求我在我们公司网络中设置Git服务器以存储最新的生产代码,但他希望代码在那里:他认为该服务器既是Git Server and Updates Server。>

这意味着我们的git服务器内部没有代码,应该为我们开发的代码提供更新。

这实际上是可能的,还是我应该为更新提供不同的建议,将作业分配在存储代码(使用GIT服务器(之间并提供更新(使用另一台服务器(?

正如马克·阿德尔斯伯格(Mark Adelsberger(所指出的,数据库(.git/objects/.git/objects/pack/目录,在非票据存储库中(商店 evestery 。。

git的重点是永远永远存储 consits 。这些提交不是文件,尽管它们(间接(包含文件。git称为 blobs; 提交的对象,以及另外两个称为 trees 注释标签的内部对象类型 - 都存储在一个特殊,压缩(有时非常压缩(,仅Git的格式。这些仅对git本身有用。

为了使您或计算机的其余部分要使用文件,它们需要以普通格式,而不是某些特殊的仅GIT格式。git可以让您在您自己工作的领域中这样做:a 工作树

但是,如果您有工作树,则可能会使用它来进行工作。如果应该按请求收到并采取行动,那么当某个可怜的家伙的工作中发生的工作会发生什么,当时,bam!有人将新东西推入他的存储库?坏事发生了。

显而易见的解决方案是Git的使用方法:如果您要接收推送,请消除工作树。现在,无处可去 put 进行过程中的工作,因此从来没有任何东西会被覆盖。这就是--bare存储库:它消除了工作树,因此没有地方可以工作,因此不能被别人突然覆盖。

有多种妥协方法,但是像大多数妥协一样,它们往往会有各种问题。裸露的存储库可以接收推动下提交的推动,并且可以接受提取委员会的提取连接请求,而被推送请求覆盖的一件事情是Bare Repository的想法。一种"快进"的方式,这样就可以将新的consits 添加到可从名称中达到的提交集中。(请记住,在git中,一个分支 name 只是一个可移动的指针。另请参阅" branch"&quot"(

,我们到底是什么意思

没有工作目录并不意味着没有代码。代码历史记录存储在数据库中,这是裸存储库的主要目的。

最新更新