Manager)のツールを選定するにあたり、SVNとGitのどちららを選ぶと良いかを自分なりに調べたものです。私の環境ではSVNを使用するプロジェクトが多いです。Servicesでもそちらが標準のリポジトリとなっています。SVNのままでも問題ないか?」という関心でアプローチしています。念のため補足しておきます。結論としては、ありきたりかもしれませんがケースバイケースだと思います。ネットの記事では「絶対にGitのほうがよい」とか「GitはSVNの上位互換」と結論している記事が見受けられますが、そうとも言えないと思います。プロジェクト毎に適宜判断すべし、でしょう。SVNはアーキテクチャーがシンプルだし、ある程度の規模のソフトウェアをコンポーネント単位で担当を分けるような開発体制をしている場合、合う気がします。Gitを覚える学習時間も必要ありませんし(時間もリソースなので)。プロジェクトごととアーキテクチャーの違いを踏まえて考慮すべき、というところでしょうか。分散管理ググれば分かりますが、両者(GitとSVN)の最大の相違点はリポジトリの管理方法です。SVNは中央管理的、Gitは分散管理的です。SVNはコード(やファイル)の変更履歴を中央集権的に管理しているサーバーがあって、開発に参画するプログラマーは任意のファイル(やフォルダ)をローカルに同期させ(チェックアウト)、ロックを取得して排他的に編集を行い、最後にコミットをしてSVNサーバーに反映させます。repository)として作成できます。cloneでリポジトリ全体のクローンをローカルに作成した上で作業をします。文字通りの分散管理です。*中央管理と分散管理という違いは簡単に理解できると思います。ついでに、開発の背景と歴史も少し掘り下げて見てみます。ツールを導入する際は設計思想というか背後の考え方を知ることも重要と思いましたので。SVNのようにソースの一部を部分的に取得(clone)することもできるようですが(sparse-checkout)、執筆時点のGit最新バージョン(2.35.0)でも未だに実験的な機能です。Loeliger著)によると、そのLinusか考える理想的なVCSの機能・特徴は以下の通りであると書かれています。多数の開発者が世界中にいて開発に参画するというLinuxカーネル開発の状況を考えれば、上の2点(分散開発の容易性、何千人の開発者)は特に重要なポイントであるように思います。Gitというツールのコンセプトというか設計思想は、世界中に非常に多数の開発者が散在し関与しているという状況でのOSS開発を意識し設計されている、というのがポイントの一つでしょう。(distributed)の形態であるのも納得できます。モジュールごとに担当者を分けるやり方というより、別々の開発者がプログラムの同じ個所を見て、レビューをするなり開発に関与することになります。(Subversion)SVNのアーキテクチャーはシンプルです。リポジトリを中央管理するSVNサーバーがあり、各開発者はそのサーバーからソースを部分的(もしくは全体)を取得し、開発作業を行います。公式サイトでも書かれている通り*、CVSの改良版として開発された経緯があります。CVSの使用経験はありませんが、Wikiや公式サイトを見る限り、ソースコードのファイルを履歴管理してクライアント/サーバーシステムで使えるようにする...というシンプルというか素朴な発想で作られているように思います。(Subversion)が作られた...そうで。GitはSubversionに比べ、バージョン管理のモデルが複雑であるとも書かれています。バージョン管理の仕組みとしてシンプル・分かりやすい、というのはSVNの特徴の一つと言ってよいと思います。現在も開発中でApacheソフトウェア財団により管理・開発されています。[DRAFT])トレンドはGitGoogleトレンドGoogleトレンドで見るとGitがよく検索されていることが分かります。Googleトレンドの見方としてはあくまで「Google検索に基づいたデータでしかない」点には注意が必要で、世の中のソフトウェア開発全般で主流だと安易に結論するのは早計です。参考になる情報ではあります。GoogleトレンドによるSVN、Git、GitHubのトレンド推移の比較ちなみに、GitとGitHubのトレンドの推移が同じような傾向を示しているので、GitHubによってGitが有名になった...という見方もできるかもしれません。クラウド系プロジェクト管理ツールはGitHubに標準対応AtlassianのJira、Backlogなどのプロジェクト管理ツールではGitHubを標準でサポートしています(前者は標準というか無料の公式アドオンだけど)。Foundationバージョン管理も可能らしいですが)。有名どころのクラウド系PJ管理ツールはGitHubに標準対応していて、そういう意味ではGitはやはりこれからのスタンダードである気はします。ちなみに、オンプレで使用できるOSSでは有名なRedmineはSVN、Git両方に標準対応しています。SVNの開発は今も継続されている本記事執筆時点でのSVNの最新版は1.14.2で、これは2022/04/12にリリースされています。*ですので、別にSubversionはもうメンテナンスされていないから使えないとか、古くて使い物にならない...ということはないはずです。開発プロジェクトのエンジニアがどちらを使えるか当該の開発プロジェクトで目下使用してるのはSVNかGitか開発体制で判断する感じでしょうか。「Gitを使いたい」のなら、そもそもGitを使えばいいです。決まってるならその一択しかありません。上の2つは「学習にリソースを割くべきか?」に集約されるのかなと思います。時間も開発において考慮すべき重要なリソースですので、SVNによるソース管理でも何も問題ないのであればわざわざ不慣れなGitに乗り換えるメリットはないかもしれません。3番目の開発体制については、例えば基幹系システムのスクラッチ開発やパッケージ開発のようにそれなりに大規模なソフトウェア開発プロジェクトの場合、プロジェクト内でシステムの各部分で担当が分かれ、各々の担当範囲で各担当が責任をもって開発する形態も多いと思います(自分はそれしか知らないだけですが)。そのような場合、SVNかGitの二択で言えば、SVNのほうが向いている気もします。逆に、その状況ではGitの分散管理の仕組みは煩雑になりそうです。OSS開発であればGitの一択でしょう。そもそもOSSのリポジトリとしてはGitHubが標準的に使用されている印象ですし(Issueなどの管理についても)、GitHubだと新しく参加する人も含めて世界中から多数の開発者が同一コードをレビューできますし、それに、予め「このライブラリの担当者はあなた」のような分担の仕方もしません。GitというよりはGitHubですが。整理の要点としては、もしSVNかGitかのどちらを導入するのが良いのかを決めるとすれば、現在開発に参画しているエンジニアのスキル、プロジェクトの体制、それらを考慮して決める感じでしょうか。Gitを使いたいのならGit一択ですし、メンバーがGitに習熟していなければ学習時間を確保する必要もあります。SVNの仕組み・コマンドはシンプルだし、それに必要もなくわざわざGitに鞍替えすると貴重なリソースである時間を食うだけになるかもしれません。一概にGitが良いとは断言はできないでしょう。そもそも仕組みが違いますし、VCSの導入目的は「ソースコードのバージョン管理」であって「Gitを使うこと自体」が目的だとそれは手段の目的化です。慣れないツールを導入して混乱を招き時間を消費する...というリスクも考慮すべきです。メンバーがGitに慣れているならGitが第一の選択肢でしょう。ツール以外の要因を考慮することも大事だと思いますので、単純にどちらが良い・悪いは言えなさそうです。アーキテクチャーの違い、エンジニアのスキル、習得のための時間確保などを勘案し判断する......という視点で考えたほうが良いかもしれません。(日本語訳は「gitとsvnの比較」)PROGRAMMING広告TwitterFacebookはてブPocketLINEコピーYukiPressYukiPress関連記事JavaScriptnpmより良さげなYarnの概略とインストール方法・簡単な使用法Node.js標準パッケージ管理ツールであるnpmの代替としてYarnもよく使われているようです。調べてみるとnpmより良さそうなので、概略、インストール方法、簡単な操作法をまとめてみました。PROGRAMMINGGitHubとは何か網羅的かつ簡潔にまとめるGitHubが何かについてまとめた記事。参考の元にしたサイトも記載。PHPLaravelでのautoload使用の際のメモ(使用法・注意点など)PHPのrequireがLaravelではそのまま使えないため、composerのautoloadを使用して実装した際の手順・注意点・メモです。VBA】レポートの画像を動的に切り替える方法Accessのレポートに埋め込んだ画像を切り替えるやり方の手順。切り替えロジックはVBAで書く。連結オブジェクトフレームはテーブルの画像を、イメージコントロールは外部の画像ファイルを参照するのに使用する。PROGRAMMINGプログラミング用ノートパソコンにはBTOがおすすめ(コスパが良い)プログラミング用のノートPCを買う場合、BTO製品なら余分な機能を省いてハイスペックなPCを効率的に買えます。メーカーにはHPとDellを紹介しています。外付けディスプレイにはEIZOを紹介しています。PCコスパの良いノートPCにHPを選ぶ・おすすめする理由SE(ITエンジニア)の業務で色々なPCを触ってきましたが、HPのノートPCは品質面でも価格面でも優れていると思います。HPをおすすめする理由を詳しく説明した記事です。本サイトについて情シスSE(開発業務もしています)。本サイトは主に勉強のアウトプットが目的です。Reserved.ホーム検索トップサイドバータイトルとURLをコピーしました。