詳細にはバージョン制御リアクトルGit、SVNの異同及び適用範囲

3638 ワード

gitを使ってから間もないです。
1)適用対象が異なる。Gitはオープンソースプロジェクトに参加する開発者に適用されます。彼らはレベルが高いので、効率が使いやすいのではなく、もっと気になります。Svnは違っています。普通の会社の開発チームに似合います。もっと使いやすいです。
2)使う場合は違っています。Gitはインターネットを通じて、複数の開発キャラクターがいる単一プロジェクトの開発に適しています。Svnはプロジェクトマネージャによって統一的に調整された複数の並列プロジェクトの開発に適しています。
3)権限管理戦略が異なる。Gitには厳格な権限管理制御がありません。アカウントがあれば、コードをエクスポートしたり、導入したりして、キャンセル操作を実行します。Svnは厳格な権限管理があり、グループによって、個人によって、あるサブディレクトリに対する権限制御ができます。読み分け・書き権限もっと厳しいのは返品操作がサポートされていません。コードがいつまでも追跡できることを保証します。
4)分岐(branch)の使用範囲が違います。Gitの中で、あなたは倉庫全体に対してbranchを作ることしかできなくて、しかもいったん削除したら、回復することができません。svnでは、branchは任意のサブディレクトリに対してもよく、本質的にはコピー操作である。したがって、非常に多くの階層的なbranchを構築することができ、必要でない時に削除することができます。これから必要な時はchocoutの古いsvnバージョンだけでいいです。
5)第3のポイントに基づいて、Gitは単純なソフトウェアプロジェクトに適用されます。典型的なのはLinuxカーネル、busyboxなどのオープンソースプロジェクトです。逆にSvnは多項目管理が得意です。例えば、svnの倉庫に携帯電話のプロジェクトのbsp/設計ドキュメント/ファイルシステム/アプリケーション/自動化コンパイルスクリプトを格納したり、svnの中に5つの携帯電話プロジェクトのファイルシステムを保存したりすることができます。gitにはn(項目数)*m(部品数)の倉庫が必要です。Svnの中では最大n個かm個だけが必要です。
6)Gitは128ビットIDをバージョン番号として使用し、かつchockoutはどのbranchかを明記し、svnはインクリメントされたシーケンス番号をグローバル唯一のバージョン番号として使用しており、より分かりやすい。ギターゴを使って文字化された別名を作ることができますが、それはあくまでも特殊バージョンです。
7)トラッキング可能で、gitの典型的な開発プロセスは、分岐を確立し、開発を行い、地元masterに提出し、分岐を削除します。このようにした結果、以前の修正の詳細は失われます。svnの下で同じことをしても、細かいところは失われません。ここは興味深いリンクです。gitの典型的な働き方を示しています。
http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt
8)ローカル更新、ローカル復帰。SVNは、フォルダに1つの.svnフォルダを作成して管理を実現するので、ローカル更新または復元を簡単に行うことができます。いくつかの部分だけを更新したいなら、svnはよく実現できます。同時にコードが間違っています。局部的な還元がよくできます。もちろん、gitも歴史バージョンで復元できますが、簡単に局所的な還元ができません。
SVNは集中化されたバージョン制御システムに属する。
この手法は多くの利点をもたらし,特に旧式の局所VCSに比べて。今は、すべての人がプロジェクトの中の他の人が何をしているかをある程度見ることができます。管理者も開発者一人の権限を簡単にコントロールできます。
事の両面には,よいことも悪いこともある。このようにして一番明らかな欠点は、中央サーバーのシングルポイントの故障です。一時間であれば、更新、復元、コントラストなどは誰にも提出できないので、仕事に協力することができません。中央サーバーのディスクが故障していて、バックアップを取っていない、またはバックアップが足りないと、データを失う恐れがあります。最悪の場合は、プロジェクト全体の履歴変更記録を徹底的になくし、クライアントによって抽出されたスナップショットデータは除外されますが、それでも問題です。すべてのデータはすでに抽出されたと保証できません。
Subversionは原理的にファイルの内容の具体的な違いだけに関心を持っています。どのようなファイルが更新されたかを記録するたびに、どの行の内容が更新されましたか?
Subversionの特徴を要約すると主に以下の通りである。
各バージョンライブラリには固有のURL(公式アドレス)があり、各ユーザはこのアドレスからコードとデータを取得する。
コードの更新を取得しても、この唯一のバージョンライブラリにしか接続できません。同期して最新のデータを取得します。
提出はネットワーク接続が必要です。
提出には授権が必要です。書き込み権限がないと提出に失敗します。
提出は毎回成功するわけではない。もし他の人があなたより先に提出したら、「古いバージョンに基づいて変更し、先に更新して提出する」という提示があります。
衝突解決は提出速度の競争です。手早い者は先に提出して、無事です。手が遅い人は後で提出して、面倒な衝突の解決に出会うかもしれません。
Gitは分布式のバージョン制御システムに属しています。
2005年に誕生して以来、Gitは成熟してきて、高度で使いやすいと同時に、初期設定の目標を保持しています。そのスピードは速くて、大プロジェクトの管理にとても適しています。信じられないほどのノンリニヤリティ枝管理システムがあります。様々な複雑なプロジェクトの開発ニーズに対応できます。
SVNとは異なり、Git記録バージョンの歴史は、ファイルデータの全体的な変化のみに関心がある。Gitはファイルの内容の前後に変化する差異データを保存していません。実際、Gitは変化したファイルをスナップショットした後、マイクロファイルシステムに記録したようです。更新を提出するたびに、すべてのファイルの指紋情報を一覧してファイルをスナップして、今度のスナップショットを指すインデックスを保存します。性能を向上させるために、ファイルに変化がなければ、Gitは再び保存されません。前回保存したスナップショットだけを接続します。
簡単に言うと、Gitは以下の特徴を持っている。
Gitではクローネ毎のバージョンライブラリは平等です。任意のバージョンライブラリのクローンからあなた自身のバージョンライブラリを作成することができます。同時に、あなたのバージョンライブラリもソースとして他の人に提供することができます。
Gitの抽出作業は、実際にコード倉庫の完全なバックアップです。提出は完全に現地で完成します。他人から授権される必要はありません。あなたのバージョンライブラリはあなたが作成し、提出はいつも成功します。
古いバージョンに基づいた変更も成功的に提出できます。提出は古いバージョンに基づいて新しい分岐を作成します。
Gitの提出は中断されません。あなたの仕事が完全に満足するまで、PUSHは他の人やPULLにあなたのバージョンライブラリを与えます。合併はPULLとPUSHの過程で発生します。自動解決できない衝突はあなたに手作り完成を促すことができます。
衝突解決はSVNのように競技を提出するのではなく、必要な時に合併と衝突解決を行います。
つまり、会社の開発チームが行うプロジェクト開発管理において、svnはより良い選択であり、チームメンバーは共同で会社の中心バージョンを維持する。
もしソースプロジェクトを始めるならば、gitは更に適して、すべての人はすべて自分の専属のバージョンを維持することができて、同時にgithub開源のコミュニティの支持があります。