2

我们使用master 进行开发。我们将稳定的主题分支合并为 master。对于我们的客户,我们从 master 分支。我们需要让一些外部协作者(通常是前端开发人员)在客户的分支上进行协作。但是他们绝不能对其他分支或主分支有任何访问权限(读或写) (理想情况下,甚至在客户分支分歧之前甚至不能访问项目的历史)。

我的想法是我们可以创建一个新的存储库,其中“修订 0”将是客户端分支分歧的地方,并使用拉取请求来拉取对规范存储库的更改。有没有办法做到这一点?我的意思是从其他 repo 的一些具体修订开始创建空 repo。

我认为这应该是可能的——因为内容是相同的——哈希也是如此。但是简单的复制和粘贴修订将不起作用,或者容易出错,因为新创建的请求需要与规范回购中的请求完全相同才能具有相同的哈希值。

请注意,我们使用 Github 作为我们的 git 托管,我们无意创建自己的 git 托管。

4

1 回答 1

6

如果您想对彼此和您的主服务器隐藏客户端,则每个客户端都需要一个私有存储库。您将拥有一个包含您自己的开发的内部存储库,以及每个客户的孤立分支。当你想创建一个新的客户端分支时,你会做

git checkout --orphan client_xx
git commit

然后,您将拥有一个孤立的分支,其中包含当时您的主分支的确切内容。要创建客户端存储库,您需要使用临时分支做一些小技巧

mkdir -p /path/to/client_xx
cd /path/to/client_xx
git init
git fetch /path/to/internal client_xx:tmp
git checkout tmp
git branch master
git checkout master
git branch -d tmp

现在客户端存储库的主分支将包含与内部存储库的客户端分支完全相同的 sha1。您可以让客户端派生客户端存储库并向您发出拉取请求。您可以通过拉到客户端分支将客户端存储库集成到您的内部存储库中。由于客户端分支是孤立的,您无法正确地将客户端分支合并到主分支(反之亦然),但您可以使用cherry-pick 进行集成。

于 2013-01-12T21:32:38.160 回答