8

自社のgit上で具体的なフローを構築したいと考えています。

  1. 開発者は自分のローカル マシンにブランチを作成し、そこにいくつかのファイルをコミットします。
  2. 開発者はこのブランチをリモート リポジトリにプッシュします
  3. 他の開発者はこのブランチにアクセスできません
  4. dev のプッシュを数ラウンド行った後、変更を公開することにしました。
  5. 彼のプライベート ブランチをパブリック ブランチにマージする
  6. その公開ブランチをプッシュします。

つまり、パブリック リポジトリでプライベート リモート ブランチを構成することは可能ですか?

4

2 に答える 2

11

私のチームで使用されているフローは、メインの git サーバーのオリジンに加えて、チーム メンバーごとに完全に個別のリポジトリを用意することです。

  1. 開発者はローカル マシンにローカル ブランチを作成し、コミットします
  2. 一日の終わりに (または適切なときに) 開発者は自分のプライベート レポジトリにプッシュします。git push jdoe-private my-cool-branch
  3. 開発者は、作品が公開され、場合によってはマージされることに満足していると判断したため、問題なく整理してリベースできます
  4. 開発者は自分のブランチをオリジンにプッシュしますgit push origin my-cool-branch

このセットアップの理論的根拠は、開発者が自由にリベースできるようにし、アップストリームのリベースから発生する可能性のある問題を回避し、完全なバックアップを保持できるようにすることです。個別のリポジトリは慣例によりプライベートのみですが、必要に応じてアクセス制御を簡単に追加できます。多くのデータの重複がありますが、リポジトリが非常に巨大でない限りこれはおそらく問題ではありません。

于 2015-01-30T15:41:37.273 に答える
2

私が知っている一般的な解決策は、ブランチ名の先頭に文字列を追加して、「ブランチの名前空間」に同意することです。たとえば、「private/」で始まるブランチはプライベートな実験用です。次に、次のようなブランチを取得します

  • private/JohnDoe/refactoring-taxcalculation
  • プライベート/JohnDoe/newGUILayout
  • プライベート/ジェーンジョーンズ/Java8
  • private/TKirk/build-spaceship

これにより、ブランチが分離され、その目的が明確になります。ただし、このようにすると、ブランチは公開されたままになります。これは、誰でもブランチを表示およびプルできるためです。

ユーザーに基づいてこれらのブランチへのアクセスを制限したい場合は、何らかのブランチベースのアクセス制御が必要になります。コア git にはそのようなものはありませんが、一部の git ホスティング サーバーではこれが可能です (たとえば、Atlassian Stash)。この種のプライベートブランチを許可するサーバーは知りませんが、それを許可するか、ソリューションをスクリプト化できるサーバーがあるかもしれません。

ただし、あなたが求めているのはかなり変わっていることに注意してください。一般的な解決策は、上で概説したものです。

于 2015-01-30T14:55:03.770 に答える