分布式版本控制系统是否会促进不良的备份习

时间:2010-03-31 09:12:26

标签: version-control dvcs

在DVCS中,每个开发人员在他们的工作站上都​​有一个完整的存储库,他们可以为其提交所有更改。然后他们可以将他们的repo与其他人合并,或克隆它,或者其他任何东西(据我所知,我不是DVCS用户)。

对我而言,标志着副作用,更容易忘记备份。在传统的集中式系统中,您作为开发人员和负责人都知道,如果您提交了某些内容,则会将其保存在可以提供适当备份解决方案的中央服务器上。

但是使用DVCS,您似乎只需要在分享时将工作推送到服务器。你在本地拥有repo非常好,所以你可以在你的功能分支上工作一个月而不会打扰任何人,但这意味着(我认为)检查你的代码到repo是不够的,你必须记得做常规推送到备份服务器。

这也意味着,不是吗,团队负责人无法看到所有那些不错的SVN提交电子邮件,以便大致了解代码库中发生了什么?

这是否是一个真正的问题?

4 个答案:

答案 0 :(得分:2)

我可以理解你关于devs忘记备份一旦他们的本地差异消失(因为他们已经在本地提交)并且停止用大量输出唠叨他们的担忧。我认为解决方案可以在于更好的工具,模拟工具!您可以在每个开发人员的框中设置一个cron作业,将其存储库中的每个最后可到达对象推送到中央存储库,并将其标记在具有命名空间分支的中央(备份)存储库中。考虑到正确的refspec,我认为“git push”可以做到这一点。然后,你所做的只是影响公共分支的状态。

但是你真的需要像以前那样积极的备份过程,当回购只在一个地方存在 时?使用DVCS,您需要更高级别的灾难才能丢失所有代码。你现在需要一个小行星或炸弹击中你的办公室(以及你所有的非现场团队成员),而不仅仅是硬盘或RAID控制器坏了。注意,我不是在提倡邋;;我主张以较低的成本承担同等风险。

答案 1 :(得分:1)

我认为你没有自动化。分布式或集中式VCS可以与备份(或非备份)结合使用。这完全是团队中的纪律问题。

提交电子邮件相同。如果团队有规则定期将更改推送到正确的存储库,那么您也可以拥有一个有效的提交邮件列表。

在集中式VCS的团队中,不良习惯也会增长。你总是要养成坏习惯。

答案 2 :(得分:0)

拥有存储库的本地副本可能会鼓励糟糕的备份习惯,如果一个人松懈的话。但是,应该备份主存储库。

“整个存储库的本地副本”比备份更重要。它减少了检查代码库历史的延迟 - 比如,与最新版本的差异 - 从网络往返到本地硬盘驱动器。

如果您的主存储库位于您的千兆位LAN上,那听起来并不是那么重要。如果你是一个远程办公人员,并且存储库距离VPN一个600毫秒以上的距离,它将带来一个与众不同的世界。

我从未调查过,但我确信Mercurial和Git都支持提交后挂钩,允许您设置提交邮件到团队领导。然后,每个开发人员都可以相应地设置她的存储库,或者有一个临时存储库,允许使用提交邮件的半生不熟的功能,或者其他任何内容。

编辑关于John关于长期运行实验丢失的评论,因为它尚未准备好提交到主仓库:在单独的分支中工作并定期将更改推送到主服务器。您仍然可以获得使用本地存储库(主要是对我而言,延迟非常低)的所有好处,并且仍然不会使用半生不熟的功能惹恼您的同事......并且您仍然可以将更改存储在您的计算机上,您的管理员可以正确备份存储库的地方。

答案 3 :(得分:0)

在大多数地方,我认为可能还有一个“中央”存储库,用于构建和测试构建。如果你想在构建中使用你的代码,那就必须集中推送。

这也是一个管理问题 - 告诉您的团队 - 定期(至少每天)推送,以便备份您的代码。如果没有完成,那就拿出大棒。

我还要注意,如果你依靠查看提交来查看你的员工在做什么,你可能会遇到一些更大的问题,你可能会考虑解决......