バージョン管理システムの使用経験に関する記事を書く時間を取ったとき、私はバージョン管理システムについて、開発に携わっている何人かの人々(初心者と専門家)と話しました-それらを使用することの長所と短所、システムの機能、使用シナリオ。 会話は常にほぼ同じ方法で始まりました:誰もが私のすべての質問に答えて自分の経験を共有できると信じていましたが、会話はさまざまな方法で終了しました: -このことから、バージョン管理システムは多くの人が考えるほど単純なコラボレーションツールではないと結論付けることができます。
単独で作業する場合、生成されたコードとアーティファクトにバージョン管理システムを使用する問題は未解決です。 この点に関して、私はゲームをプレイすることを提案します-バージョン管理システムの使用が私を助け、それを使用する必要性を納得させる状況を書きます、そしてあなたはそれなしでこの問題を解決する方法を書きます(あなたが誰かを見つけなければ、私は理解します):
- 追加のチームメンバーをプロジェクトに接続し、単一のリポジトリで作業を開始します-バージョン管理システムを使用する場合、既にどのようなストレージ、どのツールを使用するか、リポジトリによってプロジェクトがどのように構成されているか、ブランチとタグの名前はどのようになっているのか、という質問はすでに解決されています。 不在の場合-これらの問題をすべて最初から解決し、それに時間を費やす必要があります。
- ビューの変更(クラスが最近変更された程度の概念のためだけに);
- コードの行数におけるあなた自身の生産性の評価(主観的な指標ですが、時にはそれは私にとって重要です);
- 誤ってファイルを削除したり、不要な結果が導入されたり、すべてを以前の状態に戻す機能に対する保護。
- (いくつかのクラスだけでなく、構成ファイルも変更される)別のブランチを作成してアルゴリズムの動作をチェックし、以前のバージョンに戻る必要性(期待が満たされなかった場合)。
- ソーステキストの現在のバージョンへの読み取りアクセスを一時的に送信する必要性。
- 単一の開発者にはまれであり、グループまたは企業には必須の追加シナリオ:
- メインブランチまたは専門ブランチでコミットが検出された後にテストを実行する統合テストシステム。
- 更新の継続的な配信のためのシステム。展開のためにブランチで必要な変更を検出した後も作業を開始します。
- 主要なブランチにコードを導入するための階層システムでは、準備された変更がその基準(セキュリティ、シンプルさ、標準に従うなど)に従って経験豊富なまたは特別に設計された専門家によってチェックされます 。 ここでそのようなアプローチを説明する良い例です(分散ワークフロー) 。
明らかなことからの小さな余談:
しばらくプログラマーとして働いた後、現代の開発者の仕事の結果(特に現在流行のDevOpsの方向性)はプログラムのソースコードだけでなく、テスト用のデータ、テストベンチのセットアップ、スタンドを展開するためのスクリプト、ドキュメントなどでもあることがわかります実行可能コードを取得するだけでなく、その実行に必要な環境を構成し、他の参加者によるプロジェクトの開発と運用に関するドキュメントを生成します。 そのため、作業中にすべてのプロジェクト参加者が共有する必要のある一般的な設定、スクリプト、データが使用されている場合、それらを保存する適切な場所とタイムリーな更新を制御する方法はバージョン管理システムです。
私の前に立っていて、近い将来想像できるすべてのタスクは、メインストリームソリューション-gitとそれに対応するGitHub-によって解決されました。
gitに関する興味深いリンク: 本 | Yandexからのビデオ 。
私にとってのGitHubの選択は、次の基準によって決定されました。
- プライベートリポジトリをホストするための合理的な価格。
- 仕事の統計を表示する機能(リンク);
- プロジェクト/プロジェクトモジュールでWikiを維持する機能。
- リポジトリおよびコミットを操作するための適切なインターフェイス。
- Courseraのコースでは、すでに多数のリポジトリが作成されています。
クライアントとして、通常のSmartGitとコマンドラインクライアントを使用します(ある時点でそれを知ることが必要なだけです)。
これらすべてが初歩的で明白な質問のように思える人のために、いくつかのことを残しましたが、他のバージョン管理システムや他のgitホスティングの類似物は見つかりませんでした。
- Gitサブモジュール-サブモジュールを使用すると、1つのGitリポジトリを別のGitリポジトリのサブディレクトリとして含めることができます。 これにより、プロジェクト内の別のリポジトリを複製し、このリポジトリのコミットを個別に保存できます。
- GitHubのキーの展開-sshキーを使用して読み取り/書き込み用のリポジトリにアクセスできるようにしますが、それぞれに独自のキーを与え、その結果、アクセスを自由に取り消すことができます(対応する秘密キーを単に削除します)。 私の場合、この機能は順次統合システムに使用され、対応するモジュールのリポジトリへの必要なアクセスを取得します。 機能の説明もこちらから入手できます 。
ご清聴ありがとうございました!