GITの「ローカルリポジット」の概念は、「開発者ブランチ」とどのように異なりますか?

StackOverflow https://stackoverflow.com/questions/5827687

質問

以前の仕事では、各開発者が自分のブランチで作業することにより、安定したプリレリースブランチ(またはセットアップに応じてメイン)を管理し、維持するのが簡単であることがわかりました。単一の制作インスタンスしかなかったため、同じアプリの複数のバージョンをサポートする必要はありません。

この「プレリリース」ブランチは、ステージングと制作のリリースを作成する別のブランチ(メイン)があったため、そのように名前が付けられています。ブランチはセットアップされているため、リリース前のブランチからのコードのみがリリースブランチに統合されました。これらの合併は、コードレビューチェックポイントでした。 CIビルドは、このプレリリースブランチからも作成されており、各開発者が「プレリリース」から自分のブランチと、その作業の開発が完了したときにMigitage Complexの統合問題と統合するのは各開発者次第でした。

開発者が特定の機能をペアにして一緒に作業する必要がある場合、独自のブランチの権限以外のものは、他の人と作業することを妨げました。これは、各チーム内の個人が個別/複数の機能に取り組んでいる分散チームを管理するのに適していました。

頻繁に(週に1〜2回)30分間のステータス更新会議の助けを借りて、私たちはチームとして、QAに何が入るか、その特定のQAリリースに対して何がないかを決定します。

このシステムは機能しましたが、このトピックを検索する際に、開発者の支店には多くのresりがあります。 Gitのローカルリポジトリ機能については、多くの熱意があるようです。しかし、それらは同じ問題に対処するための異なる方法であるようです。レイテンシなどのチェックなど、ローカルリポジトリが対象とするネットワークの問題を考慮しないでください。

役に立ちましたか?

解決

3つの主な違いがあります。

  1. ローカルリポジトリはそれを意味します:それはあなたのシステムにローカルであり、あなたがインターネットに接続されていない無人島に立ち往生していることに気付いたなら、あなたはまだあなたの変更を犯すことができるでしょう。 GITの最良のことの1つは、バージョン制御システムを利用できるようにリポジトリに接続する必要がないことです。開発者は、メインリポジトリにアクセスできずにリモートで作業することがあり、通常はシステムがある場合に乱雑になる可能性があります。 転覆, パフォーマンス, 、または別のタイプの集中リポジトリバージョン制御システム。と ギットビットキーパー, 、オフラインで簡単に作業できます。

  2. 開発者ブランチ 状況、あなたは通常から分岐しています 統合 あなたへのブランチ デベロッパー ブランチとマージします 統合 ブランチ。 gitでは、マージされませんが、パッチを送信し、変更を送信するだけでなく、 マスターリポジトリ, 、しかし、最初にパッチをに送信することなく他の開発者に マスターリポジトリ. 。これにより、開発者は触れずに協力できます マスターリポジトリ.

  3. 開発者/統合 ブランチセットアップ、 開発者ブランチ 他の人がそれを見ることができることを意味するリポジトリにあります。 GITでは、開発者が変更を行うまで開発者の変更は利用できません。

他のヒント

GitやMercurialのようなDVCは、出版物ワークフロー(プッシュ/プル)を紹介します。 分岐から直交.

それはそれを意味します:

  • すべての開発者が同じブランチで作業しているにもかかわらず、彼らは自分のレポで「個人的に」することができます。彼らが仕事を公開しない限り(つまり、アップストリームリポジトリにプッシュする)、その共通のブランチは実際に独自のものです。同じトピックで他の人の仕事からあまり分岐しないように、定期的に(フェッチ +マージ)を引くことができますが、準備ができたらプッシュします。

  • 開発者は自分の仕事を決してプッシュしないかもしれませんが、インテグレーターは、上流の「統合」リポジトリから、多くのブランチ(同じ名前の)から、インテグレーターが必要とする多くの開発者のリポジトリから取得できます。独自の名前空間の統合リポジトリ(dev1/branch, dev2/branch, dev3/branch, ...)
    そこから、インテグレーターは各開発者のブランチが導入しているコミットを見ることができ、統合リポジトリの変更をマージするかどうかを決定します。
    注:これは、Mercurialでわずかに異なります。名前の支店にはグローバルネームスペースに名前があるため(参照 ヤクブ・ナルブスキ「答え」GitとMercurial-比較とコントラスト「、見ています 「個人的な意見:私は個人的に「枝」という名前があると思います...」 部)

したがって、GIT「ローカルレポ」は、開発者のブランチ内の任意のブランチを変換します(これにより、開発者が共通のリポジトリから来るものの上に自分のプライベートブランチを作ることを妨げません)。
これらのブランチは、アクティブな出版物(開発者によるプッシュ)またはパッシブパブリケーション(上流のリポジトリからのプルまたはフェッチ、その開発者からの直接介入なしに利用できます)


デビッドW's 答え (賛成)は明確になります。

  • 新しいブランチのブランチから作業する(開発者にリンクする可能性がありますが、開発の取り組みを分離するために、タスクまたはタスクのセットにリンクされたブランチを好むにもかかわらず、これは開発者にリンクできます。いつ分岐する必要がありますか")
  • 独自のリポジトリのレポからクローン化されたブランチからの作業:あなたはで作業することができます 同じ ブランチは、上流のリポジトリから上記のブランチのクローン(コピー)であることを除きます。
    Developer Repoがインテグレーターからアクセスできない場合、Davidが言うように、「Gitでは、開発者が変更を行うまで開発者の変更は利用できません」。
    開発者のリポジトリにアクセス可能な場合(単純なものであっても」ローカルプロトコル「ネットワーク共有と同様)、開発者の変更は、下流のレポから上流のリポジトリの統合に引き寄せることができます)

参照」バージョンコントロール(VCSまたはDVCS)を使用するワークフローを説明してください「ブランチを使用する集中化されたVCS方法と分散型VCSリポジトリを使用する別の方法については、別の方法について。

それがあなたのために働いたなら、素晴らしい。 DVCSではさらにうまく機能すると思います。なぜなら、彼らはあなたが今していることすべてをサポートできるからです。

開発者ブランチ上のローカルリポジトリの利点の1つは、ローカルで必要なだけのブランチを使用できることです。クイックブランチをスピンアップして、興味があるものをテストできます。ブランチをスピンアップして、あなたが愛するライブラリの最新バージョンへの移行をテストすることができます。すべてが、おそらく日の目を見るべきではないもので集中サーバーを「汚染」する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top