gpt4 book ai didi

git - 如何确保我的 git repo 代码是安全的?

转载 作者:太空狗 更新时间:2023-10-29 12:56:38 26 4
gpt4 key购买 nike

如果我们的组织要从像 subversion 这样的中央服务器 VCS 切换到像 git 这样的分布式 VCS,我如何确保我的所有代码都不会出现硬件故障?

有了中央服务器 VCS,我只需要每天备份存储库。如果我们使用 DVCS,那么所有开发人员机器上都会有大量代码分支,如果硬件出现故障(或者开发人员丢失了他的笔记本电脑或被偷了),那么我们将没有任何备份.

请注意,我不认为“让开发人员将分支推送到服务器”是一个好的选择 -- 那是 tedious开发人员最终不会这样做。

是否有解决此问题的通用方法?

一些说明:

使用本地中央服务器 VCS,一切 都必须在中央服务器上,除了开发人员最近的更改。因此,例如,如果开发人员决定分支来修复错误,则该分支位于中央服务器上并可立即进行备份。

如果我们使用的是 DVCS,那么开发人员可以创建一个本地分支(实际上还有很多本地分支)。在开发人员认为“哦,是的,我应该将其推送到中央服务器”之前,这些分支都不在中央服务器上并且可用于备份。

所以我看到的差异(如果我错了请纠正我!):如果我们使用 DVCS,则半实现的功能和错误修复可能无法在中央服务器上进行备份,但使用正常的风控系统。我如何保证该代码的安全?

最佳答案

我认为您会发现,在实践中,开发人员更愿意使用中央存储库,而不是在彼此的本地存储库之间进行推送和 pull 。一旦你克隆了一个中央存储库,在处理任何跟踪分支时,获取和推送都是微不足道的命令。将六个 Remote 添加到所有同事的本地存储库是一件痛苦的事情,而且这些存储库可能并不总是可以访问(关闭、在带回家的笔记本电脑上等)。

在某些时候,如果你们都在同一个项目上工作,那么所有的工作都需要整合。这意味着您需要一个集成分支,将所有更改集中在一起。这自然需要放在所有开发人员都可以访问的地方,例如,它不属于首席开发人员的笔记本电脑。

设置中央存储库后,您可以使用 cvs/svn 样式的工作流来 checkin 和更新。如果您有本地更改,则 cvs update 变为 git fetch 和 rebase,如果没有,则变为 git pull。 cvs commit 变成 git commit 和 git push。

通过此设置,您处于与完全集中式 VCS 系统类似的位置。一旦开发人员提交了他们的更改 (git push),他们需要这样做才能让团队的其他成员看到,他们将在中央服务器上并得到备份。

在这两种情况下需要遵守纪律的是防止开发人员将长时间运行的更改保留在中央存储库之外。我们中的大多数人可能都遇到过这样一种情况:一位开发人员正在开发功能“x”,这需要对某些核心代码进行根本性的更改。更改将导致其他所有人都需要完全重建,但该功能尚未准备好用于主流,因此他只是在合适的时间点之前检查它。

尽管存在一些实际差异,但两种情况的情况非常相似。使用 git,因为您可以执行本地提交并可以管理本地历史记录,所以个人开发人员可能不会像使用 cvs 之类的东西那样感觉到推送到中央存储库的需要。

另一方面,使用本地提交可以作为一个优势。将所有本地提交推送到中央存储库的安全位置应该不是很困难。本地分支可以存储在开发人员特定的标记命名空间中。

例如,对于 Joe Bloggs,可以在他的本地存储库中创建一个别名来执行类似以下的操作以响应(例如)git mybackup

git push origin +refs/heads/*:refs/jbloggs/*

这是一个可以在任何时候(例如一天结束时)使用的单一命令,以确保他的所有本地更改都得到安全备份。

这有助于应对各种灾难。 Joe 的机器出问题了,他可以使用另一台机器获取已保存的提交并从他离开的地方继续。乔病了? Fred 可以获取 Joe 的分支以获取他昨天所做但没有机会针对 master 进行测试的“必须有”修复。

回到最初的问题。 dVCS 和集中式 VCS 之间是否需要区别?你说在 dVCS 案例中,半实现的功能和错误修复不会最终出现在中央存储库中,但我认为这没有区别。

我见过很多情况,在使用集中式 VCS 时,一个开发人员的工作箱中保留了一个半实现的功能。它要么采用允许将一半编写的功能 checkin 主流的策略,要么必须做出创建中央分支的决定。

在 dVCS 中可能会发生同样的事情,但应该做出同样的决定。如果有重要但未完成的工作,需要集中保存。 git 的优势在于创建这个中央分支几乎是微不足道的。

关于git - 如何确保我的 git repo 代码是安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/110313/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com