2

次のシナリオに対処する必要があります。プロジェクトがあり、この目的で git を使用するとします。Extern ユーザーは、内部変更の影響を直接受けないコードの部分 (プラグインなど) で作業できるようにする必要があります。したがって、git は読み取り権限を削除できないため、この手順についてどう思いますか。

  1. 2 つのリポジトリ repo_int、repo_ext を作成します。「共有」と呼ばれるブランチが 1 つだけある Repo_ext。
  2. extern 開発者がそのブランチにプッシュできるようにします
  3. ローカル クローンを使用して、2 番目の内部開発者ブランチにプルおよびプッシュします

これは次のように行うことができます。

裸のリポジトリを作成する

$ mkdir ~/remotes/repo_int.git
$ cd ~/remotes/repo_int.git && git init --bare
$ mkdir ~/remotes/repo_ext.git
$ cd ~/remotes/repo_ext.git && git init --bare

新しいロケール リポジトリを作成する

$ cd /path/to/my/project && git init 

共有ブランチを作成してチェックアウトする

$ git checkout -b shared 

リモート repo_ext と repo_int を追加

$ git remote add -t shared repo_ext ~/remotes/repo_ext.git 
$ git remote add repo_int ~/remotes/repo_int.git 

最初の一押しをする

$ git remote push repo_ext shared && git remote push repo_int * 

HEAD を repo_ext からブランチ共有に設定します

$ git symbolic-ref HEAD refs/heads/shared

repo_ext への外部アクセスを取得するには:

$ git clone ~/remotes/repo_ext.git 

いくつかの変更を行い、ものをプッシュします

$ git push origin shared 

内部リポジトリでブランチ チェックアウトを実行し、マージやチェリー ピックなどの変更を使用します。

$ git clone ~/remotes/remote_int
$ git checkout -b shared repo_ext/shared 
...

これは、これを処理するための推奨される安全な方法ですか? ユーザー権限の管理が行き届いたコードレビューツール「gerrit」について伺いました。このツールを使用して問題に対処することは可能でしょうか?

どうもありがとう!

4

1 に答える 1

3

Git は分散バージョン管理システムとして構築されています。つまり、異なるリポジトリ間でコミットを簡単にプッシュおよびプルできます。

パブリック リポジトリとプライベート リポジトリを作成し、パブリック リポジトリにプライベート リポジトリの特定のブランチのみをプルさせるだけです。パブリック ブランチの 1 つへのコミットがいずれかのリポジトリにプッシュされた場合、post-receive フックを使用して、それをもう一方のリポジトリにもプッシュする必要があります。

これは実際には、ローカル リポジトリにローカル ブランチを作成することに他なりません。誰かがあなたからそれらを引っ張ることを許可しない限り、あなたはあなたのローカルブランチで働くことができる唯一の人です.

于 2012-12-27T15:58:31.880 に答える