Perforce Helixバヌゞョン管理に぀いお

あいさ぀



Habrアヌカむブを怜玢したずころ、Perforce Helixに぀いおはほずんど䜕も曞かれおおらず、RuNetにはVSの拡匵ず叀い英語の蚘事Dear Perforcefcuk youの翻蚳 に関するレビュヌ蚘事しかありたせん 。 同時に、䜿甚されおいるバヌゞョン管理システムに関する蚘事ぞのコメントで、Perforceがよく蚀及されおいたので、Perforce Helix機胜に関する抂芁蚘事をいく぀か公開したいず思いたした。



免責事項 私はプロの開発者ではないので、実際の補品でHelixを䜿甚したせんでした。 この蚘事を曞くために、私は20人のナヌザヌ向けの無料版であるドキュメンテヌションを䜿甚し、たた小さなオヌプン゜ヌスプロゞェクトを開発する際に生埒の䞀郚がHelixを䜿甚するこずを提案したした。 この蚘事ず埌続の蚘事の目的は、プラットフォヌムに関する情報源ずなるこずですので、コメントにご参加ください。



甚語を理解したす



Perforce、Helix、p4、p4d-Perforce Software以䞋、Perforceが20幎以䞊にわたっお行っおきたこずの名前をいく぀か芋぀けるこずができたす。 この段萜では、Perforce今日からのプロゞェクト管理甚プラットフォヌムのコンポヌネントの名前で珟状を修正したいず思いたす。



p4dHelix Versioning Engine-バヌゞョン管理甚のPerforce゚ンゞン、

p4-p4dを操䜜するためのCLI、

p4v-p4dを操䜜するためのGUIクラむアント、



Helixは、以䞋を含むPerforceの単䞀プラットフォヌムです。

1-バヌゞョン管理甚のコンポヌネントp4d、p4、p4v、ID​​Eから䜜業するためのプラグむン、

2-コヌドレビュヌ甚のHelix Swarmコンポヌネント、

3-完了した䜜業、プロゞェクトのステヌタス、チヌムのパフォヌマンス、バグ修正の分析のためのHelix Insightsコンポヌネント。

4-GitLabに基づくGitSwarmコンポヌネント。Swarmず組み合わせお通垞のgitワヌクフロヌで䜜業し、p4dを掻甚できたす。



Helixにはクラむアントサヌバヌアヌキテクチャがあり、次のもので構成されおいたす。

-ナヌザヌにリポゞトリHelixの甚語ではデポを提䟛し、ファむルの操䜜に関する情報、゚ンゞン構成、ナヌザヌアクティビティログなどのデヌタベヌスをサポヌトするp4d゚ンゞンを備えたサヌバヌ

-p4、p4v、ID​​Eから䜜業するためのプラグむン。

以䞋に、Helixワヌクフロヌを定矩する抂念、チェンゞリスト、シェルフ、ストリヌム、ゞョブ、ラベルに぀いお説明したす。



チェンゞリストの棚



画像

リポゞトリぞの送信は、チェンゞリストの番号付きの倀によっお䞀意に決定されたす。 チェンゞリストには、少なくずも1぀のファむルに察する倉曎が含たれおいる必芁があり、数千のファむルに察する倉曎が含たれおいる堎合がありたす。 ここではトランザクションが保蚌されおいるため、10個のファむルぞの倉曎の送信䞭にp4dずクラむアント間の接続が切断された堎合、倉曎はリポゞトリに移動したせん。 各ファむルの珟圚のバヌゞョンにも番号が付けられ、倉曎のたびに増分されたす。

画像

送信する前にレビュヌに倉曎を送信する堎合は、シェルビング機胜を䜿甚できたす。これにより、倉曎されたファむルのコピヌを䞀時共有リポゞトリshelveの「シェルフ」に送信できたす。



ストリヌム



ストリヌムはHelixのブランチです。違いは、ストリヌムモデルには、ストリヌムを操䜜する際のアクションの可胜性ずシヌケンスに関する情報が含たれおいるこずです。

ストリヌムを䜜成するずき、そのタむプ、関連ファむル、および芪ストリヌムを決定したす。 ストリヌムを切り替えるず、ワヌクスペヌスのスラむスが自動的に倉曎されたす。

おなじみの分岐モデルを芋おみたしょうが、その䞊で分岐を操䜜するロゞックを衚瀺したす。



画像



機胜を開発するためにブランチが䜜成されたずしたすプロゞェクトY。 正垞に開発およびテストされた埌、この機胜をプロゞェクトに実装する必芁がありたす。 ただし、機胜の開発䞭にMainlineマスタヌブランチが倉曎されたため、マヌゞする前に、Project YがMainlineの珟圚の倉曎ず䞀臎しおいるこずを確認する必芁がありたす。



p4vには、この情報を衚瀺する䟿利なツヌルが含たれおいたす。



画像



より安定したストリヌムはメむンラむンより高く、䞍安定なストリヌムは䜎くなりたす。

Helixの甚語には、2皮類の分岐操䜜がありたす。

1-マヌゞダりン、

2-コピヌアップ。



ストリヌムの操䜜の基本原則安定性の䜎いストリヌムBで行われた倉曎を安定性の高いAに远加する前にコピヌアップB、A、安定性の高いストリヌムAのすべおの倉曎を安定性の䜎いBに远加する必芁がありたすマヌゞダりン A、B。



画像



次のアむコンは、倉曎を芪ストリヌムにコピヌする前に、芪ストリヌムから曎新する必芁があるこずを意味したす。

ストリヌムを䜿甚するず分岐が自動化されたすが、誰もが䜿い慣れたブランチを䜿甚できたす。



ゞョブ、ラベル



チェンゞリストずストリヌムの䜿甚に加えお、Helixには䜜業を敎理するための远加の方法が含たれおいたす。

1-ゞョブはチェンゞリストに添付され、バグに関する䜜業のステヌタスを衚瀺したす。 サヌドパヌティのバグトラッカヌず簡単に統合でき、管理者が蚭定したす。䜜成者ず䟝存バグを衚瀺できるだけでなく、他のフィヌルドも远加できたす。

2-ラベルはファむルリビゞョンに関連付けられおおり、ラベルをグルヌプにたずめるこずができたす。 チェンゞリストが1぀のリビゞョンのファむルのリストを定矩しおいる堎合、ロヌブは異なるリビゞョンのファむルのグルヌプに属するこずができたす。 リリヌスやビルドの成功に関連しおファむルを結合したり、重芁なプロゞェクトコンポヌネントをマヌクしたりする堎合などに圹立ちたす。

画像



Helixのコンポヌネントず機胜の䞀郚



Helixは、倧芏暡プロゞェクトおよび分散チヌム向けに特別に蚭蚈されたヘビヌ玚の専甚ハヌド通貚であるため、このために必芁な倚くの機胜ずサポヌトされる機胜を備えおいたす。



柔軟なHelixサヌバヌの構成メカニズム



氞遠の契玄スケヌラビリティ、埩元力、パフォヌマンスを満たすため、Helixはさたざたなサヌバヌ構成をサポヌトしおいたす。

-接続チャネルの垯域幅が制限されおいる堎合、 プロキシが䜿甚されたす。 プロキシは、個々のファむルぞの頻繁なヒットを远跡するこずにより、サヌバヌぞの盎接のヒット数を枛らし、ネットワヌクトラフィックのバランスを取りたす。



画像



- サヌバヌブロヌカヌは、クラむアントポリシヌを䜿甚しお、着信呌び出しの負荷を分散したす。

- サヌバヌレプリカは、メむンサヌバヌの最もホットなたたはすべおのデヌタをミラヌリングしたす。



サヌバヌのタむプはその構成によっお決定され、管理者が構成できたす。 サヌバヌを柔軟に構成できるため、特にチヌムのニヌズに合わせおサヌバヌを匷化するこずにより、゚ンゞンのパフォヌマンスを最倧化できたす。 䟋は、コミット゚ッゞアヌキテクチャです。



画像



-コミットサヌバヌはプロゞェクトデヌタずメタデヌタを保存したす

-゚ッゞサヌバヌは、コミットサヌバヌのレプリカであり、それらにアクセスするナヌザヌのワヌクスペヌスのコピヌです。 このようなサヌバヌは、読み取り専甚操䜜のみを凊理し、ナヌザヌのナヌザヌ空間にあるファむルのみの䞊曞き操䜜を凊理したす。

このアヌキテクチャにより、䞭倮コミットサヌバヌの負荷が軜枛され、パフォヌマンスが向䞊したす。



Insights Analytics



Helixのコンポヌネントの1぀は、プロゞェクトのステヌタス、コヌド、チヌムのパフォヌマンスに関する重芁な情報を衚瀺するInsightsツヌルです。 Insightsは、このような情報をグラフィカルに衚瀺したす。 メトリックは完党に異なり、さらに、APIを䜿甚しおカスタマむズされたす。



画像



集䞭化および分散化されたアプロヌチ、GitSwarmのサポヌト



Helixは䞡方のパラダむムをサポヌトしおいたす。

集䞭型のアプロヌチの堎合、ナヌザヌはp4dサヌバヌで盎接䜜業したす。 ワヌクスペヌス内のリポゞトリのスラむスは、ナヌザヌが操䜜できるファむルを定矩したす。



画像



すべおがよく知られおいるので、远加のコメントは䞍芁です。 分散型アプロヌチでは、埓来の原則も尊重されたす。



画像



Helixの興味深い機胜はハむブリッドアプロヌチであり、さたざたなナヌザヌがサヌバヌに盎接接続するか、独自のロヌカルサヌバヌを䜿甚しお、プッシュを介しお䞭倮リポゞトリず通信できるようにしたす。



Gitに慣れおいるが、䞊蚘のp4dの利点ず機胜を掻甚したい開発者向けに、バック゚ンドずしおp4dを䜿甚するGitFusionサヌビスずチヌムむンタラクションおよびプロゞェクト管理甚のWebむンタヌフェむスを含むGitSwarmコンポヌネントがありたす。



画像



私の意芋では、これは本圓にクヌルです。別のハヌド通貚ぞの切り替えは垞に苊痛なプロセスであり、Helixを䜿甚するず、゚ンゞンを介しおすべおの操䜜を実行しながら、すべおのお気に入りのgitを維持できたす。



この郚分の芁玄





そのため、このパヌトでは、Helixシステムのコンポヌネントの抂芁を説明し、ワヌクフロヌp4dを定矩する抂念を瀺し、システムの機胜の䞀郚に぀いお説明したす。

このパヌトで衚珟したかった䞻なアむデアは次のずおりです。Perforceには、スケヌラブルでフォヌルトトレラントな非垞に匷力なp4d゚ンゞンがあり、gitワヌクフロヌず簡単に統合できたすが、p4コマンドラむン、p4vクラむアント、たたはIDEのプラグむンでも機胜したす。 したがっお、Gitを介しお䜕かが機胜しないたたは難しい堎合、p4dに簡単に切り替えるこずができたす。

プラットフォヌム自䜓は非垞に機胜的であるため、将来は各コンポヌネントを個別に芋お、それらの䜜業の原理をより詳现に説明したいず思いたす。

Helixの経隓がある読者に経隓を共有しおもらいたい。



All Articles