【Git】 Gitリポジトリ構築(その1)

もう10年近くになるかな?
ソフトウェアのバージョン管理にSubversionを使ってきました。その前は言わずもがなCVSで、さらにその前はRCS、会社ではSoftbenchCMやClearCaseなんかもありましたけど。

Subversionはディレクトリ管理も含んでいるので、ファイルの追加・削除・リネームなども追跡できて、かなり重宝してました。また基本的に低レベルのリポジトリ操作が不可能なので、ユーザが誤ってファイルやブランチを削除する事がない(削除されても逆マージで戻せる)という安全性もあって、作業に慣れない人を含む業務ベースで使う際にメリットがありました。

ただ不満が無いわけではありません。
Subversionの主な問題点を挙げると大体以下の通りかと。

  1. 集中型リポジトリなのでコミット時にサーバ接続が必要。
  2. DB型なので色んな意味でちょと重い。(初期のBerkleyDB使っていた時の話ですけど)
  3. ブランチ・タグがディレクトリと同義のため・・・(好みによる)
  4. リポジトリが肥大化する。(業務で使うとこれが深刻)
  5. バックアップに時間がかかる。(リポジトリが肥大化する事が根本原因です)
  6. 誤って行ったコミットを取り消せない。(パスワードとか暗号鍵とか入れちゃうと大変)

この辺りでしょうか。
はっきり言って、これらの問題点はSubversionの利点の裏返しでもあります。
とはいえ、サーバ接続していないとコミットできないという1番の問題だけは、集中型リポジトリの問題そのものなので解決しようがない。しかも昨今のクラウド環境やら、SOHOスタイルでは馴染まないのも事実ですね。

という事で、遅まきながらLinusさんがLinux Kernelのために開発したバージョン管理システム「Git」に移行する事としました。Git自体は2005年の発表された分散型バージョン管理システムで、個人でもグループでも使い勝手が良いかな?と思ったので、その検証もかねて自宅サーバに構築する事としたわけです。

Gitは上位リポジトリ(リモートリポジトリとも言う)にSubversionを使う事もできますが、今回は完全にGitに移行しています。Subversionで管理していたリポジトリも一部を移行してみました。

さて、手順については次の記事で。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。