如何使用中央存储库管理备份和监视Git?

如何使用中央存储库管理备份和监视Git?,git,version-control,workflow,backup,collaboration,Git,Version Control,Workflow,Backup,Collaboration,我现在在一个使用Git的团队中,我们有一个非常好的工作流程。我们有一个中央存储库,它有两个分支:dev和master。我们创建本地分支来处理单个任务。当他们准备好时,我们合并到dev中。然后,当一切就绪时,我们合并到master,并标记所有的发布。如果多个开发人员需要更直接地合作完成一项任务,我们可以创建另一个可能是临时的远程分支,让他们通过共享补丁。这对我们来说很好,但它给我们留下了两个问题 一个问题是备份问题。当然,大部分代码库都已备份。每个拥有存储库克隆的机器都拥有大部分代码。但是,有些人

我现在在一个使用Git的团队中,我们有一个非常好的工作流程。我们有一个中央存储库,它有两个分支:dev和master。我们创建本地分支来处理单个任务。当他们准备好时,我们合并到dev中。然后,当一切就绪时,我们合并到master,并标记所有的发布。如果多个开发人员需要更直接地合作完成一项任务,我们可以创建另一个可能是临时的远程分支,让他们通过共享补丁。这对我们来说很好,但它给我们留下了两个问题

一个问题是备份问题。当然,大部分代码库都已备份。每个拥有存储库克隆的机器都拥有大部分代码。但是,有些人在一天中编写的代码在合并到dev和push之前不会备份。如果他们正在处理的任务不是琐碎的,那么他们可能需要几天时间才能进行任何合并和推送。我们如何确保此正在进行的工作代码备份在一个安全的中央位置?只是使用一些Git外部的备份解决方案

第二个问题是监控员工进度的问题。经理希望能够看到开发人员每天编写的代码。如果有一天你没有推出任何东西去买东西,那看起来你一整天都没有做任何事情。我们需要某种方式来每天展示我们的工作,而不是强迫我们提交和推送那些尚未准备好提交、合并和推送的代码

我们考虑的一个解决方案是为我们创建的每个本地分支在中央回购上创建一个远程分支。这可能会起作用,但即使我们定期删除旧的未使用的分支,也会造成一片混乱。管理这一切也需要很多额外的工作


如何在不破坏Git工作流程的情况下满足这些业务需求?

< P>你可以考虑这样做。对私有开发人员备份使用非分支命名空间。例如,
refs/backups/xxx/*
,其中xxx是开发者用户id或缩写或类似名称

然后,开发人员可以执行git-push-origin+refs/heads/*:refs/backups/xxx/*来备份其所有本地分支

默认情况下,开发人员看不到彼此的私有备份,但在必要时可以检索它们

备份推送公式可以通过别名生成
git backup
命令

虽然我认为这不是一个好主意,但开发者的私有分支可以用来查看他的“进展”,这听起来很像微观管理

编辑:写这篇文章时,我觉得很熟悉,然后我想起了原因。不久前,在回答另一个问题时,我写了一些类似的东西:。

  • 备份单个存储库

  • 创建一个“备份”存储库,其他人将完成的工作推送到
    refs/remotes//
    名称空间:

    [remote "backup"]
        url = user@backup.example.com/srv/git/backup.git
        push = +refs/heads/*:refs/remotes/user/*
    
  • 用法:参见LWN.net上的文章


这是一个很好的备份解决方案。但是,其他人如何检查我的备份?是的,对我们来说,这是一个“功能”而不是一个问题。如果你想要真正的私有备份,那么你真的需要每个用户都有一个单独的备份存储库。一般来说,我发现:分支在工作时会在一天结束时推送到备份,一旦你不再需要它,删除它,并将其合并到主分支过程中,效果就很好。呸,格式不好,但你明白了,利用命名方案中的所有分支功能是一种简单而有用的方法。