如何使用中央仓库管理备份并监控Git?

5
我现在正在使用Git的团队中,我们有一个相当好的工作流程。我们有一个中央仓库,有两个分支,dev和master。我们创建本地分支来完成个人任务。当准备好时,我们合并到dev中。然后,当一切准备就绪时,我们合并到master,并标记所有发布。如果多个开发人员需要更直接地协作完成任务,我们可以为他们创建另一个可能是临时的远程分支,以便共享补丁。这对我们来说效果很好,但还有两个问题。
一个问题是备份问题。当然,大部分代码库都有备份。每台克隆存储库的计算机都有大部分代码。但是,某人在一天内编写的代码在他们合并到dev并推送之前没有备份。如果他们正在处理的任务非常复杂,可能要等几天才能提交合并和推送。我们如何确保这些正在进行中的代码被备份到一个集中的安全位置?只需使用Git之外的某些备份解决方案吗?
第二个问题是监控员工进展的问题。经理们希望能够看到开发人员每天编写的代码。如果有一天你没有发布任何内容,那么看起来你整天都没做什么。我们需要一种每天展示我们工作的方法,而不会强制我们提交和推送还没有准备好进行提交、合并和推送的代码。
我们考虑的一个解决方案是为我们创建的每个本地分支在中央存储库上创建一个远程分支。这可能有效,但即使我们经常删除旧的未使用分支,它也会变得非常混乱。管理所有这些需要大量额外的工作。
我们如何满足这些业务需求,而不干扰我们的Git工作流程?

通常我发现以下流程很好用: 在分支上工作 一天结束时将其推送到备份 不再需要它并且已经合并到主分支后删除。 - Kzqai
糟糕,格式不好,但你明白了,利用分支功能以命名方案有组织的方式是简单而有用的。 - Kzqai
2个回答

3
你可以考虑这样做。使用非分支命名空间进行私有开发人员备份,例如refs/backups/xxx/*, 这里的 xxx 表示开发人员的用户ID、缩写或类似的标识符。然后,开发人员可以执行git push origin +refs/heads/*:refs/backups/xxx/*来备份他所有本地分支。
默认情况下,开发人员看不到彼此的私有备份,但在必要时可以检索备份。
备份推送公式可以通过别名制成一个git backup命令。
尽管我认为这不是一个好主意,但开发人员的私有分支可以用来了解他的“进展情况”,这听起来很像微观管理。 编辑: 写这篇文章时,感觉很熟悉,然后我想起来了。我曾经在回答另一个问题时写过类似的内容:链接

这是一个很好的备份解决方案。然而,其他人如何查看我的备份呢? - Apreche
是的,对我们来说这是一个“特性”,而不是问题。如果您想要真正私密的备份,那么每个用户都需要有一个单独的备份存储库。 - CB Bailey

2
  • Backup individual repositories

  • Create a "backup" repository, to which other push finished work into refs/remotes/<username>/ namespace:

    [remote "backup"]
        url = user@backup.example.com/srv/git/backup.git
        push = +refs/heads/*:refs/remotes/user/*
    
  • Use Gerrit: see "Gerrit: Google-style code review meets git" article at LWN.net


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接