SVNについて
SVNとは
時間の経過とともにファイルに加えられた変更を追跡するツールです。
プロジェクト ファイルのさまざまなバージョンを
保存できるので必要に応じて以前のバージョンに戻ることができます。
Centralリポジトリ
SVNはリポジトリと呼ばれる中央の場所を使用します。
ここにすべてファイルとそのバージョン履歴が保存されます。
チェックアウトとコミット
チェックアウト プロジェクトの作業を開始するときはリポジトリからコンピューターに
最新のバージョンのファイルを[チェックアウト]します。
コミット 変更を加えたら、更新内容をリポジトリに「コミットします。」
これよりファイルの新しいバージョンが保存され変更内容が他のユーザーと共有されます。
更新
ローカル コピーを「更新」してほかのユーザーがリポジトリにコミットした
最新の変更を取得できます。これにより全員がプロジェクトの最新バージョンで作業できる
競合の解決
2人のユーザーが同時に同じファイルに加えた場合、
SVNは変更をマージして競合を解決するのに役立つ
SVNとGITの違い
1 リポジトリ構造
* SVN: 集中型バージョン管理システム(CVCS)すべてのユーザがチェックアウトして
コミットする中央リポジトリを使用します。
プロジェクトには単一のソースが存在
* Git: 分散バージョン管理システム(DVCS)各ユーザーは完全な履歴を含む
リポジトリの完全なコピーを持ちます。ローカルでコミットして、
準備ができたらほかのユーザーと同期できます。
2 コミット
- SVN: コミットは中央リポジトリに直接送信されます。変更をコミットするには、
オンラインである必要があります。 - Git: コミットはローカルで行われます。変更をオンラインでコミットして
後でリモートリポジトリにプッシュすることができます。
3 ブランチとマージ
- SVN: 集中化されているため、ブランチ作成とマージは遅くなり複雑になる可能性があります。
ブランチは通常サーバー上で作成および管理されます - Git: ブランチ作成とマージは高速かつ簡単です。ブランチは安価で管理しやすいため、
Gitでは機能の開発やバグの修正などにブランチを使用することを推奨しています。
4 パフォーマンス
- SVN: 特定の操作、特に中央リポジトリとのネットワーク通信を伴う操作では
- Git:一般的に、ほとんどの操作はローカルで実行されるためより高速です。
5 歴史とスナップショット
- SVN: ファイルバージョン間の差異(デルタ)として変更を追跡します。
- Git: 各コミットでプロジェクト全体のスナップショットを保存します。
これにより特定のコミットでのプロジェクトの状態を簡単に確認できるようになります。
6 大規模プロジェクトにおいての取り扱い
-
SVN: 大きなバイナリファイルや大きなプロジェクトを処理できますが、
リポジトリが非常に大きい場合がパフォーマンスが低下する可能性があります。 -
Git: 大規模なプロジェクトも処理できますが、
非常に大きなファイルでは問題が発生する可能性があります。
Discussion