0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Subversion (SVN) とは? Git との違いを解説!

Last updated at Posted at 2025-03-16

はじめに

バージョン管理というと Git を思い浮かべる人が多いかもしれません。

しかし、案件によっては Git ではなく Subversion (SVN) を使うこともあります。

そこで、SVN とは何か? Git と何が違うのか? を調べてみました。


Subversion (SVN) の特徴

SVN は 「集中型バージョン管理システム」 であり、中央のリポジトリサーバーで全ての変更履歴を管理します。

🔹 SVN のリポジトリ構造

SVN では、通常 「trunk」「branches」「tags」 というディレクトリを使います。

ディレクトリ名 役割 Git の対応するもの
trunk メイン開発用のブランチ main または master
branches 開発中のブランチを格納するフォルダ feature-branch など
tags リリース版のスナップショットを格納するフォルダ git tag

Git のような GitHubGitLab のようなホスティングプラットフォームはなく、また リモートブランチ の概念もありません。


Subversion (SVN) の運用の流れ

SVN の基本的な開発フローを見てみます。

trunk の最新をコピーして branches/feature-xxx ブランチを作成

svn copy <リポジトリURL>/trunk <リポジトリURL>/branches/feature-branch -m "新機能開発用のブランチ作成”

② 作業ブランチをチェックアウト

svn checkout <リポジトリURL>/branches/feature-branch

これで branches/feature-branch の最新コードをローカルに取得できます。

③ 修正作業を行う

変更があるファイルを編集します。

branches/feature-xxx にコミット

svn add 修正したファイル  # 新規追加のファイルを SVN に登録
svn commit -m "機能追加: ○○の処理を実装"

Git の git push のような操作は不要で、commit した時点でリモートに反映されます。

⑤ テスト環境で動作確認(必要に応じて trunk と比較)

svn diff <リポジトリURL>/trunk <リポジトリURL>/branches/feature-branch

これにより、trunk との差分を確認できます。

trunk にマージ

まず trunk の最新状態を取得します。

svn checkout <リポジトリURL>/trunk
svn update

次に、ブランチの変更を trunk にマージします。

svn merge <リポジトリURL>/branches/feature-branch

競合が発生した場合は、手動で解決します。

svn status  # 競合があるか確認
svn resolve --accept=theirs-full <ファイル名>  # ブランチの変更をそのまま適用
svn resolve --accept=mine-full <ファイル名>   # 自分の変更を優先

最後にマージ結果をコミットします。

svn commit -m "feature-branch の変更を trunk にマージ"

SVN では commit すると変更が中央リポジトリに反映 されます。


タグ (tags) の使い方

SVN では、タグ (tags) はリリース時に svn copy を使って作成します。

svn copy <リポジトリURL>/trunk <リポジトリURL>/tags/release-1.0.0 -m "バージョン 1.0.0 リリース"

Git の git tag とは異なり、SVN のタグは 単なるコピー です。


SVN と Git の違い

🔹 SVN のメリット

シンプルな運用

  • Git のように ローカルリポジトリリモートリポジトリ を意識せずに運用できる。
    中央管理なので統制しやすい
  • 管理者が「誰が何を変更したか」を把握しやすい
    履歴の改変ができない
  • Git の rebasereset のように履歴を書き換えられないため、過去の変更履歴が厳密に管理できる

🔹 SVN のデメリット

ブランチの切り替えが遅い

  • Git は git checkout でブランチを切り替えられるが、SVN は checkout し直す必要があるため遅い。
    リモートブランチがない
  • Git の git push origin feature-branch のような運用ができない。
    GitHub のようなプラットフォームがない
  • SVN には GitHubGitLab のようなプラットフォームがないため、コード管理がしづらい

まとめ

✅ SVN は 「集中型バージョン管理システム」 で、中央リポジトリが唯一の履歴管理場所。

✅ Git のような リモートブランチ はなく、変更は commit した時点でリモートに反映される。

trunkbranchestags の3つのディレクトリ構造で運用する。

Git に比べるとブランチの切り替えが遅く、リモート運用がしづらい というデメリットもある。

✅ しかし 中央集権的な管理がしやすい ため、大規模な企業システムでは今も採用されることがある。

SVN は Git とは違う考え方のバージョン管理ですが、基本的な運用フローは似ています。

案件で SVN を使う場合も、基本を押さえておけば問題なく対応できると思います!


あとがき

SVN は Git ほど使われなくなってきていますが、企業によっては今でも採用されています。

今回調べてみて、Git と SVN の概念の違いを理解できた ので、実務でも活かせそうです!

もし間違いがあれば、ご指摘いただけると嬉しいです!

以上、Subversion (SVN) の解説でした!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?